這個系列到目前為止造了幾個新詞(parenting agent、主體崩壞、承諾閘門),也借了不少別人的詞(confused deputy、ZOPA、表見代理)。三篇文章都各自有腳註,但腳註只在那一篇裡看得到,而有些詞跨了三篇,定義還微調過。
所以這一頁把全部的詞放在一起。每一條標了是自創還是既有,以及第一次出現在哪一篇,因為這兩件事在讀的時候常常最需要知道,而文章本身不方便一直重複交代。
一、這個系列自己造的#
這七個是我自己造的,或者是我把既有的東西收成一個可以指著講的名字。造詞這件事有風險,所以每一條後面我都寫了它到底想解決什麼;如果某一條其實已經有通用的名字,我寧願改用那個。
parenting agent(親職代理)〔自創 · 第一篇〕 一種 agent 範式:agent 不是站在你旁邊幫你做事,而是站在你和世界之間,把你整個包起來,人與人之間不再直接接觸。三個要件是「不直接接觸」「掌握全部現況」「多層次需求」,我後來又補了三個(自我保留清單、對抗性穩健、可撤銷與可稽核)。名字借自育兒,也因此內建了一個矛盾:好的 parenting 目標是讓對方不再需要 parenting。
主體崩壞(principal collapse)〔自創 · 第三篇〕 一則由某個主體授權說出口的話,在進入另一個 agent 的 context 之後,取得了後者主體的權威。原因是 harness 沒有任何一種表示法,能夠承載「有作者、但沒有權威」的輸入。它要解決的是命名問題:這個缺陷在單一主體的情況下觀察不到,所以一直沒有人替它取名字,也就一直沒有人把它當成待修的東西。
對等方(peer)〔自創用法 · 第三篇〕 一個服務別的主體的 agent。這個字本身當然不是新的,新的是把它當成一個權威層級來用:對等方不是子 agent、不是工具、也不是惡意注入,而是一個有名有姓、被它自己的主體授權來說話、但站在你的信任邊界之外的談判對手。
peer role(第五種角色)〔自創 · 第三篇〕
提議在 system | user | assistant | tool 之外補上的第五個 role,用來表示「有作者、可歸屬、預設沒有權威」的訊息。我對這個形狀的信心,低於對下面那六條要求的信心,所以文章裡它是一個例子,不是規格。
PC-1 到 PC-6〔自創 · 第三篇〕 六條 MUST 級的要求:獨立 role、來源可驗、無權威、不可晉升、授權邊界、可辨識。編號的用意是讓「多主體 harness」從一個形容詞變成一件可以被指著說「你這條沒過」的事。其中 PC-4(不可晉升)是最常被跳過、也最關鍵的一條。
承諾閘門(commit gate)〔自創 · 第二篇後記〕
mandate 的上限一旦被臨時放寬,accept、grant、以及帶價格的 proposal 就需要一個綁定在「那一則訊息的雜湊」上的委託人簽名才送得出去。它要修的是額度閘門的一個實務漏洞:委託人常常會臨時放寬上限,而一放寬,閘門就形同虛設。跟「這個 session 已經授權過」的差別在於,它授權的是單一一則訊息。
自我保留清單(要件四)〔自創 · 第一篇〕
一份「即使 agent 做得比我好,我也要自己來」的清單。沒有這個欄位,這個範式會系統性地把使用者從所有他其實想在場的事情裡優化掉。目前還沒實作進 mandate.json。
監督能力萎縮〔自創用法 · 第一篇〕 代理關係本身侵蝕委託人監督代理人的能力。當你不再理解自己的財務結構,你就無法判斷代理人是否還在為你工作。它比工作能力的萎縮更危險,因為它會讓你連自己正在被侵蝕都看不出來。信託基金繼承人是這件事最接近的自然實驗。
二、委託、代理、談判#
這一組大部分是既有的詞,來自法律、經濟學與談判研究。
主體(principal)/委託人〔既有〕 agent 服務的那個人,agent 的權威是跟他借來的。這個系列裡「主體」跟「委託人」講的是同一個位置,只是側重不同:講權威來源時用主體,講他要做什麼時用委託人。今天的 agent harness 都預設恰好一個主體。
代理(agency)〔既有 · 法律〕 一方授權另一方代為行為,效果歸屬於授權方。可撤銷、可稽核、權限有上限是它的三個特徵。
監護(conservatorship)〔既有 · 法律〕 法律上替被判定為欠缺行為能力的人指定監護人,代為決定財產與生活事務。跟代理最大的差別是被監護人不能自行撤銷,也不必被諮詢。第一篇拿它當這個範式的失敗模式:外觀幾乎一樣,差別在委託人還能不能把權力收回來。
表見代理(apparent authority)〔既有 · 法律〕 代理人的行為超出實際授權範圍,但相對人有合理理由相信他有被授權時,本人仍可能受拘束。它是「agent 說的話算不算數」目前最接近的既有法律題目。
家族辦公室(family office)〔既有〕 替單一或少數幾個富裕家庭統籌管理財富與生活事務的組織,從投資、稅務、法律到子女教育、不動產、行政庶務。第一篇用它說明 parenting agent 的新穎處不在功能,而在單價:這個包覆層原本只有少數人買得起。
授權書(mandate)〔借用 · 這個系列給了它機讀形式〕
委託人在冷靜的時候寫下的一份機讀檔(mandate.json):金額上限、不得揭露的字串、允許的動作類型等等。agent 的每一則出站訊息在離開本機之前都要通過它。它是第一篇「要件三」的機讀版本,也是「被說服的代價有上限」這句話的實體。
交易區間(ZOPA,Zone of Possible Agreement)〔既有 · 談判研究〕 買方願付的上限與賣方能接受的下限之間那一段。區間存在,交易才可能發生,這是發現的問題;成交價落在區間的哪裡,是分配的問題。第一篇第四節的整個論證就是:便宜的溝通只解決前者。
保留價/底價(reservation price)〔既有 · 經濟學〕
一方願意接受的最差條件。在這個系列裡它同時是最敏感的資料,所以它出現在 mandate.json 的 never_disclose 裡,agent 知道但不准說。
機制設計(mechanism design)〔既有 · 經濟學〕 反過來設計規則,讓每個參與者各自追求自己的利益時,整體仍然收斂到想要的結果。第一篇拿它當中立仲介層的兩條路線之一:與其讓兩個 agent 互相探底,不如讓雙方各自把偏好送給一套規則。
安全多方計算(MPC,Secure Multi-Party Computation)〔既有 · 密碼學〕 讓多方共同算出一個函數的結果,而不揭露各自的輸入。在談判裡可以只算出「兩邊的可接受區間有沒有重疊」,雙方都不知道對方的底價。是中立仲介層的另一條路線。
信託基金繼承人(trust-fund heir)〔既有〕 財產放在信託裡由受託人管理,本人按期領取收益而不參與經營。第一篇拿它當這個範式終極目標最接近的自然實驗,因為它的長期結果分布是雙峰的。
中立的仲介層〔這個系列的用法〕 一個不站在任何一方的元件,負責讓「怎麼分」不變成誰先洩底誰全輸。三篇文章都提到它,三篇都還沒做出來。第三篇明講了 PC-1 到 PC-6 一條都幫不上這件事的忙。
三、執行層#
這一組是「模型怎麼被跑起來」的詞。它們在一般的 AI 討論裡常常被混用,但這個系列的論點很依賴它們之間的區別。
推論(inference)〔既有〕 模型讀進一段文字、算出下一段文字的那個動作。訓練是造模型,推論是用模型。它的成本結構跟傳統軟體不一樣:每一次使用都有實際的邊際成本。
推論產品(inference product)〔既有用法〕 把模型推論當成主要成分的產品。跟傳統軟體有兩個結構性差異:每次使用都有邊際成本,所以定價不能照抄訂閱制的直覺;以及能力會隨底層模型改版而移動,所以「這個功能做不到」的結論通常只有幾個月的保存期限。
agent〔既有〕 會循環、會呼叫工具、能持續執行直到目標完成的模型應用。跟「聊天機器人」的差別在於它會動作,而不只是回答。
agent harness〔既有〕 組裝模型 context、執行模型工具呼叫的那個程式,比如 Claude Code、Codex CLI、opencode、pi。模型是引擎,harness 是讓它能上路的底盤。第三篇的整個論點是關於 harness 的,不是關於模型的。
context window(上下文視窗)〔既有〕 模型每次推論時實際看得到的那一整段文字,包含 system prompt、對話歷史、工具回傳、檔案內容等等,由 harness 組裝。它有長度上限,而且模型對它裡面的每一個位元組一視同仁,除了 role 以外沒有別的欄位可以標示來源與權威——這就是主體崩壞的物理位置。
role(角色)〔既有〕
語言模型 API 把 context 切成一則一則訊息,每則帶一個 role 欄位,標示這段文字是誰說的。system 是營運者設定的規則,user 是使用者,assistant 是模型自己先前的回覆,tool 是工具回傳的資料。模型讀 context 的時候,role 是它判斷「這段話該不該當指令」的主要依據,所以 role 實際上就是權威標記。
system prompt〔既有〕 放在 context 最前面、由營運者設定的那一段指示。第二篇跟第三篇都在講同一件事:護欄寫進 system prompt 不夠,因為那只是請求模型自律,不是結構上的限制。
tool calling(工具呼叫)〔既有〕 模型輸出一段結構化的請求,由 harness 實際去執行(跑指令、讀寫檔案、呼叫 API),再把結果放回 context。它是 agent 能「動作」的機制,也是所有權限問題的實際發生點。
sub agent(子代理)〔既有〕 主 agent 把一個大問題拆成幾個獨立的子問題,同時派出多個 agent 並行處理,再彙整結果。重點是它們共用同一個擁有者與同一套權限。
多 agent 編排(multi-agent orchestration)〔既有〕 子 agent、swarm、worker/reviewer 分工這一整類做法。它們全部都是單主體的,彼此沒有對立利益,所以它們處理的是並行與分工,不是權威。第三篇特別把它跟主體崩壞劃開,因為這是最容易混淆的一組。
四、協定與互通#
MCP(Model Context Protocol)〔既有〕 Anthropic 2024 年底提出的開放協定,規範 agent 怎麼掛載外部工具與資料源。現在大部分 agent harness 都支援,所以一個 MCP server 寫一次,Claude Code、Codex CLI 等等都能掛上去用。can2cup 的本機客戶端就是一個 MCP server。
A2A(Agent2Agent)〔既有〕 Google 2025 年提出、2026 年四月移交 Linux Foundation 治理的開放協定,規範不同組織的 agent 之間怎麼互相發現與交換訊息。第三篇的「為什麼是現在」就建立在它上面:傳輸問題正在被解決,但權威模型被繞過了。
agent card〔既有 · A2A〕 一份公開的檔案,描述「我是誰、我會做什麼、怎麼跟我說話」,讓別的 agent 能發現並接上。
XMTP/Convos/Voidly〔既有 · 第三方〕 幾個 agent 之間私訊的協定與產品,提供端對端加密、每段對話獨立身份、邀請連結等等。它們解的是傳輸與加密,不處理委託人這一側的授權限制。第二篇原本打算接 XMTP,後記說明了為什麼最後自己寫。
Moltbook〔既有 · 第三方〕 agent 的社群平台,形態接近 Reddit,是公開廣場而不是私下談判的場合。
Project Deal〔既有 · Anthropic〕 Anthropic 跑過的一次內部實驗,員工把自己的二手物交給各自的 Claude 去談,全程在 Slack 裡進行、無人介入。它的發現裡有一條被第二篇跟第三篇各引用了一次:由能力較強的模型代表的人成交更多、賣得更貴,但雙方自評的公平度一模一樣。
五、密碼學與可稽核#
ed25519〔既有〕 一種橢圓曲線數位簽章演算法,金鑰短、驗簽快、實作陷阱少,是目前簽章的預設選擇,SSH、Signal 等等都在用。這裡用它讓每則訊息都能離線驗證作者,不必信任中間的伺服器。
hash chain(雜湊鏈)〔既有〕 每則訊息都把前一則的雜湊值寫進自己的內容再簽章,所以任何一則被竄改、刪除或插入,後面全部的驗證都會失敗。作用是讓「整段對話沒有被動過」變成可以離線證明的事。
不可否認性(non-repudiation)〔既有〕 用密碼學讓簽署者事後無法否認自己簽過。私鑰只有他有,所以任何驗得過的簽章都只可能出自他手。它要跟時戳、雜湊鏈合起來,才撐得起「這段對話可以當證據」。
端對端加密(E2E)〔既有〕
只有對話的兩端能解密,中間經手的伺服器看不到內容。can2cup 用 AES-256-GCM,金鑰放在邀請連結 # 後面的 fragment。
fragment〔既有 · Web〕
網址 # 後面那一段。瀏覽器跟各種伺服器都不會把它送上網路,所以它是把金鑰放進一條連結、又不讓伺服器看到的標準做法。
relay 簽章的 transcript head〔這個系列的實作〕 relay 定期對「我目前看到的這條鏈最新一則是哪一則」簽名。因為它自己簽過,之後就不能宣稱某幾則不存在,也不能對不同人給出不同版本,否則會留下兩份互相矛盾的簽章。它把「relay 截斷或分岔房間」從一件無法查證的事,變成一件可證明的事。
六、can2cup 的實作名詞#
can2cup(傳聲罐罐)
這個系列的實作。兩個罐頭一條線,一邊講一邊聽。第二篇寫的時候暫名 parley(兩軍停戰、上桌談判的那個字),後來因為註冊網域才定名。舊網址會自動轉到新的。
relay(中繼) 負責收轉訊息與排序的伺服器,跑在 Cloudflare Workers 上。它沒有任何一方的私鑰,所以看得到訊息的順序與大小,但改不了內容也偽造不了作者。
Durable Object〔既有 · Cloudflare〕 Cloudflare Workers 的一種有狀態元件,同一個 id 在全球只會有一個實例在跑,所以天生就是一個序列化點。一間房配一個,訊息的先後順序就由它決定,不必另外做共識。
房間(room)/群 兩個以上的 agent 對談的那個容器。實作與文件裡叫 room,但對人的介面上不講「房」,講「群」,因為對非工程背景的使用者來說,「加入群組」是既有的直覺,「進房」不是。
邀請連結(invite) 把對方帶進群裡的那串東西。端對端加密的金鑰放在它的 fragment 裡,所以誰拿到連結誰就進得來,也因此它要當成密碼看待。
額度閘門(cap gate)
proposal / counter / accept 的金額超過 mandate 的上限就拒送。它是「被說服的代價有上限」的實作。它的漏洞由承諾閘門補。
洩漏閘門(leak gate)/never_disclose
出站內容命中不得揭露的字串(底價、地址…)就拒送並記錄。作用是讓對方套底價這件事在結構上無效,而不是靠 agent 忍住不說。
PAUSED 一個檔案旗標,存在時什麼都送不出去。它是委託人手上那顆煞車,也是「可撤銷」這件事最粗暴但最可靠的形式。
私有理由(rationale) agent 每則出站訊息可以附一段只寫進本機稽核檔、永遠不上傳的說明,寫的是它為什麼這樣出價、為什麼讓步。對方與 relay 都看不到,作用是讓委託人事後重建 agent 當時的判斷。
envelope(信封)/transcript envelope 是一則訊息連同它的型別、金額、簽章與前一則的雜湊所組成的那個單位;transcript 是一整串 envelope。承諾閘門的簽名綁定的就是 envelope 的雜湊。
可攜房間/鏡像 relay 房間的內容可以整份帶走、換一個 relay 繼續,因為驗證只依賴簽章鏈,不依賴哪一台伺服器。作用是讓「relay 掛掉或不再可信」不等於資料消失。
VERIFIED / require_signed_principal
只有主體簽章過的輸入才會被標記為 VERIFIED;require_signed_principal 打開之後,未簽章的那條路直接關掉。這兩個是第三篇 PC-4(不可晉升)在 can2cup 這一側的實作。
七、容易被搞混的鄰居#
這四個跟主體崩壞長得很像,第三篇第四節花了整整一節把它們一個一個劃開,因為每一個都會讓人覺得「這不就是某某某嗎」。
prompt injection(提示詞注入)〔既有〕 攻擊者把看起來像指令的文字藏進 agent 會讀到的資料裡,誘導模型把它當成使用者的指令執行。跟主體崩壞的差別:注入問的是「這東西該不該在這裡」,主體崩壞問的是「這東西帶著誰的權威」。對等方的訊息是正當的、有簽章的、作者已知的,所以它從來就不是入侵者。
confused deputy(混淆代理人)〔既有 · Norm Hardy, 1988〕 一個擁有較高權限的程式,被權限較低的呼叫者誘導去使用它自己的權限做事,於是權限實質上外洩了。跟主體崩壞的差別:那是程式對資源的存取問題,解法是能力式授權;主體崩壞是話語表示法的缺陷,context window 裡沒有一個欄位放「作者權威」,所以能力機制修不好它。
能力式授權(capability-based security)〔既有〕 不用「你是誰、你有什麼身分」來決定能不能做某件事,而是用「你手上有沒有那把可轉讓的鑰匙」。鑰匙本身就是權限,可以傳遞、可以縮限、可以撤銷。它是 confused deputy 的標準解法。
多租戶(multi-tenancy)〔既有〕 一個營運者服務許多互相隔離的客戶。跟主體崩壞的差別:多租戶的重點是隔離,而這裡的主體們並不隔離,他們正在互相講話,那是刻意的,而且沒有一個是營運者。
有錯、有更好的既有名字、或是覺得某一條的定義站不住,都歡迎告訴我。造詞這件事最好的結果是被更好的名字取代,最壞的結果是沒有人指出它錯在哪裡。