通用模型

设计的权威是 contracts/model.json:第 10 版,11 组 73 个元素,词表轴的实数以生成物为准,另有分类规则、展示规则、格式提案和已定的待定项。本页是摘要。元素的定义、字段和规则以模型为准,用 tools/show-element.ts 读:

node tools/show-element.ts B01 W06          # 元素的定义、字段与规则
node tools/show-element.ts --list           # 全部元素
node tools/show-element.ts --vocab partition
node tools/show-element.ts --pending        # 待定项与决定

本页与模型不一致时以模型为准。第一个里程碑怎样实现见 Hub r4 架构。

Hub 做什么

Hub 是标准 MCP 服务器(D06):本地 Circle、bot 和其他客户端共用同一组工具。模型的循环、规划、填槽和归因提议都在客户端;Hub 只运行确定性函数,不调用任何模型,不生成内容。需要判断的知识处理在客户端(用 Circle 内核):候选留在 Circle 本地,成为事实后经独立回注运行交 Hub,Hub 用确定性规则核验(路径存在、引文逐字出自原件、不越过声明;已实现)。它分发任务包,锁定运行用到的版本,在边界校验交回的结果,把精确值解析成引用,并把一切记成只追加的记录。共享目标上的效果只由 Hub 经派发边界发出。

三条不变量

  • I01 精确值与产物:模型写下的每个精确值都在边界解析成引用;未判定的产出过了判定才成为交付物;能确定性生成的产物不让模型写。
  • I02 事实的来源:事实只来自版本化规则和经完整性校验的目标观察,由 Hub 在边界重跑;判定只在有“源 + 确定性逻辑”的地方作出。
  • I03 终态不升级:每个条目每层有明确终态,传递中不升级;未知不改写为部分,也不显示为失败。

十一组

组 元素 内容
基本记录 B01–B08 主张、源文件、引用、许可、动作记录、效果记录、请求、调用日志
主张属性 A01–A06 来源类型、依据等级、来源角色、独立性、覆盖边界与控制区间、未知
判定与终态 V01–V08 判定、判断、层终态、归责、分区清单、交付规则、重复策略、假设集
工作结构 W01–W10 条目与条目投影、要求项、工作流、判定形状与判定台账、中间表示与槽位、运行、提交、校验结果、触发、判据变更声明
管道节点 P01–P11 十步节点:定目标、绑定源文件、定判定形状、填槽位、生成、静态判定、动态判定、分区交付、反例回流、沉淀;加上统一管道与效果前、交付前两道强制边界
三条不变量 I01–I03 见上
组件模型 C01–C08 四个家、四类归属、两种形态与两种可执行插件、表、规则、政策表、目录、能力声明
教与验 T01–T04 任务包、发布记录与发布校验、边界校验、引用解析
知识 K01–K05 知识树、知识条目、三层写入、知识归类、本地缓存与获取
对接与协议 D01–D07 对接规范、前提表、效果类与写声明、效果安全机制、调用合约与统一响应、MCP 工具面、执行器资源
人与权限 R01–R03 权限角色(用户、管理员)、可见性、bot

十步是节点类型,不是固定顺序(P11)。

内核:七个名字

模型把元素归并成七个内核名字。它们只是归并,不是新对象:

内核名 英文 归并的元素
引用 reference B03
资产 asset B02、T01、W03、W04、W05、C04、C05、C06、C07、D01、D07、K01、K02
任务 task W06、W01、W02、W09
操作 operation B05、B06、B04
请求 request B07
变更集 change set T02
结果 result B01、W07、W08、V05、V08、W10

运行是任务的一个修订,血缘把追求同一目标的运行串成任务。“变更集”只剩发布记录这一种含义,下架是它的撤回状态;管理员作出的分配、发布权授予、资源配置和分享算操作。B08 调用日志是诊断记录,不进内核;A 组和 V01–V04、V06、V07 是主张与结果的字段和词表;P、I 两组,C01–C03、C08,T03、T04,K03–K05,D02–D06 和 R 组是规则、组件与边界。四个对象就是 C01 的四个家,五要素的用法见对象标准:五要素检查单。

词表

