Codex /goal 上線後,我把 Ralph loop 卸了

作者:Feisky
日期:2026年5月9日 上午12:18
來源:WeChat 原文

整理版優先睇

速讀 5 個重點 高亮

Codex /goal 內建高質長時任務循環,搭配 GPT-5.5 自查能力,令長時間任務變得可靠。

整理版摘要

呢篇文章係由 Feisky 分享,佢之前一直用 Claude Code + Ralph loop 嚟跑長時間任務,但成日遇到問題:模型自己宣佈完成但清單未做完、狀態文件越寫越錯、成個循環卡死。社區裏好多人都有同感,有人話最長只係跑到 3 個鐘就失控,仲要不停睇住,token 消耗仲貴到飛起。

上星期 Codex 上咗新嘅 /goal 命令,Greg Brockman 話呢個係「built in Ralph loop++」。Feisky 試咗幾日,覺得太順暢,即刻將 Ralph loop 卸載咗。佢詳細解釋咗 /goal 嘅三層設計:底層係 state-db 做狀態持久化,就算中途退出都仲可以接住做;中間層係權限控制,模型只能將目標 set 做 complete,冇得話唔做就走人;最上層係自審注入,每輪都會迫模型對照真實文件同測試結果,確保真係做完先收工。

佢發現呢個設計之所以掂,好大程度上係因為 GPT-5.5 嘅自查能力。GPT-5.5 會主動質疑自己,而唔似 Opus 4.7 咁一味討好。佢推薦嘅工作流係:先寫 SPEC.md,用一條專用 prompt 自審一遍,確認冇漏洞之後就用 /goal 執行,完成之後再做 QA。咁樣 Codex 可以連續做十幾個鐘完全冇問題,適合代碼遷移、遊戲開發、prompt 優化呢類驗收標準清楚嘅任務。

  • Codex /goal 內建咗比 Ralph loop 更完善嘅長時任務循環,加上狀態持久化同自審機制,令長時間任務穩定好多。
  • /goal 嘅三層設計:底層 state-db 持久化狀態、中層只容許模型宣佈 complete、上層每輪注入自審 prompt 強迫對照清單。
  • Ralph loop 比較,/goal 唔單止反覆跑,仲會每步反問「真係做完了冇」,避免模型為咗慳 budget 就提早完結。
  • GPT-5.5 嘅自查能力係關鍵,佢會真正去 grep、跑測試、對照 spec,而 Opus 4.7 只係敷衍話「你說得對」。
  • 用 /goal 之前最好先寫 SPEC.md,再用「Are you 100% confident」嗰條 prompt 自審,然後先執行;適合代碼遷移、原型開發、prompt 優化同夜間 QA。
值得記低
連結 developers.openai.com

Codex /goal 官方文檔

OpenAI 官方文檔,詳細介紹 /goal 嘅用法同最佳實踐

連結 github.com

Codex GitHub 源碼

Codex 嘅 open source 原始碼,可以睇到 goals.rs 等實作細節

Prompt

Are you 100% confident? 自查 prompt

社區廣泛流傳嘅 prompt,用嚟迫模型自審策略有冇漏洞,適合同 GPT-5.5 一齊用。完整 prompt:Are you 100% confident in this strategy? If not, find all possible loopholes, suggest proper fixes and run this loop until you are factually 100% confident in the new strategy.

整理重點

Ralph loop 嘅痛點:點解我哋需要更好嘅方案?

之前用 Claude CodeRalph loop 嘅時候,問題多到數唔曬:模型跑住跑住自己宣佈勝利,明明清單仲有大半未做;狀態文件越寫越離譜,跨會話後新 Agent 見到嘅進度同實際對唔上;偶爾成個循環卡死喺度,要人手 restart。社區裏面好多人都有同感,有人話最長只係跑到 3 個鐘就失控,中間仲要不斷 monitoring。

消耗方面,每輪循環都要重新讀曬成個 codebase,token 消耗比正常操作高好多。

呢啲問題迫使我哋重新思考:長時任務點解一直都唔穩定?答案可能唔係 loop 本身,而係模型冇自查能力。

