Files

12 KiB
Raw Permalink Blame History

PJ2026-010202 Runtime装配

修改历史

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

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

正文

PJ2026-010202 Runtime装配需求规格

1. 文档控制

字段 内容
编号 PJ2026-010202
短名 Runtime装配
层级 L2 课题
状态 已生效
需求规格模板 ISO/IEC/IEEE 29148 需求规格模板
上级规格 PJ2026-0102 Agent编排
规格治理索引 规格治理

本文采用 ISO/IEC/IEEE 29148 需求规格模板的项目裁剪版:正文只保留 RuntimeAssembly、SecretRef、AipodSpec、gitbundle、session 和工具凭据装配的稳定使命、范围、术语、系统边界、内部分工和原子需求。

2. 目的和范围

2.1 目的

Runtime装配负责把一次 AgentRun 执行需要的镜像、provider profile、session、Git 资源、prompt、skills、tools 和工具凭据统一为受控 RuntimeAssembly,使 runner/backend 启动前的所有运行输入都有可追溯来源和明确边界。

2.2 范围内

  • BackendImageRefProfileRefSessionRefResourceBundleRef 四个一等运行时要素。
  • provider credential、Git resource credential、tool credential 和 short-lived execution context 的 SecretRef/projection/redaction 归属。
  • Git-only ResourceBundleRef.kind="gitbundle"bundles[]promptRefs[]requiredSkills[]、workspace materialization 和实际 commit 摘要。
  • AipodSpec YAML、imageRef、env image reuse、Artificer 默认装配和 --aipod render 入口。
  • AipodSpec render 对目标 node/lane 的 backendProfile、provider credential SecretRef、tool credential SecretRef、workspaceRef 和 bundle 绑定。
  • SessionRef 到 PVC 直接挂载、CODEX_HOME、profile runtime home 和 Secret projection 分离。

2.3 范围外

  • run、command、event、runner lease 和 terminal status 的 durable authority 归 AgentRun核心
  • Codex app-server stdio、backend adapter 和 provider profile 管理归 后端Profile
  • Queue task、Session API 和 scheduler 归 队列会话
  • YAML-first 平台配置真相、Secret sourceRef 下发和公共 ops primitive 归 YAML运维
  • GitOps、CI/CD、lane 和发布验收归 发布流水source truth 和 mirror 归 源码同步

3. 术语表

术语 定义
RuntimeAssembly runner/backend 启动前的装配模型,声明一次执行使用的镜像、profile、session、资源包和凭据范围。
BackendImageRef 描述 env/backend/runner 镜像来源和 digest-pinned image 的运行时要素。
ProfileRef 描述 backend profile 与 provider credential SecretRef 的运行时要素。
SessionRef 描述 backend 会话、thread、PVC 和续跑状态的运行时要素。
ResourceBundleRef 描述 Git-only 资源包、工具、skill、prompt 和实际物化 commit 的运行时要素。
AipodSpec 声明式 agent 装配 YAML,用于集中描述 imageRef、backendProfile、executionPolicy、resourceBundleRef 和 payloadDefaults。
AipodSpec lane binding AipodSpec render 时将声明式装配与目标 node/lane 的 YAML SecretRef、workspaceRef、bundle 和 provider profile 绑定的过程。
toolCredentials 运行时工具授权的 SecretRef 装配项,例如 GitHub PR token、GitHub SSH key 或 UniDesk SSH passthrough token。
transientEnv 单次 runner job 的短期运行上下文,通过短期 Secret 投影,不作为 run durable fact。

4. 系统边界和接口

本规格把 Runtime装配作为 AgentRun 运行输入的装配系统看待;本章只描述输入、输出和责任边界。

边界项 内容
外部使用者 AgentRun核心、队列会话、HWLAB接入、后端Profile、runner job 和平台运维。
外部输入 AipodSpec、run executionPolicy、backendProfile、SecretRef、gitbundle repo/ref、promptRefs、requiredSkills、sessionRef、toolCredentials 和 transientEnv。
受控资源 RuntimeAssembly、Secret projection intent、git materialization、workspace、runtime home、session PVC、image identity 和 redacted assembly summary。
外部输出 backend image digest/source、profile SecretRef 摘要、session/PVC 摘要、actual commit、bundle/skill/tool 摘要、projection intent 和 valuesPrinted=false
用户接口 AgentRun run 创建、Queue dispatch、Session send、AipodSpec render/apply 和 runner job dry-run。
系统边界 Runtime装配负责运行输入的受控声明、解析和投影;不执行 backend turn,不决定业务授权,不把 Secret value、host path 或 prompt 内隐式环境变成运行事实。

5. 内部分工与规格索引

编号 模块或课题 规格文档 主责边界 上游依赖 下游支撑
PJ2026-01020201 四要素模型 本规格 6.1 BackendImageRef、ProfileRef、SessionRef、ResourceBundleRef 字段和边界 AgentRun 核心 run policy Runner、Backend、HWLAB 接入
PJ2026-01020202 Secret投影 本规格 6.2 provider/tool/Git credential、projection 和 redaction YAML运维、平台 Secret 来源 Runner、Backend、Provider Profile
PJ2026-01020203 GitBundle物化 本规格 6.3 repo/ref、actual commit、bundles、promptRefs、skills、tools Git mirror、AipodSpec、HWLAB repo Backend、HarnessRL、Agent 执行
PJ2026-01020204 Session持久 本规格 6.4 SessionRef、threadId、PVC 直接挂载和 profile 隔离 AgentRun 核心 session facts Queue会话、HWLAB接入
PJ2026-01020205 AipodSpec 本规格 6.5 imageRef、backendProfile、executionPolicy、resourceBundleRef 和 payloadDefaults 发布流水 env image、源码同步 source truth Queue会话、Session send、Artificer

