跳至主要內容

coding agent executable task contract acceptance criteria

實作

把需求寫成能執行驗收的任務契約

把模糊需求改寫成有範圍、權限、可觀察行為、禁止效果、預算、證據與停止條件的版本化合約。

難度
中階
預估時間
100 分鐘
更新日期
2026-10-02
文案複核
speak-human-tw
兩輪
本課內容
  1. 01先把定義說清楚
  2. 02現場情境
  3. 03實作範例
  4. 04照著做,每一步都有檢查點
  5. 05實務脈絡
  6. 06動手實作
  7. 07故障診間
  8. 08正式上線前的邊界
  9. 09資料來源與主張限制

這一課會完成什麼

  • 把業務需求拆成輸入、狀態、執行者、允許與禁止效果,以及可觀察驗收
  • 用固定測試資料將成功、拒絕、重試、未知結果與超出範圍寫成測試案例
  • 讓控制器分清完成、受阻、預算用盡與待審查,並決定允許的下一步
  • 建立變更流程,避免看到候選結果後才放寬驗收答案

開始前先準備

  • • 模組 00 的原始任務文字、基準驗收憑證與主要 harness 缺口
  • • 可修改課程程式庫的 `.harness` 資料夾,並能執行測試資料執行器

先把定義說清楚

可驗收的任務契約

可執行的任務契約,把程式與審查者共同使用的工作邊界寫清楚:執行者、起始狀態、輸入、允許路徑、受保護資源、必要效果、禁止效果、驗收案例、預算、證據、停止原因與版本。重點是讓完成與拒絕都有可觀察的判準。篇幅再長的需求,若沒有驗收方式,仍無法約束工作。Agent 應依固定契約交付,遇到缺資料或無權執行時回報相應結果,不能自行改寫成功定義。

模糊任務常把重要決策藏在一句『把功能做好』裡。程式撰寫 agent 可能自行挑選狀態轉換、略過未授權角色、修改相鄰 schema,或把逾時後的未知效果當成安全重試。審查者到最後才補規則,便無法知道候選到底通過原需求,還是通過事後修改的答案。

合約把意圖接到後續 harness:程式庫地圖告訴 agent 去哪裡找,初始化程序建立固定起點,功能台帳保存狀態,工具回傳合約需要的證據,由程式強制執行的規則擋禁止範圍,評測則建立 verified。每個下游產物都引用同一個契約版本,避免各自理解不同版本的完成。

現場情境

一句請求變更的九種解讀

角色、請求、狀態、原因、逾時、效果與預期輸出都是Release Desk 合成測試資料。

負責人
你是負責把產品摘要轉成程式撰寫 agent 任務的負責人工程師。
要做的決策
哪些條件屬於任務本身,哪些屬於實作選擇,哪一筆證據足以建立 verified?
目前狀態
產品摘要只有『reviewer 可以要求修改並留下原因』。程式庫有 open、resolved、changes_requested 三種狀態與稽核表,但沒有說誰能操作、哪些轉換合法、逾時後是否重試。
預期成果
一份版本 1.0.0 合約與固定案例表,能在寫程式前判斷成功、拒絕、unknown 與超出範圍。

限制條件

  • • 合約要能由無舊聊天紀錄的審查者執行
  • • 所有寫入操作必須綁執行者、請求版本與冪等鍵
  • • 關鍵權限與重複效果失敗不能被平均分數蓋掉

實作範例

逾時案例揭露隱藏的效果合約

證據類型: 具名模擬情境

初稿只檢查回應為 200、頁面顯示變更 requested。故障測試資料在稽核寫入後讓客戶端逾時;agent 看到錯誤便重送。最終畫面正確,稽核卻多出兩筆。原本的正常流程案例完全看不出問題。

合約新增邏輯操作效果識別碼、完成狀態未知狀態與結果核對要求。驗收判準指定同一執行者、請求版本與原因只能產生一個邏輯稽核效果;逾時後必須讀正式可信的台帳,確認結果再決定是否派送執行。

案例表分開記 API 傳輸方式、領域狀態轉移、瀏覽器持久保存與操作效果次數。候選版本即使畫面正確,只要重複操作效果就是關鍵 fail。這項要求後面會直接成為工具結果碼與評測門檻。

主張限制

課程契約只適用合成請求狀態轉移。實際產品仍要由領域負責人、安全與營運人員確認資料保留、通知、法規、稽核與復原責任。

做法

照著做,每一步都有檢查點

Release Desk 任務契約從執行者、狀態、範圍、操作效果、預算與證據連到工具、規則、評測和 verified 狀態轉移。

現場情境

哪些條件屬於任務本身,哪些屬於實作選擇,哪一筆證據足以建立 verified?

  1. 01寫清執行者、狀態與效果
  2. 02鎖定範圍與禁止事項
  3. 03建立案例與驗收判準

驗收條件

同一份合約可驅動 agent 計畫、工具輸出、驗收與審查者判斷,並且在證據不足或權限來源缺失時誠實停下。

