YAOTU INSIGHTS

claw-code Rust 移植版 Parity 状态与 Mock 对等性验证机制全解析

claw-code Rust 移植版 Parity 状态与 Mock 对等性验证机制全解析
claw-code Rust 移植版 Parity 状态与 Mock 对等性验证机制全解析【免费下载链接】claw-codeAn agent-managed museum exhibit, built in Rust with Gajae-Code / LazyCodex — developed and maintained with no human intervention.项目地址: https://gitcode.com/gh_mirrors/claudeco/claw-code本文基于仓库中 rust/PARITY.md 一文展开系统梳理 claw-code Rust 移植版在“功能对等性Parity”上的定义、验证手段与最新进展。你将理解为什么一个 Agent 自主维护的项目需要一套确定性的 Mock 对等性测试框架12 个脚本化场景分别验证什么40/40 工具表面对齐与 67/141 斜杠命令覆盖意味着什么以及 bash 校验、文件工具、权限执行等关键检查点当前的完成度与剩余缺口。文章所有结论均可回溯到 rust/PARITY.md 及仓库源码、测试、配置文件。一、背景什么是 claw-code 的 “Parity”claw-code 是一个以 Rust 重写、由 Agent 自主开发与维护的编程助手仓库描述为 An agent-managed museum exhibit, built in Rust。所谓 Parity指的是Rust 移植版与原参考实现upstream在工具表面tool surface、斜杠命令、运行时行为上的对齐程度。rust/PARITY.md 就是这份对齐状态的唯一权威台账它记录每个功能 lane 的完成状态、对应的 feature commit 与 merge commit、diff 统计以及仍然敞开的运行时行为缺口。这份文档有两条底层原则从目录结构即可印证以“可复现的脚本化场景”为验证单元而不是依赖人工手工核对以“诚实”为前提明确区分行为对等与仅表面对齐stub不允许用占位实现冒充完整功能。二、Mock Parity Harness里程碑 1 与里程碑 2PARITY.md 用两个里程碑记录了对等性验证基础设施的建设过程对应的产物在 rust/MOCK_PARITY_HARNESS.md 中有完整说明。里程碑 1确定性 Mock 服务 干净环境 CLI 测试产物状态仓库位置确定性 Anthropic 兼容 Mock 服务✅rust/crates/mock-anthropic-service可复现的干净环境 CLI Harness✅rust/crates/rusty-claude-cli/tests/mock_parity_harness.rs脚本化场景streaming_text、read_file_roundtrip、grep_chunk_assembly、write_file_allowed、write_file_denied✅rust/mock_parity_scenarios.json这套设计解决了一个现实痛点真实 LLM 输出具有不确定性无法用来做回归断言。Mock 服务通过固定脚本返回预定响应让端到端 CLI 测试变得可重复、可断言。里程碑 2行为面扩展新增覆盖状态仓库位置单轮多工具调用multi_tool_turn_roundtrip✅rust/mock_parity_scenarios.jsonBash 流程bash_stdout_roundtrip✅同上权限提示bash_permission_prompt_approved/bash_permission_prompt_denied✅同上插件路径plugin_tool_roundtrip✅同上行为 diff / checklist 运行器✅rust/scripts/run_mock_parity_diff.py三、Harness v2 行为清单与场景清单PARITY.md 定义的 Harness v2 行为清单canonical scenario map指向 rust/mock_parity_scenarios.json。该清单覆盖五类行为多工具 assistant 轮次Multi-tool assistant turnsBash 流程往返Bash flow roundtrips跨工具路径的权限执行Permission enforcement across tool paths插件工具执行路径Plugin tool execution path文件工具——由 harness 验证的流程File tools — harness-validated flowsmock_parity_scenarios.json实际登记了12 个场景比 PARITY.md 列出的 54 个核心场景更多每个场景都带name、category、description和parity_refs反向引用 PARITY.md 中的承诺条款形成一个“文档承诺 → 场景清单 → 测试断言”的完整闭环场景分类验证要点streaming_textbaseline无工具调用的流式文本输出read_file_roundtripfile-toolsread_file 执行 最终合成grep_chunk_assemblyfile-toolsgrep_search 部分 JSON 分块组装write_file_allowedfile-toolsworkspace-write 下写文件及文件系统副作用write_file_deniedpermissionsread-only 模式下 write_file 返回错误multi_tool_turn_roundtripmulti-tool-turns同一轮内 read_file grep_searchbash_stdout_roundtripbashdanger-full-access 下 bash stdout 往返bash_permission_prompt_approvedpermissionsworkspace-write 升级 bash 且批准bash_permission_prompt_deniedpermissionsworkspace-write 升级 bash 且拒绝plugin_tool_roundtripplugin-paths外部插件工具经运行时工具注册表执行auto_compact_triggeredsession-compaction累计输入 token 超阈值触发自动压缩token_cost_reportingtoken-usageusage token 数与 estimated_cost 出现在 JSON 输出运行方式仓库提供了两条入口均以rust/为工作目录# 1. 运行完整对等性 harness编译并执行 mock_parity_harness 测试 cd rust/ ./scripts/run_mock_parity_harness.sh其内容即cargo test -p rusty-claude-cli --test mock_parity_harness -- --nocapture# 2. 行为 checklist / parity diff运行测试并生成逐场景 PASS/MISSING 报告 cd rust/ python3 scripts/run_mock_parity_diff.pyrun_mock_parity_diff.py还有--no-run模式只做静态映射检查确认mock_parity_scenarios.json中每个场景的parity_refs都能在PARITY.md正文中找到对应文本防止“测试跑了但文档承诺没人维护”的漂移。这正是“manifest 与 harness 及 PARITY.md 三向对齐”约束的实现载体见 rust/MOCK_PARITY_HARNESS.md。手动启动 Mock 服务cd rust/ cargo run -p mock-anthropic-service -- --bind 127.0.0.1:0服务启动后会打印MOCK_ANTHROPIC_BASE_URL...把该 URL 设为ANTHROPIC_BASE_URL并用任意非空字符串作为ANTHROPIC_API_KEY即可让 CLI 直连 Mock见 rust/crates/mock-anthropic-service/src/main.rs。四、Harness 内部实现它到底在测什么深入 rust/crates/rusty-claude-cli/tests/mock_parity_harness.rs 可以看到这套测试的几个关键设计它们是 PARITY.md 各条✅的直接证据来源4.1 干净环境隔离每个场景在独立临时目录中运行通过env_clear()清空环境变量再显式注入ANTHROPIC_API_KEYtest-parity-key任意值即可ANTHROPIC_BASE_URLmock base url指向本测试进程内 spawn 的 Mock 服务CLAW_CONFIG_HOME/HOME指向独立的临时目录NO_COLOR1、PATH/usr/bin:/binCLI 参数--model sonnet --permission-mode mode --output-formatjson [--allowedTools tools]每个场景通过--permission-mode指定不同权限模式从而在同一套框架下覆盖 read-only、workspace-write、danger-full-access 三种权限上下文。4.2 场景驱动的 Mock 响应Mock 服务rust/crates/mock-anthropic-service/src/lib.rs通过在用户 prompt 中寻找PARITY_SCENARIO:前缀识别场景然后对无工具调用场景返回text/event-stream的 SSE 流message_start→content_block_delta→message_stop对工具调用场景第一轮返回tool_use类型的 content block并故意把工具入参拆成多个input_json_delta分块——例如 grep 场景把{pattern:par、ity,path:fixture.txt、,output_mode:count}三段发送专门考验客户端对部分 JSON 分块的重组能力第二轮根据上一次tool_result的内容从file.content、numMatches、filePath、stdout等字段中提取生成最终文本回复。测试最后还会断言12 个场景累计产生21 次/v1/messages请求且每次请求都带stream: true——这验证了客户端始终以流式方式消费响应。4.3 断言矩阵部分关键断言场景关键断言write_file_denied工具输出包含 requires workspace-write permissionis_errortrue且generated/denied.txt不存在write_file_allowedgenerated/output.txt内容精确等于created by mock service\nbash_permission_prompt_approved/deniedstdout 出现 Permission approval required 与 Approve this tool call? [y/N]:stdin 喂入y\n/n\nplugin_tool_roundtrip插件输出 JSON 中pluginparity-pluginexternal、toolplugin_echo、input.messagehello from plugin parityauto_compact_triggeredJSON 输出必须包含auto_compaction字段且usage.input_tokens 50_000Mock 注入的 50000/200 tokentoken_cost_reportinginput_tokens、output_tokens均非零estimated_cost为$前缀字符串4.4 插件场景的工作区构造prepare_plugin_fixture展示了外部插件的标准布局在external-plugins/parity-plugin/下创建tools/echo-json.sh通过CLAWD_PLUGIN_ID、CLAWD_TOOL_NAME环境变量回显 JSON并声明requiredPermission: workspace-write与.claude-plugin/plugin.json清单然后在CLAW_CONFIG_HOME/settings.json中通过enabledPlugins与plugins.externalDirectories启用它。这说明插件的发现、加载与执行路径已经可被端到端验证。五、工具表面40/40 规格对等PARITY.md 声明Tool Surface 达到 40/40spec parity——即 40 个工具在规格层面全部有 Rust 实现或占位。这一数字必须拆开看表面对齐 ≠ 行为对等。5.1 真实实现行为对等深度不一下表完整继承自 rust/PARITY.md工具Rust 实现行为说明bashruntime::bash283 LOC子进程执行、超时、后台运行、sandbox ——强对等。9/9 校验子模块经36dac6c落地主分支运行时已带 sandbox 与权限执行支持read_fileruntime::file_opsoffset/limit 读取 ——良好对等write_fileruntime::file_ops文件创建/覆盖 ——良好对等edit_fileruntime::file_ops新旧字符串替换 ——良好对等。缺口replace_all近期才补上glob_searchruntime::file_opsglob 模式匹配 ——良好对等grep_searchruntime::file_opsripgrep 风格搜索 ——良好对等WebFetchtoolsURL 抓取 内容抽取 ——中等对等需核对内容截断、重定向处理WebSearchtools搜索查询执行 ——中等对等TodoWritetoolstodo/note 持久化 ——中等对等Skilltoolsskill 发现/安装 ——中等对等Agenttoolsagent 委托 ——中等对等TaskCreateruntime::task_registrytools内存任务创建并接入工具分发 ——良好对等TaskGetruntime::task_registrytools任务查询 元数据载荷 ——良好对等TaskListruntime::task_registrytools注册表支撑的任务列表 ——良好对等TaskStopruntime::task_registrytools终态停止处理 ——良好对等TaskUpdateruntime::task_registrytools注册表支撑的消息更新 ——良好对等TaskOutputruntime::task_registrytools输出捕获检索 ——良好对等TeamCreateruntime::team_cron_registrytools团队生命周期 任务分配 ——良好对等TeamDeleteruntime::team_cron_registrytools团队删除生命周期 ——良好对等CronCreateruntime::team_cron_registrytoolscron 条目创建 ——良好对等CronDeleteruntime::team_cron_registrytoolscron 条目移除 ——良好对等CronListruntime::team_cron_registrytools注册表支撑的 cron 列表 ——良好对等LSPruntime::lsp_clienttoolsdiagnostics/hover/definition/references/completion/symbols/formatting 的注册与分发 ——良好对等ListMcpResourcesruntime::mcp_tool_bridgetools已连接服务器资源列表 ——良好对等ReadMcpResourceruntime::mcp_tool_bridgetools已连接服务器资源读取 ——良好对等MCPruntime::mcp_tool_bridgetools有状态 MCP 工具调用桥 ——良好对等ToolSearchtools工具发现 ——良好对等NotebookEdittoolsJupyter notebook 单元格编辑 ——中等对等Sleeptools延时执行 ——良好对等SendUserMessage/Brieftools面向用户的消息 ——良好对等Configtools配置检查 ——中等对等EnterPlanModetoolsworktree 计划模式切换 ——良好对等ExitPlanModetoolsworktree 计划模式恢复 ——良好对等StructuredOutputtoolsJSON 透传 ——良好对等REPLtools子进程代码执行 ——中等对等PowerShelltoolsWindows PowerShell 执行 ——中等对等实现分布的规律很清晰文件类、任务类、团队/cron 类、MCP 桥、LSP 客户端已经达到良好对等——这些恰好都落在 PARITY.md 的 Completed Behavioral Parity Work 表格中每条 lane 都有对应的 feature commit 和 merge commit详见下一节。而 WebFetch/WebSearch/NotebookEdit/REPL/PowerShell 等仍标记中等对等需要进一步核对细节。5.2 仅占位表面对齐无行为工具状态说明AskUserQuestionstub需要真实用户 I/O 集成McpAuthstub需要超越 MCP lifecycle bridge 的完整认证 UXRemoteTriggerstub需要 HTTP 客户端TestingPermissionstub仅测试用低优先级这 4 个 stub 是诚实台账的最佳例证它们计入 40/40 的表面数字但 PARITY.md 明确标注surface parity, no behavior避免误导。六、斜杠命令67/141 上游条目PARITY.md 对斜杠命令的统计口径非常细致值得单独说明27 个原始 spec此前已存在——全部有真实 handler40 个新 spec——目前是 parse stub handler返回 not yet implemented其余约 74 个上游条目是内部模块/对话框/步骤不属于用户/commands。也就是说67 这个数字并不是67 个能用而是67 个在规格上登记在册其中 27 个有真实行为、40 个仅解析后返回占位提示。不要用 67/141 宣传斜杠命令完成度这是规格登记数而非可用数——这正符合文档一贯的诚实原则。七、行为功能检查点已完成工作与剩余缺口7.1 Bash 工具9/9 校验子模块全部完成PARITY.md 列出 bash 工具的 9 个请求级校验子模块全部标记 ✅落地于 commit36dac6c1005 insertionssedValidation—— 执行前校验 sed 命令pathValidation—— 校验命令中的文件路径readOnlyValidation—— read-only 模式禁止写入destructiveCommandWarning—— 对rm -rf等破坏性命令告警commandSemantics—— 命令意图分类bashPermissions—— 按命令类型做权限门控bashSecurity—— 安全检查modeValidation—— 依据当前权限模式校验shouldUseSandbox—— sandbox 决策逻辑从源码看这 9 个子模块的名称在 rust/crates/runtime/src/bash_validation.rs 中均有对应定义权限模式本身ReadOnly/WorkspaceWrite/DangerFullAccess/Prompt与按工具设定所需权限的策略 APIwith_tool_requirement实现在 rust/crates/runtime/src/permissions.rs实际门控逻辑含check_file_write工作区边界判定在 rust/crates/runtime/src/permission_enforcer.rs。Harness 注记里程碑 2 验证了 bash 成功执行以及 workspace-write 升级的 approve/deny 两条路径主分支运行时同时携带 sandbox 与权限执行能力。7.2 文件工具已完成检查点路径穿越防护symlink 跟随、../逃逸读写大小限制二进制文件检测权限模式执行read-only vs workspace-writeHarness 注记read_file、grep_search、write_file允许/拒绝、以及同轮多工具组装均已纳入 mock parity harness文件边界用例与权限执行分别落地于a98f2b6与336f820。7.3 Config / Plugin / MCP 流程完整 MCP 服务器生命周期连接 → 列出工具 → 调用工具 → 断开插件 install/enable/disable/uninstall 全流程 ——仍开放配置合并优先级user project local——仍开放Harness 注记外部插件的发现与执行已由plugin_tool_roundtrip覆盖MCP 生命周期落地于cc0f92e491 insertions, 24 deletions插件生命周期与配置合并优先级仍是待办。八、运行时行为缺口Runtime Behavioral GapsPARITY.md 诚实记录了尚未对齐的运行时行为缺口状态所有工具的权限执行read-only、workspace-write、danger-full-access✅ 已完成336f820流式响应支持由 mock parity harness 验证✅ 已完成输出截断大 stdout / 大文件内容❌ 待办会话压缩行为对齐❌ 待办token 计数 / 成本追踪精度❌ 待办Harness 注记当前覆盖已包含写文件拒绝、bash 升级 approve/deny、以及插件 workspace-write 执行路径。值得注意auto_compact_triggered场景在 JSON 层面验证了auto_compaction字段的格式对等性与大 token 数回显input_tokens 50_000但触发行为本身由 rust/crates/runtime/src/conversation.rs 中的auto_compacts_when_cumulative_input_threshold_is_crossed单元测试负责——这是格式对等与行为对等分层验证的又一实例。九、迁移就绪度Migration ReadinessPARITY.md 最后给出迁移就绪清单多数条目仍未勾选说明项目处于诚实披露、持续收敛阶段PARITY.md得到维护且诚实无#[ignore]测试掩盖失败仅允许 1 个live_stream_smoke_test每个 commit 上 CI 全绿代码库形态为交接准备就绪十、总结这份台账如何阅读要正确使用 rust/PARITY.md建议按三层去读验证层先看Completed Behavioral Parity Work表格中的 commit 与 diff 统计确认谁、在什么时候、以多少代码量完成了哪条 lane场景层对照 rust/mock_parity_scenarios.json 与 rust/crates/rusty-claude-cli/tests/mock_parity_harness.rs理解每个 ✅ 背后对应的可重复执行断言差距层把工具表面 40/40、斜杠命令 67/141、4 个 stub、运行时 3 个缺口、迁移 3 个未勾选项放在一起看得出真实完成度而不是只看某个数字。如果想亲手复现验证结果最低成本的做法是cd rust/ python3 scripts/run_mock_parity_diff.py --no-run # 静态检查文档↔场景映射 ./scripts/run_mock_parity_harness.sh # 跑完整 12 场景端到端测试这套文档承诺 ↔ 场景清单 ↔ 测试断言 ↔ commit 溯源四位一体的对等性管理机制正是 Agent 自主开发项目能够长期自我约束、避免功能悄悄漂移的关键工程实践。【免费下载链接】claw-codeAn agent-managed museum exhibit, built in Rust with Gajae-Code / LazyCodex — developed and maintained with no human intervention.项目地址: https://gitcode.com/gh_mirrors/claudeco/claw-code创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考