Files

3.7 KiB

Single React Diagnosis Agent Acceptance

结果

已接受。阶段 4 Committed OpenSpec 的 11 项任务全部完成,新链路仅通过内部 Java/test 入口运行,公开 Chat 未切换。

验证

静态验证

  • 检查:新 harness.agent 包与 Prompt 搜索 ThreadLocal|SessionContextHolder|while|SequentialAgent|SupervisorAgent|StateGraph|Planner|Composer|Verifier|raw_response。
  • 结果:通过,无匹配。
  • 检查:git diff --name-only 限定 Controller、ChatService、AiOpsService。
  • 结果:通过,无 diff。
  • 检查:OpenSpec artifact status、cross-artifact、L2 interface impact、.committed、.archive-ready。
  • 结果:通过。

脚本验证

  • 命令:mvn -q -DskipTests compile
  • 结果:通过。
  • 命令:mvn -q '-Dtest=HarnessToolInterceptorTest,DiagnosisAgentUseCaseTest' test
  • 结果:通过,14 tests。
  • 命令:mvn -q '-Dtest=DiagnosisAgentUseCaseTest,HarnessToolInterceptorTest,DiagnosisHarnessCoreTest,ToolBoundaryTest,ToolAdapterTest,MysqlToolAdapterTest,CanonicalInvocationStoreTest,HarnessContractTest,RagToolContractTest,QueryLogsToolContractTest,MysqlToolContractTest' test
  • 结果:通过。
  • 命令:openspec validate single-react-diagnosis-agent --strict
  • 结果:通过。
  • 命令:归档后 openspec validate single-react-diagnosis-agent --type spec --strict
  • 结果:通过;仓库级 openspec validate --specs --strict 另发现前序 mysql-readonly-tool、rag-log-projections 主规格仍使用旧 scenario 格式,本阶段不跨归档边界修改。

浏览器/人工验证

  • 不适用。本阶段无 UI、HTTP 或 SSE 行为变化。

未验证

  • 未启动 Maven 应用、外部模型、MySQL、Redis、Milvus 或日志服务;按 ISS-014 门禁统一留到阶段 7 live E2E。
  • 未验证 provider 生产响应始终携带 Token Usage;缺失 Usage 时模型调用次数仍强制,实际 Token 只能在 provider 返回时记录。

已完成范围

  • 单一 Diagnosis ReactAgent、单 Prompt 和固定 Query/PreviousTurn 输入。
  • 框架原生 tool loop、exact Tool Call ID 和三类 Harness adapter bridge。
  • 模型/Token/Tool/上下文/Draft 预算与无自动 retry。
  • 严格 DiagnosisDraft 输出和无证据停止规则。
  • 显式 sessionId/runId audit metadata、可注入 AgentStep Hook、canonical Tool invocation。
  • 公开 Chat/AiOps 与旧多 Agent 路径保持不变。

已知限制

  • Draft 尚未经过 EvidenceGuard/SemanticGuard,不能公开发布;阶段 5 负责释放门禁。
  • previous turn 由调用方传入,阶段 6A 才实现同 Session 安全 Run 选择和确定性组装。
  • 真实业务 adapter/Spring Bean 装配和公开入口切换分别留给阶段 6A/6B。
  • 仓库级全规格 strict validation 仍受阶段 3B/3C 主规格 scenario 标题格式阻塞,建议阶段 7 文档清理时统一修正并复验。

Bug 修复和诊断

  • 编译发现框架 Interceptor.getName() 必须实现,已补充稳定名称并回归。
  • 首次测试修正了两个测试假设:callback 异常包装类型,以及 ToolResponseMessage 在 Prompt instructions 中的实际位置;生产规格与实现方向未变。
  • 提交前自审发现默认 BeanOutputConverter schema 不允许 conclusion=null,与冻结的无证据契约冲突;已增加 schema post-process 和 focused regression,未放宽其他 Draft 字段。

交接

  • 下一步:提交独立阶段 4 commit,再进入阶段 5。
  • OpenSpec 归档确认:用户已对 ISS-014 每阶段 Apply、Archive 和 Git commit 提供持续授权;已归档至 openspec/changes/archive/2026-07-21-single-react-diagnosis-agent,主规格已同步至 openspec/specs/single-react-diagnosis-agent/spec.md。