Claude Code 源码学习笔记
Claude Code 源码学习笔记
学习时间: 2026-04-10 源码路径: C:\work\claude-code-main 项目类型: Claude Code 官方插件仓库
一、项目概览
1.1 项目定位
Claude Code 是 Anthropic 官方推出的 AI 编程助手,运行在终端中,通过自然语言命令帮助开发者理解代码库、执行常规任务、处理 Git 工作流、生成和修改代码。
1.2 项目结构
claude-code-main/ ├── plugins/ # 插件目录(核心) │ ├── agent-sdk-dev/ # Agent SDK 开发工具 │ ├── code-review/ # 代码审查插件 │ ├── commit-commands/ # Git 命令插件 │ ├── feature-dev/ # 功能开发插件 │ ├── hookify/ # Hook 创建工具 │ ├── plugin-dev/ # 插件开发工具包 │ ├── pr-review-toolkit/ # PR 审查工具包 │ ├── ralph-wiggum/ # 自迭代循环插件 │ └── security-guidance/ # 安全指导插件 ├── scripts/ # 工具脚本 ├── examples/ # 示例文件 └── README.md # 项目说明
二、插件系统架构
2.1 插件目录结构
plugin-name/ ├── .claude-plugin/ │ └── plugin.json # 插件清单(必需) ├── commands/ # 斜杠命令 │ └── *.md # 命令定义文件 ├── agents/ # 子代理定义 │ └── *.md # 代理定义文件 ├── skills/ # 技能模块 │ └── skill-name/ │ ├── SKILL.md # 技能定义(必需) │ ├── references/ # 参考文档 │ ├── examples/ # 示例文件 │ └── scripts/ # 工具脚本 ├── hooks/ # 事件钩子 │ ├── hooks.json # 钩子配置 │ └── scripts/ # 钩子脚本 └── .mcp.json # MCP 服务器定义
2.2 四大组件详解
Commands(命令)
用户可调用的斜杠命令,格式为 Markdown 文件 + YAML frontmatter。
关键字段:
-
description: 命令描述 -
allowed-tools: 允许使用的工具 -
model: 指定模型(haiku/sonnet/opus) -
argument-hint: 参数提示
动态参数:
-
$ARGUMENTS: 所有参数 -
$1, $2, $3...: 位置参数 -
@$1: 文件引用
Agents(代理)
专门的子代理,处理特定任务。
关键字段:
-
name: 代理名称 -
description: 代理描述(用于自动选择) -
tools: 可用工具列表 -
model: 使用的模型 -
color: UI 显示颜色
Skills(技能)
专业化知识包,自动激活。支持渐进式加载:
-
Metadata: 始终加载(~100词)
-
SKILL.md body: 触发时加载(<5k词)
-
Bundled resources: 按需加载
Hooks(钩子)
事件驱动的拦截器。
事件类型:
-
PreToolUse: 工具使用前 -
PostToolUse: 工具使用后 -
Stop: 会话结束时 -
SessionStart: 会话开始时 -
UserPromptSubmit: 用户提交时
三、核心概念详解
3.1 Plugin Manifest
位置: .claude-plugin/plugin.json 必需字段: 仅 name 推荐字段: version, description, author, homepage, repository, license, keywords
3.2 Portable Path References
关键变量: ${CLAUDE_PLUGIN_ROOT}
确保插件可移植性,避免硬编码路径。
3.3 Auto-Discovery
Claude Code 自动发现和加载组件:
-
Plugin manifest: 读取
.claude-plugin/plugin.json -
Commands: 扫描
commands/目录的.md文件 -
Agents: 扫描
agents/目录的.md文件 -
Skills: 扫描
skills/子目录中的SKILL.md -
Hooks: 加载
hooks/hooks.json
四、最佳实践
4.1 Command 开发规范
-
指令给 Claude,不是用户
-
单一职责:一个命令只做一件事
-
参数验证:检查必需参数
-
文档注释:说明用法和要求
4.2 Agent 开发规范
-
明确的专业领域
-
工具限制:只授予必要工具
-
模型选择:根据任务复杂度选择
-
输出结构化:提供清晰的结果格式
4.3 Skill 开发规范
-
SKILL.md 保持精简(1,500-2,000词)
-
详细内容移到 references/
-
示例放在 examples/
-
使用祈使句/不定式写作
4.4 Hook 开发规范
-
事件匹配:使用正则匹配工具名称
-
条件过滤:使用
if字段 -
钩子脚本输出:JSON 格式
-
超时设置:默认 30秒
五、实战案例
5.1 Hookify 插件
通过对话分析或用户指令,自动创建 Hook 规则。工作流程:用户调用 → 分析对话 → 确认行为 → 创建文件 → 立即生效。
5.2 Feature-Dev 插件
7 阶段引导式功能开发:
-
Discovery: 理解需求
-
Codebase Exploration: 代码库探索
-
Clarifying Questions: 澄清问题
-
Architecture Design: 架构设计
-
Implementation: 实施
-
Quality Review: 质量审查
-
Summary: 总结
5.3 Code-Review 插件
使用多个专门代理并行审查 PR。关键设计:
-
高信噪比:只报告置信度 ≥80 的问题
-
并行处理:多代理并行提高效率
-
验证机制:二次验证减少误报
5.4 Plugin-Dev 插件
完整的插件开发工具链,包含 7 个 Skills 和 3 个 Agents。
六、关键设计模式
6.1 渐进式加载模式
三级加载机制:
-
Level 1: Metadata (name + description)
-
Level 2: SKILL.md body (<5k words)
-
Level 3: references/, examples/, scripts/
6.2 代理协作模式
多代理并行处理:用户请求 → 主 Agent 分解任务 → 并行启动子 Agents → 结果汇总 → 整合输出
6.3 Hook 拦截模式
事件驱动:事件触发 → 匹配器检查 → 条件过滤 → 执行脚本 → 返回结果
6.4 可移植性模式
使用环境变量 ${CLAUDE_PLUGIN_ROOT} 确保插件可移植。
七、对 OpenClaw 的启示
7.1 架构借鉴
-
渐进式加载:三级加载机制
-
代理协作:多代理并行处理
-
Hook 系统:事件驱动拦截器
-
可移植路径:环境变量机制
7.2 实现建议
-
Skills 目录结构参考 Claude Code
-
实现组件自动发现和加载
-
文档分离到 references/
-
提供完整可运行的示例
八、学习总结
核心收获
-
完整的插件架构和组件设计
-
Commands、Agents、Skills、Hooks 的开发规范
-
渐进式加载、代理协作、Hook 拦截等核心模式
-
参数处理、Bash 执行、条件语法等实现细节
关键要点
-
可移植性至关重要
-
渐进式加载减少开销
-
并行代理提高效率
-
高质量 Skill 描述要具体明确
学习完成时间: 2026-04-10 文档版本: v1.0
更多推荐



所有评论(0)