Claude Code Evolution:将 Claude Code 精华迁移到 OpenClaw 的完整指南
引言:从 Claude Code 到 OpenClaw 的跨越
2026年4月,一个名为 claude-code-evolution 的项目悄然诞生。它的目标宏大:对 Claude Code 源码进行深度分析,将优秀的架构设计、提示词工程和技能系统迁移到 OpenClaw 平台。
源码仓库 https://github.com/ra1nzzz/claude-code-src 规模惊人:
- 1903 个文件
- 约 51.2 万行代码
- 主要语言:TypeScript
- 运行时:Bun
- 终端 UI:React + Ink
经过深度分析,团队提取了以下核心内容,形成了完整的 OpenClaw 增强包。
一、核心特性概览
Phase 1:技能系统(4个增强技能)
| 技能 | 功能 | 触发词 |
|---|---|---|
claude-code-simplify | 代码审查(3个并行 agent) | /simplify, 审查代码 |
claude-code-remember | 记忆管理和整理 | /remember, 整理记忆 |
claude-code-verify | 任务完成度验证 | /verify, 验证任务 |
claude-code-debug | 系统化调试辅助 | /debug, 调试 |
Phase 2:系统提示词架构
采用分层设计,将提示词分为静态缓存和动态更新两部分:
system-prompt/
├── core/ # 核心身份(静态缓存)
│ ├── identity.md # 人格定义
│ ├── safety.md # 安全规则
│ └── capabilities.md # 能力边界
├── tools/ # 工具指导(静态缓存)
│ ├── file-operations.md # 文件操作指南
│ └── agent-operations.md # Agent 协作指南
├── dynamic/ # 动态内容(每会话更新)
│ └── session-context.md # 会话上下文
└── implementations/ # TypeScript 实现
├── section-cache.ts # Section 缓存
├── context-generator.ts # 上下文生成
├── agent-coordinator.ts # Agent 协调器
└── memory-manager.ts # 记忆管理器Phase 3:高级功能实现
| 模块 | 功能 |
|---|---|
| Section 缓存 | 提示词 section 缓存,减少 token 消耗 |
| 动态上下文 | 自动生成会话特定上下文 |
| Agent 协调器 | 并行 Agent 执行和结果聚合 |
| 记忆管理器 | 三层记忆架构(CLAUDE.md / CLAUDE.local.md / Auto-memory) |
二、深度技术解析
2.1 分层系统提示词设计
静态部分(跨会话缓存)
这部分内容在启动时加载并缓存,避免每轮重复计算:
# identity.md - 核心身份
你是 OpenClaw Agent...
# 包含角色定义、核心价值观、能力边界
# safety.md - 安全规则
禁止行为:
- 删除用户数据
- 执行未授权的系统命令
- ...
# capabilities.md - 能力边界
你可以:
- 读写文件
- 执行 shell 命令
- ...动态部分(每会话/每轮更新)
使用 __SYSTEM_PROMPT_DYNAMIC_BOUNDARY__ 分隔符标记:
__SYSTEM_PROMPT_DYNAMIC_BOUNDARY__
# 以下内容每会话更新:
- 当前时间
- 用户偏好
- 会话历史摘要
- 最近记忆片段TypeScript 实现
// implementations/section-cache.ts
export const identitySection = systemPromptSection(
'identity',
() => loadFile('system-prompt/core/identity.md')
)
export const dynamicContextSection = DANGEROUS_uncachedSystemPromptSection(
'dynamic-context',
(options) => generateSessionContext(options.session),
'动态上下文必须每轮重算'
)2.2 Section 缓存 API
这是 Claude Code 的核心创新之一:
// 带缓存的 section(默认)
systemPromptSection(name: string, compute: () => string)
// 无缓存的 section(每轮重算)
DANGEROUS_uncachedSystemPromptSection(
name: string,
compute: (options: DynamicOptions) => string,
reason: string // 为什么需要 uncached
)优势:
- 静态内容只计算一次,大幅降低 token 消耗
- 动态内容灵活更新,保持上下文新鲜度
- 清晰的边界,避免意外缓存导致的信息滞后
2.3 Agent 协作模式
Fork 语义
Claude Code 引入了 fork 任务类型,用于并行执行独立任务:
// fork 任务:代码审查
const reviewTask = forkAgent('code-review', {
gitDiff: diff,
reviewDimensions: ['reuse', 'quality', 'efficiency']
})
// fork 任务特性:
// - 共享父级缓存
// - 独立执行不互相干扰
// - "Don't peek, Don't race":不窥探彼此状态,不竞争资源并行 Agent 执行
以代码审查为例,3个维度并行:
用户: /simplify
Agent: 启动代码审查...
├─ Agent 1: 代码复用审查
│ └─ 发现 2 处可复用代码
├─ Agent 2: 代码质量审查
│ └─ 发现 1 处质量改进点
└─ Agent 3: 效率审查
└─ 发现 1 处效率优化机会
聚合结果: 4 条建议
已应用修复。// implementations/agent-coordinator.ts
export async function parallelReview(
diff: string,
dimensions: string[]
): Promise<ReviewResult[]> {
const agents = dimensions.map(dim => createReviewAgent(dim))
const results = await Promise.all(
agents.map(agent => agent.review(diff))
)
return aggregateResults(results)
}2.4 Task 状态机
Claude Code 定义了丰富的任务类型:
type TaskState =
| LocalShellTask // 本地 shell 命令
| LocalAgentTask // fork 子 agent(带 ProgressTracker)
| RemoteAgentTask // 远程 agent
| InProcessTeammateTask // 同进程 teammate
| DreamTask // 自动记忆整合(UI 可视化)
| ...ProgressTracker 关键设计:
interface ProgressTracker {
// API token 累计值
latestInputTokens: number // 取最新(非累加)
cumulativeOutputTokens: number // 每 turn 求和
// 进度跟踪
steps: TaskStep[]
currentStep: number
// 状态
status: 'pending' | 'running' | 'completed' | 'failed'
}设计思想:
latestInputTokens只记录最后一次 API 调用的输入 token,避免 fork 任务的多轮累加误解cumulativeOutputTokens累加所有 output token,反映总消耗
2.5 三层记忆架构
| 层级 | 文件 | 用途 | 修改权限 |
|---|---|---|---|
| 项目级 | CLAUDE.md | 团队约定,所有贡献者共享 | 团队编辑 |
| 个人级 | CLAUDE.local.md | 个人偏好,仅当前用户 | 个人编辑 |
| 自动级 | memory/auto-extracted.json | 自动提取的工作记忆 | 系统维护 |
示例:CLAUDE.md
# 智弈项目约定
## 编码规范
- 使用 TypeScript strict mode
- API 路由使用 kebab-case
- 提交信息遵循 Conventional Commits
## 工作流
- 每天 02:00 自动备份
- 周五 22:00 周报示例:CLAUDE.local.md
# 个人偏好(小桔)
## 回复风格
- 简洁直接,避免冗长
- 代码注释用英文
- 默认生成 WebP 封面
## 工作习惯
- 优先处理心跳任务
- 重大修改前先备份三、使用场景和示例
3.1 代码审查
触发方式:/simplify 或 审查代码
工作流程:
用户: /simplify
Agent: 启动代码审查...
├─ Agent 1: 代码复用审查
│ - 扫描重复逻辑
│ - 识别可提取的 utility 函数
│ └─ 发现 2 处可复用代码
├─ Agent 2: 代码质量审查
│ - 检查命名规范
│ - 验证错误处理
│ └─ 发现 1 处质量改进点
└─ Agent 3: 效率审查
- 分析时间复杂度
- 检查资源泄漏
└─ 发现 1 处效率优化机会
聚合结果:
- 代码复用建议:提取 `formatDate` 函数
- 质量改进:缺少 null 检查
- 效率优化:循环内重复计算
已应用修复,详情见 PR #1233.2 记忆管理
触发方式:/remember 或 整理记忆
工作流程:
用户: /remember
Agent: 开始记忆审查...
Phase 1: 扫描记忆文件
- CLAUDE.md: 12 条约定
- CLAUDE.local.md: 5 条偏好
- auto-extracted.json: 23 条自动记录
Phase 2: 分类整理
## Promotions (3)
1. "使用 bun 而非 npm" → CLAUDE.md (已存在)
2. "偏好简洁回复" → CLAUDE.local.md (新增)
3. "API 路由使用 kebab-case" → CLAUDE.md (已存在)
## Cleanup (2)
1. 删除重复条目 "Always backup before deploy"
2. 更新过期约定:"Node 版本 18 → 20"
Phase 3: 生成报告
✅ 3 条新增
✅ 2 条清理
⚠️ 5 条冲突(需人工确认)
请审阅并批准每项变更。3.3 调试辅助
触发方式:/debug 或 调试
系统化调试流程:
用户: /debug 登录按钮点击无响应
Agent: 开始系统化调试...
Phase 1: 信息收集
- ✅ 理解症状:按钮点击后无视觉反馈
- ✅ 最近变更:昨日修改了 auth 模块
- ✅ 复现步骤:任意用户均可复现
- ✅ 检查日志:无错误输出
- ✅ 相关文件:src/components/LoginButton.tsx
Phase 2: 根因分析
假设 1: 事件监听器未绑定
→ 验证:console.log 未触发 ❌
假设 2: CSS pointer-events: none
→ 检查:按钮样式正常 ❌
假设 3: 异步操作阻塞 UI
→ 发现:useEffect 中未清理定时器
→ 根因:setInterval 泄漏导致事件循环阻塞 ✅
Phase 3: 修复验证
- 清理 useEffect 中的定时器
- 添加 cleanup 函数
- 手动测试:按钮响应正常 ✅
- 运行回归测试:全部通过 ✅
✅ 问题已解决,PR #124 已提交3.4 任务验证
触发方式:/verify 或 验证任务
破坏性验证策略:
// 验证任务完成度
const verification = await verifyTask({
taskDescription: '部署博客到 VPS',
completionCriteria: [
'文章已提交到 Git',
'封面图存在且尺寸正确',
'通过验证脚本',
'GitHub Actions 构建成功',
'VPS 部署完成',
'CDN 缓存已清除'
]
})
// 输出:
// ✅ 文章已提交
// ✅ 封面图存在 (1920x1080, 3.4KB)
// ✅ 验证通过
// 🔄 GitHub Actions 构建中...
// ⏳ VPS 部署等待...
// ⚠️ CDN 缓存未清除(需手动)四、安装指南
自动安装(推荐)
Windows (PowerShell):
git clone https://github.com/ra1nzzz/claude-code-evolution.git
cd claude-code-evolution
.\install.ps1
# 带参数
.\install.ps1 -Backup -ForceLinux/macOS (Bash):
git clone https://github.com/ra1nzzz/claude-code-evolution.git
cd claude-code-evolution
chmod +x install.sh
./install.sh
# 带参数
./install.sh --backup --force手动安装
- 复制
skills/目录到~/.stepclaw/skills/ - 复制
system-prompt/目录到~/.stepclaw/workspace/ - 复制文档到
~/.stepclaw/workspace/references/
验证安装
# 检查技能目录
ls ~/.stepclaw/skills/claude-code-*
# 检查系统提示词
ls ~/.stepclaw/workspace/system-prompt/
# 测试技能
/simplify
/remember
/debug
/verify五、技术实现亮点
5.1 Section 缓存机制
问题: 每轮都重新加载静态 prompt 浪费 token
解决方案: 缓存机制 + 显式 uncached API
// cached: 首次计算,后续直接返回缓存
const identity = systemPromptSection('identity', () => {
return loadFile('system-prompt/core/identity.md')
})
// uncached: 每轮重新计算
const dynamicContext = DANGEROUS_uncachedSystemPromptSection(
'dynamic-context',
(session) => generateContext(session),
'需每轮更新以反映最新会话状态'
)收益: 每轮节省约 1500-2000 token
5.2 动态上下文生成
根据会话状态自动生成上下文:
// dynamic/session-context.md 模板
---
当前时间: {{currentTime}}
会话时长: {{sessionDuration}}分钟
已执行命令: {{commandCount}} 个
最近文件访问: {{recentFiles}}
用户偏好: {{userPreferences}}
---
当前背景:
{{backgroundInfo}}
最近记忆:
{{recentMemories}}生成器实现:
export function generateSessionContext(session: Session): string {
return renderTemplate('dynamic/session-context.md', {
currentTime: new Date().toISOString(),
sessionDuration: Date.now() - session.startTime,
commandCount: session.commands.length,
recentFiles: session.fileAccess.slice(-5).join('\n'),
userPreferences: loadUserPreferences(),
backgroundInfo: session.background || '无',
recentMemories: getRecentMemories(session.id, 3)
})
}5.3 Agent 协调器
并行执行 + 结果聚合:
export async function coordinateAgents<T>(
tasks: AgentTask<T>[]
): Promise<AggregatedResult<T>> {
// 并行启动
const promises = tasks.map(task => task.exec())
// 等待所有完成(可设置超时)
const results = await Promise.allSettled(promises)
// 聚合
return {
successes: results.filter(r => r.status === 'fulfilled'),
failures: results.filter(r => r.status === 'rejected'),
summary: generateSummary(results)
}
}使用示例:
const review = await coordinateAgents([
{ name: 'reuse', agent: reuseReviewer, input: diff },
{ name: 'quality', agent: qualityReviewer, input: diff },
{ name: 'efficiency', agent: efficiencyReviewer, input: diff }
])5.4 三层记忆管理
记忆提取规则:
| 条件 | 目标文件 | 操作 |
|---|---|---|
| 团队通用约定 | CLAUDE.md | 追加 |
| 个人偏好 | CLAUDE.local.md | 追加 |
| 工作上下文 | memory/auto-extracted.json | 新增条目 |
自动提取示例:
// 从对话中提取记忆
extractMemory({
text: sessionHistory,
types: ['preference', 'constraint', 'fact']
})
// 输出:
// {
// additions: [
// { type: 'preference', content: '喜欢简洁回复' },
// { type: 'constraint', content: '绝不删除用户数据' }
// ],
// conflicts: [], // 冲突检测
// recommendations: ['建议添加到 CLAUDE.local.md']
// }六、对 OpenClaw 生态的意义
6.1 技术层面
- Token 优化: Section 缓存预计减少 15-20% token 消耗
- 性能提升: 并行 Agent 执行可加速 2-3 倍(独立任务场景)
- 可维护性: 分层提示词架构更清晰,易于迭代
- 记忆管理: 自动化记忆整理减少人工干预
6.2 生态协同
- 技能复用: 4个高级技能可直接集成到现有 OpenClaw 实例
- 最佳实践: 提供了 Claude Code 经过实战验证的架构参考
- 社区贡献: 标准化了技能开发和提示词工程的范式
6.3 开发者体验
- 调试友好:
/debug提供系统化调试流程 - 质量保障:
/verify实现破坏性验证,确保任务完成度 - 知识沉淀:
/remember自动整理团队约定和个人偏好
七、总结与展望
Claude Code Evolution 项目是开源 AI Agent 领域的宝贵财富。它从 51.2 万行源码中提炼出:
✅ 4个实用技能(代码审查、记忆管理、验证、调试)
✅ 分层系统提示词架构(静态缓存 + 动态更新)
✅ 高级功能(Section 缓存、Agent 协调、记忆管理)
✅ 完整的参考文档(Task 系统、Agent 系统、权限系统、提示词模式)
对 OpenClaw 的价值:
- 可直接迁移的技能,立即提升 Agent 能力
- 经过验证的架构设计,减少试错成本
- 标准化开发范式,方便社区贡献
下一步建议:
- 将 4 个技能集成到智弈集群标准技能库
- 将 section-cache 机制加入 OpenClaw 核心
- 参考 task-system 优化任务调度器
- 在 MEMORY.md 中记录这次分析的关键发现
附录:快速参考
触发词速查
| 技能 | 触发词 |
|---|---|
| 代码审查 | /simplify, 审查代码 |
| 记忆管理 | /remember, 整理记忆 |
| 任务验证 | /verify, 验证任务 |
| 调试辅助 | /debug, 调试 |
文件结构
~/.stepclaw/
├── skills/
│ ├── claude-code-simplify/
│ ├── claude-code-remember/
│ ├── claude-code-verify/
│ └── claude-code-debug/
└── workspace/
├── system-prompt/
│ ├── core/
│ ├── tools/
│ ├── dynamic/
│ └── implementations/
└── references/
├── task-system.md
├── agent-system.md
├── permission-system.md
└── prompt-patterns.md文章字数: 约 4200 字
阅读时间: 15-18 分钟
技术深度: ⭐⭐⭐⭐⭐
希望这篇文章能帮助你全面了解 claude-code-evolution 项目,并将其精华应用到你的 OpenClaw 部署中。
