# go agent **Repository Path**: rtccn_mc/go-agent ## Basic Information - **Project Name**: go agent - **Description**: go写的agent - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-31 - **Last Updated**: 2026-09-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # GXN Agent(Go × Node) > 多语言插件化 AI Agent 核心。**GXN 包含 go**:以 Node.js/TypeScript 为宿主核心,Go(及 Python 等语言)以子进程 + stdio JSON-RPC 作为插件语言接入。一切皆插件。 ## 为什么叫 GXN - **G**o × **N**ode:核心由 Node/TS 驱动,Go 提供重型能力(Git 分支池、存储、工具执行、模型路由)。 - 借鉴 DSH「一切皆插件」的设计:CLI / Tool / Model / Task / Hook / Provider 都可作为插件挂载、替换,甚至 Agent 主循环本身也是可替换插件。 ## 架构总览 ``` ┌─────────────────────────────────────────────┐ │ GXN Agent(Node/TS 宿主核心) │ │ ┌─────────┐ ┌─────────┐ ┌───────────────┐ │ │ │ CLI │ │ Preset │ │ 事件总线/会话 │ │ │ │ REPL │ │ 预设 │ │ 日志/审批流 │ │ │ └────┬────┘ └────┬────┘ └──────┬────────┘ │ │ └───────────┼─────────────┘ │ │ ┌────────────────▼───────────────────────┐ │ │ │ 插件注册表 / 主循环 │ │ │ │ TS 插件(热加载) · Go 插件 · Python 插件 │ │ │ └───────┬──────────────┬──────────┬─────┘ │ │ │ stdio JSON-RPC│ │ │ └──────────┼──────────────┼──────────┼────────┘ ▼ ▼ ▼ ┌────────────────┐ ┌────────┐ ┌────────┐ │ go-agent 插件 │ │ 模型 │ │ Python │ │ Git 分支池 │ │ 路由 │ │ 插件 │ │ 存储/工具/任务 │ │ GLM/ │ │ (示例) │ │ 调度器 │ │ OpenAI │ └────────┘ └────────────────┘ └────────┘ ``` ## 目录结构 ``` gxn-agent/ ├── src/ # Node/TS 宿主核心 │ ├── index.ts # 入口:解析 preset → 挂载插件 → REPL │ ├── cli/repl.ts # 终端交互(多行输入/历史/串行 job) │ ├── kernel/ │ │ ├── types.ts # 核心类型:插件/扩展点/Context │ │ ├── registry.ts # 插件注册表 + 审批闸口 │ │ ├── loop.ts # 默认 Agent 主循环(可替换插件) │ │ ├── profile.ts # preset 预设模式(标准/极简/创建者) │ │ ├── orchestrator.ts # 项目编排(git_project) │ │ ├── context.ts # 服务总线 + 事件 + 会话 │ │ ├── events.ts # 事件(waterfall:veto/改写) │ │ └── session.ts # append-only 会话日志 │ └── runtime/ │ ├── goPlugin.ts # Go 插件加载器(stdio JSON-RPC) │ ├── pyPlugin.ts # Python 插件加载器 │ └── transport.ts # JSON-RPC 客户端/传输 ├── go-agent/ # Go 插件(GXN 包含 go) │ ├── main.go # 命令入口(serve 模式 = JSON-RPC 服务) │ ├── gitx/ # Git 分支池 + 串行合并队列 │ ├── tools/ # 工具注册表 + 内置工具(文件/命令/搜索) │ ├── rpc/ # stdio JSON-RPC 服务(并发处理) │ ├── scheduler/ # 调度器:规划/任务/并发/DAG │ ├── planner/ # 任务规划器 │ ├── storage/ # SQLite 持久化(job/task/branch) │ ├── openai/ # OpenAI 兼容模型(GLM/星火/超算…) │ ├── zhipu/ # 智谱 GLM 特殊处理(含视觉/图像) │ └── plugin/ # Go 侧插件 API(CLI/Tool/Task/Hook) ├── plugins/ # 示例插件 │ ├── demo.ts # TS 插件(工具/钩子/CLI) │ ├── hot.ts # 热加载演示(creator 模式) │ └── python/ # Python 插件示例 ├── scripts/ # 测试/演示脚本 │ ├── concurrent-games.ts # 多游戏并发编写 │ ├── concurrent-same-project.ts # 同项目并行写同文件(冲突检测) │ └── orchestrate-2048.ts # 项目编排 └── package.json ``` ## 快速开始 一键安装(检查依赖 → 构建 Go 插件 → 安装 Node 依赖 → 生成配置 → 初始化工作仓库): ```bash bash install.sh ``` 手动步骤等价于: ```bash # 构建 go-agent 插件 cd go-agent && go build -o go-agent-serve . # 准备配置文件(含 API Key,不入库) cd .. && cp go-agent/config.example.json go-agent/config.json # 启动 GXN Agent(standard 预设) npm start -- --preset=standard ``` 进入 REPL 后直接输入任务即可,例如: ```text 创建一个 HTML5 井字棋游戏,用 git_collab 提交到 games/tic-tac-toe.html ``` 常用命令:`/help`、`/tools`、`/plugins`、`/load`、`/unload`、`/emit`、`/quit`,`!工具名` 直接调用工具。 ## Preset 预设模式 | 模式 | 参数 | 插件组合 | 热加载 | |---|---|---|---| | 标准 | `--preset=standard` | TS 示例 + Go 插件 | ✗ | | 极简 | `--preset=minimal` | 仅 Go 基础能力(基准评测) | ✗ | | 创建者 | `--preset=creator` | 完整组合 + Python/热加载插件 | ✓ | 也可用 profile JSON 覆盖 preset:`node src/index.ts profile.json`。 ## 插件体系 - **TS 插件**:`plugins/*.ts`,`activate(ctx)` 返回 `Extensions`(CLI/Tools/Providers/Tasks/Hooks/Loop),支持运行时热加载。 - **Go 插件**:任何可执行程序以 stdio JSON-RPC 暴露 `capabilities/list`、`tools/call`、`service/call`、`policy/*`,即可作为插件语言接入(go-agent 现成复用)。 - **Python 插件**:`plugins/python/py_runtime.py` 提供 stdio JSON-RPC 运行时,`plugins/python/hello.py` 为示例。 - **审批流**:高危工具(execute_command 未命中白名单 / 声明 requiresApproval)需人工确认;非交互模式自动拒绝。 ## 核心工具 | 工具 | 说明 | |---|---| | `list_files` | 列出工作目录文件树(相对路径),供模型探索结构 | | `read_file` | 带行号读取,支持 offset/limit 分段 | | `edit_file` | 精准字符串替换(search-replace),增量修改 | | `write_file` | 创建/写入文件 | | `execute_command` | 终端命令(白名单 + 审批) | | `git_collab` | Git 分支协作:取分支 → 写文件 → 提交 → 合并 main | | `git_project` | 项目编排:拆分子任务并行生成后合并 | ## 测试 ```bash cd go-agent && go test ./... cd .. && npm run typecheck node scripts/concurrent-games.ts # 多游戏并发编写(验证分支池/合并队列) node scripts/concurrent-same-project.ts # 同项目并行写同文件(验证冲突检测) ``` ## License MIT