6. 原子需求

6.1 AR-RUNTIME-REQ-001 四要素装配模型

编号 短名 主责模块 关联模块
AR-RUNTIME-REQ-001 四要素模型 PJ2026-01020201 四要素模型 AgentRun核心后端Profile

Runtime装配应将一次执行收敛为 BackendImageRefProfileRefSessionRefResourceBundleRef 四个一等要素,使 runner/backend 启动前能够明确镜像、profile、session 和资源来源。

executionPolicy、observabilityPolicy、tool credential、initial prompt、skill 注入、network 和 GC 不应成为第五个杂项运行时路径;它们必须归属到四要素或 run policy,并可追溯到 Git、SecretRef、配置引用或显式 null。

6.2 AR-RUNTIME-REQ-002 SecretRef 与敏感输出

编号 短名 主责模块 关联模块
AR-RUNTIME-REQ-002 Secret投影 PJ2026-01020202 Secret投影 YAML运维后端Profile发布流水

Runtime装配应通过 SecretRef 和 projection intent 分发 provider credential、Git resource credential、tool credential 和短期 transientEnv,使 Secret value 不进入 Git source、GitOps branch、Postgres、event、trace、日志或 CLI 输出。

输出只能包含 SecretRef 名称、key 名、projection kind、presence、hash/fingerprint、ownerReference 状态和 valuesPrinted=false。provider API key、Codex auth.jsonconfig.toml、DSN、token、SSH private key 和 transientEnv value 都不得以明文形式出现在响应、dry-run、event 或日志中。

RuntimeAssembly 或 AipodSpec render 缺少目标 lane 所需的 provider credential SecretRef、tool credential SecretRef 或 sourceRef 时,应报告为 YAML/AipodSpec binding 缺口。修复路径是补齐 YAML/sourceRef、受控 Secret 同步和重新 render,不允许通过手工创建 legacy Secret、复制其他 lane Secret 或 patch runtime namespace 规避装配缺陷。

6.3 AR-RUNTIME-REQ-003 GitBundle 资源物化

编号 短名 主责模块 关联模块
AR-RUNTIME-REQ-003 GitBundle PJ2026-01020203 GitBundle物化 HWLAB接入源码同步AgentRun源码真相

Runtime装配应以 ResourceBundleRef.kind="gitbundle" 物化代码、工具、skill 和 prompt,使 runner 使用的 repo URL、requested ref、actual commit、tree、bundles、promptRefs 和 requiredSkills 都能被查询。

gitbundle 不得引用 host path、Secret volume、用户上传临时目录、inline skill manifest 或旧 inline seed。required skill 缺失必须在 backend 启动前结构化失败,不能通过模型默认 skill、prompt 猜测或运行时补文件绕过。

6.4 AR-RUNTIME-REQ-004 SessionRef 持久化

编号 短名 主责模块 关联模块
AR-RUNTIME-REQ-004 Session持久 PJ2026-01020204 Session持久 队列会话AgentRun核心后端Profile

Runtime装配应支持 SessionRef 到 backend thread/cache 的稳定映射,并在启用持久会话时使用 per-session RWO PVC 直接挂载到 ${CODEX_HOME}/<codex_rollout_subdir>

Session PVC 只保存 Codex rollout 会话文件;provider Secret、完整 CODEX_HOME、Git workspace、auth/config、state sqlite、tmp 和 skills 不进入 PVC。runner replacement 必须复用同一 sessionId、threadId、profile 和 PVC;不得通过新 session、拼接历史 prompt 或伪造 resume 形成续跑表象。

SessionRef 是 Web、CLI、Queue 和 HWLAB接入共享的会话连续性 authority。普通 follow-up、steer 和 result 轮询必须沿用同一 sessionId/threadId/profile/PVC 映射;session 不存在、failed、stale、canceled 或 PVC 不可用时,应返回结构化 blocker。Runtime装配不得自动创建替代 session,也不得把业务 conversationId、workspace project 或浏览器缓存当作 AgentRun session truth。

6.5 AR-RUNTIME-REQ-005 AipodSpec 声明式装配

编号 短名 主责模块 关联模块
AR-RUNTIME-REQ-005 AipodSpec PJ2026-01020205 AipodSpec 队列会话发布流水源码同步

Runtime装配应提供 AipodSpec YAML,使 imageRef、backendProfile、executionPolicy、resourceBundleRef、model 和 payloadDefaults 可以从声明式规格进入 Queue submit 或 Session send。

AipodSpec 只声明装配意图,不保存 API key、SSH private key、token、auth.jsonconfig.toml 或其他 Secret 明文。imageRef 必须指向可追溯的 env image Dockerfile source 和完整 commit,最终 runner job 只能使用解析后的 digest-pinned image 或结构化报告 build-required。

当 Queue submit、Session send 或 CLI --aipod render 已指定 node/lane 时,AipodSpec 必须使用该目标 lane 的 YAML 事实绑定 backendProfile、provider credential SecretRef、tool credential SecretRef、workspaceRef 和 resource bundle。除非 YAML 明确声明继承,AipodSpec 不得从其他 lane 或全局默认 lane 隐式继承 provider、tool credential、workspace 或 namespace。