Perch Code
完整的代理框架。用在你的程式碼庫。
Shell、搜尋、檔案編輯、背景作業與隔離沙箱,加上四種多代理模式,以及分得清可逆與不可逆操作的權限。Perch 原本是為需要接受稽核的工作而打造。結果發現,程式碼庫需要的正是同一件事。

它能執行的工具
認真的代理框架該有的工具,桌面版和 CLI 都有。
Shell 與搜尋
真正的 bash、grep 和 glob。找出每個呼叫位置,就是真的找出每一個,而不是靠語意猜出大部分。
檔案編輯
讀取、寫入、就地編輯、移動、複製、刪除。每次呼叫都會依你工作區核准的根目錄進行驗證。
背景作業
在背景啟動建置或測試套件,之後可以查看、等待或終止它,Perch 同時繼續處理其他事情。
隔離沙箱
程式碼在 macOS seatbelt 設定檔下停用網路執行,每次執行都會記錄下來,讓每個結果都能追溯到產生它的過程。
規劃模式
Perch 會檢視儲存庫並草擬計畫,期間會封鎖會修改內容的工具。你閱讀計畫時,不會寫入任何東西。
待辦與提問
長時間執行時有一份看得見的待辦清單;需要由你決定時,它會真的開口問你,而不是替你猜。
四種執行代理的方式
大多數代理框架只有一種。這些是本質上不同的工作型態,所以 Perch 把它們分開,而不是假裝一種模式能適用所有情況。
Workers
在一個回合中產生,並在該回合內執行。它們完成時,回合才結束。
Flock
規劃一個團隊、平行執行,再綜合出一個答案。適合可拆分的大型工作。
Delegate
分離執行。它會自行運作、提出檔案變更,並在寫入任何內容前等候你的核准。
Background shell
由你輪詢狀態的作業系統層級作業。對話繼續進行時,建置也持續執行。
export async function settle(batch: Batch) { const total = batch.lines.reduce(sum, 0); const total = await computeTotal(batch.lines); assertReconciled(total, batch.expected); return post(total);}背景代理會提出變更。在你同意之前,什麼都不會寫入。
Git 與 GitHub
Perch 處理的是整個儲存庫,不只是裡面的檔案。讀取歷史紀錄可以自由進行;更動別人看得到的內容則不行。
讀取歷史紀錄
狀態、diff 與 commit 歷史,讓審查從實際變更的內容開始,而不是從對變更的描述開始。
審查 commit 與 PR
逐步檢視 pull request,追查迴歸問題是由哪個 commit 引入,並附上支撐該陳述的檔案回報給你。
除錯失敗的檢查
讀取失敗的 CI 檢查,在本機重現並修好它,而不是告訴你該去看哪份紀錄檔。
發布前設關卡
commit、push 和開啟 pull request 都是不可逆且對外可見的操作,因此必須通過明確的權限關卡。
讓一個模型檢查另一個
寫出它的模型,不該替它打分數。
Perch 不綁定特定模型,所以它產生的輔助代理不必和主要工作使用同一個模型。讓它們改用另一個模型,你就能得到真正的第二意見,而不是讓模型審查自己的產出,再覺得自己做得非常好。
這之所以可行,是因為你沒有被綁在單一廠商。模型清單中的每個模型都能使用,依公開費率計費、不加價;而且我們公開了九個模型的基準測試,而不是空口宣稱結果。
多數代理框架沒有的記憶功能
專案檔只是基本配備。Perch 執行三套記憶系統,每一段上下文都附有紀錄,說明它為何會出現。
專案檔案
PERCH.md、記憶筆記與規則以純 Markdown 存放在你的資料夾中,歸你所有,並在每個回合讀取。
長期記憶
帳號層級的記憶卡片,透過語意與關鍵字的混合搜尋取得,以倒數排名融合(reciprocal rank fusion)合併,再依信心度與新近程度加權。
從修正中學習
修正 Perch 一次,這次修正就能成為永久記憶。你不必再另外把它寫下來。
記憶如何運作,包括通道與 token 預算如何決定每個回合哪些內容會送到模型。
別人都沒有的部分
程式碼之外的工作,也由同一個代理完成。
程式開發代理止步於儲存庫。Perch 是為法律、財務與文件工作而打造,在這些領域,一個自信卻錯誤的答案會帶來後果;當你打開程式碼庫時,這套機制也不會關閉。修好對帳 bug 的同一個工作階段,也能稽核被它算錯的付款、對照原始文件核對數字,並草擬說明備忘錄,每項陳述都附上引用。
一個代理、一個工作區、一份記憶。你不必把程式開發工具和文件工具硬湊在一起,還祈禱它們意見一致。