整理重點

/goal 上手:簡單配置,即用即爽

想試 /goal 好簡單,編輯 ~/.codex/config.toml,開啓 goals 功能就得:

程式內容 toml
[features]
goals = true

之後就咁樣打 /goal 把倉庫裏所有 axios 調用遷移到 fetch</highlight>,佢就會自動開工。要求可以寫埋:所有測試通過、類型簽名不變、錯誤處理同等、完成後跑 build 同 test。同普通對話嘅分別就一條:每輪結束後 Codex 唔停</highlight>,自己繼續下一輪,直到目標達成。

TUI 上面有個進度面板,顯示當前狀態(pursuing / complete / paused</highlight>)同 token 用量。你可以全程唔理佢進度,途中用 /goal 查看狀態</highlight>、/goal pause 暫停、/goal resume 恢復、/goal clear 清除。

整理重點

三層設計:點解 /goal 比 Ralph loop 更高級?

最初我以為 /goal 只係將 Ralph loop 搬入 Codex,但睇完 GitHub 源碼先發現,呢個設計比 Ralph loop 進一步。最底層係 狀態持久化:Codex 將 Goal 狀態寫入 state-db(源碼喺 codex-rs/core/src/goals.rs),可能值包括 pursuing / paused / complete / unmet / budget_limited。你中途退出再開,Goal 依然喺度,可以繼續跑。Ralph loop 腳本死咗雖然磁盤文件仲喺度,但係要手動 restart 同重新接 context。

中間層係 權限控制Codex 俾模型三個工具——get_goal、create_goal、update_goal,但 update_goal 嘅狀態參數只接受一個值:complete。模型可以話「我搞掂咗」,但唔可以話「預算就快冇我走先」。呢招斷咗佢嘅退路:一係真係做完,一係繼續做。

將呢三層放埋一齊睇,Ralph loop 只係讓模型反覆跑,而 /goal 讓模型反覆跑嘅同時不停反問自己「我真係做完了嗎」</highlight>。

整理重點

GPT-5.5 先係靈魂:自查能力決定成敗

光有 /goal 唔夠,模型仲要夠強大。GPT-5.5 係少數會主動質疑自己嘅模型</highlight>。/goal 嘅自審提示對一個唔鍾意質疑自己嘅模型只係耳邊風,但對 5.5 就係放大器。而且 5.5 冇之前 GPT 模型嗰種懶洋洋嘅感覺,你想唔到嘅佢都會幫你諗到。

對比一下 Opus 4.7</highlight>:你話「再檢查一遍」,佢話「你說得對」,然後講一堆一早諗好嘅說話;你話「呢度有 bug」,佢話「絕對的,我重寫」,然後小幅改完交返俾你。係典型嘅 討好型選手</highlight>,跑長任務越跑越偏。但 GPT-5.5 唔一樣,叫佢再查一次,佢真係會去 grep、跑測試、對照 spec,然後話俾你知邊度仲有邊界情況。

社區入面有個配套 prompt 傳得好廣:Are you 100% confident in this strategy? If not, find all possible loopholes, suggest proper fixes and run this loop until you are factually 100% confident in the new strategy.</highlight> 關鍵係讓 5.5 自己開 loop:揾漏洞、提修復、再問自己一次。呢招喺 Opus 上完全冇用,佢將自查當成客套環節;5.5 就當成一份正經工作嚟做。

整理重點

適用場景同工作流建議:點樣用好 /goal?

我推薦嘅工作流係:先寫 SPEC.md(或者任何將目標任務寫落檔案嘅文件),用上面嗰條 prompt 自審一遍,確認 SPEC.md 冇漏洞之後,再用 /goal 啓動執行,完成之後做 QA。按呢個流程,Codex 可以連續做十幾個鐘完全冇問題(如果你嘅 token 夠多,更長應該都做得到)。

