故障排查

本页聚合使用 Backlog.md 时的常见故障,每节按「症状 → 原因 → 处置」组织。各功能页的详细说明仍归原页,这里只做排错索引与处置建议。

Web 端口被占用

症状:启动 backlog browser 时端口不可用,或访问的地址打不开。

原因:默认端口 6420 已被其他进程占用。

处置:

  • 默认 autoPort: true,端口占用时服务器会自动扫描后续可用端口并在终端打印真实地址(如 http://localhost:6421),照抄控制台输出即可,不算故障。
  • 若关了 autoPort,占用会直接报 EADDRINUSE——用 backlog browser --port 8080 显式指定端口。
  • 自动扫描只接受用户端口范围(1024–65535)内的端口,拒绝操作系统临时分配的随机高位端口。

详见启动与访问与配置管理的 Web UI 一节。

图谱一直 building / 锁冲突

症状:图谱页面长时间显示加载中,/api/graph 一直返回 building;或启动时报锁冲突。

原因:图谱槽位的锁同一时刻只允许一个进程持有。持有方进程已退出时锁会自动回收,不会卡 building;卡 building 通常是持有方进程仍活着(例如另一个浏览器会话或残留的 backlog browser 进程)。

处置:

  • 持有方进程已退出时无需操作,锁自动回收、自动重建。
  • 持有方仍存活时,交互终端会询问是否接管锁——确认前请先确实旧进程已不再需要图谱。
  • 两个浏览器会话各持有独立数据库(按项目路径哈希分槽),互不争抢;排查时确认是否为同一项目起了多个服务进程。
  • 可用环境变量 BACKLOG_GRAPH_CACHE_DIR 覆盖缓存目录;BACKLOG_GRAPH_BACKEND=kuzu 已不再是合法取值(原生依赖已移除),能覆盖的只有 memory。
  • Cypher 检索不可用(图谱页搜不到内容、backlog graph query 报错)时先看终端有没有 [graph] RyuGraph (WASM) backend init failed for <path>, falling back to memory 告警:有则后端已降级到内存(无 Cypher),按告警末尾的原因区分「路径对 WASM 不可见」(v1.53.9 已修复)与「引擎故障」(需上报)。

watch / 文件变更不刷新

症状:TUI 看板、Web 界面或 task list --json --watch 没有反映刚做的修改。

原因与处置:

  • TUI 看板:底层用 Bun.watch 监听任务目录。它对原子写入具有弹性(等待文件稳定后再刷新),但确认你修改的是当前项目的 backlog/ 目录——用 --cwd / BACKLOG_CWD 启动的实例只看各自解析到的项目。
  • --json --watch:通知是提示性的,1 秒的 reconcile tick 会用文件 stat 签名兜底修复漏掉的事件;签名不变就不重复输出。确认监听进程的上游程序还活着(启动方退出即停)。
  • Web 界面:通过 WebSocket 广播刷新。整页不刷新时先确认浏览器控制台 WebSocket 连接正常;CLI / TUI / MCP 的写入都会触发通知。

macOS 报 illegal hardware instruction / 架构不匹配

症状(M 系列 Mac):运行 backlog 报 illegal hardware instruction 或 Binary package not installed for darwin-...。

原因:Node、Bun 或 Homebrew 以 Rosetta(x64 模拟)方式运行,却安装了与原生 CPU 架构不匹配的 Intel 版二进制。

处置:先检查各工具报告的架构:

uname -m                            # arm64 = Apple Silicon 硬件;x86_64 = Intel 或 Rosetta shell
node -p process.arch                # Node/Bun 运行时架构
sysctl -in sysctl.proc_translated   # 1 = 当前 shell 运行于 Rosetta 之下
which brew                          # /opt/homebrew = arm64 brew,/usr/local = Intel brew

架构不一致时用原生架构重装:

brew reinstall backlog-md                    # 上游 formula;先确认 which brew 输出 /opt/homebrew
arch -arm64 npm i -g @kuwork/backlog.md
arch -arm64 bun add -g @kuwork/backlog.md

刻意在 Rosetta 下运行 x64 Node 也可以:启动器会回退到实际已安装的任一 backlog.md-darwin-* 包。详见安装与初始化。

watch 进程空转 CPU 高(旧版本)

症状:backlog task list --json --watch 在无事发生时仍持续占用高 CPU(大仓库实测约 35–42%)。

原因:旧版本的 1 秒 reconcile tick 无条件重复完整任务列表读取;成本随仓库规模增长。

处置:升级到最新版本——空转时每秒只做一次廉价的 stat 签名比较,CPU 降到 1% 以下,输出与延迟不变。浏览器与 TUI 的 watcher 无此轮询,不受影响。

MCP 连接问题

症状:AI 客户端报告 MCP 服务器启动失败、超时,或任务写入到了错误项目。

处置:详见 MCP 工作流的「常见问题」:

  • 启动失败/超时:多为本地 backlog 命令解析到陈旧二进制——重新构建、用 codex mcp add backlog -- backlog mcp start 格式注册,并单独测试 backlog mcp start。
  • 写入错误项目:升级到最新版本(服务器跟随客户端 workspace roots),或 backlog mcp start --cwd <path> 固定目录。

按 E 打开编辑器无响应

症状:TUI / Web 中按 E 打开编辑器后界面挂起或编辑器不启动。

原因与处置:多见于默认编辑器 code --wait 会挂住无人值守的代理进程,或编辑器路径含参数解析失败。

  • 清除默认编辑器:backlog config set defaultEditor ""
  • 或用 EDITOR 环境变量按次覆盖:EDITOR=nvim backlog board
  • 编辑器路径含参数时请写完整可执行路径或用包装脚本;颜色异常时设 TERM=xterm-256color

详见配置管理的「编辑器解析优先级」一节。

results matching ""

    No results matching ""