Skip to content

[feat]: 增加 Claim 按需查阅、修订与执行反馈 - #2

Merged
Daniel-ChenJH merged 6 commits into
mainfrom
feature/claim-harness-main
Sep 18, 2026
Merged

Daniel-ChenJH merged 6 commits into
mainfrom
feature/claim-harness-main

Conversation

@wentaopoly

@wentaopoly wentaopoly commented Sep 16, 2026

Copy link
Copy Markdown
Collaborator

概要

本地 Claim 积累后,会话启动需要加载大量正文,用户和主 Agent 也缺少直接核对、纠正已有判断的入口。本 PR 增加按需查阅与修订能力,并改善长任务的执行反馈和复盘输出。

主要变化

  • 会话启动只展示有界 Claim 目录;主 Agent 通过 claim 工具搜索、读取正文、查看关联 Trace,并修订自有的已有 Claim。修订使用读取时的 revision 检测冲突,保留身份与来源链。
  • 新增 /claim 面板及 /help 说明,支持列表、详情、搜索、分页、Trace 查阅和编辑保存。Trace 详情按 Esc 返回原列表,保留已加载条目、选中位置和滚动位置。
  • 团队模式下修订先保存本地,再进入既有上传队列;单人模式仅保存本地。补充未完成编辑的恢复,以及 finalize checkpoint 的版本校验,避免旧复盘结果覆盖新修订。
  • 已结束命令的完整连续长输出在原预算内显示前缀与尾部预览,读取游标只推进前缀,中间内容仍可继续读取。压缩后从成功的文件工具结果重算文件路径列表,并计入上下文预算。
  • 复盘通过带 schema 的 return_structured_result 函数参数提交 JSON,统一输出指引并保留文本 JSON 兼容。Anthropic 的末尾 tool_use 被 max_tokens 截断时按无效调用处理,避免将残缺参数当成合法复盘结果。

行为边界

  • claim 工具仅开放给主 Agent;支持修订已有自有 Claim,不直接新建、删除或修改来源链。Trace 保留在本地,历史记录不代表后来修订内容已获验证。
  • 旧 session 保留冻结的 system prompt,resume 会提示旧指引;新 session 使用完整的新工具指引。
  • 本 PR 覆盖 ACN 运行时,评测工具与评测结果验证不在范围内。文件路径列表是有界的历史操作记录,不授予文件操作权限。

验证

  • 版本一致性、cargo fmt --checkcargo clippy -- -D warnings、完整 cargo testcargo checkcargo build --bin acn 通过。
  • 覆盖 Claim revision 冲突、编辑恢复、单人/团队模式、finalize 重放保护、结构化输出与文本 JSON 兼容,以及长输出游标和文件路径列表边界。
  • 标准 tmux 冒烟通过;本次专项验收覆盖 Trace 列表翻页、滚动选择、详情翻页、Esc 返回原视口、重新打开同一条 Trace,stderr 为空。
  • 新增回归测试确认 Trace 返回后保留列表分页、选中项和滚动位置。

wentaopoly and others added 6 commits September 16, 2026 11:56
- 普通会话启动只注入有界本地 claim 目录,正文、来源与 trace 由 claim 工具按需读取
- 开放主 agent 以 revision 校验修订自有 claim;冲突可见,不静默覆盖
- 新增 /claim 面板浏览、核对与编辑本地 claim,保护异步回包、长文本与失败草稿
- 保护团队同步恢复和 finalize checkpoint,阻止中断后重放旧准备结果覆盖已生效修订
- 团队模式下未完成的 claim 编辑恢复失败按 inbox 本地失败降级,不阻断 session 启动
- code_run / write_stdin 终态连续长输出在原预算内展示前缀与尾部预览,游标只推进前缀
- compaction projection 从成功文件工具结果确定性重算文件工作集并计入上下文预算
- 收紧 claim 与 recap prompt:保留适用条件、证据边界,目录摘要中的 ID 仅供发现
- 补充 PRD、核心行为与配置文档说明
- finalize recap 用显式 JSON schema 的函数参数返回结果,避免数组被编码成字符串
- StructuredJsonCaller 只提取该函数的参数,不派发工具;额外调用、MaxTokens 交给既有终态校验拒绝
- 纯文本 JSON 仍被接受,业务校验与重试预算不变
- anthropic 在 max_tokens 截断末尾 tool_use 时把该调用标为 InvalidToolUse:工具循环回错误 tool_result 让模型重试,结构化复盘不再把残缺参数当作合法空结果
- claim 编辑恢复只补完“正文已落盘、尚未入队”的记录,正文未写入的记录按未完成修订丢弃;finalize 两条路径的恢复失败与 inbox 一致按 warning 降级
- resume 冻结 prompt 早于 claim 工具的 session 时,在聊天区提示旧限制来自旧快照
- /claim 面板:list/trace 行按显示宽度压成恰好一行,Edit 视图接上 Up/Down,Esc 回到详情从头显示;/help 补 /claim
- 删除重复的 holder 过滤、不可达的目录序列化错误路径、复制的 trace YAML 列表函数、多余的 None 提前返回与未使用的返回值
- 明确通过结构化输出函数参数提交复盘 JSON,保留文本 JSON 兼容
- Trace 详情返回原列表,保留已加载分页、选中项和滚动位置
- 补充返回导航回归测试,通过完整 Rust 检查与 tmux 验收
- 删除具体评测成绩和本地周报结论,保留通用需求背景
@Daniel-ChenJH Daniel-ChenJH changed the title [feat]: 移植 claim harness 运行时改动到 main [feat]: 增加 Claim 按需查阅、修订与执行反馈 Sep 18, 2026
@Daniel-ChenJH
Daniel-ChenJH merged commit c878a11 into main Sep 18, 2026
2 checks passed
@Daniel-ChenJH
Daniel-ChenJH deleted the feature/claim-harness-main branch September 18, 2026 05:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants