PinchTab 修复记录 2026-07-10

PinchTab 修复记录

日期:2026-07-10 | 修复人:Hermes Agent

PinchTab 自 Jul 3 服务重启后持续 7 天处于 Token 异常状态,所有 MCP 调用返回 401。实际存在 3 个独立故障 累积导致完全不可用。


🔴 故障一:两处 config.json Token 不一致

位置路径Token
运行配置/opt/data/.pinchtab/config.json3df8213a...
用户配置/opt/data/home/.pinchtab/config.jsonb926b390...

根因: 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 的子笔记