--- type: receipt status: active created: 2026-09-01 --- # 控制面实现交付记录 > 对应 `contract-20260901-browser-impl` / `plan-20260901-03`(实现)+ `plan-20260901-04`(W6 热修)。 > 机制细节仍以 `design-arch-20260901.md` 为准;决策以 `plan-final-20260901.md` 为准。 ## 交付了什么 | 块 | 路径 | |---|---| | 单二进制三角色 | `server/cmd/browser-server`(`-role=gateway\|scheduler\|proxymanager`) | | 公共包 | `server/internal/{contract,store,auth,policy,safetyscan,httpx,config}` | | 五 Dock 适配器 | `server/internal/dock`(searxng-cn/global、trafilatura、lightpanda、headless-shell) | | Swarm stack | `stacks/browser-server.yml`(10 服务;shell `replicas=0`) | | 本机冒烟 / 部署脚本 | `scripts/smoke-local.sh` · `scripts/deploy-mgr1.sh` | | 镜像 | `onesvm/browser-server:dev` · `onesvm/trafilatura-http:dev`(日常复用 tag) | ## 怎么跑 ```bash # 单测 make test # 本机 compose 冒烟(stub 引擎) make smoke # mgr1 部署(须用户 🟡 确认;读 gitignore deploy.env) bash scripts/deploy-mgr1.sh # dry-run bash scripts/deploy-mgr1.sh --apply ``` 入口:`http://192.168.1.51:8640`(MCP `POST /mcp`,HTTP `POST /v1/search` `/v1/read`)。认证头 `X-Service-Token`。 ## 验收链 - 实现轮:V1 verify → ITER-3 → V2 reverify PASS → V3 arch-review PASS-with-debt → ITER-4(D-1/D-2) - 部署轮 W6:stack 已在 mgr1;海外订阅经 central-proxy bootstrap;探活 `alive=41/52`(2026-09-02) - 国内/MCP 冒烟(同日):401 / 签发 / `tools/list=[search,read]` / MCP `tools/call` 200;`/v1/search` `/v1/read` 信封 200 但 `error=upstream`(searxng-cn 上游超时/空结果,网关未崩) - 产物(gitignore):`.dsh/artifacts/run-20260901-browser-impl/` ## W6 热修(已入镜像) - `BROWSER_SERVER_SUB_FETCH_PROXY`:仅订阅拉取走 `.53:7890` - mihomo 卷 nonroot 可写;热载路径用容器内 `/root/.config/mihomo/config.yaml` - 生成配置剥离 dns/geosite;mihomo limit **128m** - `NewManager` 接线 mihomo delay 探针(修全池探活 nil panic)