smallnest/pigo

pi agent in Golang

解决的问题

pigo 是一个命令行 AI 编程代理,旨在自动化理解需求和修改代码的循环。通过允许 LLM 在本地开发环境中直接读取、写入和执行命令,它弥合了高层提示词与具体文件更改之间的鸿沟。

工作原理

该项目实现了一个分层运行时架构,其中中央代理循环管理用户、LLM 提供商和一系列本地工具之间的交互。它使用双层循环系统:一个用于处理响应流和工具执行直到助手停止调用工具的内循环,以及一个用于管理后续消息的外循环。

关键操作组件包括:

  • 多提供商支持:兼容 OpenRouter、Ollama、Anthropic 以及与 OpenAI 兼容的端点。
  • 工具集成:内置文件操作 (read, write, edit)、搜索 (grep, find)、Shell 执行 (bash) 和网络访问 (webfetch, websearch) 工具。
  • 安全闸门:项目信任系统,在不受信任的目录中对“副作用”工具(如 bashwrite)要求用户确认。
  • 上下文管理:在接近 LLM 窗口限制时进行自动上下文压缩(摘要)。

适用对象

  • 希望在终端中执行实际编码任务,而不仅仅是生成代码片段的开发人员
  • 可以将“无头”模式 (-p) 用于自动化脚本的 CI/CD 工程师
  • 希望通过提供的 SDK 将编程代理功能嵌入到自己应用程序中的 Go 开发人员

亮点

  • 双执行模式:支持交互式 REPL 和用于 CI/CD 集成的无头脚本模式。
  • 可扩展架构:具有“技能”(可重用的基于提示词的能力)、插件以及一个强大的 Hooks 系统,可通过 Shell 命令拦截或修改代理行为。
  • 灵活的工具控制:通过白名单 (--allowed-tools) 和黑名单 (--disallowed-tools) 进行细粒度的工具访问控制。
  • 会话持久化:能够列出、恢复和继续之前的会话。
  • 提示词模板:支持具有复杂参数语法的可重用 Markdown 模板,用于处理常见任务。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目