Files
pikasTech-unidesk/project-management/PJ2026-01/specs/PJ2026-010603-yaml-first-ops.md
T
2026-06-15 08:02:06 +00:00

12 KiB

PJ2026-010603 YAML运维

修改历史

版本 对应 commit id 更新日期 变更说明

当前正文仍在规格治理草稿中;未定稿前不新增版本号,不为单次编辑追加 待提交 版本。

正文

PJ2026-010603 YAML运维需求规格

1. 文档控制

字段 内容
编号 PJ2026-010603
短名 YAML运维
层级 L2 课题
状态 已生效
需求规格模板 ISO/IEC/IEEE 29148 需求规格模板
上级规格 PJ2026-0106 平台运维
规格治理索引 规格治理

本文采用 ISO/IEC/IEEE 29148 需求规格模板的项目裁剪版:正文只保留 YAML运维的稳定使命、范围、术语、系统边界、内部分工和原子需求。

2. 目的和范围

2.1 目的

YAML运维负责 HWLAB/UniDesk 自有平台配置的真相源、解析、渲染和受控下发,使 target、lane、node、service、Secret 绑定、公开入口和执行策略从 YAML 进入运行面,而不是散落在代码常量、运行面手补或一次性脚本中。

当前实现已经将 Sub2API Codex pool 的 target、publicExposure、sentinelImageBuild 和 manualAccounts.bindingSources,以及 AgentRun controlPlane default、client.sessionPolicy、lane secret providerCredential profile 和部分 fingerprint/helper 收敛到 YAML 与公共 ops helper。后续能力应在该基线上扩展,保持 YAML 为可审查、可版本化、可解释的配置真相。

2.2 范围内

  • UniDesk 自有平台配置的 YAML 真相源、字段读取、必填项校验和类型校验。
  • target、lane、node、service、namespace、endpoint、publicExposure 和运行目标解析。
  • Secret sourceRef、targetKey、providerCredential、manual binding source 和敏感输出约束。
  • Sub2API、Codex pool、AgentRun control-plane、session policy 和平台基础设施配置的受控 CLI 读取、解释、计划和下发。
  • FRP、Caddy、public URL、public health、Kubernetes Secret 和平台资源渲染所需的配置投递边界。
  • 可复用 ops primitive,包括 YAML path 捕获、字段解析、fingerprint、摘要输出、Secret 引用和命令输出约束。

2.3 范围外

  • Code Agent、AgentRun run、command、workspace 和 session 的业务生命周期语义归 Agent编排
  • 用户身份、API key、额度、账本和租户策略归 用户管理
  • Web、CLI 和 HTTP API 的用户入口体验归 客户端
  • 具体容量、冷却时间、退避窗口、账号优先级、provider 选择和公开入口数值不写成代码常量或规格硬编码;这些数值由对应 YAML 配置承载。
  • 从运行面 Secret、pod env、日志或数据库反推、解码、回填本地配置真相不属于本课题允许能力。

3. 术语表

术语 定义
YAML 真相源 UniDesk 自有平台配置的版本化 YAML 文件,代码只负责读取、校验结构、解释和下发。
受控 CLI 通过 UniDesk CLI 暴露的配置读取、计划、同步、解释和状态入口,避免手写脚本直接操作运行面。
target YAML 中描述服务部署目标、运行节点、namespace、公开入口和相关渲染参数的对象。
lane YAML 中描述某条运行线的目标节点、namespace、source truth、Secret 和执行策略的对象。
sourceRef YAML 中指向密钥来源的声明,输出时只能显示来源标识和摘要,不显示密钥值。
targetKey YAML 中声明运行面 Secret 或配置对象接收某项密钥的 key 名。
providerCredential AgentRun lane 中声明 provider profile 与运行面 Secret 绑定关系的配置项。
publicExposure YAML 中描述 FRP、Caddy、domain、TLS、public URL 和 health 目标的公开入口声明。
ops primitive 平台运维 CLI 共享的底层能力,例如字段解析、fingerprint、Secret 引用、摘要输出和 YAML path 捕获。
配置解释输出 CLI 将 YAML 解析后的默认值、来源和目标以非敏感摘要展示给操作人员的输出。

