claude-code-go 是 Claude Code(Anthropic 官方 CLI)的 Go 语言重实现,对标 TypeScript 版本的行为,保持功能等价。
项目定位
| 维度 | 说明 |
|---|
| 语言 | Go 1.22 |
| 对标版本 | claude-code TypeScript(对应 src/ 目录) |
| 入口二进制 | cmd/claude/main.go |
| 版本号 | 0.1.0(internal/cli/runner.go:23) |
| 另有 | cmd/launcher/main.go(launcher 辅助程序) |
核心启动流程
main() → cli.ParseArgs() → cli.Run()
├── commands.InitBuiltins() // 注册 /help /config 等 slash 命令
├── settings.LoadAll() // 加载配置
├── migrations.RunMigrations() // 数据迁移
├── skills.NewSkillRegistry() // 加载 ~/.claude/skills/ 和 .claude/skills/
├── mcp.NewMCPManager() // 连接 MCP 服务器
├── tasks.NewTaskManager() // 初始化任务管理器
├── api.NewClientFromEnv() // 构建 API 客户端
├── query.NewEngine() // 查询引擎
├── tools.RegisterAllWithDeps() // 注册所有 built-in tools
└── 分发到 print mode 或 interactive REPL
目录结构
claude-code-go/
├── cmd/
│ ├── claude/ # 主入口
│ └── launcher/ # launcher 辅助
├── internal/
│ ├── api/ # API 客户端(Anthropic / OpenAI / Bedrock / Vertex)
│ ├── cli/ # 参数解析、启动编排
│ ├── commands/ # /help /config /doctor 等 slash 命令
│ ├── compact/ # context 压缩(auto/full/micro/snip)
│ ├── context/ # system prompt 构建
│ ├── extract_memories/ # 记忆提取
│ ├── hooks/ # Hook 系统(PreToolUse / PostToolUse / SessionStart / Stop)
│ ├── mailbox/ # agent 间通信
│ ├── mcp/ # MCP 客户端
│ ├── memory/ # CLAUDE.md 扫描与加载
│ ├── migrations/ # 配置迁移
│ ├── output/ # 输出格式化(printer / json / cost)
│ ├── permissions/ # 权限引擎
│ ├── query/ # 查询引擎,驱动 tool-use 循环
│ ├── remote/ # 远程 agent
│ ├── repl/ # 交互式 REPL
│ ├── sandbox/ # 沙箱(macOS/Linux/Windows 差异实现)
│ ├── server/ # HTTP server 模式
│ ├── session/ # session 状态持久化
│ ├── session_memory/ # session 级记忆管理
│ ├── settings/ # 配置加载(全局/项目/本地)
│ ├── skills/ # Skill 加载与注册
│ ├── state/ # 全局状态(cwd / sessionID / model)
│ ├── tasks/ # 后台任务管理
│ ├── toolbase/ # Tool 接口定义
│ └── tools/ # 所有 built-in tool 实现
└── pkg/
├── types/ # 共享类型(permission / hooks / message / tool 等)
└── utils/ # 工具函数(git / file / shell / token)
运行模式
| 模式 | 触发条件 | 说明 |
|---|
| 交互式 REPL | 无 --print 参数 | 持续读取 stdin,维护多轮对话 |
| Print mode | --print 或 -p | 单次执行,非交互,输出后退出 |
| 子命令模式 | 第一个参数为已知子命令 | 执行 mcp/config/doctor 等管理命令 |
相关页面