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 範本,用於處理常見任務。

相關

  • 專案
  • 專案
  • 專案
  • 專案
  • 專案