4. 系统边界和接口

本规格把 YAML运维作为平台运维内的配置真相和受控下发课题看待;本章只描述输入、输出和责任边界。

边界项 内容
外部使用者 平台管理员、发布操作人员、Agent编排维护者、Sub2API/Codex pool 维护者和自动化运维任务。
外部输入 YAML 配置文件、target/lane/node/service 声明、Secret sourceRef、providerCredential、publicExposure、运行目标选择和配置解释请求。
受控资源 配置解析器、公共 ops helper、Sub2API/Codex pool 配置、AgentRun lane 配置、Kubernetes Secret 声明、FRP/Caddy 渲染、public health 和 CLI 输出摘要。
外部输出 配置解释结果、计划摘要、同步摘要、Secret presence/fingerprint、publicExposure 渲染结果、运行目标解析结果和错误诊断。
用户接口 bun scripts/cli.ts platform-infra ...bun scripts/cli.ts agentrun ...、受控 Secret 同步命令、配置解释命令和平台状态查询命令。
系统边界 YAML运维负责让配置从 YAML 可解释、可校验并受控进入运行面;不定义业务策略数值、不替代 Agent/用户/客户端语义,也不把运行面观测反向变成本地配置真相。

5. 内部分工与规格索引

编号 模块或课题 规格文档 主责边界 上游依赖 下游支撑
PJ2026-01060301 配置真相 本规格 6.1 YAML 文件、字段读取、必填项和类型校验 平台配置需求、服务 owner 输入 平台 CLI、运行面渲染
PJ2026-01060302 目标解析 本规格 6.2 target、lane、node、service、namespace 和默认目标解析 配置真相、运行 lane 约定 Sub2API、AgentRun、公开入口
PJ2026-01060303 密钥绑定 本规格 6.3 sourceRef、targetKey、providerCredential、manual binding 和敏感输出约束 凭据来源、服务 Secret 需求 用户管理、Agent编排、Sub2API
PJ2026-01060304 暴露渲染 本规格 6.4 publicExposure、FRP、Caddy、public URL 和 health 渲染 目标解析、服务入口需求 客户端、用户管理、Agent编排
PJ2026-01060305 执行策略 本规格 6.5 AgentRun control-plane default、session policy、provider profile 和 workspace 策略配置 Agent编排语义、lane 配置 Agent编排、平台发布
PJ2026-01060306 公共原语 本规格 6.6 字段解析、fingerprint、摘要输出、Secret 引用和 YAML path 捕获复用 各平台 CLI 实现 全部平台运维 CLI

6. 原子需求

6.1 OPS-YAML-REQ-001 YAML 配置真相

编号 短名 主责模块 关联模块
OPS-YAML-REQ-001 配置真相 PJ2026-01060301 配置真相 平台运维

YAML运维应将 UniDesk 自有平台配置维持为 YAML 真相源,使平台服务的 target、lane、node、service、Secret、公开入口和策略字段都能从版本化配置读取。

代码只负责解析、类型校验、必填项校验、路径定位和错误说明,不得把容量、冷却时间、endpoint、namespace、账号候选、provider 选择或公开入口数值固化为隐藏默认值。缺少配置时应暴露明确缺口,由 YAML 或上游密钥来源修正。

6.2 OPS-YAML-REQ-002 Target 与 lane 解析

编号 短名 主责模块 关联模块
OPS-YAML-REQ-002 目标解析 PJ2026-01060302 目标解析 Agent编排客户端

YAML运维应提供 target、lane、node、service、namespace 和默认目标解析能力,使平台 CLI 在未显式传入目标时也能从 YAML 找到当前受控目标。

目标解析必须把默认值来源解释清楚,并允许操作人员显式指定 node 或 lane 覆盖默认选择。不同服务不得各自维护一套硬编码 G14、v0.1、namespace 或 service 名称;新增服务应复用同一类解析模式。

