pigo
用 Go 实现的 pi 风格命令行编码智能体,能读写代码、执行命令并调用大模型完成从需求到改码的闭环。
- Star 数
- ★ 482
- 最近更新
- 1 个月前
- License
- MIT
- 主语言
- Go
- FA 评分
- 68/100 · 存在缺口
30 秒速览
- 运行形态
- 可在哪里用
- 通用 · 跨平台OpenAI API · Claude API
- 费用
- 软件免费,模型调用费用自付
- 上手难度
- 中 · 需要几步配置
- 开始前需要
- 典型场景
- Go 开发者在 CI/脚本中用
pigo -p无头模式自动总结仓库、跑测试并修复失败用例 - 不适合
- 仍在使用 Go 1.26 或更早版本的环境:源码构建要求 Go 1.27+
- 需要参数级工具限制(如 Bash(git log:*))的用户:该语法会被当作未知工具报错
- 源码审查
- 68/100 · 存在缺口
这个 Agent 能做什么,适合哪些场景?
pigo(github.com/smallnest/pigo)是用 Go 复刻的 pi AI Agent,提供无头 -p 脚本模式与交互式 TUI/REPL 两种运行方式。其运行时核心是 internal/runtime/loop.go 的两层 Agent 循环:内层反复执行流式回复与工具调用,外层处理后续消息,所有终止路径汇于 finish()。内置 read/write/edit/grep/find/bash/todo/webfetch/websearch/memory_search/task 等工具,副作用工具受项目信任机制与 --allowed-tools/--disallowed-tools 工具级准入约束。Provider 层支持 OpenRouter(默认)、Anthropic、本地 Ollama、NVIDIA NIM 及 40 余个内置 Provider,可按模型名前缀自动推断。除 CLI 外还提供 github.com/smallnest/pigo/agent SDK 供嵌入 Go 程序,并配套电子书《用 Go 编写 pi Agent》。
pigo 以当前工作目录为根运行:接收 prompt 后进入 Agent 循环,通过所选 Provider 调用 LLM,模型可调用内置工具(read 按行读文件、write/edit 修改文件并返回 diff、grep/find 检索代码、bash 支持后台执行并配套 bash_output/kill_bash、webfetch 抓取网页、task 派发子 Agent)。系统提示词按 base 指令 + 环境块 + 各级 AGENTS.md + --append-system-prompt 分层组装。输出可为纯文本或 --output-format stream-json 的逐行 JSON 事件(首事件携带 session_id)。支持 --resume/--continue 会话续跑、~/.agents/skills 技能斜杠命令、~/.pigo/plugins 外部插件、config.json 中 9 类生命周期 Hooks(如 PreToolUse 拦截、UserPromptSubmit 注入上下文)、pigo install npm:<pkg> 包管理,以及无参 pigo update 自更新二进制。
- Go 开发者在 CI/脚本中用
pigo -p无头模式自动总结仓库、跑测试并修复失败用例 - 偏好本地推理的用户用
-m ollama/qwen2.5-coder -u http://localhost:11434/v1离线解释与修改代码 - 希望在自己的 Go 服务中嵌入编码智能体的团队,通过
agent.New(...)SDK 包构建会话并调用sess.Prompt - 需要控制风险的开发者用
--allowed-tools read,grep限制为只读分析,或用--disallowed-tools bash禁止 shell 执行 - 想定制 Agent 行为的团队用 Skills(
/skill-name)沉淀可复用 prompt,用 Hooks 在写文件后自动 gofmt 或拦截rm -rf - 使用 Anthropic、DeepSeek、通义千问、豆包等国内/第三方模型的用户按
<PROVIDER>_API_KEY约定直接切换 Provider
如何安装或部署这个 Agent?
需要 Go 1.27+。源码构建:
git clone https://github.com/smallnest/pigo.git
cd pigogo build ./cmd/pigo # 或 go install ./cmd/pigo
一键脚本(Linux/macOS):
curl -fsSL https://raw.githubusercontent.com/smallnest/pigo/master/install.sh | sh可用 PIGO_VERSION、PIGO_INSTALL_DIR 环境变量覆盖默认行为。也可从 GitHub Releases 下载 Linux/macOS/Windows × amd64/arm64 预编译包(goreleaser 构建)。Windows 需手动解压 Releases 中的 .zip。
如何使用这个 Agent?
- 配置 Provider Key:
export OPENROUTER_API_KEY=sk-or-...(或ANTHROPIC_API_KEY等)。 - 无头模式:
pigo -p "读取 README 并用三句话总结";位置参数等价于-p。 - 交互式 REPL:直接运行
pigo(stdout 为终端时自动进入),内置/model、/compact、/rewind、/status等斜杠命令。 - 指定模型:
pigo -m anthropic/claude-3.5-sonnet -p "审查 foo.go 的并发安全性";本地模型:pigo -m ollama/qwen2.5-coder -u http://localhost:11434/v1 -p "..."。 - 工具边界:
pigo --allowed-tools read,grep -p "...";信任目录免确认:pigo -a -p "运行 go test ./..."。 - SDK 嵌入:
import "github.com/smallnest/pigo/agent",sess, _ := agent.New(agent.WithModel("claude-opus-4-8"), agent.WithAPIKey(os.Getenv("ANTHROPIC_API_KEY"))),然后sess.Prompt(ctx, "...")。完整示例见examples/sdk/。
这个 Agent 有哪些优点和局限?
- 单一 Go 二进制,无 Node/Python 运行时依赖,可用 install.sh 或 Releases 预编译包直接部署
- Provider 覆盖极广:OpenRouter 默认,内置 40+ Provider 注册表(含 Anthropic、DeepSeek、DashScope、Volcengine、Ollama 本地),支持模型名前缀自动推断
- 安全边界细致:项目信任三态持久化、工具黑白名单(黑名单优先、子 Agent 继承、
--approve不可绕过)、Hooks 可拦截危险命令 - 既是 CLI/REPL 工具也是可导入的 Go SDK(
pigo/agent包,纯基本类型接口),并配套电子书讲解实现 - 可扩展性完整:Skills、提示词模板(带参数语法)、外部插件、9 类生命周期 Hooks、npm 生态包管理与自更新
- 要求 Go 1.27+ 才能源码构建,属于较新的工具链门槛
- 副作用工具(bash/write/edit)依赖项目信任机制把关,
--approve会跳过逐次确认,在不受信任目录使用有风险 - 工具级准入不支持参数级匹配(如
Bash(git log:*)的 Claude Code 语法),写成该形式会报错 pigo install依赖 PATH 上的 npm,包生态目前仅支持 npm: 源- 与 Claude Code 等成熟产品相比,
/rewind暂不回滚 bash 改动的文件,能力对齐仍有差距
这个 Agent 与同类方案有什么区别?
README 明确将 pigo 定位为 pi(pi.dev)的 Go 复刻,并在工具级准入、/rewind、提示词模板、Hooks 等多处对标 Claude Code;若你已绑定 Claude Code 生态,其参数级工具权限(如 Bash(git log:*))是 pigo 目前缺失的能力。
与相关度最高的同类 agent 并排比较关键指标。
| Agent | 源码审查 | 形态 / 费用 | Star | 最近更新 | 主语言 | 完整支持的平台 |
|---|---|---|---|---|---|---|
| pigo 当前 | 68 · 存在缺口 | 命令行工具免费 + 模型费 | ★ 482 | 1 个月前 | Go | OpenAI API · Claude API |
| Cersei — Rust 编程智能体 SDK | 60 · 存在缺口 | 代码库 / SDK免费 + 模型费 | ★ 461 | 2 个月前 | Rust | OpenAI API · Claude API |
| zot 编码代理 | 59 · 缺口较多 | 命令行工具免费 + 模型费 | ★ 351 | 1 天前 | Go | OpenAI API · Claude API |
| OpenClaude — 通用终端 AI 编程代理 | 42 · 缺口较多 | 命令行工具免费 + 模型费 | ★ 34k | 今天 | TypeScript | Claude Code · OpenAI API · Claude API |
FollowAgents 如何评估这个 Agent?
查看各维度的扣分理由
加分:副作用工具(bash/write/edit)需逐次确认、项目信任三态持久化、--approve 不放大权限、工具黑名单 fail-closed、子 Agent 继承边界、hook payload 不含凭证、项目级 hook 仅受信任时加载(防克隆即执行)。扣分:以上均为 README 自述,未提供源码或测试佐证;SDK 模式默认等价 --approve(工具不经确认即执行)削弱默认最小权限;依赖未声明 checksum/安全策略(dependency_security 1);安装脚本 curl|sh 自更新替换二进制无签名校验说明;来源仅为 unknown 发布者的自述(source_attribution 1);bash 可执行任意命令、/rewind 不含 bash 改动回滚(部分扣分)。
加分:唯一退出路径 finish() 的两层循环描述、拼错工具名退出码 2、hook 非 0 退出码语义明确、fail-open/fail-closed 场景区分清晰。扣分:全部行为描述未经执行验证;Go 1.27rc1(候选版本)与未来依赖(charmbracelet/ultraviolet 日期为 2026-07)带来可用性风险(dependency_availability 1)。
加分:面向终端用户/脚本/CI/SDK 嵌入多场景、多 Provider 与本地 Ollama、工具边界与显式限制文档详尽(含不支持的参数级语法说明)。扣分:模型前缀推断表可能误判、环境适配(Windows 手动安装)仅简述。
加分:目录完整、安装三途径详尽、示例丰富、MIT LICENSE 全文、命名一致性(对标 pi/Claude Code 语义均有说明)。扣分:无 CHANGELOG 文件证据、版本号实际值(v0.2.0 仅作为示例出现)、维护责任仅体现在 CI/release 工作流而非明确治理声明。
加分:stream- 便于程序化消费、工具边界可精确控制、电子书与 examples/sdk 提升上手效率。扣分:npm 依赖安装路径、与 pi 生态耦合增加理解成本;实际收益需运行验证。
加分:文档中明确标注实现文件位置(internal/runtime/loop.go、prompt.go、registry.go)、区分不支持特性与支持特性、fail-open/fail-closed 语义声明具体。扣分:无第三方佐证、README 自述行为无法在静态审查中交叉验证(cross_source_corroboration 1)。
- README 声称的信任门、fail-closed 黑名单等安全属性均未经源码/测试核验,属自述,采用前应代码级复核。
- SDK 嵌入模式默认等价 --approve:工具不经确认即执行,嵌入方须显式用 WithDisallowedTools/WithoutTools 收窄。
- 安装脚本为 curl|sh 模式且自更新直接替换二进制,未见签名/checksum 校验说明,供应链风险自担。
- /rewind 回滚不含 bash 造成的文件改动,误操作可能不可恢复。
- go.mod 使用 Go 1.27rc1 候选版本及未来日期的间接依赖,构建可复现性存疑。
- hook 以当前用户权限执行任意 shell 命令,项目级 hook 虽有信任门,全局/环境级配置仍需自行审查。
最近版本
来自该项目 GitHub Releases 的最新发布记录,说明为上游原文摘录,未经本站改写或测试。
-
发布说明摘录
Changelog Features * 59ce2e9e03aab18ba9b41852e64aa3b23c92e381: feat: GitHub ready-for-review webhook creates read-only review sessions (#567) (#575) (@smallnest) * 4a0994dd6a14c0954b8cbdd02da498f439a09157: feat: credential reference mode and child-process env scrubbing (#568) (#576) (@smallnest) * c11a675e2c12cd6d225a1591b8b7ea05038bc550: feat: online model discovery via /models fetch (#566) (#574) (@smallnest) * 3a5808c21980471827602734213b61361c0c2444: feat: session export and sharing (pigo session export) (#570) (#578) (@smallnest) …在 GitHub 查看 ↗ -
发布说明摘录
Changelog Features * 9554dcbd7d580bb70cce787607adb2e7e78249e3: feat(agent): add public SDK package + examples (#554) ( <>) * 662dd2fe2334e4323ca40fd8c5d437f1f628d757: feat(agent): expose structured events and custom tools (#563) (@zyhdf5) * d496ce91df6cd470bea91304e52e51cec1f79382: feat(edit): render colored diff for edit tool results (#560) (@smallnest) * e5b6cd19f416b148937e40f936dcece4144f87a9: feat(provider): add Fable 5 / GLM-5.3 / DeepSeek Flash presets (@smallnest) * 3df6a9cdbb71d23d30605f127b998041c06049a2: feat(provider): add Google Gemini preset section (@smallnest) …在 GitHub 查看 ↗ -
发布说明摘录
Changelog Features * d9b7dc9022212d86dafad5262a34cd1d925f0755: feat(bash): add run_in_background with bash_output/kill_bash (@smallnest) * 7aab29011f7fd8aede31b7acb98412b1978477d0: feat(rewind): add /rewind edit checkpoint (files + conversation) (@smallnest) * 5be6400980c98367cf976d82e5bbf1d8dc1714e0: feat(thinking): add "max" reasoning level above xhigh (@smallnest) * 84c9c507cb92f0fbf4a59d6b0930332ddedb0399: feat(tools): add websearch tool with auto-detected backend (@smallnest)在 GitHub 查看 ↗
常见问题
必须付费使用某个模型服务吗?
<PROVIDER>_API_KEY。如何防止它执行危险的 shell 命令?
--disallowed-tools bash 直接从模型工具集移除(黑名单优先,子 Agent 继承,--approve 无法绕过);还可在 Hooks 的 PreToolUse 中用退出码 2 拦截特定命令。能嵌入到我自己的 Go 程序里吗?
github.com/smallnest/pigo/agent 是官方 SDK 接口层,导出类型全是基本类型;默认启用全部工具并自动执行(等价 --approve),可用 WithTools/WithDisallowedTools/WithoutTools 收紧,examples/sdk/ 提供 7 个可运行示例。会话可以中断后继续吗?
~/.pigo/sessions,pigo --list-sessions 列出、pigo --resume <id> 或 pigo --continue 续跑,无头与 REPL 模式均支持;上下文接近上限时自动压缩,也可 /compact 手动触发。如何升级到新版本?
pigo update 即可自更新二进制到最新 GitHub Release;进入 TUI 时也会后台异步检查新版本(24 小时缓存)并在横幅提示。注意带包名的 pigo update <pkg> 是更新已安装的 npm 包,二者按参数区分。