Skip to content

Latest commit

 

History

History
277 lines (199 loc) · 10.4 KB

File metadata and controls

277 lines (199 loc) · 10.4 KB

任务执行记忆化与经验化架构任务书

背景

TSD v2.7 已将 Web 端作为主交互界面,并要求任务全生命周期反馈、工具调用说明、多模式审批、任务图谱和记忆图谱联动。当前代码已经具备三个基础能力:

  • InteractionStore 持久化 Web 会话和可见交互事件。
  • memory_mirror.py 将 Web 交互镜像到 MemoryGraph 的会话/轮次/消息结构。
  • TaskGraphAdapterDialogueAdapterExperienceAdapter 可把任务、对话、经验投射到统一记忆图谱。

缺口是:工具调用、审批、工具结果等任务执行事件仍主要作为普通对话消息或前端卡片存在,尚未形成稳定的任务执行语义链,也没有在任务结束时提炼为可复用经验。

目标

建立一条闭环:

工具/审批/进度原始事件
→ InteractionStore 事件流水
→ MemoryGraph 任务执行语义节点和边
→ 任务结束/失败/纠错触发经验提炼
→ EnhancedExperienceStore 保存经验
→ ExperienceAdapter 回投 MemoryGraph
→ 后续 L1-B 上下文检索和 L2 工具决策可召回

非目标

  • 不新增主链硬编码回复。
  • 不改变 L1-B 工具预判、L2 单次决策、真实 tool_call 后进入工具循环的架构。
  • 不把每次普通工具调用都直接写成经验,避免经验库污染。
  • 不引入新的持久化后端,继续使用 InteractionStoreMemoryGraphEnhancedExperienceStore

数据分层

1. InteractionStore:原始事件流水

保存所有用户可见、可审计、可回放的交互事件:

  • pipeline.agent_start
  • pipeline.agent_tool_call
  • pipeline.agent_done
  • pipeline.agent_error
  • IDE_APPROVAL_STATUS
  • IDE_TOOL_RESULT
  • IDE_CHECKPOINT_STATUS
  • 用户插话和审批结果

用途:

  • 页面刷新、切换会话、重启后的卡片回放。
  • 任务执行 trace 的原始材料。
  • 中途插话时召回最近 interaction。

2. MemoryGraph:语义图谱

采用“三猜想分析”的独立节点类型方案。工具调用、工具结果、审批事件不再混入普通 DIALOGUE 类型,而是新增任务执行专用 NodeType,以便热路径 BFS、赫布学习和衰减策略能够天然区分任务执行事件与用户对话。

第一阶段新增三类底层节点:

NodeType 含义 主要用途
TOOL_CALL L2 真实发起的工具调用 工具选择、参数摘要、执行轮次、风险等级
TOOL_RESULT 工具调用产生的结果 成功/失败、耗时、结果摘要、影响文件
APPROVAL 审批请求与审批决策 审批模式、风险、用户决策、白名单演化

其他事件继续复用现有类型:

事件 NodeType metadata.sub_type
用户/助手普通消息 DIALOGUE user_turn / agent_turn
任务进度 EPISODE 或 DIALOGUE task_progress
任务总结 EPISODE 或 DIALOGUE task_summary
任务失败 EPISODE 或 DIALOGUE task_error
经验 EXPERIENCE experience

专用节点建议元数据:

NodeType 关键 metadata
TOOL_CALL pair_id, tool_name, arguments_summary, fc_turn, task_graph_id, risk_level, source_event_id
TOOL_RESULT pair_id, tool_name, success, latency_ms, result_preview, affected_files, source_event_id
APPROVAL approval_id, pair_id, tool_name, phase, decision, risk_level, approval_mode, action_summary, source_event_id

建议边:

source target edge
session round HIERARCHY
round TOOL_CALL / TOOL_RESULT / APPROVAL HIERARCHY
round task_graph/task_node REFERENCE
task_node TOOL_CALL DEPENDENCY
TOOL_CALL TOOL_RESULT CAUSAL
APPROVAL(request) APPROVAL(decision) CAUSAL
APPROVAL(decision) TOOL_CALL CAUSAL
TOOL_RESULT file/code_symbol REFERENCE
TOOL_CALL next TOOL_CALL TEMPORAL
task_summary experience REFERENCE

这样做的收益:

  • get_nodes_by_type(NodeType.TOOL_CALL) 可直接定位工具调用,不需要在 DIALOGUE 中二次过滤。
  • 赫布学习可以单独统计工具调用之间的共激活,不会与普通对话节点混淆。
  • decay_and_prune() 可对 TOOL_CALL / TOOL_RESULT 采用更快衰减,对 APPROVAL 中的用户偏好采用更慢衰减。
  • 任务执行 trace 可直接从专用节点和边聚合,减少文本解析噪声。

3. ExperienceStore:可复用经验

只保存经过提炼、可泛化、可复用的经验:

  • success:有效工具链或执行策略。
  • failure:失败原因和规避方式。
  • preference:用户偏好、审批偏好、路径偏好。
  • procedure:稳定流程模板。

经验必须包含证据来源:

  • conversation_id
  • turn_id
  • task_graph_id
  • source_event_ids
  • tool_chain
  • approval_trace
  • files
  • success

切入点

切入点 A:WebChatRouter 持久化事件后镜像到 MemoryGraph

位置:

  • zulong/launcher/web_chat_router.py
  • zulong/launcher/memory_mirror.py

要求:

  • _persist_web_visible_message() 在写入 InteractionStore 后调用 MemoryGraph mirror。
  • THINKING_STEP 中的 data.interaction 要原样进入 payload。
  • 审批事件要保留 approval_id/tool_name/risk_level/risk_reason/action_summary

