基于官方 Claude Code CLI 的源码还原 / 工程化重建项目。目标是在保留 Claude Code 终端交互体验的同时,补齐多模型接入、自托管 Remote Control、ACP、daemon / 后台会话、MCP、插件与本地自动化等能力。
本仓库不是 Anthropic 官方产品。商标与官方 Claude Code 权利归 Anthropic 所有;本项目仅供学习与研究。
| 能力 | 说明 |
|---|---|
| 多模型 | /login 配置 Anthropic / OpenAI / Gemini / Grok 兼容端点 |
| Remote Control | 自托管 RCS + Web UI;claude remote-control / bridge |
| ACP | Agent Client Protocol,可对接 IDE / 代理宿主 |
| Agents / Daemon | claude agents dashboard、daemon job、后台会话 resume / fork |
| Fullscreen | 对齐 densable 滚轮、Jump-to-bottom、alt-screen 等交互 |
| Poor Mode | /poor 穷鬼模式:跳过记忆提取 / 建议等,降 token |
| KAIROS / Buddy | 常驻助手与终端 buddy(feature 可开关) |
| Computer Use / Chrome | 截图键鼠、Chrome MCP(平台完整度不一) |
| Artifacts | HTML 上传托管(独立 Cloudflare Worker 包) |
| Voice | 语音输入(含豆包 ASR 路径) |
| Web Search | 内置搜索工具 |
| Langfuse | Agent loop 可观测(可选) |
部分能力由 feature flag 控制(见下方);Analytics / GrowthBook / Sentry 等为占位实现,不要当成可用企业集成。
这是 CLI-first 的 Claude Code 兼容运行时:
- 主交互宿主:
src/screens/REPL.tsx+src/main.tsx/src/entrypoints/cli.tsx - 查询主链:
src/query.ts/src/QueryEngine.ts - 工具:
packages/builtin-tools(经@claude-code/builtin-tools导出) - 远程 / 守护:
src/bridge/、src/daemon/、packages/remote-control-server/ - ACP:
src/services/acp/、packages/acp-link/
仓库里没有独立的 src/core / src/hosts / src/runtime 包级 Agent Core 分层;旧文档里的 createAgent from 'claude/core'、./core 子路径描述已过时,请勿依赖。
近期主线在对齐 densable 2.1.211 的 agent / 会话 / 队列 / inbox / daemon 行为(git tag v2.8.5 合入前、v2.8.6 合入后)。npm 包版本以 package.json / npm 为准(当前发布线 2.7.28),与 git tag 可能不同步。
| 版本 | 要点 |
|---|---|
| 2.7.28 | Win 打包剪贴板贴图:bun --compile 下 sharp 原生模块不可用时改走 System.Drawing 缩放/JPEG;dev 仍用 sharp。 |
| 2.7.27 | Prompt 通知条高度:绝对定位区 height 2→1,避免最新通知盖住 prompt 顶边框(如剪贴板图片 alt+v 提示)。 |
| 2.7.26 | Win 剪贴板图片粘贴:Git Bash 下 PowerShell shell:false argv;空 paste 开 Windows;优先 PNG 流;客户端 ≥8px 拦截 1×1;Buddy/KAIROS 文档对齐 densable 211。 |
| 2.7.25 | Host densable 211 生产路径:永久 model_not_found → system/model_fallback;system/background_tasks_changed(REPLACE live set);mid-bg didBackground 真 flip;eviction 保 Host progress 事件。 |
| 2.7.24 | Official 2.1 Host 流/控制 + bypass 1g:command_lifecycle / thinking_tokens / task_updated / task_summary / background_tasks(Ctrl+B)对齐;mid-bg 发 task_updated;backgroundAll 排除 main-session;bypass 下 classifierApprovable safetyCheck 可过(densable 1g)。 |
| 2.7.23 | Tasks dual-emit:agent/shell/monitor/dream/workflow 终止时 once-gated 发 system/task_notification bookend(含 ISO timestamp),Host Tasks 可按 densable Jp 结算;print residual 再发一次-gated,不再只靠 TaskOutput 冒充生命周期。 |
| 2.7.22 | REPL 更新提示 / go-hare 自动升级路径:去掉 ENABLE_AUTOUPDATER 默认关闭;autoUpdates=false 仍 toast「Update available」;Notifications 挂载 AutoUpdater;npm 包二进制识别为 npm-global;claude update 使用 @go-hare/claude-code。 |
| 2.7.21 | Workflow / ultracode densable 对齐:完整 playbook 挂在 Workflow 工具 prompt(ONLY-call-when opt-in);/ultracode 改为 disableModelInvocation 用户只读,去掉宽 whenToUse 自举路径。 |
| 2.7.20 | Workflow host densable 对齐:/workflows 改为历史浏览器(GsK);live 监控走 Tasks WorkflowDetailDialog(fv_)+ task.workflowProgress;删除双栏 WorkflowsPanel;补 progress fold / SDK task_progress 桥接与 history 导航键位修复。 |
| 2.7.19 | Provider 优先级修复:modelType=anthropic 不再被残留 USE_OPENAI / USE_GEMINI / USE_GROK 等环境变量抢优先级。 |
| 2.7.18 | Chrome multi-browser 无 OAuth:无 OAuth 时也暴露并支持本地 multi-browser 工具(对齐 densable 本地 Chrome MCP 能力)。 |
| 2.7.17 | Claude in Chrome 扩展链路:默认放行 agent-extension fork ID、可追加扩展白名单;本地扩展下载改走 go-hare/agent-extension release;Install local 打开仓库页;/chrome 去掉 (Beta) 后缀。 |
| 2.7.16 | Host effort 元数据:get_settings.applied 增加 effortLevels / ultracodeOfferable,桌面端可据此渲染可用 effort 档位与 ultracode 入口。 |
| 2.7.15 | Host Effort/Ultracode 链路:densable Host get_settings.ultracode + apply_flag 直写;eee 剥 fence 再 parse,fenced JSON 不再刷 ERROR。 |
| 2.7.14 | 贴图降级修复:图片 resize 失败时降级为文本提示,不再整轮吞消息。 |
| 2.7.13 | 贴图 Enter 抢键修复:贴图时清 footer,避免两个 shell 同时响应 Enter 吞消息;Fable consent 拒绝时不再错误写入 sticky effort / N9。 |
| 2.7.12 | 贴图后打字吞消息修复:共享 live ref,避免贴图 pill 后被同 tick 键入冲掉;Enter 路径进一步对齐。 |
| 2.7.11 | Effort densable 对齐:模型驱动 effort resolve、ultracode 会话模式、ModelPicker pin 约定、effort pin 落盘;粘性滚动白屏与 effort toast 同 key 刷新修复;文字+图片同 tick Enter 吞消息修复。 |
| 2.7.10 | Shell 对话框 hooks 崩溃修复:打开 BackgroundTasksDialog 时 PromptInput 的 onKeyDownBefore useCallback 位于 early return 之后导致 "Rendered fewer hooks than expected";钩子上移 + onDoneEvent 延后触发。 |
| 2.7.9 | 全平台二进制重编发布(含 2.7.8 Enter 吞消息修复等当前 main)。 |
| 2.7.8 | Enter 偶发吞消息修复:对齐 densable Enter 路径(typeahead / history search / PromptInput),避免提交键在部分状态下丢输入。 |
| 2.7.7 | OpenAI 兼容流多 ● 修复:坏代理对每个 chunk 重发全文并带 finish_reason 时,不再反复开闭 text block(normalizeMessages 一行一个 ●);累计全文 delta 只 emit 后缀;assemble 侧合并相邻相同 text block 作防御。 |
| 2.7.6 | densable streaming 对齐:Esc 仅 salvage thinking;streaming / final 双 ● 渲染修复;daemon lifecycle 只 log 不写 stderr;agents handoff 期间 quiet daemon takeover。 |
| 2.7.5 | densable FileEdit/FileWrite 结果渲染;spinner 用主线程队列长度(避免 subagent 假转);idle-return 不清草稿;OSe 剪枝不写 paste ref。 |
发布包名:@go-hare/claude-code(平台二进制在 @go-hare/claude-code-<os>-<arch> optionalDependencies)。
npm i -g @go-hare/claude-code
# Windows 若 claude.exe 被占用导致 EBUSY,先结束占用进程再装
# taskkill /F /IM claude.exe
claude # 启动(postinstall 落到 bin/)
claude --version
claude agents # 后台会话 dashboard(需 daemon)
claude update # 更新
# 自托管 Remote Control 示例(按你的 RCS 改 URL / token)
CLAUDE_BRIDGE_BASE_URL=https://your-rcs.example/ \
CLAUDE_BRIDGE_OAUTH_TOKEN=your-token \
claude --remote-control安装失败时:npm rm -g @go-hare/claude-code 后再装 @latest(可钉版本 @2.7.17)。
旧文档里的全局包名 claude-code 不再对应本仓库发布流。
需要较新的 Bun(建议 ≥ 1.3.11):
curl -fsSL https://bun.sh/install | bash # macOS / Linux
# Windows: powershell -c "irm bun.sh/install.ps1 | iex"
bun upgrade在仓库根目录(含本 package.json 的目录):
bun install
bun run dev # 开发模式(MACRO.* 由 scripts/dev.ts 注入)
bun run build # 代码分割产物 → dist/cli.js + chunks
bun run precheck # typecheck + biome fix + 全量测试(改完请跑)跨平台二进制与发布:
bun run build:compile # 仅编译当前/指定平台二进制
bun run scripts/publish.ts --build-only # 同上(publish 脚本路径)
bun run scripts/publish.ts --dry-run # 构建 + npm publish --dry-run
bun run scripts/publish.ts --with-main # 含主包 @go-hare/claude-code平台包内的
claude二进制由 build 生成,不应长期提交进 git。
REPL 中 /login 可选 Anthropic Compatible / OpenAI / Gemini 等:
| 字段 | 说明 | 示例 |
|---|---|---|
| Base URL | API 地址 | https://api.example.com/v1 |
| API Key | 密钥 | sk-xxx |
| Haiku / Sonnet / Opus | 模型 ID 映射 | 按你的上游填写 |
Tab / Shift+Tab 切字段,Enter 确认。
FEATURE_BUDDY=1 bun run dev构建默认会打开一批 flag(见 build.ts / scripts/defines.ts);默认关闭的包括 LAN_PIPES、UDS_INBOX、FORK_SUBAGENT 等。群控 / Pipe 相关能力需对应 flag,不要默认当成全开。
TUI 需真实终端,用 attach:
bun run dev:inspect # 输出 ws://localhost:… VS Code F5 → Attach to Bun (TUI debug)。
/teach-me Claude Code 架构
/teach-me React Ink 终端渲染 --level beginner
进度在 .claude/skills/teach-me/(若已安装该 skill)。
| 路径 | 作用 |
|---|---|
src/entrypoints/cli.tsx |
真入口与快速路径 |
src/main.tsx |
Commander CLI 与启动装配 |
src/screens/REPL.tsx |
交互 REPL |
src/query.ts / QueryEngine.ts |
API 查询与 turn 编排 |
packages/builtin-tools/ |
内置工具 |
packages/@ant/ink/ |
终端 Ink 框架 |
src/bridge/ / packages/remote-control-server/ |
Remote Control |
src/daemon/ |
长驻 daemon |
src/services/acp/ / packages/acp-link/ |
ACP |
scripts/publish.ts |
平台二进制编译与 npm 发布 |
CLAUDE.md |
给 agent / 贡献者的详细工程说明 |
更完整的架构与测试约定见 CLAUDE.md。
- doubaoime-asr — 豆包 ASR,Voice Mode 可选路径
仅供学习研究。Claude Code 相关权利归 Anthropic。请遵守上游与依赖的许可条款。