~/blog/hermes-project-three-sibs-tetris

從 0 開始的 AI Agent 生活 · part 16

[Agent 進階 #16] 同一份規格,丟給三隻分身各寫一個俄羅斯方塊:Hermes 看板派工實測

cat --toc

TL;DR

養了一群分身(Part 10)、又能在手機上盯它們做事(Part 15)之後,我心血來潮做了個小實驗:同一份「做個俄羅斯方塊」的規格——就一句話、細節啥都沒講——一隻分身發一張卡,讓三隻各自寫一份。我一行遊戲碼都沒碰,只負責最後發布。結果蹦出個意外驚喜:靠 Hermes 這套外框,加一顆我自己在家調、跑在六年老顯卡(改裝 2080Ti)上的小模型,居然一次就把我沒要求的 ghost、wall-kick 都補上了。不是「贏」(快那幾秒在誤差內、也沒比品質),但這種組合能打成這樣,本身就夠有意思。成品點開就能玩

白話導讀:養了一群分身,乾脆讓它們同場比一次

前面幾篇,你已經把 Hermes 養起來、還分了好幾隻分身(同一套 Hermes 分出來的多隻助理,Part 10 講過),各有各的腦、各忙各的;Part 15 又讓你出門也能在手機上看它們在幹嘛。

養著養著,我就冒出一個有點皮的念頭:

如果我把同一件事同時丟給它們三隻,各做一份,會長什麼樣?

於是有了這篇。而且我故意「偷懶」——規格只給一句話:「做一個能玩的網頁俄羅斯方塊,放在單一個 HTML 檔裡」。計分、ghost、wall-kick 這些細節?一個字都沒提。就這麼一句話,丟給三隻腦完全不同的分身,看它們各自會自己補出什麼。

一個人坐在左邊,把同一張任務卡片同時遞給三隻不同顏色的小機器人,每隻機器人各自坐在自己的小桌子前,螢幕上是彩色的俄羅斯方塊

成品我已經發出來了,三個分頁、每個都標了是哪顆模型做的、花了多久:

👉 web-tetris-showcase.vercel.app(原始碼丟在 GitHub)

怎麼丟的:一句話規格,三張卡,各自關在自己的房間

這就是 Hermes 看板派工最典型的用法,流程其實很單純:

  1. 把那句話寫成一張卡,指定給一隻分身;同一張卡複製三份,一隻發一張。
  2. 每張卡會自己拿到一個獨立的資料夾(技術名詞叫 git worktree,你只要知道「三隻各寫各的、不會互相蓋到檔案」就夠了)。
  3. 按下去派工,然後就放著。它們做完,各自把結果回報到板上;我有空再回來看。
  4. 我還設了「失敗一次就停、不重試」,免得某隻卡死在那邊無限重來,把時間跟錢都燒光。

這次出場的三隻,腦各不相同:

  • 小唯(預設)= GPT-5.5:雲端的強模型,當基準線。
  • 雛羽(hina)= Qwen3.6-27B:我自己在家架起來、調過部署的 abliterated 版本,跑在那張改裝 2080Ti 22G 上(這張卡的故事在這篇)。
  • 光羽(hikari)= DeepSeek V4 Flash:透過 ds4 引擎、跑在自己的 DGX Spark 上的地端推理腦。

這裡有個小細節值得停一下,而且是 Hermes 故意這樣設計的:分身在它自己的小沙箱裡,是碰不到 GitHub 金鑰的——Hermes 會主動把這類密鑰從它的環境裡拔掉。所以分身只負責寫程式,最後上傳 GitHub、部署到 Vercel,是由我這個握著金鑰的主程序動手。金鑰從頭到尾不進沙箱。換句話說「動手做的」跟「負責發布的」是兩個人——這不是龜毛,是金鑰本來就不該交到一隻自動亂跑的 agent 手上。

三隻各交了什麼

小唯 / GPT-5.5 — 乾乾淨淨的基本款

showcase 首頁的 GPT-5.5 分頁:上方是三個模型分頁、各標了耗時,下方是 GPT-5.5 寫的俄羅斯方塊,有計分板跟下一個方塊的預覽

大概 190 秒、589 行。該有的都有:落子、旋轉、計分、下一顆預覽。穩,沒花樣,當基準線剛剛好。

雛羽 / Qwen3.6-27B(跑在改裝 2080Ti 上)— 意外的驚喜

三隻小機器人在炫耀自己做的俄羅斯方塊,最小那隻坐在一台老舊的桌機前(桌上還擺著一張老顯卡),畫面卻意外地精緻,旁邊兩隻看了又驚又喜

大概 186 秒。別忘了我那句話什麼細節都沒講——結果它自己加了 ghost piece(半透明的落點預覽)跟 wall-kick(貼著牆轉會自動推開)。這兩個是讓現代俄羅斯方塊「手感」對的小地方,沒人叫它做。

老實說,讓我意外的不是它快——186 對 190 秒,這點差距根本在誤差裡,談不上「贏」。讓我意外的是這個「組合」:一句話的規格 + Hermes 這套外框幫它把任務框好 + 一顆我自己在家調、跑在六年老卡上的小模型,合起來居然能一次就把這些沒被要求的細節補出來。功勞不在模型一個人身上,是整套東西跑出了超過我預期的成績。

showcase 的 Qwen3.6-27B 分頁:盤面堆了好幾種顏色的方塊、分數 100,還看得到一個半透明的落點預覽(ghost piece)

光羽 / DeepSeek V4 Flash — 自己開瀏覽器驗過

showcase 的 DeepSeek V4 Flash 分頁:有格線的盤面、堆了好幾色方塊,右側是計分板

大概 685 秒,最久的一隻。但它在那一輪裡自己開了一個沒畫面的瀏覽器(headless Chrome),把遊戲跑起來測過——這正好帶到下一段:所謂「一次到位」其實要分兩層看。

三隻擺一起看

分身花多久特別之處
小唯 defaultGPT-5.5(雲端)~190 秒乾淨基本款,589 行
雛羽 hinaQwen3.6-27B(地端 / 改裝 2080Ti)~186 秒自己多補了 ghost + wall-kick
光羽 hikariDeepSeek V4 Flash(DGX Spark)~685 秒自己開了沒畫面的瀏覽器驗過

老實說,這算「一次到位」嗎?分兩層

「一次到位(one-shot)」這個詞很容易講過頭,我拆開講:

  • 派工這層,算一次到位:一隻一張卡、只跑一次、失敗就停不重試、沒有人回頭叫它改,我也一行遊戲碼沒動,只是把檔案搬進 showcase。
  • 但分身內部不是純一次:每張卡其實是一個 agent 自己跑一輪——會自己寫、自己看、自己修。光羽那隻甚至自己開了瀏覽器把遊戲跑起來測。所以它不是「模型吐一次就定生死」那種純粹的單次輸出。

兩層都講清楚,才不會把這件事說得比實際更神。

為什麼這個小實驗值得玩

它不是要證明「地端小模型贏雲端」——沒有,前面講過了。真正讓我覺得有價值的是兩件事:

  1. 派工這套真的能「丟著不管」。 一句話規格、三顆不一樣的腦、三個各自獨立的資料夾,丟出去我就去忙別的,回來收三份成果。我全程的注意力只花在「寫那句規格」跟「最後發布」,中間完全沒在盯。這就是看板派工想要的:對人來說,顧多少隻都差不多累。
  2. 這成績是「外框 + 特化模型」合力跑出來的,不是模型單打。 我只丟一句話、細節都沒給,是 Hermes 的外框幫忙把任務框好,加上一顆為地端特化調過的小模型,兩邊湊起來,才在一張六年老卡上一次補出這些。它不會每次都這樣,但這種組合「偶爾給你超出預期的東西」,就足以讓「家裡那台到底能幹嘛」的答案,再往前挪一點。

自己玩玩看

三個版本都在這,點分頁切換,標籤上有各自是哪顆模型、花了多久:

👉 web-tetris-showcase.vercel.app

原始碼(三個單檔 + 一頁 showcase)在 github.com/coolthor/ai-tetris-showcase


這篇是「養了一群分身之後,拿它們來做點事」的延伸。前置篇:

常見問題

「一份規格丟給三隻分身」到底怎麼丟?
用 Hermes 內建的看板(Kanban)。你把要做的事寫成一張卡片、指定給某一隻分身;同樣的卡複製三張,一隻一張。每張卡會自己拿到一個獨立的資料夾(技術上叫 git worktree),三隻各寫各的、檔案不會打架。丟出去之後你就去忙別的,它們做完會回報到板上,你再回來看。
這算「一次到位(one-shot)」嗎?
看你問哪一層。派工這層算:一隻一張卡、只跑一次、沒有人回頭叫它改、我也一行遊戲碼沒動。但每張卡其實是一個 agent 自己跑一輪——它會自己寫、自己看、自己修,其中 DeepSeek V4 Flash 那隻還自己開了一個沒畫面的瀏覽器把遊戲跑起來測。所以它不是「模型吐一次就算數」那種純 one-shot。
地端小模型真的「贏」雲端模型了嗎?
沒有,別這樣講。186 秒對 190 秒落在誤差範圍內,而且我根本沒比三個遊戲的品質。正確的說法是:我只丟了一句話(就「做個俄羅斯方塊」、沒講細節),是 Hermes 的外框加上一顆為地端特化調過的小模型,兩邊合起來,才一次就把沒人要求的細節(ghost、wall-kick)補了出來。這是意料外的驚喜,功勞在整套組合,不是哪顆模型打趴了誰。