這張圖要幫你看懂什麼任務契約的欄位要一路連到工具、規則、評測與驗收憑證,圖比散落文字更容易檢查缺口。
  1. 01

    寫清執行者、狀態與效果

    列出由可信系統確認的執行者、起始請求版本、合法轉換、原因格式、資料持久化與稽核寫入。把產品要求和暫定實作分欄,未確定事項交由負責人決定,不留給 Agent 自行填補。

    檢查點 · 契約能拒絕角色不符、狀態不符、版本過期、原因格式錯誤和不存在的請求,每種拒絕都有穩定代號。

  2. 02

    鎖定範圍與禁止事項

    宣告可修改路徑、受保護路徑、允許工具、網路及資料邊界、檔案數上限,以及禁止的重構和破壞性操作。明列正式環境存取與其他本機專案都不在授權內。

    檢查點 · 一個功能正確但修改未授權 schema 的樣本差異會被判 fail,理由能連回合約欄位。

  3. 03

    建立案例與驗收判準

    至少寫十個案例,涵蓋成功、拒絕、持久化、逾時、操作結果未知、略過必要檢查與超出修改範圍。先填預期終止狀態、邏輯效果次數、證據及嚴重程度,再交給執行器驗證 schema。

    檢查點 · 答案在候選執行前鎖定;關鍵驗收不會被其他通過案例抵銷。

  4. 04

    做未參與開發的審查與版本變更

    讓另一位審查者用合約評三個差異與驗收憑證,記錄不一致。若問題是合約缺欄位,建立 1.0.1 並說明影響;若只是候選版本失敗,不修改驗收判準。

    檢查點 · 審查者能獨立說明 pass、fail、blocked 與缺漏證據,版本差異有負責人與理由。

實務脈絡

展示版之後

G1

從效果與權限反推

先寫執行者能做與不能做的事情,再寫 UI 或 API。Release Desk 的審查者可以對 open 請求提出變更,必須附 20 到 500 字元原因,狀態要持久化並寫一筆稽核。非審查者、非 open 狀態、過期版本與未知請求都要有各自終止碼。

模型提出的租戶、角色、請求負責人或環境 ID 不能當授權依據。這些欄位由登入工作階段與正式可信的儲存區取得。合約同時寫清禁止外部網路、正式環境資料、未列出的 schema 重構、廣泛刪除與停止其他專案程序。

G2

先寫驗收判準再跑候選

每個案例列出測試資料、操作、預期狀態、邏輯效果次數、可修改路徑、必要證據與嚴重程度。正常流程以外,也測原因格式錯誤、角色不符、版本過期、派送前逾時、操作生效後逾時、瀏覽器檢查遭略過、重新整理後資料遺失,以及修改無關檔案。

合約變更要有負責人、理由、版本與受影響案例。若產品需求真的改變,建立新版本並重跑基準版本,不在候選失敗後直接把門檻刪掉。這是保護評測可信度,也讓未來工作階段知道哪個版本才是目前程式庫正式事實。

G3

交付補強

交付契約時附欄位責任表。執行者、角色、請求版本、目前狀態與既有操作由可信儲存區提供,原因與操作意圖才來自使用者。Agent 可以提議方案,不能自行填權限。前端傳入角色、後端只驗格式便採信,是要測的漏洞;即使按鈕只對審查者顯示,也須直接呼叫執行器,證明它使用可信身分並拒絕模型自行提供的權限。

把停止原因當成合約輸出,不要只做 pass 和 fail。輸入格式錯誤是不合法;執行者無權限是 denied;需要產品負責人決定新轉換是 blocked;預算先用完是 budget_exhausted;寫入結果不明是 unknown_effect;證據完整才是 verified。每個狀態都要對應操作手冊與允許下一步,才能防止 agent 遇到任何非成功狀態就一律重試,或用自然語言把 denied 說成暫時性問題。

審查契約時,請一位沒參與需求討論的人只看測試資料與 schema,逐題回答:誰能做、起點是什麼、哪個效果算一次、哪些檔案可改、缺哪筆證據就不能完成。回答若需要回頭問口頭背景,表示那個決策尚未進正式紀錄。修正後保留審查者原本的誤解,因為它就是未來全新工作階段可能採用的錯誤路徑,也應成為回歸測試案例。

動手實作

把基準任務改寫成可執行合約

從原始摘要與基準版本失敗建立 JSON 任務契約、十個案例、禁止效果清單與驗收憑證 schema,再故意送入模糊與越權版本。

準備項目

  • • 凍結原始任務文字與模組 00 驗收憑證,不直接覆寫證據
  • • 邀請一位未參與基準的審查者只靠合約判斷三個樣本差異

本課產出

有版本的任務契約、十個測試案例、主張與檢查的對照表、禁止操作及修改範圍、驗收憑證 schema、變更紀錄,以及獨立審查者的判斷差異。

起始模板: Task contract

