Files
Agent-System/.doc/ops/short-term/2026-09-26-dialogue-ctx-closeout.md
T

5.6 KiB
Raw Blame History

dialogue-ctx-injection 收口(short-term)

  • task_id: dialogue-ctx-closeout-2026-09-26
  • owner: pi
  • status: in_progress
  • 授权来源: 用户会话指令「把 FEATURE-MATRIX 中的 dialogue-ctx-injection、jevdecide-shadow、chat-semantic-replace 完成;一个 feature 一个 feature 完成;严格按规范」
  • write_scope: internal/bizdev, internal/server, internal/coordinator, .doc
  • mutex: dialogue-ctx
  • base_dev_sha: f6ad3344f8
  • capabilities: docs:publish, docs:approve, env:dev
  • policy_revision: AGENTS 2026-09 / agent-worktree-workflow r1 / validation-contract 2026-09-21
  • review_state: pending
  • integration_state: pending
  • deployment: pending(dev rebuild + 迁移核验)
  • cleanup: pending
  • remote_sync: not_requested

一、当前进度分析

已完成(dev 已合入,dc29b84c + 1da17a28):

  • internal/dialoguectx 清洗/分层/打包;internal/conflictresolve 权威裁决 + 卡片限额;squad 工作区 context/dialogue/ 注入;bizdev 全任务默认注入(DIALOGUE_CTX_INJECTION 紧急关闭);MemoryComposer 近况段;goose 00072_2026-09-25-context-conflict-adjudications.sql(原设计 00071,因 maintenance-windows 占号顺延为 00072)。
  • 单测全绿(dialoguectx / conflictresolve / squad 落盘 / 关联包)。

未完成(FEATURE-MATRIX 关闭条件):

  1. dev 迁移未应用:dev 环境当前停机,context_conflict_adjudications 表未在 dev DB 落地。
  2. 真实 PI 落盘核验缺失:无真实项目任务跑过 context/dialogue/ 落盘链路。
  3. 冲突确认卡链路断裂(本轮发现的缺口):internal/bizdev/service_task_run.go:646 对 buildDialoguePackageForRun 返回的 expectations 直接丢弃(_),trigger_user 路由的 PendingExpectation 卡片从未到达用户;confirm_context_fact 也无 coordinator 处理。HITL 分级路由中仅 doc_author(digest 通知)已接线。

二、方案

2.1 代码补齐(使「冲突确认卡」真实可达)

  1. internal/bizdev/types.go:TaskRunResult 增加 PendingContextConflicts []ContextConflictCard(fact_key/winning_value/prompt/snippet/expectation_id)。
  2. internal/bizdev/service_task_run.go:捕获 expectations → 转卡片(≤3,与卡片限额一致)挂到结果(成功与失败路径均挂,裁决与任务成败无关)。
  3. internal/server(任务处理器,持有 sessions):run 完成后若有 PendingContextConflicts 且 req.SessionID 对应活跃会话 → 向该会话追加 assistant 消息(确认卡文案,参照 confirmGate 文案形态)+ 通过 coordinator.ApplyContextUpdate 设置 PendingExpectation(首个 expectation)+ 经 ctxmgr 落消息记录。
  4. internal/coordinator:
    • 期望命中 confirm_context_fact(Intent=CONFIRM_ACTION + pending.TargetAction):复用 handleSupplementInfo 语义——按 payload slots 写黑板(内存 + blackboard.json + OnSupplement 持久化钩子),回复「已采信…」。
    • handleDeclineExpectation 对 confirm_context_fact:回复引导用户直接给出正确事实(下一条 SUPPLEMENT_INFO 自然吸收),不再用阶段推进话术。

不改 web(卡片以 chat 消息文案呈现,确认走既有期望命中通道);不新增迁移;不动 dialoguectx/conflictresolve 已验收逻辑。

2.2 dev 运行时验证(关闭条件)

  1. env:dev 租约下从主目录 rebuild dev(部署当前 dev HEAD)→ 核验 /health、/ready、goose_db_version ≥ 72 且 context_conflict_adjudications 存在。
  2. 真实 PI 落盘核验:真实项目成员对话(含事实陈述)→ 触发任务(真实 PI Runner)→ 核验工作区 context/dialogue/(digest.md/turns.md/facts.json/CONFIRMATIONS.md/README)+ TASK.md 导航 + DB 裁决记录。
  3. 冲突确认卡冒烟:同 key 不同值、30 分钟内、无明确证据词的两条用户对话 → 跑任务 → 会话出现确认卡消息 → 回复「确认」→ 期望命中、黑板更新、回复确认采信。

2.3 验证契约对照

  • Go/接口变更:单测 + arch-check --mode block + go vet ./... + go test -short ./...。
  • 产品 Agent/工作流:受影响真实 PI 链路(任务注入 + 冲突卡冒烟)。
  • 迁移:dev 实际升级 + schema 版本证据。

三、计划

  1. 分析进度(本文件§一)
  2. 代码补齐 §2.1 + 单测(dev ebb82820)
  3. 工程验证(vet/short/arch-check,候选验证收据)
  4. 候选集成 dev(ebb82820)
  5. dev runtime 启动(no-docker 单二进制,schema 73)+ 迁移核验
  6. 真实 PI 落盘核验 + 冲突卡冒烟(含 sidecar 修复 f89b946d 后 completed run 全 PASS)
  7. 测试报告 + 矩阵行升 done + 任务收口 + worktree 清理

四、结果登记

  • review_state: done(单测 + 工程门禁 + 候选验证收据)
  • integration_state: done(dev ebb82820 + f89b946d,均 --no-ff 候选集成)
  • deployment: dev_runtime_verified(no-docker 单二进制 + localpg,schema 73;health)
  • 验证结论:关闭条件全满足,见 收口报告
  • cleanup: 本任务 worktree 按门禁清理
  • remote_sync: not_requested(本地 dev 前进,未 push)
  • 过程修复:①冲突卡接线(expectations 丢弃→OnTerminal 投递+期望命中处理);②no-docker sidecar PI_AGENT_EXTENSION 覆盖;③本机 .env PI_AGENT_BIN macOS 路径纠正(非仓库变更)