arc drain 是一個真實的 CLI 處理程序,不是一次對話輪次——殺掉啟動它的那個工作階段不會讓它停下來,只有殺掉這個處理程序本身才行。它訂閱 /dev/code-agents(或者你用 --subscribe-path 傳的路徑),每次被喚醒時就從工作臺帳裡認領就緒的工作,然後執行 /dev/code-agents/.actions/run 處理認領到的工作。就緒集合為空時以 0 退出;arc drain 自己從不創建臺帳行,只消費它們。
用法
arc drain --cwd <dir> [options]--cwd <dir>(必填,沒有預設值):傳給/dev/code-agents/.actions/run的工作目錄。不能是 daemon 自己的專案 checkout--work-root <path>:工作集合的根,也就是哪個 AFS 路徑存工作記錄(預設/work)--subscribe-path <path>:訂閱喚醒事件的 AFS 路徑字首,比如/dev/code-agents或/settled(預設/dev/code-agents)--engine <id>:只派給這個 engine id(預設:第一個空閒的 dispatch target)--peer <id>:只派給這個 peer id(預設:第一個空閒線上的 peer)
全域選項(見 總覽):--json、--view、--instance / -i(作用在哪個本地 ARC 例項;省略即 default),以及 --home(例項根;要指定作用在哪個例項,用 --instance)。--standalone 也是全域的(ad-hoc 模式:從當前目錄的本地配置載入 AFS,而不是連線正在跑的 daemon)。實踐中 drain 通常就作用在預設例項上,除非你傳 --instance。
arc drain 期望目標例項的 daemon 已經在跑(比如先 arc service start)。讓 drain 自己去自動起,走的是一條更精簡的 AFS 引導路徑,不帶預設的 /work 掛載,於是還沒碰到臺帳就先報錯:No module found for path: /work in namespace 'default'。
示例(空的就緒集合,daemon 已經在跑)
$ arc drain --cwd /path/to/a/work/tree
ready set empty按 Ctrl-C(SIGINT)或者發 SIGTERM 可以停止 drain;兩者都會乾淨地中止當前的等待。
示例(缺少必填選項)
$ arc drain
ERROR: --cwd is required (no default — must not be the daemon's own project checkout)