你的第一次 claw 会话
当你运行 claw prompt "说你好",从终端到 Claude API,发生了什么?
claw-code:把 Claude 变成真正的命令行 Agent
claw-code 是一个用 Rust 构建的 AI 编码 Agent CLI。你用它和 Claude 对话,但不只是聊天 —— claw 给 Claude 提供了真实操作代码库的能力:读写文件、执行终端命令、搜索代码、管理 Git 提交。
它的哲学来自 PHILOSOPHY.md 里的一句话:"人类设置方向,Claw 执行劳动"。你描述想要什么,claw 负责把它做出来。
Rust 带来的不只是性能,更重要的是内存安全和并发安全。在 AI Agent 这种长时间运行、处理用户文件的场景里,内存泄漏或竞争条件会导致数据丢失。Rust 的编译器在编译时就排除了这类问题。
从终端命令到 Claude 回复 —— 完整链路
第一行 Rust 代码:CLI 入口
这是 claw-code 的主入口,也是理解系统的第一块拼图:
const DEFAULT_MODEL: &str =
"claude-opus-4-6";
enum ModelSource {
Flag, // --model 参数
Env, // ANTHROPIC_MODEL 环境变量
Config, // .claw.json 配置文件
Default, // 内置默认值
}
测验:快速上手
Rust Workspace 架构
10 个 Crate,各司其职 —— 为什么这样设计?
把大项目拆成小模块:Cargo Workspace
claw-code 不是一个单体的 main.rs,而是由 10 个独立的 Crate(模块)组成,每个模块只负责一件事,通过明确定义的接口与其他模块交互。
这种设计的好处:修改 API 层不影响工具层;测试权限系统不需要启动完整 CLI;将来想替换 Mock 服务只需换一个 Crate。
Runtime Crate:系统大脑
runtime crate 是整个项目最复杂的部分,包含 40+ 子模块。这是它里面最重要的几个:
对话历史的持久化存储。每次会话保存到磁盘,支持 --resume 继续上次未完成的任务。
权限策略执行引擎。检查每个工具调用是否被允许,防止 AI 越权操作。
当对话历史太长时,智能压缩历史内容,保留关键信息,节省 Token 开销。
Model Context Protocol 客户端,连接外部 MCP 服务器,扩展 AI 的工具能力。
核心对话循环:接收用户输入 → 调用 API → 处理工具调用 → 返回结果 → 循环。
防止多个 claw 会话同时修改同一个 git 分支,避免代码冲突。
Workspace 的组织方式
[workspace]
members = [
"crates/rusty-claude-cli",
"crates/runtime",
"crates/api",
"crates/tools",
"crates/commands",
"crates/plugins",
"crates/mock-anthropic-service",
]
[workspace.dependencies]
serde = { version = "1", features = ["derive"] }
测验:Workspace 理解
会话与状态管理
AI 如何"记住"你们的对话?claw 的会话持久化设计
为什么 AI 会话需要"存档"?
如果你花了 2 小时和 AI 一起调试一个复杂 Bug,中途电脑关机了 —— 没有会话持久化,你就得从头开始。
claw-code 的 Session 系统把每一轮对话(消息、工具调用、工具结果)持久化到磁盘。用 --resume 标志,你可以回到上次离开的地方,就像保存游戏后继续。
每次新会话,claw 生成一个唯一 ID(比如 abc123def456)。这个 ID 是你的"存档槽"。claw --resume latest 找最近的存档,claw --resume <id> 找特定存档。会话数据保存在 ~/.claw/sessions/ 目录。
恢复中断的会话:真实场景演示
当对话太长时:上下文压缩
每次 API 调用都要发送完整的对话历史,Token 费用随对话长度线性增长。claw-code 有一个 summary_compression 模块自动处理这个问题。
pub fn should_compact(
session: &Session,
config: &CompactionConfig,
) -> bool {
let tokens = estimate_session_tokens(session);
tokens > config.compaction_threshold
}
pub async fn compact_session(
session: &mut Session,
api: &dyn ApiClient,
) -> Result<CompactionResult> {
// 调用 LLM 生成历史摘要
// 用摘要替换旧消息
}
测验:会话管理
工具系统与权限
AI 可以做什么、不能做什么 —— 权限引擎的设计哲学
Claude 能调用哪些工具?
claw-code 给 Claude 提供了一套标准工具集(通过 mvp_tool_specs 定义),每个工具有精确的输入输出类型。Claude 不是自由生成代码执行 —— 而是选择工具、提供参数,由 claw 的工具引擎执行。
权限策略:三种模式
claw-code 的 PermissionPolicy 控制 AI 的自主程度,可以在安全和便捷之间调节:
权限检查的实际代码
pub fn check_permission(
tool: &ToolCall,
policy: &PermissionPolicy,
) -> PermissionResult {
match policy {
PermissionPolicy::Readonly => {
if tool.is_write_op() {
PermissionResult::Denied
} else {
PermissionResult::Allowed
}
}
PermissionPolicy::AskFirst if
tool.is_destructive() =>
PermissionResult::NeedsConfirmation,
_ => PermissionResult::Allowed,
}
}
测验:权限策略选择
人机协作哲学
Discord 是人机接口,代码只是副产品
真正的创新不是代码,而是协作模式
claw-code 的 PHILOSOPHY.md 有一段话让人印象深刻:
"如果你只看这个仓库里生成的文件,你看的是错误的层次。Python 重写是副产品,Rust 重写也是副产品。真正值得研究的是产生它们的系统:一个以人类提供方向、自主 Agent 执行工作为核心的协调循环。"
这不只是一个 CLI 工具 —— 它是一种工作模式的宣言:人类通过自然语言设置方向,AI Agent 并行执行,人类从"写代码"变成"指挥代码被写出来"。
claw-code 生态系统的三个层次
PHILOSOPHY.md 描述了一个完整的三部分协调系统,claw-code 只是其中的执行层:
把简短的自然语言指令转化为结构化的执行协议:规划关键词、执行模式、持久化验证循环、并行多 Agent 工作流。
监控 git commits、tmux 会话、GitHub issues、Agent 生命周期事件。把监控和通知推到 Agent 的上下文窗口之外,让 Agent 专注于实现。
处理 Architect(架构师)、Executor(执行者)、Reviewer(审查者)多个 Agent 角色之间的规划、交接和分歧解决。
这个系统真正的人机接口是 Discord 频道,不是终端。你从手机上打一句话,走开,睡觉,去做其他事。Claw 读取指令,拆解任务,分配角色,写代码,运行测试,解决失败,在代码通过后推送。你回来看结果。
把这些知识变成你的工作方式
告诉 claw 确切的文件路径、期望的输入输出、成功标准。越精确,AI 越少猜测,结果越好。
长任务使用 --resume,保留上下文,不需要重新解释背景。claw 会记住上次学到的项目知识。
对新项目或不熟悉的操作,用 AskFirst 模式。理解 AI 意图后,在你信任的范围内切换到 Auto。
用 mock-anthropic-service 写测试,不依赖真实 API,速度快且可复现。调试确认后再用真实 API。
综合测验:终极挑战
你现在理解了 claw-code 的完整架构:Cargo Workspace 模块设计、Runtime/API/Tools 三层分工、会话持久化与上下文压缩、权限引擎的三种模式,以及"人类设置方向、AI 执行劳动"的核心哲学。这些知识让你能更有效地使用和定制这套工具。