Agent 的沙盒、憑證與網路邊界
用作業系統限制實測合成檔案與網路,再獨立檢查短效、限資源的授權;程式內允許清單不是 OS 沙盒,通訊方式也不會限制程序能力。
用作業系統限制實測合成檔案與網路,再獨立檢查短效、限資源的授權;程式內允許清單不是 OS 沙盒,通訊方式也不會限制程序能力。
用獨立權限矩陣重播修補前後的真 HTTP,核對回應與稽核,再將模型評估、執行邊界與正式監控分開報告。
用一次工單匯出綁定使用者、資源、動作、目的地與批准,並測試參數替換、撤權、過期與重播。
把 AI 的建議當成待驗假說。保留實際輸入與回覆,核對目標資料和授權政策,再用正常與修補對照排除假陽性。
用同租戶與跨租戶讀取案例,把 AI 的可疑判斷改寫成能確認、推翻與保留未決的漏洞假設。
固定獨立真值,先算誤報、漏報及未判定,再量人工時間與操作風險。快速結案不會自動證明結案正確,規則重播也不能當成模型成效。
CS2680 作業 1 要你做一個網頁來驅動 Claude Code:送出任務,即時看到 agent 讀了什麼、跑了什麼、結果如何,最後顯示花了多少錢、幾秒、幾輪。關鍵是讀懂 `claude -p --output-format stream-json --verbose` 的事件串流:tool_use 和 tool_result 靠同一個 id 配對,subagent 的事件靠 parent_tool_use_id 掛回呼叫它的那一步。這篇拆解七項要求、示範用 40 行 Python 把事件串成一棵樹並分辨成功與失敗,最後整理交件、評分與開發時最容易卡住的地方。
CS2680 作業 2(Mads-Loop)要你自己寫一個 coding agent harness:用指定的小模型 qwen3.6-35b-a3b,在 Docker 容器裡修 SWE-bench Pro 的真實 issue,並照規定格式記下每一步。作業頁明說它給的設計不要照單全收,10 題裡也有解不了的題。這篇整理規格、作業頁值得懷疑的幾處、harness 最常壞的五個地方與各自的處理方式(附一段實跑過的片段),以及怎麼自建四題評估集、怎麼判斷一題是不是真的解不了。不含官方解答。
CS2680 作業 3(Mads-Opt)是一場 harness 競賽:同一批 SWE-bench Pro 題目,比誰解得多、每解一題花得少、每解一題等得短。三個指標不加權,改用 skyline(Pareto)分層排名:沒有人在三項都不比你差、還至少一項比你好,你就是第 1 名。這篇整理作業的容器架構與硬限制、排名與計分怎麼算(附手算例子),用作業頁公布的模型價格先算一題大概花多少,再把第 8 堂的成本與速度槓桿對到這份作業。不含官方解答,也不談具體解法。
Harvard CS2680 拿同一個 coding agent 當主角,從上往下拆:先用 Claude Code 看 agent 怎麼跑,再自己寫 loop、選工具、管 context,接著擴成多 agent、加上記憶、學會評估,最後把成本和延遲壓下來;下半學期再往下自己 serve 模型。這篇整理 Part I 八堂與三份作業各在學什麼,用一個手算例子說明為什麼 agent 每多走一步就更貴,最後給先備檢查與閱讀順序。
CS2680 第 1 堂(2026-09-02)先說明 AI 系統和傳統系統的差別:運算分散在 CPU 與 GPU、浮點運算不保證每次一樣、狀態大到要跨 GPU 搬。接著把 agent 比作新型電腦(LLM 是 CPU、context window 是記憶體、harness 是作業系統),指出 agent 的一個請求會變成「推論 → 工具 → 推論」的長鏈,所以每秒 token 數是錯的目標,要看任務成功率、端到端延遲與每次成功的花費。本文用兩個 agent 的帳算一次這些指標怎麼用。
CS2680 第 2 堂(2026-09-09)拆開 Claude Code:你打一句話,它會呼叫模型很多次;模型每次只「提出」要跑的工具,harness 檢查權限後才執行,再把結果放回 context,context 滿了就壓縮。後半講記憶(你寫的 CLAUDE.md 與 Claude 自己記的 auto memory)與四種擴充:skill 管怎麼做、MCP 管連到外面、hook 管一定要發生的事、plugin 管打包。本文先補一次 API 呼叫長什麼樣,再用「修好一個測試」走完整條 loop。
CS2680 第 3 堂(2026-09-14)前半講怎麼把自己放大:先用 Superpowers 與 Caveman 兩個 plugin 看 skill、hook、proxy 怎麼搭,再講三種擴充方向:平行開多個 agent 買牆鐘時間、派 subagent 買專注、讓 agent 跑很久買範圍。後半講放大之後的代價:用自然語言叫 agent 寫程式,不確定性會從語意、context、模型取樣、工具環境四層滲進來,對策是先講清楚、提案與執行分開、緊縮驗證。本文用「三個 bug 開三個 worktree」算一次平行到底省了什麼。
CS2680 第 4 堂(2026-09-16)從「用 agent」換到「設計 agent」:agent 是模型加一個 loop,你要決定給它哪些工具、每一步讓它看到什麼。工具這半講找程式碼的四種方法、改程式碼的四種方法、shell 的威力與風險,以及「少而正交、專用、輸出省 token、錯誤教得會」的設計原則。context 這半講 context 為什麼是有限資源、四種管理手段(從擋在門口到最後才摘要)、五種 context 失敗,最後用一篇論文說明:context 很緊時,同一個模型只換 harness,解題數可以多出七成到一倍以上。
CS2680 第 5 堂(2026-09-23)講多 agent 系統怎麼設計。拆成多個 agent 有四個理由:專長、隔離、平行、context 管理;每種架構都可以用三個問題描述:誰指揮、工作怎麼切、訊息怎麼傳。課堂列了八種架構,再講任務切分的六種方法、一條判斷拆不拆的粒度公式、六種常見的切分失敗,以及通訊為什麼其實是分散式系統問題:訊息會遺失、重送,兩個 agent 會同時改同一份東西。最後對照 A2A 與 MCP 的分工,並以「真的需要多 agent 嗎?」作為第一條設計原則。
CS2680 第 6 堂(2026-09-28)前半講 agent 的記憶:把一件事留下來,要依序決定寫不寫、存成什麼樣子、存在哪裡、什麼時候取回、要不要歸納成通則、還算不算數,另外還有記憶歸誰管。過期的事實不要直接刪,要記下它什麼時候成立、從哪裡來。後半講可靠度:每步 95% 成功,20 步全對只剩約 36%;失敗可以歸到任務規格、harness、模型、工具、環境五層,每層各有修法。兩半的接點是一個 harness 層的失敗:把過期的筆記當成事實。
CS2680 第 7 堂(2026-09-30)講怎麼量一個 agent 好不好。先分清楚量的是零件還是整條任務,以及「成功」指的是答對、做出能跑的程式,還是把環境改到對的狀態。指標方面,pass@k 問試 k 次有沒有一次成功,pass^k 問 k 次是不是全部成功;同一組試驗結果,兩者可以差到 0.9 和 0.3。接著看八個代表 benchmark 各量什麼,再看分數什麼時候不可信:解答可能在訓練資料裡、可能被 agent 上網查到、可能藏在環境的 git 歷史裡,評分器本身也可能被鑽漏洞。
CS2680 第 8 堂(2026-10-07)分兩半。前半拆 agent 的帳單:成本是一條乘式,使用者數 × 每人 session 數 × 每個 session 的 turn 數 × 每個 turn 的 step 數 × 每個 step 的 token 數 × 每個 token 的價格,後四項是你能砍的。學生自己的 Claude Code 紀錄顯示,97.6% 的 token 是命中快取的重讀,所以「prefix 要穩定」比「prompt 要短」更重要。速度看的是關鍵路徑,不是每一步加總。後半比較三種 harness 架構(單體、模組化、微核心)與八個開源或商用 harness 的設計取向。本文用一張手算帳單示範:把時間戳放進 system prompt 開頭,同一個任務的帳單會從 23.6 單位變回 65 單位以上。
1M 模型的 auto-compact 預設要到約 967K tokens 才觸發,後段每則訊息都帶著近一百萬 tokens 的歷史。我照 Lydia Hallie 的建議設 /autocompact 400k 用了 11 天,額度省下約 16–22%,也沒看到模型因摘要掉細節而返工或被糾正的次數明顯增加。這是單人、單一任務類型的觀察,不是普遍結論。
Mac 沒有 NVIDIA 卡跑不了 vLLM,Colab 免費 T4(compute capability 7.5,剛好達 vLLM 最低門檻)可以。用 vllm serve 把 0.6B 的 Qwen3 開成 OpenAI 相容 API,再同時打 8 個請求、看 /metrics,就能親眼看到 continuous batching。