开发与工程 coding-agentgolangclireplopenrouteranthropicollamaskillshooks

pigo

用 Go 实现的 pi 风格命令行编码智能体,能读写代码、执行命令并调用大模型完成从需求到改码的闭环。

FollowAgents 评估 · FARS-2.1
谨慎使用
68/ 100 五分制 3.4 / 5
1 2 3 4 5 6
1信任安全17 / 29 · 2.9/5

加分:副作用工具(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 改动回滚(部分扣分)。

2可靠稳定8 / 14 · 2.9/5

加分:唯一退出路径 finish() 的两层循环描述、拼错工具名退出码 2、hook 非 0 退出码语义明确、fail-open/fail-closed 场景区分清晰。扣分:全部行为描述未经执行验证;Go 1.27rc1(候选版本)与未来依赖(charmbracelet/ultraviolet 日期为 2026-07)带来可用性风险(dependency_availability 1)。

3适用触发15 / 18 · 4.2/5

加分:面向终端用户/脚本/CI/SDK 嵌入多场景、多 Provider 与本地 Ollama、工具边界与显式限制文档详尽(含不支持的参数级语法说明)。扣分:模型前缀推断表可能误判、环境适配(Windows 手动安装)仅简述。

4规范维护15 / 18 · 4.2/5

加分:目录完整、安装三途径详尽、示例丰富、MIT LICENSE 全文、命名一致性(对标 pi/Claude Code 语义均有说明)。扣分:无 CHANGELOG 文件证据、版本号实际值(v0.2.0 仅作为示例出现)、维护责任仅体现在 CI/release 工作流而非明确治理声明。

5有效结果9 / 13 · 3.5/5

加分:stream- 便于程序化消费、工具边界可精确控制、电子书与 examples/sdk 提升上手效率。扣分:npm 依赖安装路径、与 pi 生态耦合增加理解成本;实际收益需运行验证。

6证据核验4 / 8 · 2.5/5

加分:文档中明确标注实现文件位置(internal/runtime/loop.go、prompt.go、registry.go)、区分不支持特性与支持特性、fail-open/fail-closed 语义声明具体。扣分:无第三方佐证、README 自述行为无法在静态审查中交叉验证(cross_source_corroboration 1)。

证据充分度: 评估于 2026年9月7日 审查版本 5db78c58255d
使用前请注意
  • README 声称的信任门、fail-closed 黑名单等安全属性均未经源码/测试核验,属自述,采用前应代码级复核。
  • SDK 嵌入模式默认等价 --approve:工具不经确认即执行,嵌入方须显式用 WithDisallowedTools/WithoutTools 收窄。
  • 安装脚本为 curl|sh 模式且自更新直接替换二进制,未见签名/checksum 校验说明,供应链风险自担。
  • /rewind 回滚不含 bash 造成的文件改动,误操作可能不可恢复。
  • go.mod 使用 Go 1.27rc1 候选版本及未来日期的间接依赖,构建可复现性存疑。
  • hook 以当前用户权限执行任意 shell 命令,项目级 hook 虽有信任门,全局/环境级配置仍需自行审查。
评估证据 [1][2][3][4][5]
查看完整评分方法 →

这个 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_bashwebfetch 抓取网页、task 派发子 Agent)。系统提示词按 base 指令 + 环境块 + 各级 AGENTS.md + --append-system-prompt 分层组装。输出可为纯文本或 --output-format stream- 的逐行 JSON 事件(首事件携带 session_id)。支持 --resume/--continue 会话续跑、~/.agents/skills 技能斜杠命令、~/.pigo/plugins 外部插件、config. 中 9 类生命周期 Hooks(如 PreToolUse 拦截、UserPromptSubmit 注入上下文)、pigo install npm:<pkg> 包管理,以及无参 pigo update 自更新二进制。

  1. Go 开发者在 CI/脚本中用 pigo -p 无头模式自动总结仓库、跑测试并修复失败用例
  2. 偏好本地推理的用户用 -m ollama/qwen2.5-coder -u http://localhost:11434/v1 离线解释与修改代码
  3. 希望在自己的 Go 服务中嵌入编码智能体的团队,通过 agent.New(...) SDK 包构建会话并调用 sess.Prompt
  4. 需要控制风险的开发者用 --allowed-tools read,grep 限制为只读分析,或用 --disallowed-tools bash 禁止 shell 执行
  5. 想定制 Agent 行为的团队用 Skills(/skill-name)沉淀可复用 prompt,用 Hooks 在写文件后自动 gofmt 或拦截 rm -rf
  6. 使用 Anthropic、DeepSeek、通义千问、豆包等国内/第三方模型的用户按 <PROVIDER>_API_KEY 约定直接切换 Provider