判斷任務適唔適合用 /goal,標準得一條:你能唔能夠將「做完了」寫清楚</highlight>。寫得清楚,/goal 可以跑得好順;寫唔清楚,跑出嚟嘅都可能係垃圾。官方文件話,一個好嘅 Goal 應該定義四件事:要達成乜嘢、唔可以鬱乜嘢、點樣驗證進度、幾時停。

  • 代碼遷移同大型重構</highlight>:有明確目標狀態同驗收手段(build 過 + 測試過 + e2e 過),例如 /goal Migrate this project from [legacy stack] to [target stack]。
  • 原型同遊戲開發</highlight>:寫一份 PLAN.md 描述你想要嘅嘢,然後讓 Codex 實現,每個里程碑跑測試確認。
  • Prompt 優化</highlight>:如果你有 eval 套件,可以讓 Codex 自己迭代,做實驗、睇結果、調參數,循環到收斂。
  • 夜間 QA 同批量處理</highlight>:回歸測試、數據校驗、批量文件處理呢類機械但係花時間嘅工作,放俾 /goal 過夜跑。

強烈推薦一下 Codex 嘅 /goal 命令。搭配 GPT-5.5,我第一次感受到長時任務可以完成得咁順滑。

之前用 Claude Code + Ralph loop 跑長任務,總係有各式各樣嘅問題:跑跑嚇模型自己宣佈贏咗,明明任務清單仲有大半未做;狀態文件越寫越離譜,跨會話之後新 Agent 見到嘅進度同實際對唔上;有時卡住,成個循環死喺嗰度。社區裡面好多人都有同感,有人話自己用 Ralph loop 最長跑 3 個鐘就失控,中間要不停咁睇住;使用成本都超高,每輪循環都要重新讀一次代碼庫,token 消耗比正常操作高好多。

上星期升級咗 Codex 用咗新增嘅 Goal 命令,Greg Brockman 發推話“codex now has a built in Ralph loop++”。試咗幾日,太順滑啦,將 Ralph loop 刪咗。今日就嚟同大家分享下佢嘅用法。

點樣上手

首先編輯 ~/.codex/config.toml 開啟呢個功能特性:

[features]
goals
 = true

然後畀佢一個目標就可以等佢幫你做曬,例如:

/goal 把倉庫裏所有 axios 調用遷移到 fetch,要求:
1. 所有現存測試通過
2. 類型簽名不變
3. 錯誤處理行為等價(4xx/5xx 都要 throw)
4. 完成後跑一遍 npm run build 和 npm test 確認

同普通對話嘅分別得一點:每輪結束之後 Codex 唔停,自己繼續做下一輪,直到目標達成。TUI 上面有個進度面板,顯示當前狀態(pursuing / complete / paused)同 token 用量。你可以全程唔睇佢嘅進度。

運行過程中可以用 /goal 查看狀態,用 /goal pause 暫停,/goal resume 恢復,/goal clear 清除。

/goal 的三層設計

一開始我以為 /goal 就係將 Ralph loop 照搬咗入 Codex 裏面。翻咗 GitHub 源碼先發現,呢個設計比 Ralph loop 更進一步,如下圖所示:

圖片

最底層係狀態持久化。Codex 將 Goal 狀態寫入 state-db(源碼喺 codex-rs/core/src/goals.rs),可能嘅值係 pursuing / paused / complete / unmet / budget_limited。你中途退出再開返,Goal 仲喺度,仲可以繼續跑。Ralph loop 腳本死咗雖然磁盤文件仲喺度,但要手動重啟、重新接返上下文。

中間層係權限控制。Codex 畀模型三個工具:get_goalcreate_goalupdate_goal,但 update_goal 嘅狀態參數只接受一個值:complete。模型可以宣佈「我搞掂曬」,但唔可以話「預算快冇曬我收工」。斷咗佢嘅退路,一係真係做完,一係繼續做。

最上層係自審注入。每輪執行時,運行時注入 continuation.md 入面一段 prompt,強制模型將目標拆做檢查清單,逐項對照真實檔案同測試結果。最關鍵嘅一句:

Do not call update_goal unless the goal is complete. Do not mark a goal complete merely because the budget is nearly exhausted or because you are stopping work.

直接避開咗我之前 Ralph loop 入面最成日遇到嘅問題:模型為咗甩身硬話基本做完曬。

