<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Ralph on KnightLi的博客</title>
        <link>https://www.knightli.com/zh-tw/tags/ralph/</link>
        <description>Recent content in Ralph on KnightLi的博客</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-tw</language>
        <lastBuildDate>Mon, 27 Apr 2026 08:19:02 +0800</lastBuildDate><atom:link href="https://www.knightli.com/zh-tw/tags/ralph/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Ralph 和多智能體協同：怎麼讓 AI 長時間穩定工作</title>
        <link>https://www.knightli.com/zh-tw/2026/04/27/ralph-multi-agent-long-running-ai-workflows/</link>
        <pubDate>Mon, 27 Apr 2026 08:19:02 +0800</pubDate>
        
        <guid>https://www.knightli.com/zh-tw/2026/04/27/ralph-multi-agent-long-running-ai-workflows/</guid>
        <description>&lt;p&gt;如果你最近在折騰 coding agent，很快就會遇到一個現實問題：&lt;strong&gt;AI 當然能幹活，但怎麼讓它連續幹幾個小時，還不在中途跑偏、忘要求、返工一堆？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;圍繞 &lt;code&gt;Ralph&lt;/code&gt; 和多智能體協同的這類討論，真正值得看的也正是這個問題。它不是單純比較某個模型有多強，而是把重點放在一層更實際的東西上：&lt;strong&gt;怎麼設計工作流，才能讓 AI 在長任務裡保持穩定輸出。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;把這個問題拆開看，常見的路線主要有兩條：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Ralph&lt;/code&gt; 方案：不斷啟動新會話，透過檔案系統銜接上下文&lt;/li&gt;
