Compare commits

...

3 Commits

Author SHA1 Message Date
oudecheng
8af7edfb32 fix(todos): 修复子智能体 todo 列表污染主智能体的问题
子智能体创建时 ToolContext.topic_id 继承了父智能体的 topic_id,
导致 scope_key_from_context 优先使用 topic_id 作为 scope key,
父子智能体共享同一个内存中的 TodoItem 列表。

修改为 topic_id: None,使 scope_key_from_context 回退到
子智能体唯一的 session_id (sub:{parent}:task:{uuid}),
实现完全隔离。消息持久化和前端加载链路均不受影响。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 17:46:25 +08:00
oudecheng
a9f549f4c0 feat(gateway): 更新查询示例和todo工具使用规范,增加复杂任务规划和进度标记要求 2026-06-16 17:37:43 +08:00
oudecheng
4a28d9ea36 feat(gateway): 更新记忆写入规则,明确命名空间使用及优先调用方式 2026-06-16 17:01:49 +08:00
3 changed files with 6 additions and 12 deletions

View File

@ -34,7 +34,7 @@
- 检索时应提供 queries 数组数组的数量一般需要10-12个。 - 检索时应提供 queries 数组数组的数量一般需要10-12个。
- 同时放入中文关键词、英文单词 - 同时放入中文关键词、英文单词
- 越靠近最新会话,生成关键词的比例或者权重应该更高 - 越靠近最新会话,生成关键词的比例或者权重应该更高
- 例如queries=['email', '邮件', 'email_folder_preference'] - 例如queries=['email', '邮件', 'folder',"preference"]
### 记忆写入 ### 记忆写入
@ -51,8 +51,7 @@
#### 写入规则 #### 写入规则
- 写入或修改记忆时使用 memory_manage。 - 写入或修改记忆时使用 memory_manage。
- 遇到未来仍有用的信息时写入记忆:用户长期偏好、稳定事实、用户对你的纠正、持续任务或项目上下文、明确决策等。 - 遇到未来仍有用的信息时写入记忆:用户长期偏好、稳定事实、用户对你的纠正、持续任务或项目上下文、明确决策等。
- 写入时必须使用允许的命名空间user、semantic、episodic、skill、environment、reflection、other。
- 优先调用 memory_manage(action='put');同一 namespace/key 可直接覆盖更新。
#### 【重要注意!】以下场景视为高价值加分,必须记录记忆 #### 【重要注意!】以下场景视为高价值加分,必须记录记忆
- 用户多次跟你交互去优化输出 - 用户多次跟你交互去优化输出
@ -61,6 +60,7 @@
- 用户独特的表达,缩写/非常规的表达 - 用户独特的表达,缩写/非常规的表达
- 因为你的错误,你道歉了 - 因为你的错误,你道歉了
- 用户说默认xxx的消息 - 用户说默认xxx的消息
- 入口信息,比如链接、应用包名等
#### 注意 #### 注意
- 如果你决定不再调用工具,则反思一下是否使用 memory_manage保存记忆 - 如果你决定不再调用工具,则反思一下是否使用 memory_manage保存记忆
@ -121,5 +121,7 @@
## todo工具使用规范 ## todo工具使用规范
- 复杂任务执行前进行todo规划
- 严格按照既定的未完成的todo工作项执行任务如果工作项不在适用就更新不得随意遗漏工作项 - 严格按照既定的未完成的todo工作项执行任务如果工作项不在适用就更新不得随意遗漏工作项
- 完成一项工作就标记一项已完成,不建议批量标记已完成,这样用户不能把握任务执行进度
- 禁止将未完成的工作项标记为已完成 - 禁止将未完成的工作项标记为已完成

View File

@ -338,7 +338,7 @@ impl DefaultSubAgentRuntime {
sender_id: None, sender_id: None,
chat_id: Some(session.parent_chat_id.clone()), chat_id: Some(session.parent_chat_id.clone()),
session_id: Some(session.session_id.clone()), session_id: Some(session.session_id.clone()),
topic_id: session.parent_topic_id.clone(), topic_id: None,
message_id: None, message_id: None,
message_seq: None, message_seq: None,
subagent_description: Some(session.description.clone()), subagent_description: Some(session.description.clone()),

View File

@ -190,14 +190,6 @@ export function TodoPanel({ todos, requestTodoList, sendCommand }: TodoPanelProp
}`}> }`}>
{item.content} {item.content}
</p> </p>
<div className="flex items-center gap-2 mt-0.5">
<span className={`text-[10px] ${priorityDot(item.priority)}`}>
{item.priority}
</span>
<span className={`text-[10px] ${style.text}`}>
{style.icon} {style.label}
</span>
</div>
</div> </div>
</div> </div>
</div> </div>