把一套带代码检索的排障运行时丢进 Docker 之后,失败很少发生在「容器没起来」,更多是起来了但 Case 是空的。最近把 RootSeeker V2 在国内网络下过了一遍,下面按实际排查顺序记,不按官方 README 抄。
当前文档版本是 v1.3.2。它不是聊天窗口,而是:告警或粘贴堆栈 → Case → playbook 规划 MCP 工具 → 日志 / Trace / 代码索引 → 报告。所以验证不能只看 docker compose ps 全绿。
国内机器不要走错安装入口
同一仓库有两套外壳:setup.ps1 / setup.sh 走 Docker Hub;setup-cn.ps1 / setup-cn.sh 会设 ROOTSEEKER_SETUP_REGION=cn,镜像优先从杭州 ACR 拉预构建包。国内环境用后者,否则卡在 Zoekt / GitNexus 编译或 Hub 限流,看起来像「向导挂了」。
真正编排的是 scripts/setup_wizard.py。进度在 .setup-state.json,中断后 --resume 比重头跑干净。--pull 表示用预构建镜像;--status 只打印步骤,适合判断卡在拉包还是健康检查。
克隆后先 cp .env.docker .env,再跑国内向导。Windows 非交互可以:
powershell
.\setup-cn.ps1 --yes --path docker --storage mysql --pull
Linux / macOS:
bash
chmod +x setup-cn.sh
./setup-cn.sh --yes --path docker --storage mysql --pull
没有 Docker 时向导会问 SQLite、便携 MySQL 或已有实例。便携 MySQL 听 127.0.0.1:3307,数据在 .tools/mysql-data/,就是为了避开系统 3306。--storage existing-mysql 再加 --yes 时,默认连 127.0.0.1:3306 和库用户 rootseeker,本机没有这个库会直接失败,不像交互模式那样会问你。
健康检查顺序比「全绿」更有用
默认可以不配外网大模型:Compose 里的 MySQL + hash embedding 就能把栈撑起来。ROOTSEEKER_LLM_* 只影响报告文案,不影响 Case 能不能建。
我建议按依赖从外到内看:
- API:
8000/healthz。这里挂了,后面的 Admin 和排障都不用看。 - Admin:
8010/admin。v1.3.2 登录后会先到站点首页,控制台仍是/admin。错误排查助手、仓库同步、MCP 工具列表都在控制台。 - 索引:Zoekt
6070(搜索)和6071(远程索引)、Qdrant6333、GitNexus7474。这三套没就绪,堆栈对不上仓库,报告会像「模型在猜」。 - 跑一次默认流程:Admin 里粘贴堆栈,或
POST /cases/run-default。Webhook、这个 API、助手三条入口会并成同一个 Case。通知走渠道模板,Agent 不会自己决定notify.send。
只改 Python、索引仍放容器时,Windows 用 .\scripts\start-local.ps1。它把本机 repos 映射进 Zoekt / GitNexus。映射两端不是同一目录时,检索能命中、报告里的路径却打不开------这是 hybrid 模式最高频的问题,优先对 ROOTSEEKER_ZOEKT_PATH_MAP 和 ROOTSEEKER_GITNEXUS_PATH_MAP。
看起来在跑、其实在用错存储
旧 .env 里如果还留着 ROOTSEEKER_STORAGE_BACKEND=sqlite,会覆盖 Compose 默认的 mysql。表现是容器正常,Case 却不在你连的那台 MySQL 里。对照 .env.docker 改回 mysql 即可。
卸载脚本是全清:停进程、down -v、删 .env、.venv、.tools、data/*。镜像和源码会留。还想留 Case 时不要跑 uninstall。
Case 失败时看错误码,不要只看容器状态。缺 planner、工具超时、索引未就绪,会进 failed 并带原因,不会退回已经删掉的 YAML 步进器。这是有意的:值班需要可解释的失败,而不是「还在跑但什么都没查」。
索引要接真实向量时,再把 ROOTSEEKER_EMBEDDING_PROVIDER 从 hash 改成 OpenAI 兼容接口。报告要模型润色时再配 LLM。两步都可以后补。
这套东西适合已经有日志和监控、缺的是「现场 + 代码命中 + 结论」收成一条可回放 Case 的团队。它还不是交钥匙 ChatOps:Agent 自修复和审批策略仍是部分完成。先把索引和默认 playbook 跑通,比一上来调提示词有用。
项目在 Gitee,路径是 icey_1/root-seeker-v2,许可证 MIT。