词表的每个轴是一个封闭集合(全部轴用 node tools/show-element.ts --vocab 查看),由 npm run gen:contracts 生成到 contracts/generated/vocabulary.ts:每轴有类型、zod 枚举和中文标签。代码只经 labelOf(轴, 代码) 取标签,不手写枚举,也不自造词。读一份校验结果最常用的几轴如下(取值以生成物为准;文档检查 .github/checks 核对这张表与生成物一致):

轴 标签 取值
nature 性质 事实、判断、未知
basis_rank 依据等级 观察上的规则 > 主张上的规则 > 判断 > 转述
provenance_type 来源类型 观察、投影、声明、候选、客户端捕获
static_terminal 静态层终态 通过、不通过、判断、未核对、未完成
dynamic_terminal 动态层终态 通过、失败、无判定、未运行、未完成
requirement_status 要求满足状态 满足、未满足、未决
partition 分区 已交付、已拒收、已隔离、未完成
acceptance 回执 已受理、未受理
task_result 任务结果 已通过、已交付(含未决项)、已交付(含未满足项)、已拒收、未完成、派发结果未确认、等待提交中、已放弃
environment_state 自动化测试环境状态 可用、使用中、已冻结、已停用、未知
action_kind 动作种类 读取、尝试读取、解析、生成、回读、边界校验、派发、归类、移动当前根、租约

取值和轴还可以带界面用语(ui)。控制台只经 uiLabelOf(轴, 代码) 取词,带界面用语的显示界面用语(例如“已隔离”显示为“派发结果未确认”,“未核对”显示为“未检查”),返回给模型的文字仍用标签;一个任务的结果由分区与要求项满足状态推出,未知不显示为通过(显示规则 20)。

每个条目恰好落在一个分区里:分区两两不交,并集等于条目集;跨条目主张单独列出,不计入分区(V05)。要求项只在它声明的判定层上有终态,其余层显示“本层不适用”(V03)。

错误码也有登记,同样生成到 contracts/generated/protocol.ts:协议码 PROTOCOL_CODES 来自模型(例如 QUOTE_MISMATCH、SOURCE_UNAVAILABLE),核心部件的违规码 CORE_VIOLATION_CODES(core.<部件>.<码>)来自 contracts/codes.json;登记表的历史字段 interpreter 表示发出该码的核心部件,不表示可安装的解释器。包校验判断错误处理行是否用得上时:解释器发出的码核对该要求项的检查是否使用对应解释器;回注准入发出的 core.contribution.* 核对 workflow.contribution.requirement 是否指向该要求项。码表不增加字段;任务包的码挂在包名下,例如 case-review.<码>。缺失与无权一律返回 SOURCE_UNAVAILABLE:工具显示“对你不可用”,控制台显示“该内容不存在或无权查看”。引用有四种形式:src:(源文件或片段)、tree:(知识树节点)、entry:(知识条目)、rec:(Hub 记录)。

第一个里程碑用到哪些

各包实现哪些元素见架构文档第 4 节。只用六个工具:list_task_packs、upload_file、start_run、get_nodes、resolve_reference、submit_result。留在合约里、尚未实现的有:假设集(V08)和浏览器执行器(D07 的浏览器部分)。效果写入与租约(B06、D04,D03 的写声明)、处置与请求(B07)、动态层检查(P07)、设备执行器(D07 的执行器部分)和 xlsx 与 zip 解析已随上真实自动化测试环境一轮实现(见进度页);W09 的常设义务以由 Hub 执行的知识同步为先例(见架构文档第 6 节)。D03 的读部分与 D07 的资源部分由 connectors 包实现。候选按决定 25 留在客户端本地,成为事实后通过单独的回注运行交 Hub 核验,不提供写本人候选层的入口。

已定的决定

模型当前有 20 项待定事项:18 项已定,2 项暂缓到第一个需要它们的工作流接入时再定(新增工具与命名;人工接管受管会话的通道、块语言编辑界面);本地工具下发按决定 35 单列在末尾,原条目的编号不移动。用 node tools/show-element.ts --pending 查看。影响这个里程碑的四项和其他决定记在 Hub r4 进度。


本文是 circle-hub 的设计规范之一,按 CC BY 4.0 授权:引用、借鉴须署名 Circle Hub 与 qingshanfeihu 并注明原始出处链接。见设计规范索引。