將三層擺埋一齊睇,Ralph loop 只係俾模型不斷重複跑,/goal 令模型不斷重複跑嘅同時不停反問自己「我真係做曬未呀」。

GPT-5.5 + 100% confident loop

剩係有 /goal 都唔夠,模型仲要夠強大。

GPT-5.5 係少數會主動質疑自己嘅模型。/goal 嘅自審提示對一個唔中意質疑自己嘅模型來講就係耳邊風,對 5.5 係放大器。而且 GPT-5.5 亦冇之前 GPT 模型嗰種成日都好懶嘅感覺,你想唔到嘅佢都可以幫你諗到。

對比嚇 Opus 4.7。你話「再檢查一次」,佢話「你講得啱」,然後講一堆一早諗好嘅嘢。你話「呢度有 bug」,佢話「絕對係,我重寫」,然後改少少就交返嚟。討好型選手,跑長任務越跑越歪。而 GPT-5.5 唔同,叫佢再查一次,佢真係會去 grep、跑測試、對照 spec,然後話你知邊度仲有邊界情況。

社區入面有個配套 prompt 傳得好廣:

Are you 100% confident in this strategy? If not, find all possible loopholes, suggest proper fixes and run this loop until you are factually 100% confident in the new strategy.

關鍵係令 5.5 自己開循環:揾漏洞、提修復、再問自己一次。呢招喺 Opus 上完全唔 work,佢將自查當做客套環節,5.5 就當做一份正經工作。

我推薦嘅工作流程係:先寫 SPEC.md(或者任何保存到檔案嘅目標任務),用呢個 prompt 自審一次,SPEC.md 冇漏洞之後再 /goal 啟動執行,完成之後做 QA。

按照呢個流程,Codex 連續做十幾個鐘完全唔係問題(如果你嘅 token 夠,更長應該都完全冇問題)。

咩任務適合

判斷標準得一點:你可唔可以將「做曬」寫清楚。寫得清楚,/goal 就可以用到好多地方;寫唔清楚,跑出嚟都可能係垃圾。官方文件嘅講法係,好嘅 Goal 應該定義清楚四件事:要達成啲乜、唔可以鬱啲乜、點樣驗證進度、幾時停。

我自己跑落嚟,Goal 比較適合呢幾類場景:

代碼遷移同大型重構。有明確嘅目標狀態,有驗收手段(build 通過 + 測試通過 + e2e 通過)。例如:

/goal Migrate this project from [legacy stack] to [target stack]. Make sure all screens stay exactly the same visually, using playwright interactive to verify the output.

原型同遊戲開發。寫一份 PLAN.md 描述你要啲乜,然後讓 Codex 實現佢。Codex 會按里程碑推進,每個節點跑測試確認。

/goal Implement PLAN.md, creating tests for each milestone and verifying the output with playwright interactive

Prompt 優化。如果你有 eval 套件,可以讓 Codex 自己迭代,做實驗、睇結果、調參數,循環到收斂。例如:

/goal Optimize the prompts in [prompt file] until the eval suite reaches [target score]. After each change, run [eval command], inspect the failing cases, and keep the prompt edits minimal and targeted.

夜間 QA 同批量處理。回歸測試、數據驗證、批量文件處理呢類機械但耗時嘅工作,掉畀 /goal 過夜跑。

寫喺最後

返去開頭講嘅嗰個問題:長時任務點解一直唔穩定?

我之前開發 autonomous-skill 嘅時候,思路同 Ralph loop 其實一樣,都係喺模型外面套一個逼佢繼續做嘢嘅循環。跑咗大半年,我慢慢意識到問題唔喺循環本身,而喺模型。模型冇自查能力嘅話,再套多幾多層都只係將錯誤重複 N 次。你可以逼佢繼續做,但你逼唔到佢承認自己冇做好。

/goal 解決嘅正正係呢一層。運行時唔俾模型耍賴,GPT-5.5 又真係會自查,兩條腿一齊行,長時任務先至第一次變成可以信賴嘅事情。

