在這一系列的文章中,我將向你展示我如何使用 pstack(我個人用來進行嚴謹工程工作的一套技能)。這套技能讓我能每個月以高信心度向生產環境推送 2,000 個 PR。

就我個人而言,我從未過度強調我提交了多少行程式碼或多少個 PR。在 Agent 出現之前,沒人在乎這些,這也很合理,因為原始的生產力並不一定等同於品質或使用者看得見的成果。那只是一個虛榮指標。
但在建構 pstack 的過程中,我發現數量確實很重要,尤其是當你能夠在 Agent 的協助下維持甚至提升產品品質的時候。舉例來說,我大約在兩個月前開始投入 Grok @Bot 的工作,當時它還在早期階段,程式碼庫雖然新但開始成長。儘管團隊不斷壯大,現在每天有數百個 PR 被合併到 Grok @Bot 的程式碼庫中,pstack 讓我能為所有人維持高品質的程式碼,因為我可以持續監控程式碼、重構、加入新的 lint 規則與檢查,同時也開發新功能。
https://x.com/poteto/status/2090546476464451907
https://x.com/poteto/status/2078527882499150286
成為 Grok @Bot 的園丁與維護者,是我只能透過 pstack 才能做到的事。我們在建立原型後的初期動能非常強,許多人都加入了團隊。我有一個關鍵的機會視窗,可以在程式碼庫被持續建構與擴展、且不中斷服務的情況下,對整個程式碼庫進行重構,為它打下堅實的基礎。一個高品質、能夠隨著無論多少工程師(更重要的是,非工程師)貢獻而擴展的程式碼庫。所有這些工作都要求我在 Grok Bot 被建構的同時,對其基礎進行重構與改進,而只有當基礎能夠跟上貢獻數量時,你才能做到這一點。

Grok Bot 是市面上最高效且效能最佳的 AI 桌面應用程式之一
證據就在 Grok @Bot 本身。在接下來的幾週內,我將告訴你使用 pstack 建構並維護一個高品質應用程式所需知道的一切。
第一部分 – 驗證就是一切
你的工具箱中最關鍵的技能,就是一個高品質的驗證技能。這個技能如此重要,以至於我認為它更像是關鍵基礎設施,而不僅僅是「一個」技能。一個好的驗證技能將會放大你整個團隊(包括非工程師)的產出。做得好,你就能將整個團隊的產出提升 100 到 1000 倍。
如果你不熟悉這個術語,驗證 指的是 Agent 能夠驗證自己的工作。它可以持續進行,直到成功完成任務,因為它現在能夠閉環,而無需你成為瓶頸。如果你有興趣了解更多關於我如何為 Cursor 創建第一個驗證技能的故事,請查看我之前的文章 你可以信賴的循環。
讓我們一起建立一個驗證技能
首先,安裝 pstack,然後執行 /create-verification-skill。我也建議將 Dr Eggbot(我的機器人,可以幫助你創建高品質的機器人)加入你的陣容。Dr Eggbot 隨 pstack 一起提供。它會教導程式碼機器人如何使用它,並且也能以同樣的嚴謹度創建非程式碼機器人。
你可以請 Dr Eggbot 為你創建一個工程師機器人,然後請這個機器人執行 /create-verification-skill,並設定一個每日例行任務來執行 /maintain-verification-skill。

愛死 Dr Eggbot 了
在它運行的同時,讓我們來看看這個技能做了什麼,以及它如何為你創建一個高品質的驗證技能。
我將我們用來建構 Grok @Bot 和 Cursor 的所有驗證技能,提煉成這個技能,作為一種「後設技能」。它教導你的 Agent 如何為你自己的應用程式創建一個高品質的驗證技能。
現在,技術棧的選擇就很重要了。舉例來說,如果你正在用 Electron 或為網頁建構應用程式,你可以利用 JS 生態系統中豐富的除錯工具。例如,Chrome DevTools 協議 (CDP) 讓你能夠使用瀏覽器開發者工具中相同的工具。或者,如果你正在建構 iOS 應用程式,則可以使用模擬器。
你理想上希望能夠與你的應用程式互動、對其進行除錯、擷取效能追蹤,以及使用任何你手動開發應用程式時可能會用到的除錯和開發工具。如果你沒有豐富的執行環境可以利用,你可能需要請你的 Agent 為你創建工具(例如使用 lldb,或是在開發環境中作為 sidecar 運行的自訂套件),或者就利用你現有的資源。
我個人認為,Agent 驗證如此重要,以至於我會認真建議你建立自己的豐富除錯工具,甚至選擇不同的技術棧,以便在軟體開發中獲得壓倒性優勢和極致生產力。正如我之前提到的,賦予 Agent 驗證自己工作的能力,能解鎖組織中每個人貢獻和驗證其變更是否有效的潛力。你的技術棧越難除錯和控制,就越難有效地使用 Agent。
讓它可重現
在 pstack 中,我們有一個稱為 「建立槓桿」 的原則。這在創建技能的脈絡下意味著,我們傾向於給 Agent 工具,而不僅僅是 Markdown。對於驗證技能來說,這意味著創建一個小型 CLI,將應用程式的互動和除錯腳本化,成為一個小巧、對 Agent 友善的實用工具。這意味著 Agent 在執行任務時消耗更少的 token(執行 CLI 命令,而不是編寫一個一次性的腳本來點擊某個東西),並使你的驗證技能更具可重現性和可測試性。
以下是一個假設性的 CLI 範例,你的 Agent 可能為 Electron 應用程式創建:
1# 健康檢查2node .cursor/skills/verify-atlas/control-atlas.mjs doctor34# 開啟一個空白對話並發送訊息5node .cursor/skills/verify-atlas/control-atlas.mjs new-session6node .cursor/skills/verify-atlas/control-atlas.mjs send "列出此專案中的開放任務"78# 鍵盤路徑9node .cursor/skills/verify-atlas/control-atlas.mjs press "Meta+KeyN"1011# 即時 UI 的無障礙快照12node .cursor/skills/verify-atlas/control-atlas.mjs snapshot1314# 截圖作為證據15node .cursor/skills/verify-atlas/control-atlas.mjs screenshot /tmp/atlas-proof.png1617# 等待串流 / 佈局穩定18node .cursor/skills/verify-atlas/control-atlas.mjs wait-settle1920# 為此工作階段切換功能旗標21node .cursor/skills/verify-atlas/control-atlas.mjs feature-flag rooms_v2 on
現在,所有 Agent 都可以使用這個 CLI 來快速導航和除錯你的應用程式。你也需要開始思考建構應用程式的開發體驗:
- 為開發資料庫播種
- 如何處理驗證、測試使用者、對測試/暫存環境的 API 呼叫
- 以一致的方式安裝和啟動你的開發環境
所有這些都是你過去自己寫程式碼時可能就需要考慮的事情。所以,將此視為你的 Agent 在你的應用程式上進行開發工作的主要工具。保持它的良好維護和測試!
以下是一些你可能需要考慮的其他命令範例:
1- **檢查:** `info`, `snapshot`, `screenshot`, `components`2- **導航:** `home`, `new-session`, `select-project`, `select-runtime`, `scroll`3- **互動:** `send`, `click`, `click-xy`, `aria-click`, `type`, `press`, `eval`, `upload-image`, `add-context`, `feature-flag`4- **效能:** `trace`, `profile`, `record`, `perf-metrics`, `wait-settle`5- **串流:** `console`, `network-log`, `network-summary`6- **健康檢查與清理:** `doctor`, `cleanup`, `watch --restart`
一旦你有了這個基本設定,你應該已經開始看到你的 Agent 有顯著的改善。它們應該能夠輕鬆地在你的應用程式中導航和除錯。
我建議在進行任何更進階的操作之前,先花時間讓這個 CLI 變得完善且無錯誤。你也需要思考(或請你的 Agent)設計一個對 Agent 友善的 CLI。網路上有許多資源可以引導你的 Agent,但我喜歡的關鍵屬性是:
- API 易於組合——想想 John Ousterhout 的深度模組哲學
- 任何可能具有破壞性副作用的命令都應該有 --dry-run 選項
- 利用子命令來逐步揭露功能,而不是一次全部顯示
- 錯誤訊息應該非常詳細,並告訴 Agent 它應該做什麼
- 豐富的 --help 文字
- 以機器可讀的形式(例如 JSON)輸出結果
使用 Cloud Agents 而非工作樹來實現並行加速
當你成功運行驗證技能並合併了一些 PR 之後,你可能會開始思考是否可以進一步實現並行化。例如,如果一個 Agent 現在可以接受你的提示並主要將其推進到可合併的狀態,這難道不能讓你騰出手來運行更多 Agent 嗎?
你的第一直覺可能是添加工作樹支援,這意味著你的 Agent 可以使用 git 來創建一個倉庫的追蹤副本,在那裡它們可以隔離地進行更改,而不影響主檢出。理論上,這讓你可以同時運行多個 Agent,而不會讓它們的更改互相衝突。
我會建議不要這麼做。首先,它會在你的機器上消耗大量的儲存空間和資源。根據你的倉庫大小和機器效能,使用工作樹你可能最多能同時運行 10 個 Agent。但有一個更好的方法!
Cursor 的 cloud agents 是在雲端、Cursor 的基礎設施上運行的 Agent。這些 Agent 可以存取一台真實的電腦,這意味著它們可以安裝依賴項、運行你的應用程式、錄製影片和截圖,並像真實使用者一樣與你的應用程式互動。如果你在前一個步驟中投入足夠多來改善你的開發體驗,那麼設定 Cloud Agents 應該不會有太大的負擔。當你首次設定雲端環境時,我們會派一個 Agent 來幫助你正確設定和運行。在第一次建置之後,我們會拍攝一個 快照,這意味著後續的 Cloud Agent 運行總是能快速啟動。
我強烈建議花時間設定 Cloud Agents,因為它能解鎖並行處理帶來的巨大生產力提升。在後續的文章中,我將向你展示我如何在雲端同時運行數百個子 Agent!但現在,先設定好你的環境,讓它達到一個你對在雲端運行所有 Agent 感到有信心的狀態。
使用功能地圖讓 Agent 保持聰明
隨著你的應用程式變得越來越複雜,Agent 需要更多指導才能找到功能並與之互動。為此,我想出了一個我稱之為「功能地圖」的東西。顧名思義,它是一張易於搜尋的地圖,列出了你應用程式中所有可用的功能、它們的作用,以及從使用者角度如何到達該功能。
這是我為一個名為 Atlas 的虛構應用程式準備的 範例功能地圖。它只是在驗證技能的 SKILL.md 中被提及的幾個 Markdown 檔案。
你可以將這個檔案放在任何地方,但在 /create-verification-skill 中,我們會自動創建一個 references/features 目錄,裡面包含一個 README.md。這個 readme 就是地圖本身:一個所有主要功能的高層級概述,並附有指向具體細節的連結。一個功能範例看起來像這樣:
1# 偏好設定23全螢幕偏好設定覆蓋層及其標籤頁組。45## 子功能67- settings-overlay:從齒輪圖示或 Cmd/Ctrl+, 開啟的全螢幕覆蓋層8- settings-nav:左側的標籤頁導航(一般、外觀、模型、方案與用量...)9- settings-search:覆蓋層內的搜尋(在設定開啟時按 Cmd/Ctrl+K)10- theme-picker:外觀頁籤下的快速主題控制1112## 如何到達(使用者視角)1314點擊帳號頭像旁的齒輪圖示,或按 Cmd/Ctrl+,。從左側導航選擇一個標籤頁。在偏好設定搜尋框中輸入以跳轉。按 Escape 或點擊關閉控制項可關閉。1516## 使用 control-atlas 驅動1718bash19node .cursor/skills/verify-atlas/control-atlas.mjs press "Meta+Comma"20node .cursor/skills/verify-atlas/control-atlas.mjs snapshot21node .cursor/skills/verify-atlas/control-atlas.mjs press "Escape"2223- 覆蓋層根節點:在無障礙樹中尋找名為「偏好設定」的對話框/區域。24- 標籤頁:按可見名稱點擊。「方案與用量」可能在某些帳號狀態下不存在。25- 當設定開啟時,Cmd/Ctrl+K 是偏好設定搜尋,而非全域指令面板(請參閱 `multi-surface-journeys.md`)。2627## 注意事項2829- 在操作過程中關閉設定可能會讓焦點停留在無用的地方。`new-session` 或 `home` 可以恢復。30- 某些標籤頁受權限限制。跳過時需附上明確的帳號原因。
不用擔心自己寫這些!當你執行 /create-verification-skill 時,你的 Agent 會自動瀏覽你的應用程式,並為你編目所有內容並創建這些參考資料。
功能地圖與 CLI 結合,是 pstack 的驗證技能如此出色的主要原因之一。Agent 現在擁有關於每個功能以及如何到達該功能的上下文,節省了其上下文視窗中寶貴的 token,並精確地教導它該功能的用途以及如何到達。
你可以將功能地圖視為一種「具體化的記憶」。如果你已經使用 Agent 一段時間,你可能熟悉「記憶」的概念——通常這些可能以簡單的 Markdown 檔案(例如 Obsidian 筆記庫)儲存,甚至是更複雜的東西,如向量資料庫。就我個人而言,我認為你的程式碼庫是記憶的終極形式。程式碼是你和你的團隊所做決策的投影,代表了已發生事件和事物實際運作方式的真相來源。功能地圖只是它的一種更緊湊的形式,旨在節省 token。而且因為它只是技能內部的 Markdown,每個為你的程式碼庫做出貢獻的人都能從這個共享記憶中受益。
這意味著維護驗證技能非常重要。我建議每天至少執行一次 /maintain-verification-skill,以確保你的 Agent 始終擁有控制應用程式的最新細節。你可能還會發現,隨著你更多地使用驗證技能,Agent 在處理你的應用程式時會自動更新它們。/maintain-verification-skill 會捕捉所有遺漏的部分。
如何使用你的驗證技能
作為參考,這裡有一個為虛構應用程式創建的驗證技能範例:https://github.com/poteto/verification-skill-example。提醒一下,執行 /create-verification-skill 來創建一個,它會包含一個基本的 CLI 和功能地圖。
以下是我通常如何在 pstack 中使用它的方法。
首先,當然是用 /poteto-mode 開始你的提示。如果你透過 Cursor 使用 pstack,在自動補全 /poteto-mode 時,你也可以按 Opt + Enter 而不是單純的 Enter——這會將該技能添加為一個自訂模式,這會固定該技能,讓你的 Agent 在每個新的回合中都會收到使用該技能的提醒。

輸入 /poteto-mode 並按 Opt + Enter 將其固定為自訂模式
在 Grok @Bot 中,安裝外掛程式,然後輸入 /poteto-mode。

你也可以在 Grok Bot 中使用 pstack!
範例:建構新功能
對於建構新功能,我通常會將驗證技能與 /poteto-mode 一起使用,讓 Agent 驗證其工作。例如,我可能會提示類似這樣的內容:
/poteto-mode 建置 <功能描述,任何有用的上下文>。使用 /control-app 驗證你的更改,並向我展示影片和截圖作為證明
其中 /control-app 是 /create-verification-skill 的結果。在 Grok @Bot 中,我會提示類似這樣的內容:
生成一個 cloud agent 來使用 /poteto-mode 建置 <功能描述,任何有用的上下文>。使用 /control-app 驗證你的更改,並向我展示影片和截圖作為證明
這裡的細微差別在於,在 Grok @Bot 中,你告訴你的機器人生成一個 cloud agent 來執行工作,而不是讓機器人自己完成。我偏好這樣做的主要原因是,它可以釋放你的機器人去處理其他事情,並保持其上下文視窗乾淨。在這個意義上,我將我的機器人視為管理和監督 cloud agents 的協調者。Cloud agents 也意味著你可以利用 Cursor 中可用的完整模型陣列,這些模型有自己的獨立機器,因此你的機器人的電腦可以空出來處理其他事情。
範例:效能工作
生成一個 cloud agent 來使用 /poteto-mode 改善我們應用程式的初始載入時間。首先使用 /control-app 對現狀進行追蹤,並找出改進機會。然後進行有針對性的修復,並使用 /control-app +
/swarm 來確認成果
/swarm 是與你的驗證技能結合的最佳技能之一。它可以將任意數量的 cloud agents 分散出去來運行你的驗證技能,這樣你就可以做像是用足夠大的樣本量來確認效能提升,或是對你的應用程式進行模糊測試以確保你沒有破壞或回歸任何東西。
範例:自動重現使用者回報
當你對你的驗證技能感到滿意時,你可以將它們放入 Grok @Bot 的例行任務或 Cursor 自動化中。例行任務和自動化讓你可以按計劃運行任務,或在事件發生時觸發。
例如,如果你將使用者回饋導入 Slack,和/或擁有自己的內部回饋管道,你可以讓你的機器人監聽每個報告,並自動嘗試用 cloud agent 重現它們。如果你的驗證技能和功能地圖足夠好,你可能甚至會決定自動修復問題。
這就是為什麼我早些時候說驗證是你工具箱中最重要的技能之一。它為你在其上建構新的技能和例行任務提供了基礎。最重要的是,你團隊中的每個人都會受益。
投資你的驗證技能
一旦你創建了你的驗證技能,請透過 /maintain-verification-skill 讓它保持銳利。持續改進 CLI,並像對待關鍵基礎設施一樣投資這個技能。你可能甚至想為它設立一個輪值待命制度——這就是它對於為你的團隊解鎖 100-1000 倍生產力的重要性。
這個技能是我們將在 pstack 指南中介紹的許多其他技能的基礎,並且能與所有這些技能完美地組合。
我建議將 Dr Eggbot(我的機器人,可以幫助你創建高品質的機器人)加入你的陣容。Dr Eggbot 隨 pstack 一起提供。它會教導程式碼機器人如何使用它,並且也能以同樣的嚴謹度創建非程式碼機器人。
你可以請 Dr Eggbot 為你創建一個工程師機器人,然後請這個機器人執行 /create-verification-skill,並設定一個每日例行任務來執行 /maintain-verification-skill。
感謝閱讀,敬請期待第二部分!





