内网首次运行检查清单（按顺序执行）

1) 容器是否正常启动
   - docker ps -a
   - docker logs -f opencode
   - 检查日志是否有明显错误或成功启动提示

2) opencode CLI 就绪
   - docker exec -it opencode which opencode || true
   - docker exec -it opencode opencode --version

3) pyright (Python LSP)
   - docker exec -it opencode pyright --version
   - docker exec -it opencode pyright-langserver --version

4) excel-mcp-server (Python MCP)
   - docker exec -it opencode excel-mcp-server --help
   - 或: docker exec -it opencode python3.11 -m excel_mcp_server --help

5) 本地 MCP node 模块
   - docker exec -it opencode ls -la /root/.config/opencode/mcp/postgres/node_modules/@modelcontextprotocol/server-postgres
   - docker exec -it opencode ls -la /root/.config/opencode/mcp/filesystem/node_modules/@modelcontextprotocol/server-filesystem

6) 单独启动 MCP 进行验证（需内网可达服务）
   - Postgres MCP（需 POSTGRES_CONN 可达）:
     docker exec -it opencode node /root/.config/opencode/mcp/postgres/node_modules/@modelcontextprotocol/server-postgres/dist/index.js "$POSTGRES_CONN"

   - Filesystem MCP:
     docker exec -it opencode node /root/.config/opencode/mcp/filesystem/node_modules/@modelcontextprotocol/server-filesystem/dist/index.js /workspace

   - Excel MCP:
     docker exec -it opencode excel-mcp-server stdio

7) 验证配置占位替换
   - 若使用 entrypoint 替换: docker exec -it opencode cat /root/.config/opencode/opencode.json | grep -E "RUIZHI_BASE_URL|POSTGRES_CONN" -n
   - 若绕过 entrypoint: 在 opencode 日志中确认 provider/mcp 已正确解析环境变量

8) 验证模型提供者连接
   - docker exec -it opencode sh -c 'curl -fsS -m 5 "$RUIZHI_BASE_URL" || echo "curl failed (可能需要 API 请求)"'
   - 检查 opencode 日志中 provider/模型相关的输出（认证失败/超时等）

常见排查:
 - 若命令不存在，进入容器查找 /usr/local/bin、/usr/bin、/root/.local/bin
 - MCP 连接失败：在容器中用 curl 或 psql 测试连通性并检查防火墙
 - 挂载 opencode.json 为只读时，entrypoint 无法覆盖文件，会保留替换后的 .tmp 文件