&lt;li&gt;多智能體方案：主 Agent 做協調，子 Agent 分工執行&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果把它壓成一句更好理解的話，這裡討論的其實不是「哪個模型更厲害」，而是「怎麼把 AI 組織起來，讓它更像一個能持續交付的小團隊」。&lt;/p&gt;
&lt;h2 id=&#34;01-為什麼長時任務容易失控&#34;&gt;01 為什麼長時任務容易失控
&lt;/h2&gt;&lt;p&gt;短任務裡，很多問題不明顯。你給一句指令，模型讀幾份檔案，改幾行程式碼，事情也就結束了。&lt;/p&gt;
&lt;p&gt;但任務一旦拉長，問題會集中冒出來：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;會話越來越長，上下文開始膨脹&lt;/li&gt;
&lt;li&gt;早先的要求被新資訊擠掉&lt;/li&gt;
&lt;li&gt;一個 Agent 既要想方案，又要寫程式碼，還要自己測，容易顧不過來&lt;/li&gt;
&lt;li&gt;沒有明確驗收環節時，看起來「做完了」，其實只是「說自己做完了」&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以長時間運行 AI，真正考驗的往往不是模型單次輸出能力，而是 &lt;strong&gt;任務拆分、狀態銜接、角色分工和回饋回路&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id=&#34;02-ralph-方案把長任務拆成很多短回合&#34;&gt;02 Ralph 方案：把長任務拆成很多短回合
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Ralph&lt;/code&gt; 的思路很適合先解決「上下文越跑越髒」這個問題。&lt;/p&gt;
&lt;p&gt;它的核心做法是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用循環不斷啟動新的 agent 會話&lt;/li&gt;
&lt;li&gt;每輪只處理一個足夠小的任務&lt;/li&gt;
&lt;li&gt;把跨輪狀態放到檔案裡，而不是全壓在同一個對話上下文裡&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這樣做的好處很直接：每次都是 fresh context，單輪會更聚焦，也更不容易被歷史訊息拖慢。&lt;/p&gt;
&lt;p&gt;如果你已經看過 &lt;code&gt;Ralph&lt;/code&gt; 相關專案，會發現這套方法背後的邏輯很一致：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;當前任務寫在結構化檔案裡&lt;/li&gt;
&lt;li&gt;中間經驗寫到進度檔案裡&lt;/li&gt;
&lt;li&gt;程式碼變化留在 git 歷史裡&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;換句話說，&lt;code&gt;Ralph&lt;/code&gt; 不是試圖讓一個 Agent「永遠記住所有事」，而是主動把記憶外置，讓會話本身保持輕一點。&lt;/p&gt;
&lt;p&gt;這類方案特別適合下面幾種情況：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;任務已經能拆成一組小 story&lt;/li&gt;
&lt;li&gt;每個 story 都能在單個上下文視窗裡完成&lt;/li&gt;
&lt;li&gt;專案裡已經有測試、typecheck 或其他檢查機制&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它解決的是「如何讓 AI 一輪一輪穩定推進」。&lt;/p&gt;
&lt;h2 id=&#34;03-多智能體方案把一個人做不完的事分出去&#34;&gt;03 多智能體方案：把一個人做不完的事分出去
&lt;/h2&gt;&lt;p&gt;另一條路線是多智能體協同。&lt;/p&gt;
&lt;p&gt;從這類工作流設計思路來看，更值得推薦的通常是這種方式：主 Agent 不直接埋頭幹活，而是負責協調；子 Agent 各自處理開發、測試、檢查、驗收等不同任務。&lt;/p&gt;
&lt;p&gt;這和 &lt;code&gt;Ralph&lt;/code&gt; 的區別在於：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Ralph&lt;/code&gt; 更像串行迭代&lt;/li&gt;
&lt;li&gt;多智能體更像並行分工&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果任務裡天然有不同角色，多智能體會更順手。比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一個 Agent 負責拆任務和寫執行計畫&lt;/li&gt;
&lt;li&gt;一個 Agent 負責具體實作&lt;/li&gt;
&lt;li&gt;一個 Agent 負責測試和驗證&lt;/li&gt;
&lt;li&gt;一個 Agent 負責回看結果是不是符合最初需求&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這樣做的價值不是「多開幾個視窗顯得很高級」，而是讓不同工作職責分離開。原來塞在一個 Agent 身上的幾件事，現在可以拆成幾個更明確的環節。&lt;/p&gt;
&lt;p&gt;一旦角色邊界清楚，很多問題都會變輕：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;寫的人不必同時當審的人&lt;/li&gt;
&lt;li&gt;跑測試的人不必重新推導整套需求&lt;/li&gt;
&lt;li&gt;主 Agent 不會被實作細節淹沒&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它解決的是「如何讓 AI 像一個小團隊那樣配合」。&lt;/p&gt;
&lt;h2 id=&#34;04-真正關鍵的不是多開而是怎麼拆&#34;&gt;04 真正關鍵的，不是多開，而是怎麼拆
&lt;/h2&gt;&lt;p&gt;無論是 &lt;code&gt;Ralph&lt;/code&gt; 還是多智能體，最容易被忽略的一點都是：&lt;strong&gt;流程設計比多開幾個 Agent 更重要。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如果任務拆分不對，就算開再多 Agent，也只是把混亂並行化。&lt;/p&gt;
&lt;p&gt;比較穩的拆法通常有幾個特點：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一個任務只對應一個明確目標&lt;/li&gt;
&lt;li&gt;一個角色只負責一類輸出&lt;/li&gt;
&lt;li&gt;每輪都有清楚的完成標準&lt;/li&gt;
&lt;li&gt;上一輪的結果能被下一輪直接消費&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;比如比起給 AI 一個「把整個功能做完」的大指令，更穩的方式往往是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;先拆出需求和邊界&lt;/li&gt;
&lt;li&gt;再拆實作&lt;/li&gt;
&lt;li&gt;再拆測試&lt;/li&gt;
&lt;li&gt;最後單獨做驗收&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這類拆法的好處是，問題一旦出現，更容易知道是出在理解、實作、測試，還是交付標準上。&lt;/p&gt;
&lt;h2 id=&#34;05-為什麼驗收環節特別重要&#34;&gt;05 為什麼驗收環節特別重要
&lt;/h2&gt;&lt;p&gt;很多 AI 工作流失敗，不是因為前面完全沒做事，而是因為最後缺了一個真正獨立的確認動作。&lt;/p&gt;
&lt;p&gt;在長任務裡，「已經生成結果」和「結果真的可用」之間，經常隔著一整層差距。&lt;/p&gt;
&lt;p&gt;這裡有個很值得重視的方向，就是把開發和驗收拆開看。哪怕不做到特別複雜，至少也應該把這些問題單獨問一遍：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;它真的完成了最初那條任務嗎&lt;/li&gt;
&lt;li&gt;有沒有只改表面、沒解決根因&lt;/li&gt;
&lt;li&gt;測試是不是只驗證了最順利的路徑&lt;/li&gt;
&lt;li&gt;有沒有把上游要求悄悄改掉&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;只要這層檢查缺位，AI 很容易在長流程裡不斷「自我宣布成功」。&lt;/p&gt;
&lt;h2 id=&#34;06-兩條路線怎麼選&#34;&gt;06 兩條路線怎麼選
&lt;/h2&gt;&lt;p&gt;如果只是想快速判斷，可以先這麼理解：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你最痛的是上下文膨脹和長會話失焦，先看 &lt;code&gt;Ralph&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;你最痛的是一個 Agent 身兼多職、任務之間互相打架，先看多智能體&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;再具體一點：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Ralph&lt;/code&gt; 更適合流程清楚、任務細碎、可以按回合推進的工作&lt;/li&gt;
&lt;li&gt;多智能體更適合角色明顯、需要並行和交叉驗證的工作&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;很多時候，這兩條路也不是非此即彼。比較成熟的做法，反而可能是把它們組合起來：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;外層用 &lt;code&gt;Ralph&lt;/code&gt; 這種迭代循環推進大任務&lt;/li&gt;
&lt;li&gt;內層在單輪裡再用多智能體處理研究、實作、測試和驗收&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這樣既能控制長上下文，又能提高單輪內部的協作效率。&lt;/p&gt;
&lt;h2 id=&#34;07-一句話總結&#34;&gt;07 一句話總結
&lt;/h2&gt;&lt;p&gt;這類方法最值得看的地方，不是單獨推薦了 &lt;code&gt;Ralph&lt;/code&gt; 或多智能體，而是把一個很現實的問題講清楚了：&lt;strong&gt;讓 AI 長時間穩定工作，關鍵從來不只是模型本身，而是你有沒有把上下文、任務、角色和驗收設計好。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如果你已經開始讓 &lt;code&gt;Claude Code&lt;/code&gt;、&lt;code&gt;Codex&lt;/code&gt; 或其他 coding agent 處理更長的真實任務，這類工作流思路會比「再換一個更強模型」更值得優先補課。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Ralph 是什麼：把 Claude Code 和 Amp 變成可循環執行的自主開發流程</title>
        <link>https://www.knightli.com/zh-tw/2026/04/27/ralph-autonomous-agent-loop-claude-code-amp/</link>
        <pubDate>Mon, 27 Apr 2026 08:08:55 +0800</pubDate>
        
        <guid>https://www.knightli.com/zh-tw/2026/04/27/ralph-autonomous-agent-loop-claude-code-amp/</guid>
        <description>&lt;p&gt;如果你最近在關注 coding agent 的長流程執行，&lt;code&gt;snarktank/ralph&lt;/code&gt; 是個很值得看一眼的小專案。它不是再做一個新的模型外殼，也不是再包一層聊天介面，而是把 &lt;code&gt;Claude Code&lt;/code&gt; 或 &lt;code&gt;Amp&lt;/code&gt; 組織成一個可以反覆運行的 autonomous loop，讓 AI 按 &lt;code&gt;PRD&lt;/code&gt; 裡的 story 一項一項往前做，直到全部完成。&lt;/p&gt;