当 issue、PR 或 CLI 已经明确 node/lane 时,YAML 解析只负责校验和解释该目标,不得用全局默认覆盖用户选择。没有明确目标时,CLI 可以读取 YAML default,但输出必须说明 default 来源、目标 node/lane、namespace、source truth 和公开入口,避免把历史 G14/v0.2、D601 legacy 或旧 dev/prod 口径误用为当前运行面。

6.3 OPS-YAML-REQ-003 Secret 绑定与敏感输出

编号 短名 主责模块 关联模块
OPS-YAML-REQ-003 密钥绑定 PJ2026-01060303 密钥绑定 用户管理Agent编排

YAML运维应通过 sourceRef、targetKey、providerCredential 和 manual binding source 描述密钥来源与运行面目标,使 Sub2API、Codex pool、AgentRun 和后续平台服务可以按声明同步凭据。

密钥相关输出只能展示对象名、key 名、sourceRef、presence、fingerprint、字节数和执行摘要,不得打印 base64 payload、解码值、完整 DSN、API key 或可复制凭据。运行面只能作为 presence 和 health 观测对象,不能被用来反推本地配置真相。

6.4 OPS-YAML-REQ-004 公开入口渲染

编号 短名 主责模块 关联模块
OPS-YAML-REQ-004 暴露渲染 PJ2026-01060304 暴露渲染 客户端用户管理Agent编排

YAML运维应从 publicExposure 和 target 声明渲染 FRP、Caddy、public URL、TLS 和 public health 所需配置,使公开入口由 YAML 控制并能被 CLI 解释。

公开入口渲染负责入口目标、健康探针和运行面配置的一致性。页面行为、API 契约、用户登录和 Agent 任务语义由关联 L1 定义;YAML运维只保证这些入口被正确投递到声明的目标运行面。

每个 node/lane 的正式用户入口必须由 YAML 中的 public.webUrlpublic.apiUrlpublicExposure 共同声明。FRP remote port、Caddy backend、本地 service DNS、旧 direct port、历史 nip.io 域名或仓库 generic deploy 默认值只能作为实现细节、诊断入口或 legacy 对照,不能反向覆盖 node/lane 的正式入口真相。

受控 CLI、文档生成和验收提示应优先输出正式 public URL,并把实现端口标注为诊断用途。缺少正式 public URL、DNS 与 expectedA 不一致、Caddy/FRP 渲染目标不一致或运行面 health 不匹配时,应暴露为 publicExposure 配置或投递缺口,而不是让调用方回退到旧端口继续验收。

6.5 OPS-YAML-REQ-005 AgentRun 执行策略配置

编号 短名 主责模块 关联模块
OPS-YAML-REQ-005 执行策略 PJ2026-01060305 执行策略 Agent编排用户管理

YAML运维应为 AgentRun control-plane default、client sessionPolicy、lane secret providerCredential、workspace 和 execution policy 提供配置读取与解释,使 AgentRun 运维入口不依赖代码内固定 profile、namespace 或执行策略。

本需求只约束执行策略如何作为平台配置进入运行面。Agent run、command、session 状态机、任务恢复和 provider 业务语义由 Agent编排负责,用户身份和 API key 约束由用户管理负责。

6.6 OPS-YAML-REQ-006 公共 ops primitive

编号 短名 主责模块 关联模块
OPS-YAML-REQ-006 公共原语 PJ2026-01060306 公共原语 平台运维

YAML运维应沉淀公共 ops primitive,使字段解析、YAML path 捕获、fingerprint、Secret 引用、摘要输出和配置错误说明在 Sub2API、AgentRun 和后续平台 CLI 中复用。

公共 ops primitive 的职责是减少重复硬编码和输出口径漂移。领域 CLI 仍负责自身命令形态和服务语义,但不得复制一套不同的敏感输出、fingerprint、字段解析或 YAML 缺失处理规则。