by Harzva
Claude Code 源码逆向恢复项目 | Source Map 逆向 · 架构分析 · 可运行版本 | 1900+ 文件 · 51万行代码 · 12章节课程
# Add to your Claude Code skills
git clone https://github.com/Harzva/learn-likecc从 Claude Code 学起,但不止于 Claude Code。一个面向「源码学习 + 可运行复刻 + 自由换模型」的 likecode 工程。

这不是单纯“把 Claude Code 跑起来”的仓库了。
我们正在基于 Claude Code 2.1.88 恢复工程,持续做一批来自真实使用需求的定制化增强。
modelRoutes,按模型自动切换 baseURL / authToken / headers/model 菜单会自动展示本地已经配置好的外部模型下面是一个已经脱敏过的示例。重点不是某一家 provider,而是:
env 里继续放默认 Claude 相关模型名与基线地址modelRoutes 里按“模型名 => provider 路由”做映射/model 菜单会直接读取这里已经配好的外部模型并展示出来{
"env": {
"ANTHROPIC_BASE_URL": "https://api.provider.example",
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "claude-haiku-4-5-20251015",
"ANTHROPIC_DEFAULT_SONNET_MODEL": "claude-sonnet-4-5-20250929",
"ANTHROPIC_DEFAULT_OPUS_MODEL": "claude-opus-4-5-20251101"
},
"modelRoutes": {
"minimax/minimax-m2.5": {
"baseURL": "https://api.provider.example",
"authToken": "sk-provider-route-example-minimax",
"headers": {
"x-provider": "minimax"
}
},
"claude-sonnet-4-5-20250929": {
"baseURL": "https://api.provider.example",
"authToken": "sk-provider-route-example-sonnet"
}
},
"model": "minimax/minimax-m2.5",
"permissions": {
"defaultMode": "bypassPermissions"
}
}
No comments yet. Be the first to share your thoughts!
这意味着:
切到 minimax/minimax-m2.5 时,会自动命中它自己的 baseURL / authToken / headers
切到 claude-sonnet-4-5-20250929 时,会自动走另一条 provider 路由
/model 菜单不需要再手写死固定选项,而是把你已经配置在本地的模型直接列出来
✅ 配置自动重载
.claude/settings.json / .claude/settings.local.json 里的 API 与关键配置后,不需要退出 agent-cli 再重新开✅ 终端内可直接查看详细配置
/show、/show:global、/show:user、/show:project、/show:slash✅ 启动界面配置可见性
.claude 摘要、当前命中的 claude 路径、当前工程仓库地址✅ 启动界面开始给出 Web 工作台入口
localhost 工作台入口,方便用户不离开初始界面就能跳到 Web 侧观察台✅ 启动 logo 已收成 Like Code 语义
Like 以更大的多行字样压在爱心正上方,右侧标题改为更克制的 code · Harzva restored · v2.1.88✅ 第三方兼容网关稳定性修复
headers 返回结构,避免切 provider 后直接崩掉✅ localhost Web 工作台不再只显示 API 索引
session / pane / transcript / subagent / events 结构化展示出来✅ localhost Web 工作台的视觉层已经重做
✅ subagent 传输路径已经明确
AppState.tasks,再结合 sessionTabs 的 pane 绑定关系做归属展示✅ workflow 数据底座已经开始成形
pane transcript 快照与 events 时间线接口对外暴露✅ Web UI transcript 已经开始细化
pane transcript 已额外输出 thinking / tool_use / tool_result 卡片和 pane 内 workflow 事件,Web 侧已经可以先按“消息流 + 卡片流 + 时间线”三层展示✅ pane 的 todo 恢复继续往真隔离推进
✅ workflow 回放继续细化
pane transcript 已继续补出 stages,并开始给 tool 卡片补 input / output / toolUseId,Web 侧现在可以更明确地看 prompt、thinking、tool、response 这些阶段节点✅ 新 pane/tab 不再默认继承上一格的 todo 残留
✅ pane 输入态也开始按窗口保存和恢复
inputMode / pastedContents / stashedPrompt 已开始绑定到 pane,本轮继续减少不同 pane 之间共享同一份输入态的情况✅ workflow 已开始具备 turn replay
pane transcript 现在还会输出 turns / toolPairs,开始补“这一轮 prompt 触发了哪些工具、最后回到了什么 response”这类跨阶段回放线索✅ toolPairs 已经直接进 Web UI
toolPairs,而是已经直接有 Tool Pairs 展示区,可以看每个工具调用的输入、输出、所属 turn 和 toolUseId✅ toolChains 已开始支撑跨 turn 回放
pane transcript 已继续补出 toolChains,并给 toolPairs 增加 chainId / step / previous / next,Web 侧现在能更清楚地看到“同一条工具链跨多条 message 是怎么串起来的”✅ tool progress 也开始接入工作流链
progress 消息也会开始挂到对应的 toolUseId 上,所以真实工具执行时,就算还没等到最终 tool_result,Web 侧也能先看到中间过程✅ 启动头的 Like Code 已统一成蓝色
Like 和蓝色 code 已统一成一套更一致的品牌头图✅ pane 输入开关继续往窗口内收拢
inputMode / pastedContents / stashedPrompt,还会继续保存和恢复 vimMode / history search / bashes dialog / help / message selector 这些输入相关开关,减少不同 pane 共用一份 REPL 输入状态✅ message selector 的预选消息也开始跟随 pane
✅ pane 的对话节奏也开始独立
conversationId / submitCount,切 pane 时不再总共用同一份对话键空间与提交计数,更接近真正独立的多窗口会话✅ transcript 查看状态也开始跟随 pane
show all / dump mode 这些 transcript 查看状态,左边展开全文、右边保持折叠时,不会再互相污染✅ transcript 搜索词也开始跟随 pane
✅ transcript 搜索条打开状态也开始跟随 pane
✅ transcript 搜索命中位置也开始跟随 pane
✅ 退出 transcript 后也开始保留 pane 内搜索上下文
✅ 真实 tool progress 也开始提前进入 toolChains
progress 消息会继续补足 toolUseId / toolName / progress summary,所以即使还没等到最终 tool_result,Web 侧也能更早看到某条工具链已经开始跑、正在跑什么✅ toolChains.steps 已开始拆成真实过程节点
toolChains 已开始明确拆出 tool_use / progress / tool_result step,Web 侧回放不再只看 pair 汇总,而更接近真实 coding 过程✅ 三套源码分层已经开始固定
ccsource/CC/claude-code-main 保留原始源码学习快照,ccsource/CC/claude-code-rebuild 固定为可运行重建基线,ccsource/like-code-main 继续承载 Like Code 主开发线✅ rebuild 基线已经重新跑通
ccsource/CC/claude-code-rebuild 当前已经能正常进入交互 REPL,因此现阶段不需要急着切到 c75951f / 50b6fb0 / a1531fb 这些更晚提交✅ 关键 commit 台账已经单独落盘
docs/commit-ledger.md,明确写清楚“相对上一版到底改了什么”✅ 关键入口页面与脚本已经开始切到新路径
bin/likecode、README 构建命令、课程锚点页和部分计划文档里的主开发线入口,已经开始统一成 ccsource/like-code-maintab,不先做 pane
Ctrl+g 进入窗口管理,再做新建 / 切换 / 重命名 / 关闭SessionState 负责当前焦点与窗口顺序,TabState 负责 transcript、任务类型、模型、provider、subagent 归属.claude/plans/multi-window-subagent-design-v1.mdv1.0.2-likecode,目标是交付 tab 模式起步版sessionTabs、SessionTabState、SessionTabsMetadata,并开始把 tab 状态映射进 session metadata+ /tab new 提示/tab list、/tab new、/tab next、/tab prev、/tab switch、/tab rename、/tab close、/tab panelCtrl+g 前缀后接 c / n / p / x / s / 1-9/tab panel 不再只是开关占位文案,主 REPL 里已经会出现一个真实的 session workspace 面板/tab focus left|right|1|2 和 Ctrl+g h / l 快速把左右 pane 提升为 activesession / pane / transcript / events 四层本地只读接口,可以作为后续 Web UI 的数据底座tab 是同一个 session 内的任务视图管理,branch 是会话历史分叉与恢复,两者不重复glm、minimax、Claude 等模型.claude 到底加载了什么.claude/plans/*.mdREADME.md 的 todo / roadmap这套约定已经被固化进仓库内:
.claude/skills/repo-release-governance/SKILL.md.claude/rules/release-workflow.md对外更专业的叫法建议用:配置自动重载 或 配置热重载。
如果表达“Claude 会记住并自动感知你刚改过的配置”这个感觉,也可以在介绍里辅助解释为“自动重载配置记忆”,但正式能力名建议还是前两者。
Claude Code 很强,但真实使用里一直有一个明显痛点:
learn-likecc / likecode 想解决的,不只是「把 Claude Code 跑起来」,而是把这套 Agent CLI 的关键能力拆开、学透、再推进到一个更自由的方向:
likecode