部署指南
补编设计稿,编写日期:2026-10-20。本文描述待实现的部署方案,不证明服务、安装包、配置或部署能力已经存在。
实际实施状态以阅读导航为准;技术约束以项目根目录 AGENTS.md 为准。
文档边界与参数来源
- 本文用于准备实施与验收,不授权连接生产服务器、创建真实账号、配对真实设备或执行上线操作。
- 架构选择及运行参数统一引用设计决策与参数基线中的编号。
- D01、D02 确定首版服务形态与任务分发方式;D03、D04、D05 分别约束网页会话、浏览器出口和 Windows 运行方式。
- 容量使用 P01,任务期限使用 P02,连接检测使用 P03,数据保留使用 P09,备份恢复目标使用 P10。
- 参数基线中的建议默认值是待验证、待上线确认的目标,不代表已通过压测或已有可用性承诺。
- 当前没有可据以执行的 Compose、Nginx、环境文件、迁移命令或安装脚本;实现后由 README 记录实际命令,本文不虚构可运行指令。
开工前需要解决的问题
| 问题 |
对实施的影响 |
可交付的确认结果 |
| 基线决策能否满足试点需求 |
决定首版部署拓扑和容量边界 |
接受 D01 与 P01,或记录需要修改的约束 |
| Windows 使用场景和受控测试设备 |
决定标准用户运行与浏览器执行验证方式 |
指定经过授权的测试设备、账号与交互会话 |
| 浏览器允许访问的业务目标 |
决定 D04 的网络策略和测试样本 |
给出允许目标、必要子资源和明确拒绝的目标类别 |
| 协议、任务状态和执行许可边界 |
决定断线恢复及撤销行为能否一致 |
按 D06、D07 审定共享契约和关键竞态处理 |
| 仓库工具和依赖选择 |
决定构建、迁移与验证命令 |
实施时建立并验证对应配置,再补写 README |
以上为影响正确实现的前置问题。正式域名、证书、备份服务与生产管理员信息属于上线准备;开发环境工作不因这些生产信息尚缺而一概停止。
目标部署拓扑
- 浏览器访问同源 HTTPS 入口;Nginx 提供 Web 静态资源,并代理 HTTP API 和 WebSocket。
- API 按 D01 以模块化单体运行,首版明确采用单 API 实例、单 worker;内嵌分发扫描器由该实例管理生命周期。
- MySQL 8.4 LTS 保存业务事实;任务、事件、待分发记录及审计具有明确的事务边界,详见 D02。
- Windows Agent 从已登记设备主动建立 WSS 出站连接,不接受公网入站控制连接。
- Compose 管理服务器组件;Nginx 可以由宝塔统一管理,但仍是同一个对外入口,不同时建立另一个 Caddy 入口。
- Redis、独立任务队列和独立协调组件不作为首版必需依赖;扩容必须重新设计连接归属、分发协调和撤销传播,不能仅增加 worker。
- 试点规模以 P01 为上限设计假设;达到建议容量并不自动意味着性能已经通过验收。
网络与入口配置要求
| 入口或连接 |
规划规则 |
验收证据 |
| Web 与 API |
同源 HTTPS;API 前缀保持 /api/v1 |
路由、证书链、会话与 CSRF 验证结果 |
| Agent WebSocket |
/ws/agent,设备凭据单独校验 |
真实设备握手、重连、撤销与旧连接失效记录 |
| 控制台 WebSocket |
/ws/console,订阅对象逐一授权 |
越权拒绝、权限变化与历史事件补齐记录 |
| 数据库 |
内部网络访问,不向公网发布数据库端口 |
网络探测结果、访问规则和业务账号授权清单 |
| 管理访问 |
仅限批准的管理来源 |
管理入口访问控制记录 |
| Agent 浏览器出口 |
执行 D04,约束实际目标及页面附带请求 |
允许与拒绝路径的真实网络测试记录 |
- 若保留 HTTP 入口,仅用于证书验证或跳转 HTTPS;不得通过 HTTP 接收生产登录或设备凭据。
- Nginx 应支持 WebSocket 升级,连接相关超时与 P03 协调,并限制请求体、消息及连接资源。
- 代理头只信任已配置的反向代理,不能直接信任客户端提交的转发来源、协议或身份信息。
- 长期凭据不得放入 WebSocket URL;日志规则同时覆盖查询参数、认证头、Cookie 和敏感请求体。
- TLS 校验失败应停止连接并报告原因;不提供跳过校验选项,也不以自签名但未受信任的证书冒充生产有效 TLS。
配置、凭据与运行账号
- 实现时提供仅含字段说明和占位符的环境变量示例;真实环境文件、备份、私钥和设备秘密不得提交仓库。
- 应用使用普通数据库业务账号;迁移账号与运行账号分离,迁移权限不保留在正常运行环境中。
- 数据库连接采用
mysql+asyncmy,编码和主外键比较规则遵循根规范,不通过入口服务启动时自动建表。
- 设备凭据使用 Windows DPAPI 或 Credential Manager 等受保护存储;不得复用网页用户会话或密码。
- 首个管理员通过一次性初始化流程创建;不提供默认管理员密码,不开启公开注册。
- 生产管理员必须完成 MFA 配置与验证;恢复访问流程需要身份核验、凭据失效和审计记录。
- 按 D03 落实 Cookie 会话的 Secure、HttpOnly、SameSite 和适用 CSRF 防护;禁用用户时撤销其会话及相关订阅。
- 后续模型、聊天与扩展能力未交付时,应从接口和执行器层验证禁用状态,不能仅隐藏菜单。
首次部署流程
| 顺序 |
实施动作 |
进入下一步的条件 |
| 准备 |
确认发布清单、环境用途、域名、证书、存储和负责人 |
版本可追溯,环境配置完整,操作获得授权 |
| 数据库 |
创建受限账号、内部网络和持久存储 |
编码、访问范围、空间与账号权限检查通过 |
| 迁移 |
以独立迁移身份执行已验证的 Alembic 迁移 |
MySQL 8.4 空库迁移与约束验证有记录 |
| API |
启动 D01 指定的运行单元,检查 D02 的恢复扫描 |
就绪检查通过,无重复分发器和未解释的数据错误 |
| Web 入口 |
发布构建产物并加载 Nginx 路由与 TLS 配置 |
HTTPS、同源认证和 WebSocket 路径均可验证 |
| 身份初始化 |
执行一次性管理员初始化,配置生产 MFA |
初始化入口失效,无默认凭据,管理员恢复路径可用 |
| 设备试点 |
在获授权 Windows 设备可见安装、配对和授权 |
独立凭据受保护,新设备未授权时不能执行任务 |
| 闭环验收 |
执行批准的 browser.open_url 与相关拒绝场景 |
授权、结果、审计及异常路径证据完整 |
- 迁移失败时不得继续启动不兼容应用;保留日志和备份,由负责人按发布方案处理。
- 配对成功不等于获得任务权限;设备、用户与能力授权必须单独完成。
- 部署检查不得使用真实个人浏览器会话作为自动化上下文,也不得以临时开放任意 Shell 方式绕过未实现的安装流程。
Windows Agent 安装与运行
- 首版采用 D05:由标准用户可见安装和启动,在已确认的运行账号与交互会话中执行。
- 浏览器使用独立 Playwright 上下文,不读取个人浏览器的 Cookie、密码或会话目录。
- 安装资料应说明数据范围、网络连接、凭据保存位置、启动方式、停止方式及卸载后的凭据处理。
- Agent 仅执行已登记且被当前策略批准的能力;未知协议、未知字段、过期任务和不匹配设备任务必须拒绝。
- 分发消息可重发,但本地持久记录负责避免重复执行;重连后先对账,无法确认副作用的任务进入
unknown_outcome。
- 任务期限按 P02、连接检测按 P03;离线判定不是任务未执行的证明,也不授权自动重试。
- Agent 发布来源和升级操作遵循更新与版本发布,不得把人工安装流程描述成已有自动更新器。
健康检查、监控与数据治理
- 规划存活接口为
/api/v1/health/live:仅反映进程是否能响应,不泄露内部配置、凭据或详细异常。
- 规划就绪接口为
/api/v1/health/ready:反映数据库可用性、迁移兼容性和关键运行组件是否就绪;详细诊断仅对受控管理访问开放。
- 上述接口目前属于设计,不能据本文宣称已经实现;具体返回 Schema 与状态码随接口契约交付。
- 就绪失败应阻止继续接收新执行请求;已经执行中的任务仍需保留对账与结果接收路径,不能直接重置任务状态。
- 监控覆盖任务积压、执行失败、未知结果、设备离线、分发器停滞、数据库连接、存储空间及备份失败。
- 日志与事件使用
correlation_id 关联,保留期按 P09;删除任务结果不应破坏仍需保留的审计引用。
- 清理规则分别处理业务结果、审计和应用日志;未来聊天、截图及文件的策略在启用相应能力前落实。
备份与故障恢复
- 按 P10 准备加密备份、异机保存、保留和恢复演练;备份应包含数据库及恢复所需配置,密钥另行受控保护。
- RPO、RTO 是上线前确认的建议目标,必须依据实际数据量、备份间隔、传输和恢复演练结果评估,不作未经验证的保证。
- 恢复前先隔离旧实例和分发器,确认目标库、备份时间、密钥可用性与允许的数据丢失范围。
- 恢复后保持分发关闭,核对用户撤销、设备凭据、任务状态及 Agent 本地记录,避免旧备份使已撤销权限或已执行任务重新生效。
- 如果没有可靠的备份后撤销记录,继续关闭登录和新执行,使全部旧网页会话与设备凭据失效,重新核准用户、设备与授权后再配对;不能仅依赖恢复库或设备自报认定权限有效。执行名额只在证明执行器已停止后释放。
- 无法证实结果的任务保留
unknown_outcome 并人工核实;数据恢复不能把历史待分发记录直接当成新的执行授权。
- 恢复演练需记录实际耗时、可恢复时间点、数据一致性问题及修复项,然后由负责人判断是否达到 P10。
生产上线门禁
- 真实 MySQL 8.4 迁移、事务、幂等和并发验证完成;真实 Windows 闭环与模拟验证分别列出。
- 对象级授权、用户和设备撤销、配对码复用、消息重复、取消、超时、未知结果及重连均有验证证据。
- 有效 TLS/WSS、生产管理员 MFA、数据库非公网、普通运行账号及迁移身份隔离全部验收。
- D04 的浏览器网络限制经过真实访问验证,不能用 URL 字符串单元测试代替网络边界验收。
- 备份可恢复、监控告警可到达负责人、日志脱敏与 P09 清理机制可验证,发布和回滚职责明确。
- 未通过适用门禁时记录阻塞项并保持试验或禁用状态;补齐文档、构建成功或模拟通过均不等同于生产可用。