neo-code

agent
SUMMARY

A terminal dialogue tool based on Go

README.md

NeoCode

基于 Go + Bubble Tea 的本地 Coding Agent

NeoCode 是一个在终端中运行的 AI 编码助手,采用 ReAct(Reason-Act-Observe)循环模式,能够自主推理、调用工具并完成任务。

核心特性

  • 流式输出 — 实时展示模型思考过程
  • 工具系统 — 文件操作、代码执行、搜索等内置工具
  • 多 Provider 支持 — OpenAI、Gemini 等主流模型,易于扩展
  • 终端原生体验 — 基于 Bubble Tea 的现代化 TUI

快速开始

环境要求

  • Go 1.21+
  • API Key(OpenAI 或 Google Gemini)

安装与运行

# 克隆仓库
git clone https://github.com/yourusername/neocode.git
cd neocode

# 设置 API Key
export OPENAI_API_KEY=your_key_here

# 运行
go run ./cmd/neocode

基本使用

在 TUI 中输入自然语言指令,例如:

帮我看看当前项目的目录结构
创建一个 HTTP 服务器,监听 8080 端口
分析 runtime.go 的主要逻辑

使用 slash 命令快速切换配置:

  • /provider — 切换模型提供商
  • /model — 切换模型

架构概览

┌─────────────────────────────────────────┐
│              TUI (Bubble Tea)           │
└────────────────┬────────────────────────┘
                 │ Events
┌────────────────▼────────────────────────┐
│          Runtime (ReAct Loop)           │
└────────┬───────────────────┬────────────┘
         │                   │
    ┌────▼─────┐        ┌────▼──────┐
    │ Provider │        │   Tools   │
    │  (LLM)   │        │ Registry  │
    └──────────┘        └───────────┘

核心模块职责:

  • internal/config — 配置管理、环境变量、YAML 加载
  • internal/provider — LLM 提供商抽象,抹平厂商差异
  • internal/runtime — ReAct 主循环、事件流、会话管理
  • internal/tools — 工具注册表与具体工具实现
  • internal/tui — 终端 UI、交互体验、事件桥接
  • internal/app — 应用装配与依赖注入

目录结构

.
├── cmd/neocode          # CLI 入口
├── docs                 # 架构与设计文档
│   ├── guides           # 使用指南
│   └── *.md             # 设计文档
├── internal
│   ├── app              # 应用装配
│   ├── config           # 配置管理
│   ├── provider         # Provider 抽象与实现
│   ├── runtime          # ReAct 循环与事件流
│   ├── tools            # 工具系统
│   └── tui              # 终端 UI
└── README.md

文档

开发

# 格式化代码
gofmt -w ./cmd ./internal

# 运行测试
go test ./...

# 编译
go build ./...

当前状态

NeoCode 正处于 MVP 阶段,核心闭环已可用:

✅ 用户输入 → Agent 推理 → 工具调用 → 结果返回 → UI 展示

正在持续迭代中,重点关注:

  • 📚 文档完善
  • 🧪 测试覆盖率
  • 🛠️ 工具能力扩展
  • 🔧 稳定性与性能

License

MIT

Yorumlar (0)

Sonuc bulunamadi