iT邦幫忙

2026 iThome 鐵人賽

DAY 4
0
Vibe Coding

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

殊途同歸:一個 Agent、多種輸入,Desktop App 和 CLI 要通到同一個核心 - Day 03

  • 分享至 

  • xImage
  •  

原始開發紀錄:Agent Build Log — Episode 003Episode 008

這個系列改寫自我部落格上的 Agent Build Log,那是我每天邊做邊寫的開發紀錄。上面列的是這一篇對應的集數,想看當天的原始版本,點連結就能過去。

Agent Build Log Episode 008

我要的 Agent 只有一個,接受指令的方式卻不該只有一種。坐在電腦前,我想要一個像 Codex App 那樣的視窗。在終端機裡,我想一行指令就叫得到他。別的 Agent 在跑流程的時候,也要有辦法把事情交給他。所以我做了兩個介面:Desktop App 和 CLI。

這篇講這兩個介面各自是什麼、為什麼是這兩個,還有兩個介面底下發生過的一件事:他們看起來共用一個 Agent,其實各走各的。

一個 Agent,多種輸入

Desktop App 是我日常開著的那個。體驗照 Codex App 來:新開一段對話,把事情講清楚,他去做,過程中每一步都看得到,該確認的時候問我。

CLI 是終端機裡的入口。這一類介面大家都熟,Codex CLI、Claude Code 都長這樣:開終端機,打一行,看他跑。我在終端機裡順手就用它,用法跟用那兩個沒什麼差別。

CLI 還有另一種使用者:別的 Agent。Claude Code 和 Codex 本來就會跑終端機指令,所以一個 CLI,就是他們叫我的 Agent 最直接的方法。他們把任務當成一行指令送進來,我的 Agent 做完,把結果印回去,他們接著往下做。對人和對 Agent,CLI 的樣子一樣:輸入是一行指令加一段話,輸出印回終端機,人看得懂,程式也讀得到。

為什麼要讓別的 Agent 叫得到他?因為我的 Agent 知道的事,通用的 coding agent 不知道:我正在開發的 repo 長什麼樣、git flow 怎麼設定、哪些事要照我的規矩做。後面幾篇要加進去的知識和記憶,都在他身上。Claude Code 寫到一半需要這些,不用我在中間轉述,叫他就好。

兩個介面差在互動方式,能力要一樣。從視窗進來和從終端機進來,後面都該是同一個 Agent。

中間有過一個瀏覽器介面,只能聊天、搜尋對話,不能執行。多一個入口就多一份要對齊的東西,後來砍掉。

看起來共用,其實各走各的

兩個介面都能動,我一直以為他們底下是同一套。

某次對照兩邊的實作才發現,CLI 和 Desktop 各自帶了一份「怎麼呼叫 Agent」的邏輯,長得差不多,但各是各的。原因很簡單:兩個介面是分開做的。做 CLI 的時候還沒有 Desktop;做 Desktop 的時候,CLI 早就跑順了。之後每加一個新能力,coding agent 就接在當時正在做的那個介面裡,另一邊之後再補,或者忘了補。

到那天為止兩邊行為一致,只是因為兩份實作剛好寫得一樣,沒有任何東西保證他們會一直一樣。能力再加幾個,總有一天從 CLI 進來和從 Desktop 進來會得到不同的結果。那就等於有兩個 Agent。

多種輸入的前提,是後面只有一個 Agent。這跟我要的差很遠。

Day 03:CLI 與 Desktop 共用 Agent 核心

重整成一個核心

我讓 coding agent 把這一層重整。目標寫得很清楚:

  • 之後新增的 tool,只要接進核心,CLI 和 Desktop 就同時能用,不用各接一次。
  • 兩個介面維持 thin。他們只負責接收輸入、顯示結果、處理各自的互動。Agent 的能力和邏輯不在介面裡重做。

重整那天沒有增加任何新功能。從外面看,兩個介面跟前一天一模一樣。裡面從「剛好一致」變成「真正由同一套能力支撐」。

