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

215 lines
9.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 差异化缺口分析 (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/` 包含广泛的工具家族,包括 `AgentTool`、`AskUserQuestionTool`、`BashTool`、`ConfigTool`、`FileReadTool`、`FileWriteTool`、`GlobTool`、`GrepTool`、`LSPTool`、`ListMcpResourcesTool`、`MCPTool`、`McpAuthTool`、`ReadMcpResourceTool`、`RemoteTriggerTool`、`ScheduleCronTool`、`SkillTool`、`Task*`、`Team*`、`TodoWriteTool`、`ToolSearchTool`、`WebFetchTool`、`WebSearchTool`。
- 工具执行/编排分散在 `src/services/tools/StreamingToolExecutor.ts`、`src/services/tools/toolExecution.ts`、`src/services/tools/toolHooks.ts` 和 `src/services/tools/toolOrchestration.ts` 中。
### Rust 已存在
证据:
- 工具注册表通过 `mvp_tool_specs()` 集中在 `rust/crates/tools/src/lib.rs` 中。
- 当前内置工具包括 shell/文件/搜索/网页/待办事项/技能/代理/配置/笔记本/REPL/PowerShell 原语。
- 运行时执行通过 `rust/crates/tools/src/lib.rs``rust/crates/runtime/src/conversation.rs` 连接。
### Rust 中缺失或损坏
- 重大 TS 工具在 Rust 中没有等效项,例如 `AskUserQuestionTool`、`LSPTool`、`ListMcpResourcesTool`、`MCPTool`、`McpAuthTool`、`ReadMcpResourceTool`、`RemoteTriggerTool`、`ScheduleCronTool`、`Task*`、`Team*` 以及多个工作流/系统工具。
- Rust 工具表面仍明确是一个 MVP最小可行产品注册表而非对等注册表。
- Rust 缺乏 TS 的分层工具编排拆分。
**状态:** 仅部分核心功能。
---
## hooks/ (挂钩)
### TS 已存在
证据:
- `src/commands/hooks/` 下的挂钩命令表面。
- `src/services/tools/toolHooks.ts``src/services/tools/toolExecution.ts` 中的运行时挂钩机制。
- TS 支持 `PreToolUse`、`PostToolUse` 以及通过设置配置并记录在 `src/skills/bundled/updateConfig.ts` 中的更广泛的挂钩驱动行为。
### Rust 已存在
证据:
- 挂钩配置在 `rust/crates/runtime/src/config.rs` 中被解析和合并。
- 挂钩配置可以通过 `rust/crates/commands/src/lib.rs``rust/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.ts``src/plugins/bundled/index.ts` 中的内置插件脚手架。
- `src/services/plugins/PluginInstallationManager.ts``src/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.ts`、`src/skills/bundledSkills.ts` 和 `src/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.rs``rust/crates/claw-cli/src/main.rs` 支持 `/memory``/init`
### Rust 中缺失或损坏
- 没有等效的捆绑技能注册表。
- 没有 `/skills` 命令。
- 没有 MCP 技能构建器流水线。
- 没有类似 TS 的实时技能发现/重载/更改处理。
- 没有围绕技能的会话记忆 (session-memory) / 团队记忆 (team-memory) 集成。
**状态:** 仅支持基础的本地技能加载。
---
## cli/ (命令行界面)
### TS 已存在
证据:
- `src/commands/` 下庞大的命令表面,包括 `agents`、`hooks`、`mcp`、`memory`、`model`、`permissions`、`plan`、`plugin`、`resume`、`review`、`skills`、`tasks` 等。
- `src/cli/structuredIO.ts`、`src/cli/remoteIO.ts` 和 `src/cli/transports/*` 中的结构化/远程传输栈。
- `src/cli/handlers/*` 中的 CLI 处理程序拆分。
### Rust 已存在
证据:
- `rust/crates/commands/src/lib.rs` 中共享的斜杠命令注册表。
- Rust 斜杠命令目前涵盖 `help`、`status`、`compact`、`model`、`permissions`、`clear`、`cost`、`resume`、`config`、`memory`、`init`、`diff`、`version`、`export`、`session`。
- 主要的 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.ts`、`src/services/tools/toolExecution.ts`、`src/services/tools/toolOrchestration.ts` 中的工具编排。
- `src/cli/structuredIO.ts``src/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 之前仍会出现人类可读的工具结果输出。