品牌重塑: - 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
9.9 KiB
9.9 KiB
差异化缺口分析 (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。
- 流式
{}工具输入前缀 Bugrust/crates/claw-cli/src/main.rs现在仅针对流式工具输入剥离初始空对象,同时保留非流式响应中的合法{}。
- 无限最大迭代次数 (max_iterations)
- 在
rust/crates/runtime/src/conversation.rs中通过usize::MAX进行了验证。
- 在
剩余的显著对等问题
- JSON 提示输出纯净度
- 支持工具的 JSON 模式现在可以循环,但实证验证显示,当工具启动时,在 JSON 之前仍会出现人类可读的工具结果输出。