feat(harness): improve trace fallback and reasoning audit
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# ISS-014 单体 ReAct Agent、Harness 与 ACI 工具瘦身
|
||||
|
||||
**状态**:已完成(阶段 0-7 已验收并归档)
|
||||
**状态**:阶段 0-7 已验收并归档;运行质量改进项进行中
|
||||
**严重程度**:高
|
||||
**发现时间**:2026-07-20
|
||||
**目标分支**:`refactor/chat-single-react-harness`
|
||||
@@ -137,7 +137,7 @@ DIAGNOSIS
|
||||
- 调用其他 Agent;
|
||||
- 外层重试状态机。
|
||||
|
||||
不要求 Agent 输出 Thought 或 Chain of Thought。内部规划不形成对外协议,也不持久化为业务事实。
|
||||
不要求 Agent 输出 Thought 或 Chain of Thought。内部规划不形成对外协议,也不持久化为业务事实。若模型供应商实际返回 reasoning 元数据,可按独立审计数据保留受限副本;该副本不进入普通 Trace、证据快照或业务结果。
|
||||
|
||||
### 4.2 Harness
|
||||
|
||||
@@ -509,7 +509,7 @@ EvidenceGuard 或 SemanticGuard 降级使用 `content + done(FALLBACK)`;Router
|
||||
|
||||
禁止输出:
|
||||
|
||||
- Chain of Thought 和内部规划;
|
||||
- Chain of Thought 和内部规划(普通 SSE/Trace 不输出;独立审计存储仅限供应商实际返回的 reasoning 元数据);
|
||||
- System Prompt、模型 Prompt 和完整上下文;
|
||||
- 未脱敏 Tool 参数;
|
||||
- 原始日志、完整数据库行和完整检索 Trace;
|
||||
@@ -1335,7 +1335,7 @@ ISS-014 是总设计 Issue,不创建跨阶段共享的 OpenSpec change。以
|
||||
- 不引入业务 StateGraph;
|
||||
- 不实现 Harness 插件市场、通用 Pipeline DSL 或策略语言;
|
||||
- 不保留旧同步 Chat、`/chat_stream` 或旧 Tool Contract;
|
||||
- 不输出或持久化 Chain of Thought;
|
||||
- 不向普通 SSE、Trace、证据快照或业务结果输出 Chain of Thought;若供应商实际返回 reasoning 元数据,只允许写入独立的受限审计表,不将其作为业务事实或证据。
|
||||
- 不使用本地 `refs/*.md` 作为 Tool 原始结果主存储;
|
||||
- 不向 Agent 暴露 Redis Client、Redis Tool、key、连接信息或完整调用记录;
|
||||
- 不提供历史来源召回 Tool、通用 Memory Tool 或完整上下文恢复能力;
|
||||
@@ -1386,7 +1386,33 @@ ISS-014 是总设计 Issue,不创建跨阶段共享的 OpenSpec change。以
|
||||
|
||||
实现中不得为这些风险创建 HarnessPlugin、Graph、通用 Tool DSL 或大量预留接口;按各阶段最小范围实现并通过门禁验证。
|
||||
|
||||
## 17. 相关文件
|
||||
## 17. 阶段 7 后续运行质量改进
|
||||
|
||||
本节记录阶段 7 归档后的实际验证结果和后续开发边界。当前不恢复完整端到端验证,待以下代码项完成后再安排一次受控的成功/失败用例验证。
|
||||
|
||||
### 已完成并纳入本次提交
|
||||
|
||||
- 新增独立追加式 `diagnosis_trace_event` 表,按 `sessionId + runId` 记录 Run、Routing、Agent、Tool、Evidence、Semantic 和 Release 生命周期事件;普通 Trace 查询不再依赖其他业务表拼接完整时间线。
|
||||
- Knowledge Query 的 `KnowledgeAnswerDraft` 使用框架 `BeanOutputConverter` 注入实际 JSON Schema,避免模型因缺少结构约束返回 `Knowledge answer is invalid`。
|
||||
- Fallback 增加 `failure_stage`、`observed_facts` 和 `validation_issues`,在不暴露 Prompt、原始 Draft 或 Tool 载荷的前提下,为用户提供可审计的失败阶段、观察事实和校验问题。
|
||||
- 新增独立 `agent_reasoning_audit` 表和 reasoning 审计查询接口。Agent Hook 只保存供应商实际返回的 reasoning 元数据并限制长度;普通 Trace 仅记录是否存在及字节数,不返回原文。
|
||||
|
||||
### 已验证证据
|
||||
|
||||
- Diagnosis 成功用例:`sessionId=mvp-demo-success-e2e-20260722-2032`,`runId=e72d9c7b-2f78-44c8-9086-f2e9d6987f24`,`release_outcome=SUCCESS`,总 Token 8455,Tool 调用 1 次。
|
||||
- Knowledge Query 成功用例:`sessionId=mvp-demo-order-timeout-fixed-20260723`,`runId=2b704d1b-8f11-40ee-a4c6-5e5e04d3847c`,`release_outcome=SUCCESS`,总 Token 1998。
|
||||
- 相关 focused tests 和编译已通过;本轮不宣称 V015 数据库迁移和 reasoning endpoint 已完成真实数据库 E2E 验证。
|
||||
|
||||
### 下一阶段必须补齐
|
||||
|
||||
1. Diagnosis Agent 的硬停止策略:限制证据轮次,预算耗尽前强制生成最终 Draft,阻止重复 `lookup_knowledge`。
|
||||
2. Evidence Repair 的实际 `DiagnosisDraft` Schema 注入,消除真实运行中的 `PARSE_ERROR`。
|
||||
3. 使用真实 Provider 验证 reasoning 元数据:Provider 不返回时仍需写入 `reasoning_available=false` 的审计记录。
|
||||
4. 对 V015 迁移和 reasoning 查询接口执行一次受控真实数据库/E2E 验证,并核对 `sessionId + runId`。
|
||||
5. 明确 reasoning 审计数据的访问控制、保留期限和加密策略。
|
||||
6. 当工具成功但无法构造 verified snapshot 时,继续细化 Evidence 验证失败的 `observed_facts` 和 `validation_issues`。
|
||||
|
||||
## 18. 相关文件
|
||||
|
||||
- `mvp/issues/active/ISS-012-executor-token-budget-and-context-growth.md`
|
||||
- `mvp/issues/active/ISS-013-chat-entry-decoupling-and-sse.md`
|
||||
|
||||
Reference in New Issue
Block a user