PinchTab 修复记录
日期:2026-07-10 | 修复人:Hermes Agent
PinchTab 自 Jul 3 服务重启后持续 7 天处于 Token 异常状态,所有 MCP 调用返回 401。实际存在 3 个独立故障 累积导致完全不可用。
🔴 故障一:两处 config.json Token 不一致
| 位置 | 路径 | Token |
|---|---|---|
| 运行配置 | /opt/data/.pinchtab/config.json | 3df8213a... |
| 用户配置 | /opt/data/home/.pinchtab/config.json | b926b390... |
根因: server 启动时从 home/.pinchtab/ 加载配置(token=b926),但 MCP 进程和外部工具从 .pinchtab/ 读取(token=3df8)。两个 token 不同,所有请求均返回 bad_token。
修复:
cp /opt/data/home/.pinchtab/config.json /opt/data/.pinchtab/config.json
🔴 故障二:headless_shell 路径指向旧版本
| 配置值 | 实际存在 |
|---|---|
.../chromium_headless_shell-1223/... | ❌ 不存在 |
.../chromium_headless_shell-1228/... | ✅ 存在 |
根因: Hermes 容器镜像升级后 headless_shell 从 1223 更新到 1228,但 PinchTab 的 browser.binary 配置未同步更新。实例因此卡在 "starting" 状态,Chrome 无法启动。
修复:
pinchtab config set browser.binary /opt/hermes/.playwright/chromium_headless_shell-1228/chrome-linux/headless_shell
🔴 故障三:server 进程被 kill 后未自动重启
现象: MCP 子进程(PID 14348/14360)仍在运行(由 Hermes Gateway 管理),但 server 主进程(原 PID 14125)和 bridge 进程(原 PID 19956)已被 kill。MCP 尝试连接 server 失败,表现为 ClosedResourceError。
根因: 在排查过程中 kill 了 server 进程,但 Hermes Gateway 在容器内不可用 hermes gateway restart 命令(会 kill 自身容器),无法自动拉起新 server 进程。
修复:
# 后台启动 server(pid 57604)
/opt/data/home/.pinchtab/bin/pinchtab server
✅ 修复验证
| 验证项 | 结果 |
|---|---|
mcp_pinchtab_health | ✅ 200 OK, instance=running |
mcp_pinchtab_navigate(example.com) | ✅ 返回 title="Example Domain" |
| 两处 config.json 一致性 | ✅ diff 无差异 |
| browser.binary 路径 | ✅ 指向 1228 版本 |
⚠️ 待处理问题
- MCP 进程未自动接管新 server:Gateway 管理的两个旧 MCP 子进程(14348/14360)已随原 server 一起被清理,新 server 启动后需等待 Gateway 重新建立 MCP 连接。当前通过
mcp_pinchtab_*工具调用正常,但若 Gateway 容器重启,需确认 MCP 链路自动恢复。 - 容器内无法执行
hermes gateway restart:该命令会 SIGTERM 传播到子进程杀死自身。如果需要彻底的重启流程,需在宿主机上执行docker restart <container>。
— 本文为 YBWtgWnqg3dh 的子笔记