AI Engineer Europe 2026 · 演講 · 2026-04-17 · 46 分
人掌舵、agent 動手的工程做法
Harness Engineering: How to Build Software When Humans Steer, Agents Execute · Ryan Lopopolo,OpenAI
Ryan Lopopolo 說團隊禁止自己碰編輯器,全靠 agent 寫程式,並講怎麼把規範寫進 repo、lint 與 review agent,再於 Q&A 補上日常工作流程。
概要
- 程式碼不再是稀缺資源Ryan 認為模型已經能做完軟體工程師的整份工作,稀缺的變成人的時間、人與模型的注意力,以及模型的 context window。工程師的角色轉向系統設計與委派。
- 把好壞標準寫下來一份 patch 背後有很多沒寫明的非功能需求。Ryan 要團隊把這些標準寫成文件,讓每個 agent 都吃得到團隊裡每個人的專長,不必等人工 code review 才學到。
- 規範靠 lint、測試與 review agent 送到 agent 面前Ryan 舉的例子有針對網路呼叫補 retry 與 timeout 的客製 lint,以及限制檔案不超過 350 行的測試。錯誤訊息要直接告訴模型下一步怎麼改。
- 每週一天清理 slop團隊每人每週五拿一天,把這週看到的壞習慣歸類,變成文件、測試或 review agent,讓問題不再出現。
- 程式碼結構要讓 token 好預測他們的 repo 有 750 個 PNPM workspace package,並刻意讓同一件事只有一種做法,agent 看到哪裡都學得到同樣的脈絡。
- 目標是不用人去按「continue」Ryan 說每次得對 agent 打 continue 都是 harness 的失敗,想要的是 50 個 agent 全天候自己跑。
原話
▶ 06:54“The important thing is not the code, but the prompt and the guardrails that got you there.”
重要的不是程式碼,而是產出它的 prompt 與護欄
▶ 09:30“You can just simply say, do not produce slop. Don't accept slop, you won't get slop in your code base.”
直接說別產出 slop;不收 slop,程式碼庫裡就不會有
▶ 15:35“Rules files, prompts. Skills, prompts. These lint error messages that I'm talking about, prompts.”
規則檔是 prompt,skills 是 prompt,我說的這些 lint 錯誤訊息也是 prompt
▶ 24:27“Context is a thing that I don't think will ever be obsoleted, right?”
我不認為 context 會有被淘汰的一天
▶ 33:30“Every time I have to type continue to the agent is like a failure of the harness to provide enough context around what it means to continue to completion.”
每次得對 agent 打 continue,都是 harness 沒把「做到完成」的脈絡給足
延伸
- Ryan 不要求實作的 agent 處理每一條 review 意見,因為那會讓 coding agent 被 reviewer「霸凌」;他們偏向讓程式碼被接受,而不是追求完美。
- 他們的 skills 只集中在五到十個,寧可把現有的做好;底層從直接用 Chrome DevTools protocol 換成 daemon,Ryan 過了三週才發現,因為 Codex 靠文件自己搞定了。
章節
點時碼直接跳到原片的那一段。
- 開場:token billionaireRyan 說自己九個月來完全用 agent 寫軟體,還禁止團隊成員碰編輯器,要大家都靠模型把整份工作做完。
- 程式碼是免費的實作不再稀缺,產能只受 GPU 與 token 預算限制;Ryan 說轉折在 2025 年底,GPT-5.2 是自己的關鍵時刻。
- 三種稀缺資源人的時間、人與模型的注意力、context window 才是稀缺的;程式碼免費後,優先序低的 P3 工作也能同時開跑。
- 讓 agent 看得懂重要的是 prompt 與護欄,所以文件、ADR、歷史紀錄都要寫給 agent 看,並讓程式碼風格盡量一致。
- 寫下非功能需求做好一個 patch 要做上百個隱含決定,這些標準必須明確寫出來;不收 slop,短期會變慢但之後更快。
- 團隊專長寫成文件前端、後端、產品各有專長,寫下來後每個 agent 都能用,例如一位工程師寫好 QA 計畫標準,全隊受惠。
- review agent 與客製 lintcontext 會被換出去,要持續補回;CI 每次 push 都跑安全與可靠性 review agent,並用客製 lint 確保 fetch 有 retry 與 timeout。
- 一切都是 prompt找出反覆出現的失敗類型,用測試與帶修復指引的錯誤訊息消滅;lint、rules、skills 都是 prompt,連寫 prompt 的 skill 都交給 Codex 生。
- QA 計畫的效果QA 計畫規定 PR 要附哪些證明,讓 Ryan 更信任成果、不必緊盯 agent,進一步把自己從迴圈裡移開。
- Q&A:日常工作流程從 ticket 出發,交給 Codex 並附上能啟動 app、本地觀測與 Chrome DevTools 的 skill,再用自訂 ESLint 與結構測試把關。
- Q&A:避免過度設計 harnessRyan 拿 bitter lesson 當標準,只做最少量的 context 管理,在對的時間把指令交給模型,不要一開始全塞。
- Q&A:用原廠 harnessRyan 的看法是各家實驗室連同 harness 一起後訓練模型,所以直接接 SDK 或 Codex app server 比自己重做合理。
- Q&A:協作平台協作主要靠 repo 裡的 markdown 與 GitHub;PR 是人和 agent 共用的場域,實作的 agent 可以接受、延後或拒絕意見。
- Q&A:怎麼開始先讓 agent 補測試、提高對程式碼的信心,再看自己的時間花在哪,逐步把那些部分自動化。
- Q&A:車上跑 agent下班前啟動任務、把筆電接手機熱點放後座跑;Ryan 想要 50 個 agent 全天候自己跑,每次打 continue 就是 harness 沒做好。
- Q&A:擴大規模的架構專案從單一 package 變亂,後來拆成 750 個 PNPM package,並讓每件事只有一種做法,再用 agent 把整個 codebase 遷移成一致。
- Q&A:code review 與清理日每人一天三到五個 PR 讓衝突很痛,於是每週五設清理日,把人工 review 的意見轉成文件、測試與依角色分工的 review agent。
- Q&A:token 用在哪、plan modeRyan 估計 token 約三分之一文件、三分之一實作、三分之一 CI;不用 plan mode,若要用建議把計畫單獨開 PR 讓人逐行審。
- Q&A:程式碼是編譯產物Ryan 把 LLM 比成模糊的編譯器,harness 的 context 就像編譯器的限制與最佳化步驟,換模型像換程式碼生成後端。
- Q&A:想建的未來Ryan 想拿一份 token 預算與排好優先序的目標交給機器持續推進;除了寫程式,分流使用者回饋、runbook 等工作也要寫成流程。
名詞
- harness engineering
- 這場的主題,指替 agent 設計環境、文件、lint、測試與 review,讓它能獨立做完整份工作
- token billionaire
- Ryan 的自稱,指大量消耗 token 讓模型做完整份工作;主持人介紹時說一天用掉超過十億個輸出 token
- Codex
- OpenAI 的 coding agent,Ryan 團隊把它當開發流程的入口
- ADR
- 架構決策紀錄,Ryan 列為該留給 agent 讀的文件之一
- AGENTS.md
- 放在 repo 裡給 agent 的說明檔,Ryan 提到它是提醒 agent 的方法之一
- exec plans
- 他們早期公開的一種計畫格式,要求含里程碑與驗收條件
- Symphony
- 他們釋出的 agent orchestrator,Ryan 用它帶出「程式碼是編譯產物」的想法
- 清理日(garbage collection day)
- 每週五全隊把本週看到的 slop 歸類,並設法徹底消除的做法
- PNPM workspace
- 他們把 repo 拆成 750 個 package 的方式,用來隔離業務領域或架構層
- bitter lesson
- Ryan 用來判斷自己做的工具會不會被模型進步淘汰的參考








