果契約完全參考)
delegate-relay.result.v1 逐字段拆解delegate-skills 結(jié)果契約完全參考【免費(fèi)下載鏈接】delegate-skillsDelegate a coding task to a separate coding agent CLI, review the diff, land the commit yourself — one per implementer.項(xiàng)目地址: https://gitcode.com/gh_mirrors/de/delegate-skills在delegate-skills中你委派給任意編碼代理Codex、Claude Code、Cursor……的每次運(yùn)行最終都會(huì)落成一個(gè)結(jié)構(gòu)化文件result.json它的schema值統(tǒng)一為delegate-relay.result.v1。這份結(jié)果契約result contract是所有 16 個(gè)*-delegaterelay 共用的一門通用語言讀懂它一次就學(xué)會(huì)如何審查任何實(shí)現(xiàn)器交回來的成果。本文逐字段拆解這份契約——公共字段、成敗判定、交付物字段、診斷字段一個(gè)不漏是排查委托任務(wù)的第一份參考。完整背景見 README.md字段與排障細(xì)節(jié)出自各技能自帶的 dispatch-and-poll.md 與 review-and-land.md。一、result.json 是什么寫在哪每次派發(fā)relay 會(huì)在一個(gè)運(yùn)行目錄里寫好五件套brief.txt發(fā)出去的 brief 原文、events.jsonl原始事件流、final.txt實(shí)現(xiàn)器最終報(bào)告、stderr.txt完整 stderr、以及本次的主角result.json。{ schema: delegate-relay.result.v1, lane: null, workdir: /path/to/repo, model: null, effort: null, startedAt: 2026-10-06T00:47:11.000Z, finishedAt: 2026-10-06T00:49:32.000Z, briefPath: /tmp/delegate-relay/repo-20261006/brief.txt, eventsPath: /tmp/delegate-relay/repo-20261006/events.jsonl, finalPath: /tmp/delegate-relay/repo-20261006/final.txt, stderrPath: /tmp/delegate-relay/repo-20261006/stderr.txt, status: completed, exitCode: 0, signal: null, finalMessage: 已完成 billing 模塊重構(gòu)……, touchedFiles: [M services/billing/ledger.ts, A services/billing/ledger.test.ts] }兩個(gè)關(guān)鍵設(shè)計(jì)新手最容易被它坑到原子寫入relay 先寫一個(gè)臨時(shí)文件再rename成result.json輪詢方永遠(yuǎn)不會(huì)讀到寫了一半的殘缺 JSON。輪詢判據(jù)運(yùn)行是否結(jié)束看進(jìn)程已退出且result.json里有status而不是看屏幕上某行狀態(tài)提示。二、公共字段每個(gè) relay 都有2.1 運(yùn)行定位字段字段含義說明schema契約版本號(hào)當(dāng)前固定為delegate-relay.result.v1lane車隊(duì)車道名用 delegate-setup 的車道派發(fā)時(shí)才有值直接派發(fā)為nulllaneSource車道來源全局配置或項(xiàng)目配置workdir運(yùn)行工作根目錄即傳給實(shí)現(xiàn)器的--cd值2.2 運(yùn)行配置字段字段含義說明model使用的模型未指定時(shí)nulleffort推理強(qiáng)度未指定時(shí)nullresumeLast/session恢復(fù)狀態(tài)是否續(xù)接會(huì)話及具體會(huì)話 idcleanEnv/keepEnv環(huán)境處理keepEnv只記變量名、絕不記值避免泄露密鑰startedAt/finishedAt起止時(shí)間ISO 時(shí)間戳2.3 運(yùn)行產(chǎn)物路徑字段字段指向briefPathrelay 實(shí)際發(fā)出去的 brief 原文eventsPath原始 JSONL 事件流events.jsonlfinalPath最終報(bào)告文件沒生成時(shí)為nullstderrPath完整 stderr 日志stderr.txt這些路徑就是出事了去哪看的導(dǎo)航報(bào)告不全看eventsPath診斷不夠看stderrPath。三、判定字段任務(wù)到底成沒成這是審查時(shí)最核心的三個(gè)字段。3.1status五種取值status觸發(fā)場(chǎng)景completed實(shí)現(xiàn)器正常完成退出碼 0 且看門狗未觸發(fā)failed實(shí)現(xiàn)器非零退出 / 啟動(dòng)失敗 / 版本預(yù)檢失敗timeout--timeout看門狗到點(diǎn)子進(jìn)程被殺掉abortedrelay 自己被外部殺死父進(jìn)程超時(shí)、任務(wù)停止、終端關(guān)閉并把 kill 轉(zhuǎn)發(fā)給了實(shí)現(xiàn)器實(shí)現(xiàn)器_unavailable如codex_unavailable二進(jìn)制缺失退出碼 1273.2exitCode映射速查退出碼觸發(fā)場(chǎng)景是否寫result.json2運(yùn)行前參數(shù)錯(cuò)誤錯(cuò)誤參數(shù)、空 brief否直接退出127實(shí)現(xiàn)器二進(jìn)制不在 PATH是status為實(shí)現(xiàn)器_unavailable0實(shí)現(xiàn)器成功是status為completed非0實(shí)現(xiàn)器失敗是status為failed128 信號(hào)號(hào)子進(jìn)程被信號(hào)殺死是signal記錄信號(hào)124版本預(yù)檢超時(shí)是status為timeout一個(gè)反直覺但重要的規(guī)則timeout下即使子進(jìn)程被 SIGTERM 后退出 0relay 也會(huì)強(qiáng)制給出非零退出碼——超時(shí)永遠(yuǎn)不算成功。3.3signal與主機(jī)殺進(jìn)程提示SIGKILL多為宿主OOM killer或看門狗超時(shí)殺掉不是實(shí)現(xiàn)器本身的錯(cuò)SIGTERM外部終止監(jiān)督進(jìn)程、會(huì)話結(jié)束、手動(dòng) kill若是relay 自己動(dòng)手則會(huì)改報(bào)timeout或aborted。四、交付物字段審查的起點(diǎn)字段含義判讀finalMessage實(shí)現(xiàn)器自己的最終報(bào)告空字符串 退出前沒產(chǎn)出報(bào)告按失敗處理touchedFiles工作根目錄的git status --porcelain行你的審查清單起點(diǎn)touchedFiles有三個(gè)三態(tài)要分清null不是[]git 無法報(bào)告——缺git或非倉庫下用了--skip-git-repo-check[]git 正常跑了且工作樹是干凈的有內(nèi)容列出實(shí)現(xiàn)器動(dòng)過的文件。?? 提醒touchedFiles是運(yùn)行后的git status它顯示不了被忽略文件、被回滾的改動(dòng)或倉庫外的寫入。它是審查助手不是安全保證——詳見 review-and-land.md。五、診斷字段失敗時(shí)看這里字段出現(xiàn)時(shí)機(jī)說明stderrTail所有非completed的運(yùn)行stderr 末尾 64 KiB 內(nèi)最多 20 行非空行被截?cái)嗟氖仔袝?huì)標(biāo)注[truncated]error啟動(dòng)失敗、timeout、aborted一句話說明根因如看門狗到點(diǎn)被殺stderrTail是摘要要看全貌就打開stderrPath指向的完整日志。六、實(shí)現(xiàn)器特有擴(kuò)展字段契約的骨架是共享的但每個(gè)實(shí)現(xiàn)器會(huì)帶上自己的身份字段字段出現(xiàn)于說明codexVersion/threadId/sandboxCodex實(shí)際運(yùn)行的版本、供后續(xù)--session恢復(fù)的線程 id、應(yīng)用的沙箱模式claudeVersion/sessionId/numTurns/usage/totalCostUsdClaude Code版本、會(huì)話 id、輪次、用量、成本grokVersion/trustedGitRoot/autonomyGrok版本、git 信任根、自主級(jí)別commandCodeVersion/resultLine/readOnlyViolationCommand Code版本、result 行可信度、只讀違規(guī)判定readOnly/readOnlyViolationclaude / grok / zcode / commandcode / agy只讀運(yùn)行標(biāo)記與三態(tài)違規(guī)探針版本字段統(tǒng)一命名實(shí)現(xiàn)器Version會(huì)話 id 字段因 CLI 而異threadId/sessionId/runId…。這些正是 relay-parity 測(cè)試 要保證共享邏輯跨 relay 字節(jié)一致的原因。七、如何消費(fèi)這份契約實(shí)操派發(fā)node relay.mjs --brief brief.txt --cd /path/to/repo或后臺(tái)運(yùn)行 輪詢。判完成進(jìn)程退出且result.json出現(xiàn)并帶status同時(shí)別忘了退出碼退出 2 參數(shù)錯(cuò)誤根本沒寫文件。看statuscompleted進(jìn)入審查failed/timeout/aborted先讀stderrTail與error。對(duì)交付物用touchedFiles作清單開 diff重跑項(xiàng)目門禁你來 commit——relay 永不提交。重做帶--session id只發(fā)增量 brief 續(xù)接會(huì)話而不是整段重貼。八、字段總覽速查表類別字段定位schema、lane、laneSource、workdir配置model、effort、resumeLast、session、cleanEnv、keepEnv時(shí)間startedAt、finishedAt產(chǎn)物路徑briefPath、eventsPath、finalPath、stderrPath判定status、exitCode、signal交付物finalMessage、touchedFiles診斷stderrTail、error擴(kuò)展各實(shí)現(xiàn)器*Version、會(huì)話 id、readOnly、readOnlyViolation等讀懂delegate-relay.result.v1就等于拿了一把通用的鑰匙換個(gè)實(shí)現(xiàn)器審查流程完全不變——這正是 delegate-skills 學(xué)一次、隨處用的設(shè)計(jì)初衷?!久赓M(fèi)下載鏈接】delegate-skillsDelegate a coding task to a separate coding agent CLI, review the diff, land the commit yourself — one per implementer.項(xiàng)目地址: https://gitcode.com/gh_mirrors/de/delegate-skills創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考