PiG Vibe 项目
Pi 编码代理的 Go 忠实实现
项目简介
PiG 是由 Michael Kinsy 创建并开源的 Pi 编码代理忠实 Go 实现,原本在 Hewlett Packard Enterprise 内部孵化,独立维护后以原生单二进制形式交付给 Go 生态。Pi 仍然是上游参考实现,PiG 专注于将 Pi 的极简架构、可扩展性与终端交互体验带入 Go 生态圈,并通过 PiG SDK 让 Go 应用能够嵌入同一套代理行为。项目采用 MIT 协议,仓库已获得 470+ Star,每周持续更新,预稳定 0.x 阶段核心路径已与 Pi 1.0.0 完成配对验证。
核心功能
- 单原生二进制:项目最终交付物为单一
pig命令,编译为静态二进制,macOS / Linux / Windows(x64、arm64)/ Android Termux 全平台覆盖,无需预装 Node.js 运行时。 - Pi 兼容性矩阵:以 Pi 0.99.1(commit
d86654a)为行为基准,逐路径与上游 Pi 1.0.0 做配对场景测试,差异点全部记录在test/parity/upstream-sync/升级账本中,避免隐性分叉。 - 多语言扩展 SDK:除 Go 原生扩展外,还提供 Rust、Python 扩展 SDK,并支持仅声明的 TypeScript 形式;扩展可被打包为 Piglet(一组命名代理组合),编译为独立可执行文件直接分发。
- 15+ 模型提供商开箱即用:内置 Anthropic、OpenAI、Google、Azure、AWS Bedrock、Mistral、Groq、Cerebras、xAI、Hugging Face、Kimi For Coding、MiniMax、NVIDIA、OpenRouter、Ollama 等服务商的鉴权与流式协议,支持
/model即时切换模型。 - 树状 Session 历史:每条会话以树形结构存储单一文件,支持
/tree跳转到任意历史节点、从该节点继续分支、为条目打书签、按消息类型过滤、/export输出 HTML 或/share上传 GitHub Gist 获取分享链接。 - 精细化上下文工程:AGENTS.md 项目指令启动加载、SYSTEM.md 替换或追加默认系统提示、可自定义的 Compaction 压缩老消息、按需加载的 Skills 与可复用 Markdown Prompt 模板,把上下文窗口的每一格交还给用户掌控。
- 运行时干预:在代理执行过程中按 Enter 发送 steering 消息,在当前工具执行完成后中断后续工具;按 Alt+Enter 发送 follow-up 排队到本轮结束后执行,兼顾纠偏与追加提问。
- 四种运行形态:Interactive 完整 TUI、Print / JSON 一次性脚本查询、RPC(stdin/stdout 上的 JSON 协议)用于进程级集成、Go SDK 嵌入到现有 Go 应用中。
技术实现
PiG 仓库按 Pi 的四大公共包对齐组织:agent/ 实现 Pi 兼容的 Agent 循环、消息与 Session 状态;ai/ 提供 Pi 兼容的 provider、模型目录、鉴权与流式类型;coding/ 暴露编码代理公共 SDK、扩展契约、Piglet 与 Package 支持;tui/ 提供公共终端组件、渲染、输入与终端生命周期。cmd/pig/ 是 Stock PiG 命令行入口与 RPC 进程表面,internal/ 内部实现禁止被外部模块导入;extensions/ 同时容纳 Go / Rust / Python 扩展 SDK 与 TypeScript 仅声明形式,piglets/ 显式存放命名代理组合(如 PiG Standard、Pig Porter);test/parity/ 跑 pinned Pi 对应性场景并产出配对覆盖报告;automation/ 负责构建、生成、CI、发布与维护工具。版本号采用 + 格式(如 0.3.0+0.99.1),Pi 版本作为 semver build metadata,主版本号排序由 PiG 自己决定;pig --version 输出该格式,pig version 把两个版本号分别独立字段输出,且二者都不读取用户配置。Stock PiG 严格保持产品中立,永不隐式激活任何 Piglet;Package 只分发 Resources,不能拥有或激活 Piglet;Piglet Binary 是单一 pinned 组合的直接可执行产物。
快速上手
- macOS / Linux / Termux 安装(arm64):
curl -fsSL https://pi-in-go.dev/install.sh | sh,脚本会校验 release 的 SHA256SUMS 后再安装。 - Windows PowerShell 安装:
irm https://pi-in-go.dev/install.ps1 | iex。 - Go 工具链安装:
go install github.com/MichaelKinsy/PiG/cmd/pig@latest(需要 Go 1.26+)。 - npm 安装:
npm install -g @pi-in-go/pig,npm 实际只作为启动器,会自动拉取对应平台@pi-in-go/pig--原生二进制作为可选依赖(不要使用--omit=optional)。 - 首次启动:进入目标项目目录执行
pig,运行内建/login命令连接订阅或粘贴 API Key(默认遮罩输入,可在/settings中关闭以还原 Pi 的明文键入)。 - 切换模型:在 REPL 中输入
/model进入搜索模式,键入关键词筛选模型;用 Ctrl+P 在已配置 provider 范围内循环切换。 - 加载上下文:在项目根放置
AGENTS.md描述项目约定与目标,放置SYSTEM.md替换默认系统提示;PiG 启动时会列出加载到的 Context、Skills 与 Prompts 文件。 - 运行扩展:通过
pig extension init ./review --lang go生成扩展骨架,写完后pig --piglet ./agents/reviewer.yaml即可加载自定义代理组合。
适用人群
- 希望在终端里直接跑编码代理、不想被 Node.js 运行时拖累的 Go 工程师
- 想把 Pi 体系接入到现有 Go 服务或 CLI 工具的 SDK 用户
- 想用 Rust / Python 扩展编码代理能力的多语言开发者
- 对 Pi 极简哲学感兴趣、但需要原生单二进制部署体验的极简主义者
- 关心 Pi 上游兼容性、希望持续同步上游改进而不想手动迁移的长期跟进者
项目链接
- GitHub 仓库:https://github.com/MichaelKinsy/PiG
- 项目主页:https://pi-in-go.dev
- 安装文档:https://pi-in-go.dev/install
- 快速上手:https://pi-in-go.dev/docs/latest/quickstart
- 扩展机制:https://pi-in-go.dev/docs/latest/extensions
- PiG SDK 文档:https://pi-in-go.dev/docs/latest/sdk
- 上游 Pi 仓库:https://github.com/earendil-works/pi
- 配对覆盖报告:https://github.com/MichaelKinsy/PiG/blob/main/test/parity/coverage.md
评论与建议
登录 后参与评论或提建议