# 差异化缺口分析 (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 之前仍会出现人类可读的工具结果输出。