Hub r4 简报:第一个里程碑

2026-10-21。本文写给人读:目标、范围、阶段、授权与边界、怎么验证,以及最终报告必须写明的“证明不了的事”。构建细节以 Hub r4 架构(英文)为准;设计的权威是通用模型 contracts/model.json,摘要见通用模型。几处说法不一致时以模型为准。进度和已定的决定记在 Hub r4 进度。本文取代已退役服务器的 server-s2 系列简报。

目标

一个人在 Circle 里把 Hub 当作普通 MCP 服务器连上(Circle 只做通用的 MCP 客户端改进),让模型评审一份真实的测试脑图:

  1. 模型列出可用的任务包,对敏捷测试平台上的一份脑图开始运行(按外部对象 ID 只读读取),读取期望来源:所锁定构建的命令目录、手册小节,以及文档标题里关联的需求和缺陷原文;逐条目判断后提交初评。另一个会话、另一个模型再做独立复核,给出结论和等级。评审方法按团队原有的评审技能移植,见架构第 6 节。
  2. Hub 不生成内容。它解析提交,把精确值解析成引用,在沙箱里重跑任务包的检查,计算每个(条目, 要求项, 判定层)的终态,给条目分区,返回回执。未知保持未知。
  3. 只读的控制台显示运行记录、知识树、任务包和管理数据;每次调用都记日志。
  4. Hub 在一台机器上持久运行,只监听本机,有备份。

范围

做 不做(留在合约里,不实现)
六个工具:list_task_packs、upload_file、start_run、get_nodes、resolve_reference、submit_result 写本人候选层(决定 25:候选留在客户端本地)
用例评审工作流包、产品包,以及敏捷测试平台、PLM 查询服务、构建站、手册库和手册库所据的文档库这几个系统包 浏览器执行器(D07 的浏览器部分;设备执行器已实现,见进度)
初评与独立复核两次运行,静态层的要求项见架构第 6 节;动态层经派发给出结论(决定 35 一轮,见进度) 通用的触发与常设义务(知识同步除外)、假设集(V08)
知识树:覆盖两族名字下的每个版本,每个已发布构建一个根(知识同步);确定性解析器归位,没有路径的条目留在根下标为未归位(归位核验经独立回注运行实现,决定 25,Hub 不调用任何模型)  
效果与租约、处置与请求、动态层检查、设备执行器、xlsx 与 zip 解析(原列在不做,已随决定 35 一轮实现,见进度)  
只读连接器:路由逐条列入白名单,原件按 SHA-256 保存  
只读控制台与调用日志  
单机持久部署、备份与恢复  

FAMX 与 FAMY 是同一产品的两个名字,按一条产品线处理。核心代码里不出现产品名、命令名或客户名,产品知识只在任务包里。第二个合成产品包要能用同一个工作流包完成评审,核心代码不改。

知识同步是所有者 10-21 提出的要求:由 Hub 执行的常设义务,遍历构建站上整个产品的列表页,读取主平台上每个尚未入库的已发布构建的命令目录,以及产品包为各版本线映射的手册和规格,每个构建产出一个根,并移动各版本的当前根指针。它是幂等的(源摘要没变就跳过),可以续跑,按构建报告产出、跳过和失败。手册库是那个文档库的匿名镜像;所有者提供可用的账号之前,只读镜像。

阶段

  1. 合约补全、records、refs、rules、platform、docs,并行。
  2. knowledge、runs、connectors,并行,对着第 1 阶段做好的包写。
  3. server、packs,并行。
  4. 验收与集成;对照模型独立复核整体。
  5. 持久部署与真实系统脚本,由集成者完成。

每个阶段结束时按模型和架构文档做一次独立复核,修完再进下一阶段。各包拥有哪些路径、依赖方向和完成定义见架构文档第 4 节和第 10 节。

授权与边界

允许:

  • 在一台机器上持久部署 Hub,只监听本机。
  • 已部署的 Hub 和所有者自己的脚本只读访问业务系统:只用 GET 和逐条列入白名单的读路由,登录失败后不重试。
  • 已部署的 Hub 不调用任何模型(进度决定 15);需要判断的知识归位先在 Circle 本地判定,成为事实后经独立回注运行交 Hub 核验(决定 25,已实现)。评审用的模型(初评和独立复核)只在 Circle 一侧运行:第 5 阶段的真实评审在所有者的一个专用 Circle 主目录里进行,连接已部署的 Hub,模型密钥不经过任何 agent。被评审的用例和知识片段会发给所选模型的服务商。所有者 2026-10-21 已授权并自己配置端点,授权的日期和范围记在进度第 7 条;测试、CI 和各包的开发检查始终只用脚本化模型。
  • 改 Circle 仓库:范围是 D06 R[1] 的六项通用 MCP 客户端改进,以及删去现有的 hub 扩展,在单独的分支上本地提交,不推送。所有者已把整个 Circle 平台的修改权限给了集成者,记在进度第 8 条。

