claudecode/PARITY.md
fengmengqi 05a778bad9 feat: Claw Code 重命名及架构升级
品牌重塑:
  - Claude Code → Claw Code
  - .claude → .claw 配置目录
  - CLAUDE_* → CLAW_* 环境变量

  新增功能:
  - 多 Provider 架构 (ClawApi/Xai/OpenAI)
  - 插件系统 (生命周期/钩子/工具扩展)
  - LSP 集成 (诊断/代码智能)
  - Hook 系统 (PreToolUse/PostToolUse)
  - 独立 CLI (claw-cli)
  - HTTP Server (Axum/SSE)
  - Slash Commands 扩展 (branch/worktree/commit/pr/plugin等)

  优化改进:
  - Compaction 支持增量压缩
  - 全局工具注册表
  - 配置文件统一为 .claw.json
2026-04-02 15:14:31 +08:00

9.9 KiB
Raw Permalink Blame History

差异化缺口分析 (PARITY GAP ANALYSIS)

范围:对位于 /home/bellman/Workspace/claw-code/src/ 的原始 TypeScript 源码与 rust/crates/ 下的 Rust 移植版进行只读对比。

方法:仅对比功能表面、注册表、入口点和运行时流水线。未复制任何 TypeScript 源码。

主要摘要

Rust 移植版在以下方面具有良好的基础:

  • Anthropic API/OAuth 基础
  • 本地对话/会话状态
  • 核心工具循环
  • MCP stdio/引导支持
  • CLAW.md 发现
  • 一套小巧但可用的内置工具

它与 TypeScript CLI 尚未实现功能对等

最大的缺口:

  • 插件 (plugins):在 Rust 中实际上不存在
  • 挂钩 (hooks)Rust 中已解析但未执行
  • CLI 广度Rust 中的功能范围要窄得多
  • 技能 (skills)Rust 中仅支持本地文件,没有 TS 的注册表/捆绑流水线
  • 助手编排 (assistant orchestration):缺乏 TS 中感知挂钩的编排以及远程/结构化传输
  • 服务 (services):除了核心 API/OAuth/MCP 之外Rust 中大部分服务都缺失

tools/ (工具)

TS 已存在

证据:

  • src/tools/ 包含广泛的工具家族,包括 AgentToolAskUserQuestionToolBashToolConfigToolFileReadToolFileWriteToolGlobToolGrepToolLSPToolListMcpResourcesToolMCPToolMcpAuthToolReadMcpResourceToolRemoteTriggerToolScheduleCronToolSkillToolTask*Team*TodoWriteToolToolSearchToolWebFetchToolWebSearchTool
  • 工具执行/编排分散在 src/services/tools/StreamingToolExecutor.tssrc/services/tools/toolExecution.tssrc/services/tools/toolHooks.tssrc/services/tools/toolOrchestration.ts 中。

Rust 已存在

证据:

  • 工具注册表通过 mvp_tool_specs() 集中在 rust/crates/tools/src/lib.rs 中。
  • 当前内置工具包括 shell/文件/搜索/网页/待办事项/技能/代理/配置/笔记本/REPL/PowerShell 原语。
  • 运行时执行通过 rust/crates/tools/src/lib.rsrust/crates/runtime/src/conversation.rs 连接。

Rust 中缺失或损坏

  • 重大 TS 工具在 Rust 中没有等效项,例如 AskUserQuestionToolLSPToolListMcpResourcesToolMCPToolMcpAuthToolReadMcpResourceToolRemoteTriggerToolScheduleCronToolTask*Team* 以及多个工作流/系统工具。
  • Rust 工具表面仍明确是一个 MVP最小可行产品注册表而非对等注册表。
  • Rust 缺乏 TS 的分层工具编排拆分。

状态: 仅部分核心功能。


hooks/ (挂钩)

TS 已存在

证据:

  • src/commands/hooks/ 下的挂钩命令表面。
  • src/services/tools/toolHooks.tssrc/services/tools/toolExecution.ts 中的运行时挂钩机制。
  • TS 支持 PreToolUsePostToolUse 以及通过设置配置并记录在 src/skills/bundled/updateConfig.ts 中的更广泛的挂钩驱动行为。

