Coding & Development🤖claude

Learn LikeCode

Claude Code 源码逆向恢复项目 | Source Map 逆向 · 架构分析 · 可运行版本 | 1900+ 文件 · 51万行代码 · 12章节课程

Quick Start

Install this Skill

npx skills add Harzva/learn-likecc
# Learn LikeCode

> 从 Claude Code 学起,但不止于 Claude Code。一个面向「源码学习 + 可运行复刻 + 自由换模型」的 likecode 工程。

[![Website](https://img.shields.io/badge/Website-在线课程-orange)](https://harzva.github.io/learn-likecc/)
[![GitHub stars](https://img.shields.io/github/stars/Harzva/learn-likecc?style=social)](https://github.com/Harzva/learn-likecc)
[![License](https://img.shields.io/badge/license-Educational-blue)](LICENSE)

---

![Like Code TUI:启动头与 /model 自定义路由(如 z-ai/glm-5)](docs/readme-assets/likecode-model-routing-preview.png)

## 顶部重点:我们现在最重要的事

这不是单纯“把 Claude Code 跑起来”的仓库了。  
我们正在基于 **Claude Code 2.1.88 恢复工程**,持续做一批**来自真实使用需求**的定制化增强。

### 已经落地的关键定制

- ✅ **多 Provider 自由切换**
  - 通过项目本地 `modelRoutes`,按模型自动切换 `baseURL / authToken / headers`
- ✅ **模型切换不再卡死在固定列表**
  - `/model` 菜单会自动展示本地已经配置好的外部模型

#### 这类本地配置现在可以这样写

下面是一个已经脱敏过的示例。重点不是某一家 provider,而是:

- `env` 里继续放默认 Claude 相关模型名与基线地址
- `modelRoutes` 里按“模型名 => provider 路由”做映射
- `/model` 菜单会直接读取这里已经配好的外部模型并展示出来

```json
{
  "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"
  }
}
```

这意味着:

- 切到 `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`
- ✅ **启动界面配置可见性**
  - 启动头直接显示 Global / Project / Local 三层 `.claude` 摘要、当前命中的 `claude` 路径、当前工程仓库地址
- ✅ **启动界面开始给出 Web 工作台入口**
  - 启动头现在会直接显示本地 `localhost` 工作台入口,方便用户不离开初始界面就能跳到 Web 侧观察台
- ✅ **启动 logo 已收成 Like Code 语义**
  - 启动头图已进一步收成蓝色爱心,`Like` 以更大的多行字样压在爱心正上方,右侧标题改为更克制的 `code · Harzva restored · v2.1.88`
- ✅ **第三方兼容网关稳定性修复**
  - 兼容非标准 `headers` 返回结构,避免切 provider 后直接崩掉
- ✅ **localhost Web 工作台不再只显示 API 索引**
  - 现在打开根路径会直接渲染 dashboard,把 `session / pane / transcript / subagent / events` 结构化展示出来
- ✅ **localhost Web 工作台的视觉层已经重做**
  - 当前页面已经从“开发态 JSON 面板”收成了更像正式工作台的结构:顶部总览、左侧 pane 导航、中间 workflow 主视图、右侧 subagent / events 观察栏
- ✅ **subagent 传输路径已经明确**
  - 当前 Web 侧的 subagent 摘要主要来自 CLI 进程内的 `AppState.tasks`,再结合 `sessionTabs` 的 pane 绑定关系做归属展示
- ✅ **workflow 数据底座已经开始成形**
  - 当前 coding 过程、对话历史和工作流方向,已经可以先通过 `pane transcript` 快照与 `events` 时间线接口对外暴露
- ✅ **Web UI transcript 已经开始细化**
  - 当前 `pane transcript` 已额外输出 `thinking / tool_use / tool_result` 卡片和 pane 内 workflow 事件,Web 侧已经可以先按“消息流 + 卡片流 + 时间线”三层展示
- ✅ **pane 的 todo 恢复继续往真隔离推进**
  - 初始化进入当前 active pane 时,也会优先恢复该 pane 自己保存下来的 todo 快照,而不只是继续沿用残留的全局 todo
- ✅ **workflow 回放继续细化**
  - 当前 `pane transcript` 已继续补出 `stages`,并开始给 tool 卡片补 `input / output / toolUseId`,Web 侧现在可以更明确地看 prompt、thinking、tool、response 这些阶段节点
- ✅ **新 pane/tab 不再默认继承上一格的 todo 残留**
  - 新开的 tab 会以空 transcript 与空 todo 快照起步,切过去时不会继续沿用上一格的 todo 状态
- ✅ **pane 输入态也开始按窗口保存和恢复**
  - 当前 active 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 输入开关继续往窗口内收拢**
  - 当前 pane 除了 `inputMode / pastedContents / stashedPrompt`,还会继续保存和恢复 `vimMode / history search / bashes dialog / help / message selector` 这些输入相关开关,减少不同 pane 共用一份 REPL 输入状态
- ✅ **message selector 的预选消息也开始跟随 pane**
  - 当前 pane 会继续记录“准备恢复哪一条用户消息”,这样切 pane 之后再回来,不会把 message selector 的预选目标串到别的窗口里
- ✅ **pane 的对话节奏也开始独立**
  - 当前 pane 会继续保存和恢复自己的 `conversationId / submitCount`,切 pane 时不再总共用同一份对话键空间与提交计数,更接近真正独立的多窗口会话
- ✅ **transcript 查看状态也开始跟随 pane**
  - 当前 pane 会继续保存和恢复 `show all / dump mode` 这些 transcript 查看状态,左边展开全文、右边保持折叠时,不会再互相污染
- ✅ **transcript 搜索词也开始跟随 pane**
  - 当前 pane 会继续保存和恢复自己的 transcript 搜索词,切 pane 时不会再把一格里的搜索上下文串到另一格里
- ✅ **transcript 搜索条打开状态也开始跟随 pane**
  - 当前 pane 正在 transcript 搜索时,切走再回来不会统一掉回关闭态,搜索条本身也会跟着 pane 恢复
- ✅ **transcrip

... (truncated)
Repository
103stars
18forks
View on GitHub
Details
DiscoveredApr 8, 2026
Last UpdatedApr 12, 2026
Author@Harzva
Quality Score
58/100