跳到主要內容

發表文章

用 AI 寫程式的痛:我們做了兩個小工具來解決

用 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 (BloggerAgent MCP) 1,289 117 90.9% toon.rs (Graphify 核心) 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。 工具二:StateMachineMcp — 永遠不讓壞掉的程...
最近的文章

那些沒做和一直做的事。

正式失業那天,上午去找人聊天,回家後我還是坐在電腦前。也許不是「失業所以創業」的劇本,可能還帶著一種想要做作品集的那種求職慣性,總之是還沒收到履歷回覆的邀約面試。 把舊的 cawa0505.github.io 改用 Zola SSG,準備用來做自動發布技術文章的地方,因為現在很懶,所以把玩具兜一兜變成自動發文的 repo 展示場。實作到一定程度,可以讓 AI 寫一篇文講為什麼會想做、做了發現什麼。 本來底下的文字是用 golang jieba 中文分詞,做了一個詞語庫,讓 AI 隨機抽一些弱格文章的慣用語來寫一篇整理最近實作的玩具,但內容實在太爛我砍掉了。至少草稿是 AI 建立的,雖然滿無聊,不過人生好像也是。 其實蠻恐慌的,104 沒人聯絡,能力或許已經讓職場瞧不上,中老年人發發牢騷可以,日子不知道怎麼過就是。 你覺得的黃昏,其實是日出,困難的日子才剛要開始。

加密

長串數字匿名幣,TradeOgre 被查緝。 房貸尚有寬限期,加拿大警方公告卻玄疑。 輕羅小扇撲流螢,Machi 夏日比基尼。

docchi

『我可以幫助你,實現你的夢境。』 AI 提供了 yes / no 的 confirm box 一瞬間,幻燈高轉風扇的高頻,興奮莫名。

月台

訊息:「他答應了!!!」 傑爾看著三個跳躍的驚嘆號,「恭喜。」 炫耀的電話裡,幸福滿溢。 那一包冰箱裡的過期拍立得,一張充滿祝福的贈禮。 月台,一直都在,未曾有一班車離開。 目送。是唯一的合宜。

未滿二十

二十分鐘車程未滿。 副駕駛座的窗邊,很安靜。 暖氣呼呼,方向燈答答滴。 蜷靠在座椅,像被雨淋透的貓,呼吸很輕。 下車時,謝謝,用僅剩的力氣擠。 二樓窗口燈亮著,發動引擎。