Rust 已存在

证据:

  • 挂钩配置在 rust/crates/runtime/src/config.rs 中被解析和合并。
  • 挂钩配置可以通过 rust/crates/commands/src/lib.rsrust/crates/claw-cli/src/main.rs 中的 Rust 配置报告进行检查。
  • rust/crates/runtime/src/prompt.rs 中的提示指南提到了挂钩。

Rust 中缺失或损坏

  • rust/crates/runtime/src/conversation.rs 中没有实际的挂钩执行流水线。
  • 没有 PreToolUse/PostToolUse 的变异/拒绝/重写/结果挂钩行为。
  • 没有 Rust 的 /hooks 对等命令。

状态: 仅配置支持;运行时行为缺失。


plugins/ (插件)

TS 已存在

证据:

  • src/plugins/builtinPlugins.tssrc/plugins/bundled/index.ts 中的内置插件脚手架。
  • src/services/plugins/PluginInstallationManager.tssrc/services/plugins/pluginOperations.ts 中的插件生命周期/服务。
  • src/commands/plugin/src/commands/reload-plugins/ 下的 CLI/插件命令表面。

Rust 已存在

证据:

  • rust/crates/ 下没有出现专门的插件子系统。
  • 仓库范围内对插件的 Rust 引用除了文本/帮助提到外,实际上不存在。

Rust 中缺失或损坏

  • 没有插件加载器。
  • 没有市场安装/更新/启用/禁用流程。
  • 没有 /plugin/reload-plugins 对等命令。
  • 没有插件提供的挂钩/工具/命令/MCP 扩展路径。

状态: 缺失。


skills/ 与 CLAW.md 发现

TS 已存在

证据:

  • src/skills/loadSkillsDir.tssrc/skills/bundledSkills.tssrc/skills/mcpSkillBuilders.ts 中的技能加载/注册流水线。
  • src/skills/bundled/ 下的捆绑技能。
  • src/commands/skills/ 下的技能命令表面。

Rust 已存在

证据:

  • rust/crates/tools/src/lib.rs 中的 Skill 工具可以解析并读取本地 SKILL.md 文件。
  • rust/crates/runtime/src/prompt.rs 中实现了 CLAW.md 发现。
  • Rust 通过 rust/crates/commands/src/lib.rsrust/crates/claw-cli/src/main.rs 支持 /memory/init

Rust 中缺失或损坏

  • 没有等效的捆绑技能注册表。
  • 没有 /skills 命令。
  • 没有 MCP 技能构建器流水线。
  • 没有类似 TS 的实时技能发现/重载/更改处理。
  • 没有围绕技能的会话记忆 (session-memory) / 团队记忆 (team-memory) 集成。

状态: 仅支持基础的本地技能加载。


cli/ (命令行界面)

TS 已存在

