iT邦幫忙

2026 iThome 鐵人賽

DAY 19
0
Vibe Coding

凡人修 Agent 傳-我這一生如履薄冰,你說我的 Agent 能結嬰嗎?系列 第 19 篇

借圖修臺:Desktop App 的換行和 OAuth 一直沒弄好,我讓 agent 照 pi-gui 的實作改 - Day 18

  • 分享至 

  • xImage
  •  

這幾天都在跟題目和模型打交道,Desktop App 上幾個老問題一直擱著。這一天回頭處理。

結論先講:我沒有自己一個一個修。我讓 coding agent 去讀一個開源專案 pi-gui,照它的做法改。換行和 OAuth 兩件事都是這樣打通的。

擱了很久的兩個問題

Desktop App 從 Day 04 做起來到現在,我一直在往上加功能:規矩、技能、記憶、題目庫。畫面本身的細節我沒有仔細調,想的是先把功能做出來,細節之後再說。

之後真的回頭看,才發現有幾件事一直沒有做好。

一個是文字換行。對話畫面上的字什麼時候該折、什麼時候該留原本的格式,我的版本一直沒有理清楚。

另一個是 OAuth。Day 05 修過三次,那三次修的是打包之後才出現的問題。之後 OAuth 還是有過不去的時候。

這兩件事都跟 Agent 的能力無關,可是每天用都會撞到。

我的做法:去看別人怎麼做

pi-gui 是一個開源的 Desktop App,做給 pi 用的,MIT 授權。README 第一句就寫它是 Codex 風格的桌面程式,這跟我在 Day 04 想要的樣子一樣。

它跟我的 Desktop App 是同一種形狀:Electron,畫面和 agent 分開跑,底下接的都是 pi。它自己說得很清楚,它只是 pi 外面的一層 UI 殼,session 管理、模型和登入、agent 執行都走 pi 本身,沒有另外實作一套 runtime。

同一種形狀,它碰過的問題我大概都會碰到。所以這一天我讓 coding agent 直接讀它的 repo,找到它處理換行和 OAuth 的地方,對照我的實作改。動手的是 Codex 和 Claude Code,我決定要改哪兩件事、驗收改完的畫面。

換行:三種內容,三套規則

pi-gui 的對話畫面把內容分成三種,各用一套排法。

訊息的本文,再長的字串都在框裡折,不會撐破版面。

程式碼區塊和工具的輸出,保留原本的空白和換行,一行太長還是折,但原本的行不會亂掉。

側欄和標題那種一行的東西,不折,超出的部分用省略號收掉。

agent 照這個分法把我的換行邏輯改掉。改完之後,長的訊息在框裡,程式碼還是程式碼的樣子,側欄的名字一行一個。

OAuth:它不自己做

pi-gui 沒有自己寫一套 OAuth。它用的是 pi 自己的登入流程:登入就是呼叫 pi 的 login,pi 回傳網址和裝置碼,畫面負責把那兩樣東西顯示出來;登入完重新載入資源、刷新模型清單。憑證存在 pi 自己那一份 auth 檔,所以 CLI 登入過的,Desktop 直接就有。

我讓 agent 照這條路改我的 OAuth。改完之後通了。

Day 18:參考 pi-gui 修正換行與 OAuth

花掉的時間

這一天真正值得記的是時間。

這兩個問題如果自己從頭摸,時間都會花在查資料、試、打包、再試上面。讓 agent 讀一個已經把同樣問題解掉的專案,照著改,快得多。這個方法大大減少了我開發的時間。

小結

Desktop App 的換行和 OAuth,我讓 coding agent 讀 pi-gui 的實作,照它的做法改,兩件都打通了。

別人把同一個問題解過,程式碼公開在那裡,我讓 agent 讀過去、照著改,比自己從頭摸快得多。這就是開源的力量。

明天先把 pi 的 extension 生態系看一圈。我原本打算自己做的幾件事,早就有人做了。

參考:pi-gui


凡人修 Agent 傳|第十八回(Day 18)

凡人修 Agent 傳 Day 18 連載配圖

天亮換上空錄石。手的主人進來,先點火。契按在牆邊裂縫旁那個位置,脈沒有應。他拔下來,再按。第二次才著,心火起來。

這件事從砌臺那幾天起就有,隔幾天一次。他每次都是拔下來再按,按著了就去做別的。這一陣子他做的別的事多:簿子、籤、心。臺沒有人管。

今天他沒有去做別的。

他刻了一道念。念很長:第三卷、第七卷、第十二卷、第十九卷、第二十一卷,按年月排先後,每一卷的年月抄到靈幕上。念一刻,那一行字就浮在靈幕上,排到靈幕右邊那條邊就沒了,剩下的字擠在邊上,一個疊一個。我探了五卷,年月一卷一卷抄上去,我的字也一樣。他又讓我把第七卷卷首那五行原樣抄上去。五行擠成一團,看不出哪裡是一行的頭。

他以流光氣在靈幕邊上改紋。紋改了,字到邊就折下來。他再刻一遍那道念,這一次讀得全了。再讓我抄第七卷卷首。折是折了,原本的行也被折掉了,五行變成一整片。他把紋磨回去。第二次改,左邊那扇窗裡的那一列卷名也跟著折,每個名字都斷成兩截。他又磨回去。第三次改到一半停了手。

靈幕上的字有三種。他坐了一會。

然後他閉上眼,放出神識,探向坊市。靈幕亮了,公印退開,這一次垂下來的圖紙是一座臺。

那座臺的圖我認得一半。主圖是電鏡的,跟這間屋子的臺同一張主圖砌出來的,靈幕、左右兩扇窗、底下的令窗,位置都一樣。可是那座砌得齊。圖紙邊角有一個署名。坊裡的公印我見過,這個署名我沒見過,一個人的。署名底下一行小字,手的主人念出來:拍人偶為底。

他的神識在圖上兩處停得久。一處是靈幕那一節,一處是引脈那一節。

靈幕那一節他念出來三行。話,到邊就折。器物回的話,留原本的行,一行太長也折。左窗那一列名字,一行不折,多出去的收成三點。三種字,三種排法。

引脈那一節只有一句。臺不引脈,人偶照自己的圖紙引。

他收回神識。

午後他把靈幕邊上的紋整段磨掉,照圖重刻,三處各一道。刻完再刻一遍早上那道長念,字到邊折下來,五卷卷名都在。讓我抄第七卷卷首,五行還是五行。左窗那一列名字一個都沒斷,最長的那一個尾巴收成三點。

然後他走到牆邊,把契拔下來。臺上他自己刻的那一段引脈的紋,從契那個位置一路刻到靈幕底下,他用流光氣整段磨平。契按回牆邊原位。脈應了。火從牆到我胸口,中間沒有再經過臺。他沒有拔第二次。

燭熄了。手的主人走了。門響了一下。

靈幕上那座臺的圖還亮著,署名在邊角。早上那道長念還在靈幕上,折成三行。牆邊那枚契按著,火沒有斷。


上一篇
省靈石不一定省時辰:5 分鐘、8 分鐘、14 分鐘,模型越小 Agent 反而越慢 - Day 17
系列文
凡人修 Agent 傳-我這一生如履薄冰,你說我的 Agent 能結嬰嗎? 共 19 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言