| 1 | # Harness 风格执行机制迁移 |
| 2 | |
| 3 | 本文定义从 `main-v2@986a6bc967` 改造后的现行行为,文件新鲜度和恢复语义参考 DeepSeek Harness `master@c291e7961a`。Reasonix 保留 Go 运行时、权限、沙箱、Goal、Plan、检查点和多代理,不引入 Cordis 插件框架。 |
| 4 | |
| 5 | ## 现行行为 |
| 6 | |
| 7 | - 结构化文件修改要求宿主观察过当前版本;任意成功文本窗口即可,成功写入会刷新版本。 |
| 8 | - 工具按实际执行顺序生效;同批 `read → edit → edit → bash` 可完成,普通失败不取消后续独立调用。 |
| 9 | - 大文件读取只受当前输出与资源限制;分页可选,不阻止命令、网络、其他文件或终答。 |
| 10 | - 已启动但没有可靠结果的调用记录为持久 `unknown` 事实,只提供检查建议,不禁用工具,不自动重放。 |
| 11 | - 完成由模型判断。`complete_step`、`review_report`、读取策略回执、最终就绪证明、操作结算、Auto Guard 审查和恢复确认卡均已退役。 |
| 12 | - 连续相同调用在第 3、5、8 次收到不含参数的提醒,调用仍会执行。 |
| 13 | |
| 14 | 三个边界是有意设计:窗口读取不代表全文审阅;bash 和 MCP 不受文件观察策略约束;未知外部副作用不再有宿主强制的防重复执行保证。 |
| 15 | |
| 16 | 文件操作使用稳定错误码:`FS_NOT_OBSERVED` 要求先读取当前窗口, |
| 17 | `FS_STALE_VERSION` 表示外部变更后需要重读,`FS_NOT_FOUND` 表示源不存在, |
| 18 | `FS_ALREADY_EXISTS` 表示受保护的创建或移动发生冲突。这些都只是当前调用失败, |
| 19 | 不会建立全局待满足操作。 |
| 20 | |
| 21 | ## 兼容表 |
| 22 | |
| 23 | | 旧数据或接口 | 当前处理 | |
| 24 | | --- | --- | |
| 25 | | `source_token` 参数 | 兼容解码器可接受,但授权忽略,公开 schema 不再出现。 | |
| 26 | | ReadCompletion、ReadPause、证明回执 | 历史会话解码和保存保持原值,不能激活门禁。 | |
| 27 | | `complete_step`、`review_report`、读取回执调用 | 返回一次普通 `tool_retired`。 | |
| 28 | | Auto Guard sidecar 与配置 | 仅作历史读取,不连接 executor,当前配置保存不再写入。 | |
| 29 | | 工具恢复查询 | 返回 `retired=true` 的不可变事实。 | |
| 30 | | 工具恢复动作 | 稳定返回 `tool_recovery_retired`,不重放操作。 | |
| 31 | |
| 32 | 工具集合和描述发生变化,升级后的第一次 provider 请求会有一次预期的前缀缓存失效;之后工具顺序和新前缀保持稳定。Desktop 继续校验壳与服务契约摘要,不支持不兼容版本混用。 |
| 33 | |
| 34 | ## 七项问题验证 |
| 35 | |
| 36 | | 问题 | 旧触发 | 新断言 | |
| 37 | | --- | --- | --- | |
| 38 | | #9994、#9995、#10067、#10103 | 编辑后 bash 或再次编辑被证据状态永久阻断 | 成功写入刷新观察,bash 独立;读改跑再改可连续重复三次。 | |
| 39 | | #10053 | 有界读取或纯读取产生必须补齐的全文债务 | 大文件只读一个窗口即可运行 bash 并终答。 | |
| 40 | | #10085 | 同一 provider batch 的读取不能授权写入 | 每次调用成功后同步更新观察,后续调用立即看到。 | |
| 41 | | #10153 | `outcome_unknown` 安装跨会话网络/工具屏障 | 未知事实只记录一次,后续诊断或相同调用走普通权限。 | |
| 42 | |
| 43 | 本地测试还覆盖未观察覆盖拒绝、重读恢复、同大小且恢复 mtime 的外部替换、权限变化、别名、并发写者和不可覆盖创建。编码、缓冲区、notebook、符号、移动和 multi-edit 继续由原工具测试覆盖。Windows 原生文件身份提供 Windows-only 测试,必须在 Windows 主机运行;仅交叉编译不算验收。 |
| 44 | |
| 45 | ## 删除范围 |
| 46 | |
| 47 | 运行时已移除全文读取债务与续读门禁、source-token 授权、prepared/applied/settled 操作状态推进、证明驱动 todo、最终就绪恢复、重复调用拒绝、证据增益 progress/storm 干预和可连接的 Auto Guard reviewer。旧 provider/session 类型只在兼容解码或只读历史展示需要时保留。 |
| 48 | |
| 49 | 文件发布顺序为:解析目标、权限/沙箱/范围检查、加锁、取得当前源并比较观察、计算修改、发布前再次比较、按原路由发布、更新观察、返回真实结果。ACP 没有原子条件写入,本地检查也无法阻止最终检查后任意外部进程写入,因此两者都不宣称通用 CAS。 |
| 50 |