Skip to content

OpenCode Go - A Go language learning implementation of AI coding assistant.

Notifications You must be signed in to change notification settings

loon-hejw/opencode_go

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OpenCode Go

English | 中文

声明:本项目仅供学习交流使用,不用于任何商业目的。

项目说明

本项目是 OpenCode Go 语言学习版本。

由于本人对 TypeScript 语言不太熟悉,为了更好地理解 OpenCode 的架构设计和实现原理,将其翻译为 Go 语言版本进行学习研究。

致谢

  • 本项目的架构设计、功能实现均参考自原版 TypeScript 实现
  • 如有任何版权问题,请联系删除

功能特性

  • 交互式 TUI 终端界面
  • 支持多种 AI 提供商(Anthropic、OpenAI)
  • 内置工具系统(文件读写、Bash 执行、代码搜索等)
  • 会话管理和历史记录
  • 事件驱动架构

项目结构

opencode_go/
├── cmd/
│   └── opencode/           # CLI 入口
├── internal/               # 内部包
│   ├── agent/             # AI 代理执行器
│   ├── bus/               # 事件总线
│   ├── cli/               # CLI 命令
│   ├── config/            # 配置管理
│   ├── message/           # 消息管理
│   ├── provider/          # AI 提供商适配
│   ├── session/           # 会话管理
│   ├── storage/           # 数据持久化
│   ├── tool/              # 工具注册表
│   └── tui/               # 终端界面
├── pkg/
│   └── types/             # 公共类型定义
├── go.mod
└── go.sum

快速开始

环境要求

  • Go 1.21+
  • 设置 ANTHROPIC_API_KEY 环境变量

构建运行

# 克隆项目
git clone https://github.com/anomalyco/opencode.git
cd opencode_go

# 构建
go build -o opencode ./cmd/opencode

# 运行 TUI 模式
./opencode run

# 或直接使用 go run
go run ./cmd/opencode run

配置

配置文件位置:~/.opencode/config.yaml

server:
  host: 127.0.0.1
  port: 8080

default_provider: anthropic
default_model: claude-3-5-sonnet-20241022

providers:
  anthropic:
    api_key: ${ANTHROPIC_API_KEY}
  openai:
    api_key: ${OPENAI_API_KEY}

log_level: info

学习笔记

与原版 TypeScript 的主要差异

方面 TypeScript 原版 Go 翻译版
类型系统 接口和类型别名 结构体和接口
异步处理 Promise/async-await Goroutine/Channel
事件系统 EventEmitter 自定义 EventBus
TUI 框架 Ink (React) Bubbletea
依赖注入 构造函数注入 函数参数传递

核心模块说明

  1. Provider: AI 提供商抽象层,统一不同 LLM API 的调用方式
  2. Agent/Executor: 负责执行用户请求,管理工具调用循环
  3. Tool: 工具系统,提供文件操作、命令执行等能力
  4. TUI: 基于 Bubbletea 的终端用户界面
  5. EventBus: 发布-订阅模式的事件通信机制

免责声明

  1. 本项目仅供个人学习 Go 语言和 AI 应用开发使用
  2. 不对代码的正确性、完整性、安全性做任何保证
  3. 请勿将本项目用于生产环境或商业用途
  4. 所有设计理念和实现思路归功于原版 OpenCode 项目

License

本项目遵循与原版 OpenCode 相同的开源协议。

About

OpenCode Go - A Go language learning implementation of AI coding assistant.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published