Go 语言实现 Claude Code 风格 AI 编程助手

GitHub 仓库https://github.com/gallifreyCar/go-claw-code-gallifrey-self-use

一、项目背景

基于 2026年3月31日泄漏的 Claude Code v2.1.88 源码架构分析,用 Go 语言实现一个类似的 AI 编程助手 CLI 工具。

为什么用 Go?

特性 TypeScript (原版) Go
运行时 Node.js/Bun 单二进制
部署 需要 Node 环境 直接运行
性能 解释执行 编译优化
内存 V8 内存模型 GC + 值类型
依赖 node_modules 无外部依赖

二、架构设计

2.1 分层架构

参考泄漏代码的分层设计,采用清晰的分层架构:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
┌─────────────────────────────────────────────────────────────┐
│ CLI Layer │
│ (cobra CLI, TUI with bubbletea, --print mode) │
├─────────────────────────────────────────────────────────────┤
│ Coordinator Layer │
│ (Single Agent / Multi-Agent orchestration) │
├─────────────────────────────────────────────────────────────┤
│ Tool Layer │
│ (Bash, Read, Edit, Write, Glob, Grep, MCP, Agent, Task) │
├─────────────────────────────────────────────────────────────┤
│ Service Layer │
│ (API Client, Auth, Memory, Permission, Telemetry) │
├─────────────────────────────────────────────────────────────┤
│ Infrastructure Layer │
│ (Config, Logger, Context, State Manager) │
└─────────────────────────────────────────────────────────────┘

2.2 核心设计决策

Tool 接口设计

1
2
3
4
5
6
7
type Tool interface {
Name() string
Description() string
Parameters() jsonschema.Schema
Execute(ctx context.Context, params json.RawMessage) (*ToolResult, error)
RequiresConfirmation() bool
}

设计考量

  • 使用接口而非结构体,方便扩展新工具
  • RequiresConfirmation() 支持危险操作的权限控制
  • json.RawMessage 保持参数灵活性

API 客户端抽象

1
2
3
4
5
6
7
8
type APIClient interface {
CreateMessage(ctx context.Context, req *MessageRequest) <-chan StreamEvent, error
GetModels(ctx context.Context) ([]Model, error)
}

// 两个实现
type AnthropicClient struct { ... }
type OpenAIClient struct { ... }

设计考量

  • 支持多 API 后端(Anthropic + OpenAI 兼容)
  • 流式响应用 channel 实现,符合 Go 惯例
  • 便于添加新的 API 提供商

System Prompt 优先级

1
2
3
4
5
6
7
8
type PromptManager struct {
override string // Priority 0: 强制覆盖
coordinator string // Priority 1: 协调模式
agent string // Priority 2: 子 Agent
custom string // Priority 3: 用户自定义
default string // Priority 4: 默认
append string // 始终追加
}

设计考量

  • 参考 Claude Code 原版的 5 层优先级系统
  • 让不同模式可以优雅覆盖默认行为
  • 支持 __SYSTEM_PROMPT_DYNAMIC_BOUNDARY__ 缓存优化

三、技术选型

模块 Go 库 选择理由
CLI 框架 cobra 成熟、kubectl 同款
TUI bubbletea Go 社区最佳 TUI 库
配置 viper 支持多格式、环境变量
日志 zerolog 高性能、结构化
JSON Schema jsonschema 工具参数验证

四、目录结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
go-claw-code-gallifrey-self-use/
├── cmd/go-claw-code/ # CLI 入口
├── internal/
│ ├── cli/ # CLI 命令定义
│ ├── tui/ # TUI 界面 (bubbletea)
│ ├── coordinator/ # Agent 协调器
│ ├── tools/ # 工具实现
│ ├── services/ # 服务层
│ │ ├── api/ # API 客户端
│ │ ├── auth/ # 认证
│ │ ├── memory/ # 记忆系统
│ │ └── permission/ # 权限管理
│ ├── prompt/ # System Prompt 管理
│ └── config/ # 配置管理
├── pkg/ # 可导出的包
│ ├── types/ # 公共类型
│ └── utils/ # 工具函数
└── configs/ # 配置文件示例

设计考量

  • internal/ 保证内部实现不被外部依赖
  • pkg/ 放可被外部项目引用的公共代码
  • cmd/ 放 CLI 入口,可扩展多个命令

五、实现路线图

Phase 1: 项目初始化 ✅

  • [x] 创建 GitHub 仓库
  • [x] 初始化 Go module
  • [x] 写好 README.md
  • [x] 创建目录结构
  • [x] 添加 Makefile
  • [x] 基础 CLI 框架

Phase 2: 核心框架

  • [ ] API 客户端接口
  • [ ] Anthropic API 实现(流式支持)
  • [ ] OpenAI 兼容 API 实现
  • [ ] 配置管理完善

Phase 3: 工具系统

  • [ ] Tool 接口定义
  • [ ] Bash 工具
  • [ ] Read/Write/Edit 文件工具
  • [ ] Glob/Grep 搜索工具
  • [ ] 权限系统

Phase 4: Agent 核心

  • [ ] 单 Agent 模式
  • [ ] System Prompt 管理
  • [ ] 消息循环
  • [ ] 工具调用处理

Phase 5: 输出层

  • [ ] —print 无头模式
  • [ ] bubbletea TUI 框架
  • [ ] 输入输出组件

Phase 6: 高级功能

  • [ ] 多 Agent 协调
  • [ ] Memory 系统
  • [ ] MCP 支持

六、与原版差异

特性 Claude Code Go-Claw-Code
语言 TypeScript Go
运行时 Node.js/Bun 单二进制
TUI Ink (React) Bubbletea
API Anthropic only Anthropic + OpenAI 兼容
配置 .env config.yaml + 环境变量
插件 Skills 计划支持
MCP 支持 计划支持

七、快速开始

1
2
3
4
5
6
7
8
9
# 克隆仓库
git clone https://github.com/gallifreyCar/go-claw-code-gallifrey-self-use.git
cd go-claw-code-gallifrey-self-use

# 构建
make build

# 运行
./bin/go-claw-code --help

创建时间:2026-04-01