跳到正文
文档目录

参考

问题排查

真正会出问题的那些事——状态点不动、Agent 起不来、重启之后会话不见了、一台机器不应答了、手机连不上——每一条都给一个去看而不是去猜的办法。

几乎所有看起来像 Fyolo bug 的东西,都是下面这些情况之一,而每一条都有一个去查而不是去猜的 办法。在提任何问题之前,先从这里开始。

先跑这三条

在任何机器、任何状态下,这三条能回答掉大部分问题:

fyolod status                 # 这里装了什么,有没有 daemon 在应答?
fyolod list                   # 它手上有哪些会话?
fyolod logs -n 200            # 没人看着的时候发生了什么

尤其是 fyolod status,它终结了相当一部分「它坏了」的报告:它会说装的是哪个二进制、哪个 版本,以及 socket 上到底有没有东西在听。想问另一台机器,fyolod list --host <box> 会通过 你自己的 SSH 配置去查那台机器上的 daemon。

状态点从来不变

侧栏的状态点来自装进每个 Agent 自己配置里的 hooks,而它们是 按设备安装的。一台在你打开这个功能之前就设置好的机器上的 Agent 没有 hooks,所以它什么 也不汇报,Fyolo 只能退回去读屏幕。

打开设置 ▸ 远程主机,选中那台机器,进入它的 Agent 页面,按重新安装 Hooks 和技能。 本机上对应的修法是设置 ▸ Agent 里的安装到本机。参见 状态 hooks 与会话控制。

Agent 停在「要信任这些 hooks 吗?」的提示上

有些 Agent 会校验自己的 hook 文件,并拒绝运行内容变过的 hooks——Codex 会显示 Modified since last trusted 然后停在那里等。这一条很难受,因为 hooks 就是状态通道: 在你回答之前,Agent 什么也不汇报,所以侧栏显示的是它最后知道的状态,而不是需要你。

如果一个会话看起来空闲但什么也没发生,去看那个窗格本身。回答一次提示,状态就恢复了。Fyolo 会在启动时重新写入自己的 hooks(正是这件事让别的工具没法悄悄替换掉它们),所以这个提示可能 在一次更新之后再来一次。

Agent 起不来,或者瞬间就退出

一个窗格立刻死掉并显示「failed to launch」,几乎总是 PATH 的问题,而不是 Agent 的问题。 Fyolo 通过你真正的登录 shell 启动 Agent,所以你的配置准备的一切都在——但一个装在你的配置 没加进来的位置上的命令行工具,仍然是看不见的。

打开设置 ▸ Agents 看那个 Agent 那一行:Fyolo 会解析你登录 shell 的 PATH,并把它找 不到的命令标出来。要么修你的 shell 配置,要么把绝对路径(/opt/homebrew/bin/codex)填进 命令字段。这个字段是按设备的,所以要在出问题的那台机器上填。

状态 hooks 本来好好的,突然不工作了

Agent 的配置文件是公共地盘——别的 Agent 管理工具也往同一个 ~/.claude/settings.json 和 ~/.codex/hooks.json 里写,而有些是整块替换 hooks 而不是合并进去。发生这种事时,Fyolo 收不到汇报,状态就退回去读屏幕。

Fyolo 会在启动时、以及在你把它切回前台时重新写入自己的 hooks,所以在本机上这通常会自己 好。这一遍只扫本机:另一台机器上是什么样就一直是什么样,直到你去那边修——在那台机器的 Agent 页面上按重新安装 Hooks 和技能。

fyolo sessions 说 disabled

编排 API 是可选的。打开设置 ▸ Agents ▸ 会话控制,它同时会安装 fyolo 技能,让 Agent 知道这些命令存在。

每一个 CLI 错误都是同一个形状,并带一个非零退出码,所以脚本可以基于 error 分支而不用去解 散文——错误码列在 JSON 约定里。

fyolo: command not found

这个命令是应用替你装的一个软链:设置 ▸ Fyolo server ▸ 命令行 ▸ 命令行工具,它把 fyolo 链接到 /usr/local/bin(macOS 会问你一次)。如果开关本来就是开的,开一个新的 shell——在软链存在之前就起的会话里,PATH 的缓存是旧的。fyolod 是另一个命令,它住在 每台机器上;参见 Fyolo server。

重启之后会话不见了

没有服务的话,server 只活到你这次登录会话结束为止。装一个,它就能扛过登出、崩溃和重启:

fyolod service install
fyolod service status

这是远程机器上最常见的意外——那上面根本没人交互式登录过。参见 Fyolo server和什么会留下来。

一台机器不应答了

从外往里查。如果普通的 ssh 都失败,Fyolo 也一样会失败——它用的是你自己的 ~/.ssh/config,从不携带自己的凭据。

ssh mybox true                 # SSH 本身通不通?
fyolod list --host mybox      # 那边的 server 在应答吗?
fyolod deploy --host mybox    # 重装并校验一遍

deploy 是一次对账,所以对一台状态糟糕的机器跑它是安全的。密钥是到处都能用的那种凭据, 包括给那台机器上已经在跑的会话用;一个带密码短语的密钥需要先加载进 ssh-agent,和任何 非交互式的 ssh 一样。那台机器自己的页面上有一个测试按钮,会说出你遇到的是哪一种 结果——参见远程主机。

iPhone 应用连不上某台机器

配对把手机绑定到一个地址上。按顺序检查:

  1. 机器醒着吗? 睡着的 Mac 什么也不应答,而且应用里没有任何东西能从外面把它叫醒。如果 你想让这件事一直成立,就配对到一台一直开着的机器上——参见 什么会留下来。
  2. 发布了吗? 设置 ▸ 手机里那台机器必须是已发布的;在同一个 Wi-Fi 下,这就够了。
  3. 在外面时,有隧道吗? 离开你自己的网络,机器需要一个地址——设置 ▸ 手机 ▸ 隧道, 或者你自己的。
  4. Token 换过吗? **更换 Token…**按设计会让每一台已配对的手机登出。重新扫一次二维码。

参见 iOS 应用。

通知不出现

任务通知和其他系统权限一样:macOS 只问一次,如果当时拒绝了,应用就没法再问。去 系统设置 ▸ 通知 ▸ Fyolo 看一下,再确认设置 ▸ Agent ▸ 通知里的任务完成是 开着的。

它们也是有意安静的。一轮在 Fyolo 处于最前面的时候跑完,是不会通知的——你本来就在看着 它——只花了一瞬的一轮也不会。

有东西不对劲,而你想要证据

server 会记录没人附着时发生过什么——而那恰恰是 bug 最爱掉进去的那段窗口。

fyolod logs -n 200            # 最近的尾部
fyolod logs -f                # 实时跟着看
fyolod logs --path            # 文件本身,用来提 bug

在复现一个时有时无的问题?让 fyolod logs -f 自己占一个窗格跑着。这份日志是唯一一份 横跨了「你不在」那段时间的记录。

还是卡住了

去 github.com/fl0wo/fyolo 开一个 issue,附上 fyolod status 的输出和 fyolod logs 的尾部。这两样回答了维护者本来要问的 大部分问题。再加上 macOS 版本、Fyolo 版本,以及会话是在本机还是在另一台机器上。

文档