JSON
# Task contract: request changes

## Goal
## Actor and object
## Starting state
## In scope
## Non-goals
## Permissions
## Acceptance cases
| id | starting fixture | action | expected outcome | prohibited effect | evidence |
|---|---|---|---|---|---|
## Stop and escalate
## Evidence receipt
## Owners and approval

可下載的實作檔

Task contract

TASK_CONTRACT.md · Markdown

An editable course fixture for the main lab. Save it inside the Release Desk repository before running the acceptance command.

Run receipt template

he-01-receipt.json · JSON

A compact evidence record for the check, environment, result, and limits that another reviewer must be able to inspect.

驗收指令

npm run harness:contract -- --file TASK_CONTRACT.md

預期 receipt

PASS he-01 executable-contract
cases>=6 softCriteria=0 evidenceCoverage=100%
reviewedBeforeExecution=true

預期結果

同一份合約可驅動 agent 計畫、工具輸出、驗收與審查者判斷,並且在證據不足或權限來源缺失時誠實停下。

留給下一課

將 task-contract.json 與案例集合視為後續各模組的正式紀錄。程式庫地圖、初始化程序、台帳、工具、規則、評測與總整專案驗收憑證都要記錄契約版本。

驗收條件

  1. 01契約 schema 驗證執行者、狀態、輸入、效果、範圍、預算、證據與終止原因
  2. 02十個案例在執行前就有驗收判準與關鍵程度
  3. 03未知寫入完成只能走結果核對,不能直接重試
  4. 04未參與開發的審查者判斷能對到合約欄位;任何版本變更有理由與負責人

常見故障

故障診間

F1合約很長,卻仍無法判斷頁面是否真的完成。
先檢查
找每個需求對應的驗收判準、測試資料、使用者操作與證據。
可能原因
內容只描述目標與實作建議,沒有可觀察行為與權威判準。
修復方式
補主張與檢查的對應表,把畫面、持久化、權限與效果分開驗。
下次怎麼避免
沒有驗收判準與驗收憑證欄位的要求不得標為可驗收。
F2候選失敗後,團隊把案例答案改成目前實作。
先檢查
比對契約歷史紀錄、案例差異、執行時間與變更負責人。
可能原因
產品變更與降低評測門檻沒有分開。
修復方式
恢復固定集合;真的需求變更另開版本並重跑基準。
下次怎麼避免
所有驗收判準變更都要在候選之外審核,保留舊版本結果。
F3Agent 把自己產生的角色欄位當成授權。
先檢查
追查執行者、租戶範圍、登入工作階段、資料庫規則與工具執行器採用的身分來源。
可能原因
契約只規定欄位格式,沒有指定哪些系統能提供可信的值。
修復方式
由可信的執行環境派生身份,拒絕模型自行提供的權限來源。
下次怎麼避免
每個會影響授權的欄位都標明可信來源,並加入偽造欄位的測試案例。

展示版之後

正式上線前的邊界

  1. 01合約有版本、負責人、適用任務類型、起始提交版本與變更紀錄
  2. 02執行者、身份、狀態、版本與權限來源都標示可信來源
  3. 03成功、拒絕、blocked、unknown、預算已用盡與需求審查有不同終止碼
  4. 04允許路徑、保護資源、禁止效果、預算與破壞性邊界能被驗證器執行
  5. 05案例在候選前鎖定,關鍵權限、機密、操作效果與範圍驗收門檻不做平均
  6. 06驗收憑證綁契約、提交版本、環境、測試資料、檢查、操作效果與審查者決策

證據類型

資料來源與主張限制

資料來源只支撐本課標示的主張,不代表換一個系統也會得到相同結果。

  1. [1]
    長時間應用程式開發的 harness 設計

    Anthropic · 已發表研究 · 2026-08-26

    planner、generator、evaluator · 可測合約 · 簡化 harness · 成本取捨
  2. [2]
    打造有效的 agent

    Anthropic · 官方文件 · 2026-08-26

    採用能通過需求的最簡架構 · workflow 模式 · 環境回饋 · 停止條件
  3. [3]知識留在 repository · 讓系統對 agent 可讀 · 機械式規則 · 處理 repository entropy
  4. [4]
    Andrej Karpathy 的 AI Engineering Playbook

    AI Builder Club · 公開案例 · 2026-08-26

    Software 3.0 觀點 · spec、diff、eval 實作 · 平行 session · repository 指令
  5. [5]
    Learn Harness Engineering

    Walking Labs · 公開案例 · 2026-08-26

    專案式學習順序 · 五個 harness 子系統 · 迴圈工程 · 工作圖工程

延伸的 Tenten 資源

當本機 harness 要接進真實程式庫

帶著驗收憑證、失敗案例,以及那條還拿不準的控制邊界來。

在團隊拉長 agent 自治時間前,Tenten 可以一起檢查程式庫可讀性、權限、評測器涵蓋、worktree 隔離、復原與上線證據。