當然 /goal 都唔係萬能嘅。目標寫唔清楚嘅任務佢一樣會跑歪,需要成日同人確認方向嘅任務佢都唔適合。不過對於嗰啲驗收標準明確、可以自動化驗證嘅工作,佢確實將睇住 Agent 做嘢呢件事變咗做瞓一覺起身睇結果。呢個體驗嘅差距,用過就知。


相關連結:

  • • Codex /goal 官方文檔:https://developers.openai.com/codex/use-cases/follow-goals
  • • Codex GitHub 源碼:https://github.com/openai/codex

好啦,今日就傾到呢度。如果你都在探索 AI 工具同雲原生技術,歡迎關注 Feisky 公眾號,我會定期分享實踐中嘅發現同踩坑經驗。

強烈推薦一下 Codex 的 /goal 命令。搭配 GPT-5.5,我第一次感受到長時任務可以完成得這麼絲滑。

之前用 Claude Code + Ralph loop 跑長任務,總是各種各樣的問題:跑着跑着模型自己宣佈勝利了,明明任務清單還有大半沒做;狀態文件越寫越離譜,跨會話後新 Agent 看到的進度跟實際對不上;偶爾卡住,整套循環死在那裏。社區裏很多人也有同感,有人說自己用 Ralph loop 最長跑 3 小時就失控,中間得不停盯着;使用成本也是巨高,每輪循環都要重新讀一遍代碼庫,token 消耗比正常操作高出很多。

上週升級 Codex 用上了新增的 Goal 命令,Greg Brockman 發推說“codex now has a built in Ralph loop++”。試了幾天,太絲滑了,把 Ralph loop 卸了。今天就來給大家分享下它的用法。

怎麼上手

首先編輯 ~/.codex/config.toml 開啓這個功能特性:

[features]
goals
 = true

然後給它一個目標就可以等着它幫你幹完了,比如:

/goal 把倉庫裏所有 axios 調用遷移到 fetch,要求:
1. 所有現存測試通過
2. 類型簽名不變
3. 錯誤處理行為等價(4xx/5xx 都要 throw)
4. 完成後跑一遍 npm run build 和 npm test 確認

跟普通對話的區別就一條:每輪結束後 Codex 不停,自己接着幹下一輪,直到目標達成。TUI 上有個進度面板,顯示當前狀態(pursuing / complete / paused)和 token 用量。你可以全程不看它的進度。

運行過程中可以用 /goal 查看狀態,用 /goal pause 暫停,/goal resume 恢復,/goal clear 清除。

/goal 的三層設計

最開始我以為 /goal 就是把 Ralph loop 照搬到了 Codex 裏面來。翻了 GitHub 源碼才發現,這個設計比 Ralph loop 更進一步,如下圖所示:

圖片

最底層是狀態持久化。Codex 把 Goal 狀態寫進 state-db(源碼在 codex-rs/core/src/goals.rs),可能的值是 pursuing / paused / complete / unmet / budget_limited。你中途退出再打開,Goal 還在,還可以接着跑。Ralph loop 腳本掛了雖然磁盤文件還在,但得手動重啓、重新接上上下文。

中間層是權限控制。Codex 給模型三個工具:get_goalcreate_goalupdate_goal,但 update_goal 的狀態參數只接受一個值:complete。模型能宣佈“我搞定了”,但不能說“預算快沒了我撤了”。斷了它的退路,要麼真做完,要麼繼續幹。

最上層是自審注入。每輪執行時,運行時注入 continuation.md 裏一段 prompt,強制模型把目標拆成檢查清單,逐項對照真實文件和測試結果。最關鍵的一句:

Do not call update_goal unless the goal is complete. Do not mark a goal complete merely because the budget is nearly exhausted or because you are stopping work.

直接避免了我之前 Ralph loop 裏最常碰到的問題:模型為了脱身硬說基本完成了。

把三層放在一起看,Ralph loop 只是讓模型反覆跑,/goal 讓模型反覆跑的同時不停反問自己“我真的做完了嗎”。

GPT-5.5 + 100% confident loop

光有 /goal 還不夠,模型還需要足夠強大。