切入点 B:MemoryMirror 建立任务执行语义节点

位置:

  • zulong/launcher/memory_mirror.py

要求:

  • 识别 event_typepayload.interaction.kind
  • 为工具调用创建 TOOL_CALL 节点,为工具结果创建 TOOL_RESULT 节点,为审批请求/决策创建 APPROVAL 节点。
  • 生成稳定事件节点 ID,避免同一 pair_id / approval_id 重复生成多节点。
  • action/observation 共享 pair_id 时,建立 TOOL_CALL → TOOL_RESULT 因果关系。
  • 如果 payload 含 task_graph_id,把事件挂到对应任务图。
  • 如果 payload 含文件路径,创建或引用 FILE 节点。

切入点 C:任务结束时生成 TaskExecutionTrace

位置建议:

  • 新建 zulong/review/task_execution_extractor.py
  • 或扩展 zulong/review/experience_extractor.py

输入:

  • 当前 conversation_id
  • turn_id
  • task_graph_id
  • InteractionStore.get_messages(conversation_id)
  • MemoryGraph 中本轮 round 的子节点

输出:

{
    "goal": "...",
    "tool_chain": [...],
    "approval_trace": [...],
    "files": [...],
    "result": "...",
    "success": True,
    "failure_reason": "",
    "retry_count": 0,
    "verification": [...],
    "source_event_ids": [...]
}

切入点 D:经验候选生成与落库

位置建议:

  • 新建 zulong/review/task_experience_generator.py
  • 复用 EnhancedExperienceStore.add_experience()

触发时机:

  • pipeline.agent_done
  • pipeline.agent_error
  • 审批拒绝
  • 用户纠错
  • 同类工具失败重复出现

规则:

  • 成功任务提炼 success/procedure
  • 失败任务提炼 failure
  • 审批行为提炼 preference,但必须达到重复或明确表达阈值。
  • 经验内容必须短、具体、可执行。

代码任务

P0:事件进入记忆图谱

  • 扩展 memory_graph.py 与 Hybrid/Sharded 兼容层:新增 TOOL_CALLTOOL_RESULTAPPROVAL 三类节点类型。
  • 扩展 memory_mirror.py:将 tool action 映射为 TOOL_CALL,tool observation 映射为 TOOL_RESULT,审批请求/决策映射为 APPROVAL
  • _persist_web_visible_message() 后调用 mirror,确保 Web 卡片事件同步进入 MemoryGraph。
  • 支持 pair_id 去重和 TOOL_CALL → TOOL_RESULT 因果边。
  • 支持审批请求/结果节点和因果边。
  • 支持 task_graph_id 到 TASK 节点的 REFERENCE 边。
  • 支持同一任务内 TOOL_CALL → next TOOL_CALL 的 TEMPORAL 工具链边。

验收:

  • 复杂任务执行后,MemoryGraph 中能按类型查询到本轮 round 下的 TOOL_CALLTOOL_RESULTAPPROVAL 节点。
  • 工具调用与工具结果通过 CAUSAL 边配对,工具调用序列通过 TEMPORAL 边串联。
  • 刷新/重启后卡片仍能由 InteractionStore 回放,MemoryGraph 中节点仍存在。

P1:任务执行 trace

  • 新建 TaskExecutionTrace 提取器。
  • 从 InteractionStore 聚合工具链、审批链、结果、错误和文件路径。
  • pipeline.agent_done/agent_error 时生成 trace 并写入 MemoryGraph summary 节点 metadata。

验收:

  • 任一复杂任务完成后,可打印出结构化 trace。
  • trace 中至少包含 goal、tool_chain、approval_trace、result、success、source_event_ids。

P2:经验化

  • 新建任务经验生成器。
  • 将 trace 转换为经验候选。
  • 使用 EnhancedExperienceStore.add_experience() 保存经验。
  • 保存成功后,在 MemoryGraph 中创建或更新 EXPERIENCE 节点,并与 task_summary 建 REFERENCE 边。

验收:

  • 成功创建 Web 项目类任务后,经验库出现一条 procedure/success 经验。
  • 失败或审批拒绝任务后,经验库出现 failure/preference 候选。
  • 后续类似任务的记忆检索能召回该经验。

P3:复盘与去重

  • 加入经验去重:相同 task_graph_id + 相近 content 不重复保存。
  • 将用户正/负反馈作为经验确认信号。
  • 将高价值经验标记为 IMPORTANT,低置信候选仅保留在 InteractionStore/MemoryGraph,不进入 ExperienceStore。

验收:

  • 重复刷新或重复广播不会重复写经验。
  • 用户明确纠错后能生成 failure lesson。

风险与约束

  • 第一阶段只新增 TOOL_CALLTOOL_RESULTAPPROVAL 三类底层 NodeType,不扩大到进度、总结、异常等所有事件,避免一次性迁移过大。
  • MemoryGraph 当前运行态有 Hybrid/Sharded 兼容层,新增节点类型必须同时兼容 Enum 类型和字符串类型存储。
  • 工具调用事件数量可能很大,必须保留原始事件在 InteractionStore,MemoryGraph 只挂关键语义节点和摘要。
  • 经验库不能成为日志库,只有任务结束、失败、纠错、重复模式才进入经验化。
  • 审批记录可能包含敏感路径/命令,经验化时需要摘要化,避免把完整命令无脑写入长期经验。

推荐实施顺序

  1. 完成 P0,让任务执行过程稳定进入 MemoryGraph。
  2. 完成 P1,让单次任务可生成结构化 trace。
  3. 完成 P2,让 trace 可经验化并回投 MemoryGraph。
  4. 完成 P3,做去重、确认和质量控制。