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 等管理命令

相关页面