Skip to content

123456wda/eino_code

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Eino Agent

基于 Eino 框架和 Claude API 构建的 AI Coding Agent,参考 learn-claude-code 项目架构,使用 Go 语言从零实现。

核心理念

模型即 agent,代码是 harness。 Agent 的能力来自模型训练,代码提供工具、知识、上下文管理和权限控制。

功能特性

29 个工具,覆盖完整 agent 能力

类别 工具 说明
基础文件操作 bash, read_file, write_file, edit_file Shell 命令执行、文件读写编辑
任务清单 TodoWrite 多步骤任务跟踪,支持 pending/in_progress/completed 状态
子 agent task 生成子 agent 处理子任务,独立上下文,共享文件系统
技能加载 load_skill 两层知识注入:系统提示描述 + 按需加载完整内容
上下文压缩 compress 三层压缩管线:micro_compact + auto_compact + 手动压缩
后台执行 background_run, check_background 异步命令执行,通知队列驱动
任务管理 task_create, task_get, task_update, task_list 文件持久化任务系统,支持依赖图和自动解锁
团队协作 spawn_teammate, list_teammates, send_message, read_inbox, broadcast 持久化队友 + JSONL 消息总线
协议 shutdown_request, plan_approval 请求-响应关联模式,支持关闭和计划审批
自治 idle, claim_task 工作/空闲两阶段生命周期,自动认领任务
工作树隔离 task_bind_worktree, worktree_create, worktree_list, worktree_status, worktree_run, worktree_remove, worktree_keep, worktree_events Git worktree 隔离执行,控制平面 + 执行平面

REPL 斜杠命令

命令 说明
/compact 手动触发对话压缩
/tasks 列出所有任务
/team 列出所有队友
/inbox 查看收件箱
q / exit 退出

快速开始

前置条件

  • Go 1.22+
  • Anthropic API Key

安装与运行

# 克隆仓库
git clone https://github.com/YOUR_USERNAME/eino_code.git
cd eino_code

# 设置环境变量
export ANTHROPIC_API_KEY="sk-ant-..."
export MODEL_ID="claude-sonnet-4-20250514"  # 可选,默认值如左

# 可选:自定义 API 端点(代理/转发)
export ANTHROPIC_BASE_URL="https://your-proxy.com"

# 运行
go run .

Windows

set ANTHROPIC_API_KEY=sk-ant-...
set MODEL_ID=claude-sonnet-4-20250514
go run .

项目结构

eino_code/
├── main.go                  # 入口:REPL + agent 循环 + 全部 29 个工具定义
├── go.mod / go.sum
├── internal/
│   ├── agent/loop.go        # 共享工具函数(TruncateStr, EstimateTokens, CompactMessages)
│   ├── background/bg.go     # 后台任务管理器(goroutine + channel)
│   ├── messagebus/bus.go    # JSONL 消息总线(文件收件箱)
│   ├── skill/skill.go       # 技能加载器(YAML frontmatter 解析)
│   ├── task/task.go         # 任务管理器(文件持久化 + 依赖图)
│   ├── team/team.go         # 队友管理器(goroutine 生命周期)
│   ├── todo/todo.go         # 待办管理器(验证 + 渲染)
│   ├── tools/tools.go       # GenericTool 封装 + 4 个基础工具
│   └── worktree/worktree.go # Git worktree 管理 + 事件总线
├── .gitignore
├── LICENSE                  # MIT
└── README.md

架构设计

Eino ADK 驱动

本项目以 Eino ADK(Agent Development Kit)为核心框架:

  • 主 agentadk.NewChatModelAgent + adk.NewRunner 管理 agent 循环
  • 工具调度:所有工具通过 Eino 的 InvokableTool 接口调度(InvokableRun()
  • 钩子注入:通过 ChatModelAgentMiddleware 接口实现:
    • BeforeModelRewriteState → 上下文压缩、后台通知注入、收件箱注入
    • AfterModelRewriteState → 待办提醒注入
    • WrapInvokableToolCall → 工具调用日志
  • 子 agent:同样使用 adk.NewChatModelAgent + adk.NewRunner
  • 队友 agent:工具通过 DispatchTool() 走 Eino InvokableTool 标准路径

Agent 循环(ADK 管理)

用户输入 → ADK Runner 接管
    → [BeforeModelRewriteState: micro_compact + auto_compact + 注入通知/收件箱]
    → 调用 LLM (Generate/Stream)
    → [AfterModelRewriteState: 注入待办提醒]
    → ADK 自动执行工具 (InvokableRun)
    → [WrapInvokableToolCall: 日志]
    → 循环直到模型不再请求工具

工具封装模式

所有工具实现 Eino 的 InvokableTool 接口,通过 GenericTool 封装:

tools.NewGenericTool("tool_name", "描述",
    map[string]*schema.ParameterInfo{...},
    func(ctx context.Context, args map[string]any) (string, error) {
        // 工具逻辑
        return "结果", nil
    })

关键依赖

依赖 版本 用途
github.com/cloudwego/eino v0.8.13 Eino 核心框架(schema、组件接口)
github.com/cloudwego/eino-ext v0.1.18 Claude 模型适配器
github.com/anthropics/anthropic-sdk-go v1.26.0 Anthropic Go SDK
github.com/google/uuid latest UUID 生成

致谢

  • learn-claude-code by shareAI-lab — 原版 Python 实现
  • Eino by CloudWeGo (ByteDance) — Go AI 应用框架

License

MIT

About

基于 Eino 框架的 AI Coding Agent,29 个工具,完整 agent 能力

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages