PySpur:用視覺化流程圖取代終端機裡的 agent 迭代
A visual playground for agentic workflows: Iterate over your agents 10x faster
秒懂
- 它是什麼?
- PySpur 把 agent 的建構、除錯與部署放進一個可視化編輯器,底層仍是 Python 檔案。它的價值在於把「提示詞地獄」與節點層級的失敗可視化,代價是你得接受一套自己託管的服務與資料庫。
- 適合誰用?
- 若你的團隊有多人需要共用同一份 agent 定義,且願意自己跑一個 PySpur 服務與 Postgres,它值得在一個內部工作流上先試;若你只需要在既有程式碼裡加一層圖結構,LangGraph 是更貼合的選擇,因為它不要求你把工作流搬進另一個服務。動手前先確認三件事:你的 Python 是否為 3.11 以上、是否已備好 Postgres 連線字串寫進 .env、以及節點層級除錯與 trace 在自託管模式下是否都可用。
- 可以商用嗎?
- 可以。Apache-2.0 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
- 還在維護嗎?
- 有在維護。儲存庫最近一次提交在 78 天前。
- 用什麼語言寫的?
- 主要是 TypeScript(依據 GitHub 的語言統計)。
以上回答依據專案的 GitHub 資料(最近同步於 2026年9月15日)與我們的分析,不構成法律意見。
開源專案深度解析
PySpur 想解決的不是模型問題,是迭代速度問題
README 把痛點列得很直白:提示詞反覆微調、工作流各步驟之間缺乏可視性、以及在終端機裡手動解析 JSON 輸出。這三件事都不涉及模型能力,而是工程流程。專案自述的定位是「AI engineers use PySpur to iterate over AI agents visually without reinventing the wheel」,目標讀者因此相當明確:已經在用 Python 寫 agent、但每次改一個節點就要重跑整條流程並肉眼比對輸出的人。
它並不是要取代你的推論框架,而是要在你的程式碼之上加一層可視化的工作流定義與執行環境。README 提到團隊自己在 2024 年初推出過一個平面設計 agent,使用者成長後卡在可靠性與除錯工具不足,這個背景解釋了為什麼專案把「測試案例」與「節點層級除錯」放在功能清單的前段。
如果你的 agent 只有一次 LLM 呼叫加一次工具呼叫,這套工具的抽象層會比問題本身還重。它針對的是多節點、含分支與迴圈、需要人工審核的流程。
節點圖、Python 檔案與執行追蹤三層結構
從 README 的功能清單可以拼出它的架構輪廓。工作流是一張有向圖,每個節點是一個可重用的建構區塊(Modular Building Blocks),節點種類涵蓋 LLM 呼叫、工具、RAG 的三段處理(Parse/Chunk/Embed 與 Upsert 到向量資料庫)、結構化輸出、以及檔案與多模態輸入。
關鍵設計在於「Python-Based: Add new nodes by creating a single Python file」。也就是說自訂節點不是靠外掛註冊或設定檔,而是一個 Python 檔案對應一個節點型別。這降低了擴充門檻,同時把節點的行為綁在 Python 生態裡,你要用非 Python 的服務就得自己包一層。
執行層面有兩個機制值得注意。其一是 human-in-the-loop breakpoints:README 說明這些斷點會在流程抵達時暫停,直到有人核准才繼續,用途是「verify critical outputs before the workflow proceeds」。這代表執行狀態必須被持久化,流程可以跨越數小時甚至數天,這也是為什麼它建議改用 Postgres 而非 sqlite。其二是 traces:部署後的 agent 會自動擷取執行追蹤,配合節點層級除錯,失敗可以定位到單一節點而不是整條流程的輸出。
Loops 則被描述為「Iterative tool calling with memory」,也就是帶記憶的反覆工具呼叫,這是 agent 類工作流最常見也最難除錯的一種控制流。
從 pip install 到 localhost:6080 的四個步驟
README 給的快速路徑相當短。需求是 Python 3.11 或以上:
pip install pyspur pyspur init my-project cd my-project pyspur serve --sqlite
init 會在當前目錄建立一個含 .env 的專案資料夾。serve 預設在 http://localhost:6080 啟動,並使用 sqlite。README 明確建議在 .env 裡配置 postgres 連線字串以取得「a more stable experience」,這句話本身就是在說 sqlite 只適合試用。
API 金鑰有兩條路:在 App UI 的 API Keys 分頁填入供應商金鑰(OpenAI、Anthropic 等),或直接編輯 .env 後以 pyspur serve 重啟。前者對多人共用較方便,後者適合把設定納入版本控管以外的祕密管理流程。
若要參與開發,README 只支援 Unix-like 系統,並明講 Windows 開發不支援。建議路徑是 Cursor 或 VS Code 的 dev container(.devcontainer/devcontainer.json),手動路徑則是 docker compose -f docker-compose.dev.yml up --build -d。這是自託管專案,沒有託管服務可以幫你省掉資料庫與部署。
部署與評估的邊界,以及它不適合的場景
One-Click Deploy 把工作流發佈成 API,這是它從實驗工具跨到生產的關鍵一步。但要注意 README 對 trace 的描述是「execution traces of deployed agents」,也就是追蹤能力跟著已部署的 agent 走,這暗示本機迭代與線上執行是兩個階段,而不是同一套即時可觀測性。
Evals 被描述為「Evaluate agents on real-world datasets」,搭配 Step 1 的定義測試案例,形成一個回歸測試迴圈。這對 prompt 頻繁變動的團隊是實質幫助,但 README 沒有說明評估指標的計算方式、是否支援自訂評分器、或結果如何與版本對應,這些在採用前必須自己確認。
明確不適合的情況有幾種。第一,你的工作流是純程式邏輯、幾乎不需要人工檢視中間輸出,視覺化只會增加一層同步成本。第二,你的執行環境不允許長時間暫停的持久化狀態,human-in-the-loop 的前提就不成立。第三,你需要 Windows 上的原生開發環境,README 直接排除了這條路。第四,你已經有一條穩定的 CI 管線在跑 agent 測試,PySpur 的 evals 會與它重疊而不是取代它。
還有一點:專案在 2025 年 3 月連續發布 v0.1.16 到 v0.1.18,版本號仍在 0.1.x。這不代表品質有問題,但代表介面與節點 API 有變動的可能,自訂節點檔案在升級時需要重新檢視。
與 LangGraph 的差別:服務化還是程式庫化
同類工具裡最直接的對照是 LangGraph。兩者都用手寫 Python 描述圖結構,差別在於工作流定義住在哪裡。
LangGraph 是程式庫:圖定義在程式碼裡,狀態在行程內流動,除錯靠你既有的 logging 與追蹤後端,部署方式由你自己決定。PySpur 是服務:圖定義存在資料庫裡、透過 UI 或 Python 檔案編輯,執行由 PySpur 伺服器負責,狀態要持久化才能支援 breakpoint 與長時間等待。
這個差別會外顯在幾件事上。版本控制:LangGraph 的圖跟著程式碼進 git,diff 直觀;PySpur 的圖在資料庫裡,除非你只用 Python 檔案定義節點,否則變更不會自然出現在 PR 裡。協作:PySpur 讓非工程角色能在 UI 上調整流程,這是 LangGraph 給不了的。維運:PySpur 多了一個要顧的服務與一個資料庫,LangGraph 沒有。
如果你的團隊裡有產品或領域專家需要直接看流程並提出修改,PySpur 的 UI 是實質價值;如果只有工程師在動,多一層服務通常不划算。
授權與升級成本
專案採用 Apache-2.0,這是寬鬆授權,允許商業使用、修改與再散布,並包含專利授權條款。實際使用時仍需注意兩件事:一是你透過節點串接的第三方服務(Slack、Firecrawl.dev、Google Sheets、GitHub 等)各自有自己的條款與配額,與 PySpur 的授權無關;二是若你修改後再散布,需保留授權與變更聲明。這裡只是描述授權條款的性質,不構成法律意見,實際情況請洽法務。
升級成本主要來自版本階段。0.1.x 期間,自訂節點是單一 Python 檔案這件事很方便,但也意味著節點介面一旦調整,你的檔案就要跟著改。由於 README 沒有提供節點 API 的穩定性承諾,把自訂節點集中放在少數幾個目錄、並在升級前先跑過 evals 資料集,是比較務實的做法。
資料庫的選擇也牽動維運成本。sqlite 適合單人試用,一旦要用 breakpoint 讓流程等待人工核准,README 建議的 Postgres 就變成必要條件,備份與連線管理也跟著進來。
編輯結論
若你的團隊有多人需要共用同一份 agent 定義,且願意自己跑一個 PySpur 服務與 Postgres,它值得在一個內部工作流上先試;若你只需要在既有程式碼裡加一層圖結構,LangGraph 是更貼合的選擇,因為它不要求你把工作流搬進另一個服務。動手前先確認三件事:你的 Python 是否為 3.11 以上、是否已備好 Postgres 連線字串寫進 .env、以及節點層級除錯與 trace 在自託管模式下是否都可用。這三項決定你要花多少時間在維運而不是在調 agent。
社群筆記