用 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...
鏡頭資料》 From http://www.pentaxforums.com 對焦距離:1.5m - 無窮遠 光圈:f3.5 – f22 口徑:49mm 重量:343g 鏡片結構:四片四群 (圖片來源:Pentaxforums) 光圈葉片:六片 視角:18度 出產年份:1973 135mm 這個很常見的焦長,自己就玩過三顆,出掉一顆 Pentacon 135mm f2.8,目前還留有兩顆。 135mm 這個焦長應該是容易做,除了大廠都有 135mm 焦長的鏡頭外,連許多小廠都有生產。網路上常見把這顆 Pentax S-M-C Takumar 135mm 跟 CZJ Sonnar 135mm 相比,多數人認為 CZJ 比較好,CZJ 135mm 的對焦距離也比較短 (1m),二手價也較高,不過我還蠻喜歡這顆 S-M-C Takumar 135mm 的手感,很小巧,對焦環轉動很順手,這是我一貫喜歡 Pentax S-M-C Takumar 的感覺,截至目前為止,S-M-C Takumar 系列我手上已有五顆,離全收還很遠。 這顆配件蠻齊的,原廠的遮光罩是金屬鎖入式,有些人會喜歡內建拉起式的設計,這顆的口徑是 49mm,裝上遮光罩更顯細長,光圈全開就是可用光圈,銳利度沒話說。 Pentax M42 出現了好幾顆 135mm,從 Super-Takumar 開始多了光圈為 f2.5 的版本,有人說 135mm f2.5 這顆是少數 Pentax 同焦長光圈較大的鏡頭,反而更銳利的,二手價也就不低,也好像比較不好找。 Pentax M42 135mm 各代鏡頭》 Takumar 135mm f3.5 Auto-Takumar 135mm f3.5 Super-Takumar 135mm f3.5 Super-Takumar 135mm f2.5 S-M-C Takumar 135mm f3.5 S-M-C Takumar 135mm f2.5