You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GetStream在不同标签Feed中生成重复Activity问题如何修复

问题根源

你使用的Stream Feed服务生成Activity ID的规则是默认基于actor、verb、object、time、foreign_id几个核心字段做哈希计算,你当前给不同标签生成的Activity除了target字段外,其他核心字段完全一致,系统会判定为同一条Activity,自然会出现ID相同、target字段冲突的问题。另外你的代码里actor字段的模板字符串写法存在错误,没有正确插入model.user的值。

修复方案

你需要给每个标签对应的Activity生成唯一的foreign_id,确保不同标签的Activity核心字段有差异,修改后的代码如下:

buildActivity = (model, obj) => {
  return {
    ...{
      // 修复原模板字符串错误
      actor: `user:${model.user}`,
      verb: 'is',
      object: `model:${model.id}`,
      foreign_id: `model:${model.id}`,
      time: model.createdAt.toDate(),
    },
    ...(obj ? obj : {})
  }
}
addActivitiesToTagFeed = async (model, tags) => {
  const promises = []
  for(let i=0;i<tags.length;i++){
    const tag = tags[i]
    const activity = buildActivity(model,{
      target: `tag:${tag}`,
      // 给每个标签的Activity生成唯一的foreign_id
      foreign_id: `model:${model.id}:tag:${tag}`
    })
    const feed = stream.feed('tag', tag)
    promises.push(feed.addActivity(activity))
  }
  await Promise.all(promises)
}

补充说明

  • 调整后每个标签对应的Activityforeign_id都带有对应标签标识,Stream会为每条Activity生成唯一的ID,不会再出现不同标签的Activity内容冲突的问题,tag_aggregated功能也能正常按标签聚合内容。
  • 如果后续需要追溯同一内容关联的所有标签Activity,可以通过model.id前缀匹配foreign_id批量查询。

内容的提问来源于stack exchange,提问作者fct

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 08:24:03