版本与诊断

四条命令能答掉几乎所有「它怎么这样」,三样东西能让几乎任何一份报障变得可回答。

这是哪一版

$ icloser version

手机端与管理台上,它在「关于」那一屏。「最新」不是一个版本号。同为 1.0.2 的两次构建表现可以不一样 —— 这也正是这个站每一页页脚都印着构建印记的原因。

这台机器现在能不能用

$ icloser doctor

把那些必须成立的事过一遍:有没有工作区、Agent 在不在跑、装没装一个用得了的 Runtime、权限允不允许你要做的事。它答的是整个问题,不是其中一块。

为什么什么都没发生

几乎总是这三件事之一,按这个顺序查:

  1. Agent 没在跑。

    icloser agents 显示谁在跑、各自绑在哪个工作区上。没有东西在跑,就没有东西会接这条任务。

  2. 在跑,但绑在另一个工作区上。

    还是 icloser agents。在管理台里切工作区改的是配置,而 执行体 是启动那一刻绑定它的工作区的。切了好像没反应时,先看这条,别的都先放一边。

  3. 它接了,然后停下来问权限。

    icloser perms 显示这台设备可以做什么,icloser approval list 显示什么在等你。一条停下来问的任务是对的 —— 它在动手之前就停住了,所以等的这段时间里没有任何东西是做了一半的。

它一直在说什么

$ icloser logs -n 50

常驻 Agent 的最近几行。加 -f 可以跟着看。

报障

三样东西能让几乎任何一份报障变得可回答。没有它们,第一句回复只能是「请补上这三样」。

  1. 版本与构建号

    icloser version,或者「关于」那一屏。

  2. 任务 id

    写在那条任务自己的卡片上。有了它我们能指着时间线和改动说话,而不是照着一段描述猜。

  3. 你以为会发生什么,实际发生了什么

    分开写。「它不工作」把这两件事压成了一件,而丢掉的正是要紧的那一半。

发到哪儿:支持

出问题了 —— 先敲哪一条

四条命令,四种不同的处境。抓错一条不是没事:其中两条只读,另外两条会真的改动你的机器或你的队列。

$ icloser doctor

什么时候用它 「我这台机器现在能不能用」—— 在你开始猜原因之前先敲的那一条。

它到底做了什么 把「同时必须成立」的那几件事一趟过一遍:装的是哪一版、网关答不答话、这个工作区的凭据还管不管用、执行体到底在不在跑、这台机器够得着哪几家Runtime。它只读,什么都不改。

$ icloser env probe

什么时候用它 员工说他做不了一件他本该做得了的事 —— 编译、跑测试、出包。

它到底做了什么 探测这台机器上的开发工具链(Go / Java / Android / Xcode / Node …),逐个说出在不在、是什么版本。它只跑 --versionwhich:不消耗模型额度、不碰工作区凭据,所以一台还没配过的机器上它也答得出来。

$ icloser env bootstrap

什么时候用它 probe 刚告诉你缺了什么,而你不想一个个去找安装包。

它到底做了什么probe 探出来的缺口,用这个平台自己的包管理器补齐。它是同一对里会写的那一半 —— 先跑 probe 看清楚,因为这条会真的改动你的机器。

$ icloser task recover

什么时候用它 一条任务一直挂在「执行中」而什么都没发生 —— 认领它的那台机器关了、睡了,或者执行体跑到一半被换掉了。

它到底做了什么 把那条任务放回队列,让任何一台合格的执行体接走。任务 id 不变。这是「认领之后没有出口」那个死局的出口 —— 原本只有认领它的那台机器能收尾,而那台机器已经不在了。

对已经发出去的任务下手

每一条都认 icloser task list 打出来的短 id,不用你去别处找全长的。每一条打完还会把服务端给的新状态读回来印出去 —— 所以「这条任务此刻不能暂停」不会长得和成功一模一样。

命令它做什么
icloser task cancel <id>停掉它。正在跑的那一趟会在执行体下一次心跳时停下来 —— 服务端杀不了你机器上的进程。
icloser task pause <id>先按住。不丢进度:resume 之后同一条任务接着做,不是重头来。
icloser task resume <id>让一条暂停的任务继续。
icloser task retry <id>同一条任务(id 不变)放回队列重跑。它会真的起 Runtime,消耗你自己的模型额度。
icloser task recover <id>把一条卡住的认领交还队列。没人在管它了的时候用这条 —— 见上面那一节。
icloser task followup <id> "你要补充的话"同一条任务追加指令,不是新开一条。执行体会带着它接着做。
icloser task accept <id>确认这份交付。这是整条链路上属于人的那一下。
icloser task choose <id> <你选的那一项>回答一条停下来问你「走哪条路」的任务。你的选择写回同一条任务并续跑。
icloser task archive <id>把它挪开。什么都没销毁。
icloser task unarchive <id>把归档的任务放回列表。
icloser task delete <id> --yes
--yes
从列表里彻底消失 —— --all 也找不回来

表往旁边拉 →

除了 retry(它真的会重跑),这些都不问任何 Runtime —— 其余只是把任务在状态之间挪一下。
还是卡着?支持 —— 怎么找到人。