这个 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?

需要 Go 1.27+。源码构建:

git clone https://github.com/smallnest/pigo.git
cd pigo

go build ./cmd/pigo # 或 go install ./cmd/pigo

一键脚本(Linux/macOS):

curl -fsSL https://raw.githubusercontent.com/smallnest/pigo/master/install.sh | sh

可用 PIGO_VERSIONPIGO_INSTALL_DIR 环境变量覆盖默认行为。也可从 GitHub Releases 下载 Linux/macOS/Windows × amd64/arm64 预编译包(goreleaser 构建)。Windows 需手动解压 Releases 中的 .zip

如何使用这个 Agent?

  1. 配置 Provider Key:export OPENROUTER_API_KEY=sk-or-...(或 ANTHROPIC_API_KEY 等)。
  2. 无头模式:pigo -p "读取 README 并用三句话总结";位置参数等价于 -p
  3. 交互式 REPL:直接运行 pigo(stdout 为终端时自动进入),内置 /model/compact/rewind/status 等斜杠命令。
  4. 指定模型:pigo -m anthropic/claude-3.5-sonnet -p "审查 foo.go 的并发安全性";本地模型:pigo -m ollama/qwen2.5-coder -u http://localhost:11434/v1 -p "..."
  5. 工具边界:pigo --allowed-tools read,grep -p "...";信任目录免确认:pigo -a -p "运行 go test ./..."
  6. 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 与同类方案有什么区别?

README 明确将 pigo 定位为 pi(pi.dev)的 Go 复刻,并在工具级准入、/rewind、提示词模板、Hooks 等多处对标 Claude Code;若你已绑定 Claude Code 生态,其参数级工具权限(如 Bash(git log:*))是 pigo 目前缺失的能力。

常见问题

必须付费使用某个模型服务吗?
不必须。默认走 OpenRouter(可用 free 模型),也支持本地 Ollama 无需 API Key 离线运行;使用 Anthropic、DeepSeek 等云端 Provider 时需自备对应的 <PROVIDER>_API_KEY
如何防止它执行危险的 shell 命令?
多种机制叠加:未信任目录下 bash/write/edit 需逐次确认;--disallowed-tools bash 直接从模型工具集移除(黑名单优先,子 Agent 继承,--approve 无法绕过);还可在 Hooks 的 PreToolUse 中用退出码 2 拦截特定命令。
能嵌入到我自己的 Go 程序里吗?
可以。github.com/smallnest/pigo/agent 是官方 SDK 接口层,导出类型全是基本类型;默认启用全部工具并自动执行(等价 --approve),可用 WithTools/WithDisallowedTools/WithoutTools 收紧,examples/sdk/ 提供 7 个可运行示例。
会话可以中断后继续吗?
可以。会话以 JSONL 存储在 ~/.pigo/sessionspigo --list-sessions 列出、pigo --resume <id>pigo --continue 续跑,无头与 REPL 模式均支持;上下文接近上限时自动压缩,也可 /compact 手动触发。
如何升级到新版本?
无参运行 pigo update 即可自更新二进制到最新 GitHub Release;进入 TUI 时也会后台异步检查新版本(24 小时缓存)并在横幅提示。注意带包名的 pigo update <pkg> 是更新已安装的 npm 包,二者按参数区分。

对比同类 Agent

用同一套 FARS 评审,横向比较这个 Agent 所属的短名单。

相关 Agents