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)