不允许:

  • 测试、夹具和 CI 使用真实系统、真实模型或真实数据。这些地方只用脚本化模型和合成夹具,夹具只仿真实系统的结构,地址用 192.0.2.0/24。
  • Hub 调用通用模型、生成内容。
  • 对任何业务系统写。
  • 推送、建 PR、改 GitHub 设置或发布工作流、把 Hub 开放到本机以外、使用真实设备,除非所有者另行决定。
  • 让凭据、内部地址、真实业务数据或本机绝对路径进入 Git、日志或文档。
  • 打开所有者的环境配置文件或所有者自己的凭据库。测试用临时数据根里的密钥文件和临时的密钥库;Hub 的密钥文件(数据根 keys 目录下的密钥库主密钥和操作令牌,Hub 不再用 macOS 钥匙串,决定 137)只经它的平台命令处理,密钥只经 Hub 的 vault 命令进入。
  • 在 Circle 里加 Hub 专用的界面或标签。

里程碑 1 之后的七项能力

所有者 2026-10-22 把目标扩大为七项用例能力,都做成任务包,不改核心:用例评审(里程碑 1)、按团队模板 v3 查缺、用例定位(产品线、版本线、发布列车、模块、构建候选和关联的需求与缺陷)、回归范围与维护巡检、缺陷转用例、追溯矩阵与质量看板,最后是转自动化。转自动化要设备:所有者已定台架、账号和允许的命令类(决定 35,见进度页;台架的地址和账号只在部署数据里)。只产生事实的包在 start_run 时由 Hub 直接算出并保存结果,不需要模型提交。做法见架构第 6a 节。每项能力都用带预期答案的验收(架构第 6b 节):注入已知缺陷的真实文档、构建之间独立计算的命令差、已知的树路径、已有的缺陷转用例文档回比。事项最后用 Otty 里真实的 Circle 客户端对着已部署的 Hub 完成,记录保留作证据。

怎么验证

  • 每个包:npx tsc --noEmit 不报本包的错;本包的测试用 node --test 跑通,并写明命令;每条实现的规则都有正例和反例,解析器和沙箱有对抗输入;README 写明决定、限制、怎么跑测试和对其他包的需求。
  • 全仓:npm run typecheck、npm run verify:contracts、npm run test:unit、npm run test:acceptance(临时 PostgreSQL)、npm run verify:references、npm run test:references,以及文档检查 node --test ".github/checks/*.test.ts"。CI 在 Ubuntu 上跑同一组命令,在任务摘要里列出计数和跳过的用例;一个测试都没跑的任务判失败。需要 macOS 或 libpq 的用例(包函数沙箱的断网、launchd、备份恢复与部署)在 CI 上跳过,跳过不算通过:这些路径的证据是每个阶段在本机 macOS 上的完整运行,记在进度里。
  • 合成验收:架构文档第 9 节的场景,加上 tests/acceptance/ 里后来补充的场景。
  • 部署(第 5 阶段):在另一个数据目录里演练备份与恢复,包括密钥文件丢失后重新导入密钥;切换失败能回到上一个部署;重启后自动恢复;只监听本机。
  • 真实系统(第 5 阶段):每个连接器做一次只读冒烟,日志里只有条数和摘要;知识同步跑完一遍,按构建报告产出、跳过和失败,各个根的组成记录可查,没有路径的条目留在根下标为未归位;一份真实脑图在 Circle 里完成初评和独立复核,分区清单和层终态在控制台可查。

最终报告必须写明证明不了的事

  • 没有在设备上执行:动态层不适用,静态层的“通过”只对所依据的规则@版本成立。
  • Hub 不调用任何模型:需要判断的知识归位经独立回注运行核验(决定 25,已实现);没有路径的片段留在根下标为未归位,引文仍按原件逐字核对。
  • 真实评审所用的构建由包规则或所有者选定,并记进运行;这不证明它就是用例作者所指的构建。
  • 知识根只含读得到的源:镜像里没有手册的版本线,评审时没有手册小节可以引用。
  • 部分业务系统走明文 HTTP,这些连接上的凭据只靠所在网络保护。
  • 模型的独立性只是客户端的声明。
  • 合成验收只证明合成夹具上的行为;一次真实评审只证明那一份脑图、那一次运行。
  • 先前临时部署的历史已记为丢失,没有迁移进新部署。