对话主题与复盘
工作智能体对话里记下主要目的;说改主题、放入主题或总结主题就代做。默认不催复盘,打开「提示复盘」后做成可复盘。
来源 docs/core-mechanisms/对话主题与复盘.md
真值:用户可见能力以
docs/产品规格.md§4.1.2 为准。表述:一条可连续问答的聊天称 「对话」;用户说一次、助手回完一次称 「一轮」。主题、复盘都挂在对话上。
范围:仅工作智能体主站对话。帮助智能体、嵌入访客、定时对话不做主题与复盘。
关联:智能体记忆.md、记忆锻造/记忆锻造.md、工作区能力包.md、帮助智能体对话操作.md;用法见 对话复盘的操作、对话主题的操作。
1. 主题
主题是这条对话里用户的主要目的:用 Markdown 写,一段或几段,可用小标题、列表、加粗。界面按格式显示,不是源代码。把要做成的事、边界和当下进度说清楚。可改、对用户可见。不是列表短标题,也不是截一句用户原话。
| 时机 | 谁写 |
|---|---|
| 第一轮结束后 | 助手起草 |
| 用户说要补一点、整段换或精简主题(如「放入主题」「主题改成…」「把主题总结一下」) | 助手理解要求后写入主题,不写长期记忆;本轮该办的事继续办 |
| 用户明显换题 | 助手先问要不要改;用户点头再改 |
每轮发给模型时带上当前主题:围绕主题回答;跑偏先问要不要换主题。主题是锚,不是锁。闲聊、用户说「先不谈这个」时主题让路。
标题仍是列表短名(首条用户话截取),与主题分开。主题变了可以建议改标题,但不合成一个字段。
换题留简短历史(何时、从 A 到 B),复盘和记忆锻造可用。
2. 复盘
复盘是任务告一段落后,助手起草、用户改定的结论。确认后才落盘。
五栏:
- 做成了什么
- 关键决定与依据
- 用户明确的要求 / 纠正
- 没做完或下次接着做的
- 可复用的做法(技能名、批准过的库等)
何时出现
默认不主动提示。 智能体设置里「提示复盘」默认关闭,避免打扰。关闭时用户仍可自己说「复盘一下」。也可对助手说「打开提示复盘」或「不要催复盘」。
只有该智能体打开了「提示复盘」,才按下面方式提示:
| 时机 | 用户看到 |
|---|---|
| 至少 2 轮后,助手判断当前主题里的事已经做成 | 复盘 按钮(不自动开写) |
| 这条对话停了 超过 2 小时、且不到 2 天 | 助手在同一条对话里发一条邀请,并带上复盘按钮 |
空窗内只邀一次。到点前用户又说话、已经复盘过、或用户说过这次不复盘,则取消。超过 2 天不再催。按时长算,不按自然日。
点按钮或说「复盘一下」:助手按五栏起草,用户改完确认。说「这次不复盘」则记下,不再催这一段。
确认后按钮改为「查看复盘」。换题成功后允许下一段。旧复盘保留。
邀请是助手消息 + 下一步建议芯片,不另造消息类型。不走定时任务那条「每次新建对话」的路径。
3. 确认之后
| 下游 | 怎么用 |
|---|---|
| 智能体长期记忆 | 从「用户要求 / 纠正」提炼跨对话事实 |
| 记忆锻造 | 归档带上主题与复盘,按主题聚类 |
| 以后新对话 | 主题相近时,相关复盘可作参考,不当圣旨 |
滚动摘要(上下文压缩)不是复盘,二者分开。
4. 对话操作
用户说要做什么就代做:
- 「主题改成核对刘亦扬五月考勤,对照打卡与请假,标出异常天」
- 「更新主题为真实历史朝代 + 玄幻童话 + 轻松幽默 + 仿金庸风格」
- 「书要幽默有趣,这点很重要,要放入主题」(同时帮你构思人物情节;幽默写进主题,不写长期记忆)
- 「把主题总结一下,不适合的文字移除」(整理当前主题,不是移出工作区成员)
- 「复盘一下」
- 「这次不复盘」
问「如何改主题 / 怎么复盘」时才说明。
实现对照
| 用户说法 | 实现 |
|---|---|
| 对话 | chat_sessions(session_kind=agent、source=main) |
| 主题 | topic、topic_updated_at、topic_history_json |
| 复盘状态 | review_status:none / suggested / invited / drafted / confirmed / declined |
| 复盘正文 | review_json |
| 已邀过 | review_nudge_at |
| 是否提示复盘 | 智能体 config_json.prompt_review(默认关) |
| 改主题 / 复盘 | 主题:助手理解后 topic_get / topic_write,不靠口令拦截。复盘短句(「复盘一下」「确认复盘」「这次不复盘」)仍可认固定说法。也可 PATCH /api/v1/chat/sessions/{id};一轮后异步提炼(本轮刚写入则不覆盖) |
| 停聊邀请 | 进程内扫描 → 原对话 AppendChatAssistant + 未读 |