GPT-5.5 是少數會主動質疑自己的模型。/goal 的自審提示對一個不愛質疑自己的模型就是耳旁風,對 5.5 是放大器。並且 GPT-5.5 也沒有之前 GPT 模型那種總是很懶的感覺了,你想不到的它也可以幫你想到了。

對比一下 Opus 4.7。你說“再檢查一遍”,它說“你說得對”,然後說一堆早想好的話。你說“這有 bug”,它說“絕對的,我重寫”,然後小幅改一下交回來。討好型選手,跑長任務越跑越偏。而 GPT-5.5 不一樣,讓它再查一遍,它真會去 grep、跑測試、對照 spec,然後告訴你哪裏還有邊界情況。

社區裏有個配套 prompt 傳得很廣:

Are you 100% confident in this strategy? If not, find all possible loopholes, suggest proper fixes and run this loop until you are factually 100% confident in the new strategy.

關鍵是讓 5.5 自己開循環:找漏洞、提修復、再問自己一次。這招在 Opus 上完全不好使,它把自查當客套環節,5.5 當成一份正經工作。

我推薦的工作流是:先寫 SPEC.md(或者任何保存到文件的目標任務),用這個 prompt 自審一遍,SPEC.md 沒漏洞了再 /goal 啓動執行,完成後做 QA。

按這個流程,Codex 連續幹十幾個小時完全不是問題(如果你的 token 足夠,更長應該也完全沒問題)。

什麼任務適合

判斷標準就一個:你能不能把“做完了”寫清楚。能寫清楚,/goal 就可以跑的很多;寫不清楚,跑出來也可能是垃圾。官方文檔的說法是,好的 Goal 應該定義清楚四件事:要達成什麼、不能動什麼、怎麼驗證進度、什麼時候停。

我自己跑下來,Goal 比較適合這幾類場景:

代碼遷移和大型重構。有明確的目標狀態,有驗收手段( build 通過 + 測試通過 + e2e 通過)。比如:

/goal Migrate this project from [legacy stack] to [target stack]. Make sure all screens stay exactly the same visually, using playwright interactive to verify the output.

原型和遊戲開發。寫一份 PLAN.md 描述你要什麼,然後讓 Codex 實現它。Codex 會按里程碑推進,每個節點跑測試確認。

/goal Implement PLAN.md, creating tests for each milestone and verifying the output with playwright interactive

Prompt 優化。如果你有 eval 套件,可以讓 Codex 自己迭代,做實驗、看結果、調參數,循環到收斂。比如:

/goal Optimize the prompts in [prompt file] until the eval suite reaches [target score]. After each change, run [eval command], inspect the failing cases, and keep the prompt edits minimal and targeted.

夜間 QA 和批量處理。迴歸測試、數據校驗、批量文件處理這類機械但耗時的活,丟給 /goal 過夜跑。

寫在最後

回到開頭說的那個問題:長時任務為什麼一直不穩?

我之前開發 autonomous-skill 的時候,思路跟 Ralph loop 其實一樣,都是在模型外面套一個逼它繼續幹活的循環。跑了大半年,我逐漸意識到問題不在循環本身,而在模型。模型沒有自查能力的話,再套多少層也只是把錯誤重複 N 次。你可以逼它繼續幹,但你逼不了它承認自己沒幹好。

/goal 解決的恰恰是這一層。運行時不讓模型耍賴,GPT-5.5 又真的會自查,兩條腿一起走,長時任務才第一次變成可以託付的事情。

當然 /goal 也不是萬能的。目標寫不清楚的任務它照樣跑偏,需要頻繁跟人確認方向的任務它也不適合。不過對於那些驗收標準明確、可以自動化驗證的工作,它確實把盯着 Agent 幹活這件事變成了睡一覺起來看結果。這個體驗的差距,用過就知道了。


相關連結:

  • • Codex /goal 官方文檔:https://developers.openai.com/codex/use-cases/follow-goals
  • • Codex GitHub 源碼:https://github.com/openai/codex

好了,今天就聊到這兒。如果你也在探索 AI 工具和雲原生技術,歡迎關注 Feisky 公眾號,我會定期分享實踐中的發現和踩坑經驗。