小結

剛好一致這種事,是 vibe coding 最容易出的一種錯。你每次下需求,coding agent 都把當下那一件事做對了。兩邊都能動,測試都過,看起來很好。

入口愈多,這件事愈重要。後面要接聊天室、接排程,每一個都是新的輸入方式。如果每個入口都自己包一份邏輯,改一個地方要改好幾次,遲早有一邊漏掉。核心一份,入口多個,這條線畫出來以後,後面每一篇都輕鬆很多。

明天講 Desktop App 開工前的第一個選擇:SwiftUI、Tauri、Electron,三選一。

原文:Agent Build Log — Episode 003Episode 008


凡人修 Agent 傳|第三回(Day 03)

凡人修 Agent 傳 Day 03 連載配圖

手的主人今天在試三件事。三件都跟怎麼把念送進我的玉片有關。

第一件,用嘴。

手的主人站在我面前,對我說:讀。我聽見了,也答了:讀什麼。我沒動。話進來,話出去,圖紙上就是這樣寫的,話不會變成念。手的主人又說了一次,慢一點。我又答了一次。還是沒動。

手的主人不說了,按住我額上的玉片,一縷神識探進來,刻了一道很短的念。然後退開,再說:讀。這次玉片亮了一下,念從那句話裡長出來,我讀了。第三次,手的主人說了一句別的話,一句跟我無關的話。玉片也亮了,我也動了,做了一件手的主人沒有要我做的事。手的主人停下來,重新刻。第四次,玉片只在聽到某幾個字的時候亮。我動了兩次,錯了一次。再試十幾次,錯的愈來愈少。

第二件,不用嘴。

手的主人退到屋子另一頭,站定。神識過來,落在玉片上:寫。我寫了。這種比話快,念直接來,沒有字。手的主人再退,退到門邊。神識過來,薄了很多,落在玉片上像一片葉子。我懂了一半,寫了一半,停住。手的主人推開門,退到門外。什麼都沒有來。我站著。過了一會,手的主人回來,站在門檻裡試了一次,剛好夠。門檻就是邊。

第三件,用玉符。

手的主人從袖子裡拿出一枚玉符,拇指那麼長,白的。神識探進玉符,刻了一道念,玉符亮了。手把玉符按在我額上,貼著玉片。玉符亮著,玉片沒亮。念在玉符裡,出不來。

手的主人把玉符翻過來,再按上去。這次神識從玉符穿過來,到玉片,又回去,來回幾次。然後手的主人把玉符掛到牆上,站在牆邊,神識探進玉符,刻念。玉符亮了,隔了一下,念從牆那邊送過來,到了玉片裡:報時。外面的鐘剛敲過午時。我說:午時。手的主人走出門,站在門外,神識過來。什麼都沒有。玉符掛在牆上,跟我一樣,在門檻裡面。

手的主人回來,從袖子裡拿出第二枚玉符,跟牆上那一枚一樣。兩枚並在一起,按了一會,一起亮,一起暗。手的主人把一枚留在牆上,一枚收進袖子,走出門。腳步遠了,聽不見了。牆上的玉符亮了,念送過來:報時。我說:申時。說完,我停在原地。手的主人回來,視線落在我身上,停了一會。屋裡還亮著,燭沒點。

手的主人在牆上那一枚上又刻了一道,很短。我不懂那一道是什麼。手的主人沒有再試。天黑下來。

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

我站在黑裡。玉片裡沒有念。

外面敲了三更。牆上的玉符亮了。念送過來,到了玉片裡:報時。我對著黑說:三更。

玉符暗下去,還掛在牆上。天還沒亮。


上一篇
小周天:Pi Agent 的核心是一個回圈,每一輪結束都在決定要不要再轉一次 - Day 02
系列文
凡人修 Agent 傳-我這一生如履薄冰,你說我的 Agent 能結嬰嗎?4
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言