&lt;p&gt;它的核心思路其實很直接：&lt;strong&gt;不要讓同一個 agent 在一個越來越長、越來越髒的上下文裡硬撐，而是每輪都重新啟動一個全新的 AI coding session。&lt;/strong&gt; 這樣做的好處是，上下文不會一路膨脹，任務邊界也更清楚。&lt;/p&gt;
&lt;h2 id=&#34;01-ralph-是什麼&#34;&gt;01 Ralph 是什麼
&lt;/h2&gt;&lt;p&gt;Ralph 的官方定位很明確：它是一個 autonomous AI agent loop，會反覆呼叫 AI coding tool，直到 &lt;code&gt;PRD&lt;/code&gt; 裡的項目都做完。&lt;/p&gt;
&lt;p&gt;目前倉庫支援兩種工具：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Amp CLI&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Claude Code&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;每一輪迭代都會啟動一個 fresh instance。也就是說，它不依賴「同一個會話一直聊下去」，而是依賴這些外部狀態來保存記憶：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;git 歷史&lt;/li&gt;
&lt;li&gt;&lt;code&gt;progress.txt&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;prd.json&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這點非常關鍵。很多人讓 agent 跑長任務時，最大的痛點不是模型不會寫，而是會話越跑越重，最後開始漏掉上下文、忘記要求、反覆返工。Ralph 的設計，基本就是衝著這個問題去的。&lt;/p&gt;
&lt;h2 id=&#34;02-它怎麼工作&#34;&gt;02 它怎麼工作
&lt;/h2&gt;&lt;p&gt;Ralph 的工作流分成三步：&lt;/p&gt;
&lt;h3 id=&#34;1-先寫-prd&#34;&gt;1. 先寫 PRD
&lt;/h3&gt;&lt;p&gt;README 建議先用配套的 &lt;code&gt;prd&lt;/code&gt; skill 生成需求文件，把功能拆成比較細的 story。&lt;/p&gt;
&lt;h3 id=&#34;2-再把-prd-轉成-prdjson&#34;&gt;2. 再把 PRD 轉成 &lt;code&gt;prd.json&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;然後用 &lt;code&gt;ralph&lt;/code&gt; skill，把 Markdown 版 PRD 轉成結構化的 &lt;code&gt;prd.json&lt;/code&gt;。這個檔案裡會保存 user stories，以及每一項是不是已經通過。&lt;/p&gt;
&lt;h3 id=&#34;3-執行循環腳本&#34;&gt;3. 執行循環腳本
&lt;/h3&gt;&lt;p&gt;真正執行的是 &lt;code&gt;ralph.sh&lt;/code&gt;。命令大致是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./scripts/ralph/ralph.sh &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;max_iterations&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./scripts/ralph/ralph.sh --tool claude &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;max_iterations&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;預設是 10 輪。每一輪大致會做這些事：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;從 &lt;code&gt;branchName&lt;/code&gt; 建立分支&lt;/li&gt;
&lt;li&gt;選擇優先級最高、&lt;code&gt;passes: false&lt;/code&gt; 的 story&lt;/li&gt;
&lt;li&gt;只實作這一項&lt;/li&gt;
&lt;li&gt;跑品質檢查，比如 typecheck 和 tests&lt;/li&gt;
&lt;li&gt;檢查通過後提交程式碼&lt;/li&gt;
&lt;li&gt;更新 &lt;code&gt;prd.json&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;把經驗追加到 &lt;code&gt;progress.txt&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;繼續下一輪&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;也就是說，Ralph 並不追求「一口氣把整件事做完」，而是把任務壓縮成很多個能在單個上下文視窗裡完成的小閉環。&lt;/p&gt;
&lt;h2 id=&#34;03-ralph-最有意思的地方&#34;&gt;03 Ralph 最有意思的地方
&lt;/h2&gt;&lt;h3 id=&#34;1-每輪都是-fresh-context&#34;&gt;1. 每輪都是 fresh context
&lt;/h3&gt;&lt;p&gt;這是 Ralph 最核心的設計點。README 強調，每次迭代都是一個新的 AI instance，跨輪記憶只靠 git、&lt;code&gt;progress.txt&lt;/code&gt; 和 &lt;code&gt;prd.json&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;這和很多人平常直接在一個長對話裡讓 Claude Code 或其他工具連續工作很不一樣。後者在任務變大後，很容易被歷史訊息拖慢，還會逐漸失去焦點。Ralph 則是主動接受「單輪記不住全部」，然後把記憶放到外部檔案裡。&lt;/p&gt;
&lt;h3 id=&#34;2-強制把任務拆小&#34;&gt;2. 強制把任務拆小
&lt;/h3&gt;&lt;p&gt;倉庫文件特別強調，單個 PRD item 必須小到能在一個 context window 裡完成。像「加一個篩選器」「改一個 server action」「補一欄資料庫欄位」這種粒度比較合適；而「重構整個 API」「做完整 dashboard」這種就太大了。&lt;/p&gt;
&lt;p&gt;這個約束其實很現實。很多 autonomous agent 跑崩，不是 loop 本身有問題，而是任務切分太粗，讓模型一輪裡就背了過量目標。&lt;/p&gt;
&lt;h3 id=&#34;3-不只是程式碼連經驗也要沉澱&#34;&gt;3. 不只是程式碼，連經驗也要沉澱
&lt;/h3&gt;&lt;p&gt;除了 &lt;code&gt;progress.txt&lt;/code&gt;，README 還特別強調要更新 &lt;code&gt;AGENTS.md&lt;/code&gt;。原因也很實際：未來迭代和未來開發者都會讀這些說明，所以每輪發現的模式、坑點、約定，最好都落到專案文件裡。&lt;/p&gt;
&lt;p&gt;換句話說，Ralph 不只是讓 agent 連續寫程式，也想讓它連續累積對程式碼庫的工作記憶。&lt;/p&gt;
&lt;h2 id=&#34;04-它適合什麼場景&#34;&gt;04 它適合什麼場景
&lt;/h2&gt;&lt;p&gt;如果你的任務具備這些特徵，Ralph 會比較對路：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;已經能拆成一組明確的 user stories&lt;/li&gt;
&lt;li&gt;程式碼庫裡有比較可靠的回饋回路，比如測試、typecheck、CI&lt;/li&gt;
&lt;li&gt;你希望 agent 持續推進，但不想把所有事壓在單個長對話裡&lt;/li&gt;
&lt;li&gt;你接受它按迭代方式一點點完成，而不是一次性全做完&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;反過來說，如果你的需求還很模糊，或者任務本身高度依賴來回討論、頻繁改方向，那 Ralph 可能還不是第一選擇。它更適合「需求已經整理好，現在需要穩定推進執行」的階段。&lt;/p&gt;
&lt;h2 id=&#34;05-它和一般-claude-code-用法有什麼不同&#34;&gt;05 它和一般 Claude Code 用法有什麼不同
&lt;/h2&gt;&lt;p&gt;如果平常直接用 &lt;code&gt;Claude Code&lt;/code&gt;，常見模式是你開一個會話，讓它持續讀程式碼、改程式碼、跑命令。這個方式在中小任務上很好用，但在大任務上容易碰到兩個問題：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;上下文越來越長&lt;/li&gt;
&lt;li&gt;中間決策不容易結構化沉澱&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ralph 的做法更像把 &lt;code&gt;Claude Code&lt;/code&gt; 或 &lt;code&gt;Amp&lt;/code&gt; 變成一個「批次執行器」：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;任務來源不是臨時聊天，而是 &lt;code&gt;prd.json&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;每輪只認一個 story&lt;/li&gt;
&lt;li&gt;完成狀態寫回檔案&lt;/li&gt;
&lt;li&gt;經驗寫進 &lt;code&gt;progress.txt&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;程式碼提交進 git&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以它更像是「給 coding agent 加了一層迭代控制器」，而不是換了一個新的 AI assistant。&lt;/p&gt;
&lt;h2 id=&#34;06-一個值得注意的前提&#34;&gt;06 一個值得注意的前提
&lt;/h2&gt;&lt;p&gt;Ralph 能不能跑順，關鍵不在 loop 本身，而在回饋回路夠不夠好。README 寫得很直接：如果沒有 typecheck、tests、CI 這些機制，錯誤會在後續迭代裡不斷累積。&lt;/p&gt;
&lt;p&gt;對前端任務來說，倉庫甚至明確建議把「用瀏覽器驗證」寫進 acceptance criteria。因為如果沒有實際驗證，agent 很容易把「看起來寫完了」和「真的可用」混在一起。&lt;/p&gt;
&lt;p&gt;這點很重要。Ralph 不是 magical automation，它更像是把你現有的工程紀律放大。如果你的專案本來就有清晰任務拆分和可靠檢查，它會更有價值；如果這些基礎還沒有，loop 只會把混亂重複很多次。&lt;/p&gt;
&lt;h2 id=&#34;07-一句話總結&#34;&gt;07 一句話總結
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Ralph&lt;/code&gt; 最值得看的地方，不是它寫了多少新基礎設施，而是它把一個樸素但很有用的思路落成了現成流程：&lt;strong&gt;讓 &lt;code&gt;Claude Code&lt;/code&gt; 或 &lt;code&gt;Amp&lt;/code&gt; 每輪只做一個足夠小的 story，用 fresh context 保持專注，再靠 &lt;code&gt;git&lt;/code&gt;、&lt;code&gt;prd.json&lt;/code&gt; 和 &lt;code&gt;progress.txt&lt;/code&gt; 維持跨輪連續性。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如果你已經開始把 coding agent 用到真實專案裡，並且正被「長任務怎麼穩定推進」這個問題困住，Ralph 這套方法很值得參考。&lt;/p&gt;
&lt;h2 id=&#34;參考連結&#34;&gt;參考連結
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;GitHub 倉庫：&lt;a class=&#34;link&#34; href=&#34;https://github.com/snarktank/ralph&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/snarktank/ralph&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;互動式流程圖：&lt;a class=&#34;link&#34; href=&#34;https://snarktank.github.io&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://snarktank.github.io&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        
    </channel>
</rss>