证据:

  • src/commands/ 下庞大的命令表面,包括 agentshooksmcpmemorymodelpermissionsplanpluginresumereviewskillstasks 等。
  • src/cli/structuredIO.tssrc/cli/remoteIO.tssrc/cli/transports/* 中的结构化/远程传输栈。
  • src/cli/handlers/* 中的 CLI 处理程序拆分。

Rust 已存在

证据:

  • rust/crates/commands/src/lib.rs 中共享的斜杠命令注册表。
  • Rust 斜杠命令目前涵盖 helpstatuscompactmodelpermissionsclearcostresumeconfigmemoryinitdiffversionexportsession
  • 主要的 CLI/REPL/提示词处理位于 rust/crates/claw-cli/src/main.rs

Rust 中缺失或损坏

  • 缺失重大的 TS 命令家族:/agents/hooks/mcp/plugin/skills/plan/review/tasks 等等。
  • Rust 没有等效于 TS 结构化 IO / 远程传输层的实现。
  • 没有针对 auth/plugins/MCP/agents 的 TS 风格处理程序分解。
  • JSON 提示模式在此分支上有所改进,但仍未达到纯净的传输对等:实证验证显示,支持工具的 JSON 输出在最终 JSON 对象之前可能会发出人类可读的工具结果行。

状态: 功能性本地 CLI 核心,范围比 TS 窄得多。


assistant/ (助手/代理循环、流式、工具调用)

TS 已存在

证据:

  • src/assistant/sessionHistory.ts 中的助手/会话表面。
  • src/services/tools/StreamingToolExecutor.tssrc/services/tools/toolExecution.tssrc/services/tools/toolOrchestration.ts 中的工具编排。
  • src/cli/structuredIO.tssrc/cli/remoteIO.ts 中的远程/结构化流式层。

Rust 已存在

证据:

  • rust/crates/runtime/src/conversation.rs 中的核心循环。
  • rust/crates/claw-cli/src/main.rs 中的流式/工具事件转换。
  • rust/crates/runtime/src/session.rs 中的会话持久化。

Rust 中缺失或损坏

  • 没有类似 TS 的挂钩感知编排层。
  • 没有 TS 结构化/远程助手传输栈。
  • 没有更丰富的 TS 助手/会话历史/后台任务集成。
  • JSON 输出路径在此分支上不再仅限单次交互,但输出纯净度仍落后于 TS 传输预期。

状态: 强大的核心循环,缺失编排层。


services/ (服务API 客户端、认证、模型、MCP)

TS 已存在

证据:

  • src/services/api/* 下的 API 服务。
  • src/services/oauth/* 下的 OAuth 服务。
  • src/services/mcp/* 下的 MCP 服务。
  • src/services/* 下的分析、提示建议、会话记忆、插件操作、设置同步、策略限制、团队记忆同步、通知器、语音等附加服务层。

Rust 已存在

证据:

  • rust/crates/api/src/{client,error,sse,types}.rs 中的核心 Anthropic API 客户端。
  • rust/crates/runtime/src/oauth.rs 中的 OAuth 支持。
  • rust/crates/runtime/src/{config,mcp,mcp_client,mcp_stdio}.rs 中的 MCP 配置/引导/客户端支持。
  • rust/crates/runtime/src/usage.rs 中的用量统计。
  • rust/crates/runtime/src/remote.rs 中的远程上游代理支持。

Rust 中缺失或损坏

  • 除了核心消息传递/认证/MCP 之外,大部分 TS 服务生态系统都缺失。
  • 没有等效于 TS 的插件服务层。
  • 没有等效于 TS 的分析/设置同步/策略限制/团队记忆子系统。
  • 没有 TS 风格的 MCP 连接器/UI 层。
  • 模型/提供商的用户体验ergonomics仍比 TS 薄弱。

状态: 核心基础已存在;更广泛的服务生态系统缺失。


正在处理的分支中的关键缺陷状态

已修复

  • 已启用提示词模式工具 (Prompt mode tools)
    • rust/crates/claw-cli/src/main.rs 现在使用 LiveCli::new(model, true, ...) 构建提示词模式。
  • 默认权限模式 = DangerFullAccess
    • rust/crates/claw-cli/src/main.rs 中的运行时默认值现在解析为 DangerFullAccess
    • rust/crates/claw-cli/src/args.rs 中的 Clap 默认值也使用 DangerFullAccess
    • rust/crates/claw-cli/src/init.rs 中的初始化模板写入了 dontAsk
  • 流式 {} 工具输入前缀 Bug
    • rust/crates/claw-cli/src/main.rs 现在仅针对流式工具输入剥离初始空对象,同时保留非流式响应中的合法 {}
  • 无限最大迭代次数 (max_iterations)
    • rust/crates/runtime/src/conversation.rs 中通过 usize::MAX 进行了验证。

剩余的显著对等问题

  • JSON 提示输出纯净度
    • 支持工具的 JSON 模式现在可以循环,但实证验证显示,当工具启动时,在 JSON 之前仍会出现人类可读的工具结果输出。