用 AI 寫程式最大的問題是什麼?對我們來說,不是模型不夠聰明,而是 不放心 。 LLM token 越來越貴,但大部分都在重複看已經知道的程式碼結構。 Agent 改完程式編譯不過,要來回好幾輪才修好。 工作到一半 context 滿了,重開 session 什麼都不記得了。 有時候改壞了檔案還沒人知道。 這些問題大概不是只有我們遇到。我們的做法是寫兩個小工具來補,一個管 輸入成本 ,一個管 操作安全 。兩者透過 MCP 協定接進 OpenCode,各自只做一件事。 工具一:GraphifyRust — 讓 LLM 不用重看整包程式碼 GraphifyRust 是用 Rust 寫的靜態分析引擎。用 Tree-sitter 解析原始碼,把 function、struct、trait 這些節點抽出來,建成一個有向圖。 AI agent 要改程式時,傳統做法是把整支檔案丟給 LLM。幾百行的檔案可能只有幾段 function 相關,但 LLM 還是得看完所有 import、註解、不相干的邏輯。 Graphify 的 skeleton_extract 只回傳 AST 骨架 — function 名稱、行號、簽名。實際壓縮效果: | 檔案 | 原始 token | 骨架 token | 節省 | |------|-----------|-----------|------| | server.go | 1,289 | 117 | 90.9% | | toon.rs | 2,132 | 147 | 93.1% | 骨架不夠用時,用 range mode 精準讀取特定 function。不需要整包丟進去。 選 Rust 的理由很務實:Tree-sitter 的 Rust binding 最成熟。在 110 個檔案、422 條邊的測試專案上,建圖只要 16ms ,比之前 Python 版快 26 倍。節點用 petgraph arena 預分配,減少 heap 碎片。輸出用自訂的 .toon 格式,體積比 JSON 少 60%。 語意搜尋用本機 Qdrant,沒有雲端費用。目前支援 9 種語言:Rust、Python、Go、JavaScript、TypeScript、C、C++、Java、PHP、Swift。 工具二:StateMa...
正式失業那天,上午去找人聊天,回家後我還是坐在電腦前。也許不是「失業所以創業」的劇本,可能還帶著一種想要做作品集的那種求職慣性,總之是還沒收到履歷回覆的邀約面試。 把舊的 cawa0505.github.io 改用 Zola SSG,準備用來做自動發布技術文章的地方,因為現在很懶,所以把玩具兜一兜變成自動發文的 repo 展示場。實作到一定程度,可以讓 AI 寫一篇文講為什麼會想做、做了發現什麼。 本來底下的文字是用 golang jieba 中文分詞,做了一個詞語庫,讓 AI 隨機抽一些弱格文章的慣用語來寫一篇整理最近實作的玩具,但內容實在太爛我砍掉了。至少草稿是 AI 建立的,雖然滿無聊,不過人生好像也是。 其實蠻恐慌的,104 沒人聯絡,能力或許已經讓職場瞧不上,中老年人發發牢騷可以,日子不知道怎麼過就是。 你覺得的黃昏,其實是日出,困難的日子才剛要開始。