arkevo_task_scaling:把真实专业软件资料变成 RL task
一句话定位:这是一个“方法论 + 合同 + 检查工具 + 个案脚本”的上游生产框架,把真实工程、教程和职业工作流转成可训练、可评测、可追溯的任务;它已经用 Blender 的 KUKA 首题走通 01–07,但通用自动批量调度器仍未完成。
Python 3.12+ Harbor task RewardKit Rule 80 / VL 20 不是已完成 benchmark
先建立全局心智模型
这里的“任务”不是一句 prompt。一个可交付任务至少同时包含:像真实委托的题面、合理阶段的 workspace、声明交付物、可靠 verifier、来源与版本证据,以及可复现的运行条件。原工程只是资料,不会自动变成任务;能打开文件也不等于任务可解、可评分或可分发。
flowchart TD T["01 Taxonomy
职业场景 · 工作流 · 输入输出"] --> A R["02 Raw data
工程 · 资产 · 视频 · 配套文件"] --> S["准入与脱敏派生
原生检查 · 依赖 · 干净输入"] S --> A["03 初版任务
题面 + workspace + verifier"] A --> C{"派发 workspace
是否含工程文件?"} C -->|"有"| B["输入基线
同版 verifier + RewardKit"] C -->|"无"| P["正常试解
基线字段为 null"] B --> P["04 多模型试解
3–5 配置 · 每题各 1 次"] P --> Q["05 聚合审题
逐项分析 · 校准 · 修订"] Q -->|"修订或重跑"| A Q -->|"验收并冻结"| F["Final
冻结题面 · 输入 · verifier · 参考"] F --> E["06 正式评测
每配置每题独立 3 次"] E --> D["07 数据产品
Harbor 包 · 证据 · HTML"] F --> V["固定软件 probes + RewardKit
Rule 80% · VL 20% · Agent 0%"] V -.-> E H["Harbor 环境接口"] --> BK["Bunker adapter
通用版待实现"] H --> DK["Docker backend
本仓待验证"] H --> VM["专用 VM backend
后续"] P -.-> H E -.-> H
“配方版本已记录”“文件哈希正确”“原生运行已验证”“任务已冻结”“正式成绩完整”是五件不同的事。仓库刻意不让其中任何一项冒充其他项。
01–07:每一步吃什么、做什么、产出什么
Taxonomy:先定义职业工作,再选题
- 职业场景、岗位交接与真实委托资料
- 历史分类文档
scripts/import_blender_context.py 导入;arkevo taxonomy 通过 Schema、ID、组别、数量与职业引用检查目录。
- software/blender/taxonomy.json
- 固定 profession、group、workflow ID
已实现:导入与校验 不代表任务覆盖率
Raw data:登记、准入、脱敏派生
.blend、贴图、视频、教程、配套文件- URL、作者、许可线索、版本、依赖
sources 查本地 SHA256;原生脚本检查打开、依赖、功能、保存重开、媒体与敏感信息,并从原始物派生干净副本。
- software/blender/sources.json
- 私有原始物、脱敏派生物、准入回执
登记与哈希检查已实现 KUKA 个案已运行 其他资产逐件待验
初版任务:题面、阶段输入与 verifier
- Taxonomy workflow
- 通过准入和脱敏的资料
- 真实可发现的客户要求
构造自然题面、合理生产阶段的 workspace、交付路径、requirements → criteria 映射、最少 hidden references 和初版 probes;task-check 只做草稿合同校验。
task.json、instruction.mdworkspace/、tests/、参考解
KUKA 已完成 building-generator 仅草稿 通用自动 authoring 待实现
多模型试解:用失败发现题目问题
- 初版任务与 3–5 个候选配置
- 若含工程:未修改输入副本
每个模型对每题独立试解 1 次;先按相同 verifier 评输入基线,再保存轨迹、原生作品、分项证据、耗时与失败类型。
- trajectories、artifacts、criterion evidence
- 适用时的
input_reward与逐项变化
KUKA 两配置个案已跑 通用调度器待实现 本次少于默认 3–5 配置
聚合审题:修题、校准、冻结
- 题面、workspace、原始资料、rubric
- 多模型轨迹与作品、基线、评分证据
区分模型能力不足、歧义、缺资料、环境故障与评分漏洞;检查参考正例、替代解、部分完成、缺陷、投机样例和独立 holdout。
- review、calibration、修订记录
- 冻结任务、verifier 与 reference manifest
KUKA 已完成 通用自动审题待实现
正式评测:独立三次,不做幸存者平均
- 冻结任务、环境、预算与 evaluation plan
- 每配置每题 3 个独立 rollout
arkevo metrics 严格核对 pipeline、task、verifier、configuration、phase 与 attempt;solver failure 计 0,verification error 使整组 incomplete。
trials.jsonl、metrics.jsonavg@3、pass@3、缺失与错误清单
核心聚合器已实现 KUKA 六次结果有效 通用正式执行器待实现
数据产品:任务包、证据与可读网页
- 冻结 task package 与正式结果
- 作品、轨迹、评分明细、来源与版本
生成 Harbor 包、质量报告、数据集页与任务页;solver 包、verifier 私有材料和完整展示包保持隔离;导出前重新脱敏。
products/<version>/- 可下载任务包、HTML、证据索引
KUKA 内部小样已验收 通用生成器待实现 查看 KUKA 个案页 →
pipeline.py 的 production_plan() 只返回计划,不执行任何阶段。当前完整流程是“助手 + 明确命令 + 个案脚本”的半手工系统。
CLI:arkevo 命令全表
src/arkevo_task_scaling/cli.py 是薄入口。所有命令输出 JSON;基础检查不会启动 Blender、不会调用模型,也不会产生付费请求。
| 子命令 | 主要输入 | 输出 / 作用 | 退出码 |
|---|---|---|---|
check | --root | 综合检查 policy、pipeline snapshot、80/20 权重、模型尝试数、taxonomy、sources、示例 task;明确仅 foundation records | 0 成功;1 输入/结构错误 |
plan | --root --software | 七阶段、依赖、当前 progress 与可用 pipeline profile;mode=plan_only | 0 / 1 |
taxonomy | --root --software | Schema、唯一 ID、group 前缀、profession 引用、预期数量校验摘要 | 0 / 1 |
sources | --root --software --asset-root | 逐来源 missing / verified / hash_mismatch;只证明字节完整性 | 0 全部匹配;2 有缺失/不匹配;1 命令错误 |
task-check | path [--policy] [--identifiers] | 草稿合同、交叉引用、路径、权重、合同文本隐私;总是列发布 blockers | 0 结构有效;1 校验/读取失败 |
pipelines | --root | 读取 profile registry;不解析文件指纹 | 0 / 1 |
pipeline-resolve | --pipeline-id / --pipeline-version / --tag | 计算当前组件与代码文件哈希、完整 pipeline_digest;不写文件、不执行 | 0 唯一命中;1 选择不唯一或内容错误 |
pipeline-snapshot | 同上 | 不可覆盖地写 pipelines/<id>/<version>.json;同版异内容拒绝 | 0 新建或同内容重入;1 冲突/错误 |
privacy-check | path --root [--policy] [--identifiers] | 扫描文件名与支持的文本,输出哈希绑定报告,不回显匹配秘密 | 0 text_checks_passed;2 failed 或 coverage_pending;1 命令错误 |
metrics | --plan --trials | 严格完整性检查与 avg@3/pass@3 聚合 | 0 完整;2 缺 attempt / verification error;1 无效记录 |
展开:常用命令
.venv/bin/arkevo check --root .
.venv/bin/arkevo plan --root . --software blender
.venv/bin/arkevo taxonomy --root . --software blender
.venv/bin/arkevo sources --root . --software blender --asset-root ../blender
.venv/bin/arkevo task-check examples/blender/building-generator/task.json \
--policy configs/privacy.json
.venv/bin/arkevo pipelines --root .
.venv/bin/arkevo pipeline-resolve --root . --tag complex-assets
.venv/bin/arkevo pipeline-snapshot --root . \
--pipeline-id blender-complex-assets --pipeline-version 0.4.4
.venv/bin/arkevo privacy-check PAYLOAD --root .
.venv/bin/arkevo metrics --plan evaluation-plan.json --trials trials.jsonl
表示“命令成功执行,但结果不能放行或不能发布 headline metric”,不是 Python 崩溃。尤其 coverage_pending=2 必须补原生/媒体适配器证据。
数据合同:task.schema.json
task.json 是制题侧合同,不应整体暴露给 solver。当前 Schema 明确是 draft only,且 status 只能为 draft;KUKA 的冻结状态由个案证据维护,通用合同校验器不会“晋级”。
| 字段 | 类型 / 约束 | 真实示例 | 作用 |
|---|---|---|---|
task_id, task_version | 非空字符串 | blender-building-generator-candidate, 0.1-draft | 题目与修订身份 |
pipeline_ref | null 或 ID/version/64 位 digest | 旧草稿为 null | 绑定真实生产配方;不能事后猜 |
sanitization_policy | ID + version | rl-task-basic-sanitization@0.1.0 | 声明合同所用隐私策略 |
status | 当前只能 draft | draft | 防止基础校验冒充发布冻结 |
software, taxonomy_version | 必须匹配 catalog | blender, 1.0-20261013 | 绑定领域分类版本 |
workflow_primary | 已知 workflow ID | MOD-12 | 本轮主要新增能力 |
profession_primary | 已知 profession ID | G | 主要职业语境 |
source_ids, source_family | 已登记、家族一致 | procedural-buildings | 来源追溯与防泄漏划分 |
input_manifest | 安全相对路径;planned/ready | workspace/start.blend | solver 实际可见输入 |
deliverables | 唯一相对路径 | output/final.blend | 声明交付,不信任额外自报文件 |
requirements | ID、文本、至少一个可见 evidence source | instruction.md 的某节 | 确保评分要求可发现 |
criteria | rule/vl、通道内权重、关键性、状态 | 草稿当前为空 | 把公开要求连接到判分 |
references | 最少私有参考;pending/accepted | expected values / image / native project | 只给 verifier,不可与输入同路径 |
runtime | version、validated、notes | 来源为 Blender 2.93,当前未验 | 防止“文件存在”冒充可运行 |
verification | 版本、通道权重、阈值、封顶、校准状态 | {rule:.8, vl:.2, agent:0} | 冻结评分语义 |
open_questions | 字符串数组 | 许可、参数、起点如何构造 | 显式保留未决风险 |
展开:仓库中的真实草稿片段
{
"task_id": "blender-building-generator-candidate",
"task_version": "0.1-draft",
"pipeline_ref": null,
"workflow_primary": "MOD-12",
"profession_primary": "G",
"source_ids": ["procedural-buildings"],
"deliverables": [
{
"path": "output/final.blend",
"purpose": "可继续调整并运行的建筑生成工程"
}
],
"requirements": [],
"criteria": []
}
contracts.py 额外做了什么
结构与唯一性
JSON Schema;requirement / criterion / reference ID 唯一;输入和交付路径唯一。
路径隔离
拒绝绝对路径、..、反斜线、冒号和非规范路径;private reference 不得同时派发。
需求可发现
每个 requirement 的 evidence path 必须在 input_manifest 中。
引用闭包
criterion 只能引用已知 requirement 与 reference;agent criterion 被禁止。
两层权重
Rule/VL/Agent 通道权重总和为 1;每个启用通道内 criterion 权重也须为 1。
永不假装发布
即便结构有效,仍返回 release_ready:false 和 runtime、校准、许可等 blockers。
数据合同:taxonomy.schema.json
Taxonomy 编码的不是“工具菜单”,而是 职业场景 · 工作流 · 输入 · 输出 · 验收重点。Geometry Nodes 或 MCP 是实现手段,不会自动形成新职业。
| 层级 | 字段 | 示例 | 校验 |
|---|---|---|---|
| 根 | software, version | blender, 1.0-20261013 | 非空 |
| 来源 | provenance.document/sha256/source_date | 历史 Taxonomy 文档与日期 | SHA256 格式、YYYY-MM-DD |
| 职业 | id/title/commissioners/roles/downstream | G 游戏美术与实时内容 | ID 唯一 |
| 工作组 | id/title/expected_count/capability | MOD 模型与几何,14 项 | 组 ID 唯一、实际数量精确匹配 |
| 工作流 | id/group/title/professions | MOD-01 按规格设计道具或设备 | ^[A-Z]+-[0-9]{2}$,前缀等于 group |
| 任务语义 | commission/input/output/verification_focus | 用途与尺寸 → 可编辑模型 → 规格、部件和曲面质量 | 均为非空文本 |
5 类职业
G 游戏;F 动画影视;A 建筑可视化;P 商品广告;M 动态图形。
6 组生产工作
MOD 14、ANI 16、TEX 12、MAT 13、SCN 15、PIP 10。
80 个 workflow
每题一个 primary workflow;辅助标签只记录本轮新增能力,不把继承成果冒充考点。
展开:真实 workflow 示例
{
"id": "MOD-04",
"group": "MOD",
"title": "建筑模块与套件制作",
"professions": ["G", "A", "F"],
"commission": "制作墙、门窗、转角和屋顶模块",
"input": "模块清单、网格步长、立面/平面、拼接尺寸和允许变化",
"output": "可复用模块库及组合验证场景",
"verification_focus": "接口、尺度、枢轴和多种拼接;单栋楼不能替代模块能力"
}
commission 回答“谁委托什么”,input 回答“接手时有什么”,output 回答“交给下游什么”,verification_focus 回答“怎样避免表面完成”。
Pipeline versioning:配方身份不是一个版本字符串
当前可用路线是 blender-complex-assets@0.4.4。完整身份是 pipeline_id + pipeline_version + pipeline_digest;tag 只用于选择和分组,progress.json 只记录进度,两者都不进入 digest。
pipeline_id
稳定路线名:blender-complex-assets。
pipeline_version
配方修订:例如 0.4.4。
pipeline_digest
组件和代码清单的 canonical JSON SHA256。
pipeline_run_id
未来完整执行实例;当前通用执行器尚未实现。
versions.py 怎样计算 fingerprint
- 读取 configs/pipelines.json 中 profile。
- 对每个 component 文件保存相对路径、字节数与 SHA256。
- 递归枚举
code_roots,拒绝 symlink,跳过 cache /.pyc。 - 按 role 和路径排序,构造不含 tags 的 payload。
- 用紧凑、排序键、禁止 NaN 的 JSON 序列化,再计算 SHA256。
- snapshot 自己仍标记
execution_started:false、native_runtime_validated:false。
def content_digest(value):
body = json.dumps(
value,
sort_keys=True,
separators=(",", ":"),
ensure_ascii=False,
allow_nan=False,
)
return hashlib.sha256(body.encode()).hexdigest()
| 版本 | 相对前版的关键变化 | 注意 |
|---|---|---|
0.1.0 | 基础阶段、模型、评分、隐私、Taxonomy、Python 包代码/Schema;16 个代码文件 | 仅初始通用配方快照 |
0.2.0 | 加入 native intake、媒体 patch/review;新增下载、Blender 检查、脱敏、贴图抽取、序列化审计等脚本;绑定 KUKA 资产与二进制 | 配方更完整,不等于准入已执行 |
0.2.1 | 新增 render preview metadata 清理,并修改原生 stage 脚本接入独立预览检查 | 针对 PNG 自动写入路径的问题 |
0.3.0 | 加入 KUKA 公开题面/规格、pilot 配置、隔离 trial runner、任务 probe、视觉 judge 与探索性合分 | KUKA 双工位首题进入实际试解 |
0.4.0 | 加入正式 evaluation protocol、关键失败封顶、479 时刻原生取证、Harbor/RewardKit、进程文件限制与正式三次框架 | 历史正式运行曾遇基础设施故障 |
0.4.1 | 共享内存工作集保护、并发上限 2、逐帧重设验收相机、图片/原生/VL 哈希绑定;新增 process runtime 与 render 模块 | 修复缓存误判和镜头切换问题 |
0.4.2 | 有界 Blender 初始化;VL 派发前图片隐私检查;新增 blender runtime 与 judge privacy | 校准完成,但正式调用受可选 beta header 阻塞 |
0.4.3 | 精确过滤不兼容请求头并记录线上配置;重做六次独立 solver 批次 | 评分代码未变;solver 运行属于此版 |
0.4.4 | 视觉请求省略不兼容 temperature;VL 0.2.0、完整 verifier 0.2.2;统一 frozen-artifact regrade | 六次原始 solver 仍属于 0.4.3,不能重标 |
snapshot 只保存哈希清单,不归档源码字节、容器、模型 endpoint,也不证明执行过。历史复现仍需要 Git/源码归档、固定镜像和运行回执。
Privacy 与 sanitization:三道边界都要检查
configs/privacy.json 定义 rl-task-basic-sanitization@0.1.0。目标是让真实账号、宿主绝对路径、邮箱、凭据和认证链接不进入模型可见材料或产品,同时在私有控制侧保留原始物、哈希和替换映射。
| 检查点 | 实际 payload | 必须具备的证据 |
|---|---|---|
| 造题模型读取前 | 原生工程派生副本、规格摘要、教程提取、必要预览 | 干净派生物 + 白名单摘要;不喂整份 raw dump |
| solver 派发前 | instruction、workspace、附件、工具说明、环境可见文件 | 实际派发哈希 + 文本 + 原生/媒体 + 依赖闭包 |
| 产品导出前 | 最终工程、轨迹、日志、媒体、HTML、下载附件 | 对新生成内容重新检查;旧输入回执不能复用 |
privacy.py 的规则与保护
路径
Unix、Windows、UNC、file URL、home 环境变量;先做 NFKC 与两轮 URL decode。
身份
username 类字段、当前工作站用户、私有 identifier 词表、邮箱。
凭据
Bearer、常见 key 前缀、token query、带密码 URL、secret 字段。
文件系统
文件名和目录名也扫描;不跟随 symlink;special file 阻塞。
保密报告
只报告 rule 与 file_id,不回显命中值、敏感路径或上下文。
内容绑定
报告包含 policy hash、identifier-set hash、逐文件 hash 与 payload digest。
| status | 含义 | 退出码 |
|---|---|---|
text_checks_passed | 支持的文本与文件名无命中;不是完整脱敏 | 0 |
failed | 规则命中、非法结构或 symlink | 2 |
coverage_pending | 存在 .blend、图片、压缩包、大文本、二进制或空 payload | 2 |
| 命令错误 | 目标、策略或词表读不到 | 1 |
status = (
"failed" if findings
else "coverage_pending" if uninspected
else "text_checks_passed"
)
coverage_pending 不是“基本通过”。它表示检查器明确不知道二进制或媒体里有什么,必须由专用 adapter 与人工复核补证。
Native intake:怎样让 .blend 真正“可进入制题”
来源哈希只回答“是否是登记的那份字节”。原生准入还要回答:能否用固定软件安全打开、依赖是否齐全、目标功能是否工作、保存重开是否保持、渲染是否有效、脱敏是否破坏工程,以及授权是否允许计划用途。
flowchart LR A["登记 URL / SHA / 版本 / 权利线索"] --> B["固定 Blender
factory-startup + disable-autoexec"] B --> C["结构与依赖 inventory"] C --> D["功能 probes
播放 / 控制 / 渲染"] D --> E["对副本脱敏
路径 / 名称 / metadata / 像素"] E --> F["保存并重开"] F --> G["重复结构与功能检查"] G --> H["媒体 OCR / metadata / 人工复核"] H --> I["serialized string 补查"] I --> J["干净 authoring_input
按 SHA 绑定回执"]
| 脚本 | 通用职责 | 边界 |
|---|---|---|
| import_blender_context.py | 从历史 Markdown 表格重复生成 5 职业、6 组、80 workflow 与 4 条来源;快照文档,不复制 .blend | 相同内容幂等;差异文件默认拒绝覆盖 |
| bootstrap_blender_intake.py | 在自有隔离环境下载 hash-pinned Blender 与原始资产,核对版本、大小、二进制 SHA | 响应与日志留私有;bootstrap 后仍未宣称 native open validated |
| inspect_blender_native.py | 枚举 scenes、objects、bones、constraints、drivers、images、路径类型、依赖;公开摘要中敏感值变成 digest | 详细原字符串写私有审计;functional validation 仍 pending |
| clean_intake_preview.py | 删除 PNG 中 renderer 写入的路径 metadata,并逐像素证明不变 | 只覆盖这类 PNG metadata |
| audit_blend_serialized.py | 对 plain/gzip/zstd Blender 文件补查 printable ASCII 中的已知 identifier 和常见绝对路径 | 补充检查,不覆盖任意编码与全部 native semantics |
准入层级
- 来源已登记,URL、家族、哈希和许可线索存在。
- 本地字节与登记 SHA256 一致。
- 依赖已准备,外部文件与插件可定位。
- 在固定版本原生软件中安全打开。
- 相关控制、播放、模拟或参数功能实际运行。
- 保存重开、渲染和媒体复核通过。
- 授权用途经审核;“可下载”不等于“可转售”。
仓库中的 *kuka*、kuka_*.py、verifiers/kuka-v2、web/kuka-task 与 tasks/blender 是第一个完成个案,不代表通用 adapter。详细过程请看 KUKA case study。
Sources:来源登记不等于许可或可运行
software/blender/sources.json 当前登记 4 个历史 Blender demo:BMW27、radial tiling、procedural buildings、pizza delivery。保存版本横跨 2.73、2.93、4.2、5.0,全部仍标记 runtime_validated:false 与 rights_status:pending_review。
| 字段 | 作用 | 不能证明什么 |
|---|---|---|
source_family | 在派生 task 前做家族级 train/test 划分 | 不证明内容授权 |
source_url | 追溯下载来源 | 不证明当前可访问或可再分发 |
relative_path + sha256 + bytes | 确认本地文件身份 | 不证明可打开、播放、渲染 |
saved_version | 提示兼容环境 | 不证明新版 Blender 能正确迁移 |
candidate_workflows | 初筛可能的制题方向 | 不等于已有合格任务 |
license_evidence | 保存许可线索 | 不等于法律/商业用途审核完成 |
Verification:Rule 80 / VL 20 / Agent 0
这是 reward 贡献比例,不是 criterion 数量、调用次数或耗时比例。规则通道可以包含真正的功能测试;VL 只判断难以可靠程序化的有限视觉质量;自主探索 Agent 被移到制题、probe 开发、审题和离线复查。
Rule · 0.8
原生交付、尺寸、关系、参数、连续时间、接触、事件、可编辑功能。不能只数对象/节点。
VL · 0.2
造型、材质、灯光、变形、表演等必要质量;看可信、规范化、与工程绑定的证据。
Agent · 0
标准 rollout 判分不运行自主选视角或工程探索 Agent,避免高成本与高方差。
base_reward = 0.8 * rule_score + 0.2 * vl_score
# 通道内部 criteria 按各自显式权重汇总。
# 核心失败可应用校准后的 cap;success 另行计算。
固定软件 probes 与 RewardKit 的分工
| 组件 | 负责 | 不负责 |
|---|---|---|
| 软件 probe | 打开声明产物、测量几何/动画/参数、生成可信证据 | 不信任 solver 自报的 measurements.json |
| RewardKit | 执行 criteria、分组、权重、明细输出 | 不自动发明 Blender 专业规则 |
| VL judge | 按有限 rubric 和质量锚点判断证据 | 不自主增加要求,不因缺证据返回假 0 |
| 任务合分逻辑 | 关键失败 cap、独立 success、错误分类 | 不把服务故障当作品失败 |
VL 服务失败时不能把 Rule 的 80% 重新归一化成 100%,也不能直接当作品 VL=0;它是 verification_error,正式指标保持 null 直到按协议解决。
Input baseline:输入已有多少,不等于模型新增多少
| workspace 情况 | baseline_status | 分数语义 |
|---|---|---|
| 含工程,待评分 | pending | input_reward=null,排入同版 verifier |
| 含工程,有效评分 | scored | 保存总分、逐 criterion 分数与证据 |
| 没有工程,仅文字/图片/视频 | not_applicable | input_reward=null、reward_delta=null;不补造工程 |
| 含工程,但验收设施故障 | verification_error | 分数为 null,保留错误并按协议重试 |
reward_delta = final_reward - input_reward
# 有效范围 [-1, 1];负值保留,用于发现退化。
# 它只用于审题诊断,不替代正式 reward 或 success。
通用约定计划保存为 input-baseline.json 与 baseline-comparison.json,但当前没有 Schema 或 CLI;KUKA 已由个案脚本完成。
Evaluation:avg@3、pass@3 与错误语义
正式评测在任务、输入、环境、verifier、参考、阈值、judge 和预算冻结后进行。每个配置对每题独立运行三次;“同一作品打三遍分”不算三次。
avg@3 = (1 / N) * sum(
(r_i1 + r_i2 + r_i3) / 3
for each planned task i
)
pass@3 = (1 / N) * sum(
max(s_i1, s_i2, s_i3)
for each planned task i
)
evaluation.py 的实际聚合核心
valid = (
len(attempts) == 3
and all(t["status"] != "verification_error"
for t in attempts.values())
)
per_task.append({
"task_id": task_id,
"complete": valid,
"avg@3": mean(t["reward"] for t in attempts.values())
if valid else None,
"pass@3": int(any(t["success"] for t in attempts.values()))
if valid else None,
})
| trial status | reward / success | 对 headline metric 的影响 |
|---|---|---|
scored | 必须有 [0,1] finite reward 与 bool success;error=null | 正常计入 |
solver_failure | 明确 0 / false,并有原因 | 计入,不能从分母删除 |
verification_error | null / null,并有错误 | 整组 incomplete,avg@3/pass@3 均为 null |
| 缺 attempt | 不存在 | 整组 incomplete,不做幸存者平均 |
聚合器还拒绝:exploration 混入 evaluation、计划外 task、重复 run ID / attempt、pipeline identity 不一致、task/verifier/configuration 版本不一致。仓库 synthetic fixture 的结果是 avg@3=0.35、pass@3=0.5,不是真实模型基线。
Model config 与 preflight
configs/models.json 保存候选字符串,不把“名字写进配置”当作 endpoint 已可用。执行前还必须固定 runner、完整模型 ID、effort 映射、endpoint、工具、预算、客户端版本和配置哈希。
| 阶段 | 候选 | 配置状态 / 事实 |
|---|---|---|
| exploration | Codex + gpt-6-astra + xhigh | 配置标记 validated;历史 preflight 文本成功,早期内层 sandbox 文件闭环失败,后续外层隔离已跑通 |
| exploration | Claude Code + claude-opus-5-5 + xhigh | 最小文本与文件工具闭环通过 |
| exploration | seed-2-1, gemini-4 | 候选,runner/effort 未固定,未验证 |
| reviewer | Codex + Astra + xhigh | 配置中仍为 validated:false |
| evaluation | Astra、Opus、seed-pro 三候选 | 通用配置仍为 false;KUKA 个案实际只证明其明确记录的两种配置 |
最小文本调用、文件工具闭环、Blender 查询和真实图片评分要分别验证。模型名称能返回文本,不代表 runner sandbox、可选请求头、temperature、图片输入、并发或长任务一定兼容。
Infrastructure:统一接口,后端逐个验收
flowchart LR A["Arkevo
task · workspace · verifier · manifest"] --> H["Harbor
trial 调度 · Agent · 产物交接"] H --> E{"Environment backend"} E --> B["Bunker
专用个案已跑
通用 adapter 待实现"] E --> D["Linux + Docker
Harbor 已有 backend
本仓待验证"] E --> V["Windows / desktop VM
后续"] H --> R["独立 verifier"] R --> P["软件 probes"] P --> K["RewardKit"]
| 层 | 接口职责 | 当前状态 |
|---|---|---|
| Arkevo | 任务、workspace、环境要求、verifier、版本 | 合同与个案存在 |
| Harbor | 调度、Agent、轨迹、产物交接、调用 verifier | KUKA 专用接入已运行 |
| Bunker backend | 创建独立容器、执行、传输、资源、回收 | 直接共享作业与个案隔离已验证;通用分配 adapter 待实现 |
| Docker backend | 自有 Linux / AWS / 阿里云上的同一路线 | Harbor 能力存在,本仓跨服务器复现待验证 |
| VM backend | Windows / 专用桌面软件、许可与 GUI | 后续设计 |
| RewardKit + probes | 可信取证、criteria、合分、明细 | 通用模板仍故意不可运行;KUKA 个案已实跑 |
Harbor 环境接口至少要记录
- OS / CPU 架构、软件/插件版本、solver/verifier image digest、CPU/GPU/内存/磁盘/显示需求。
- 就绪检查、命令与总超时、网络策略、环境变量、执行用户。
- trial 独立 ID、创建/取消/销毁、失败时证据先导出再清理。
- workspace 上传、声明产物下载、路径边界与内容哈希。
- task/workspace/verifier/config/backend 版本、资源、日志、耗时与费用依据。
docs/SANDBOX.md 的用途是让获授权的内部同事安装并登录运维客户端、连接共享 CPU worker、使用共享存储。它包含内部连接材料,必须留在控制侧,绝不能进入 solver workspace、Harbor task、HTML、源码下载包或对外交付。本页不复制其中任何凭据、主机、证书或 token。
templates/harbor 为什么会主动失败
模板只声明 Harbor 1.3 形状、/app/output artifact、独立 verifier 和 RewardKit 的 0.8/0.2 权重。它缺少固定软件镜像、真实 probes、VL judge、私有参考和校准阈值,所以 tests/test.sh 故意退出,不制造常量 reward 或存在性假通过。
配置文件:谁管什么
| 文件 | 职责 | 不要混淆 |
|---|---|---|
| configs/pipeline.json | 七阶段依赖、输出和实现标签 | 计划不是运行器 |
| configs/pipelines.json | 当前 profile、组件、code roots、tags | tag 不是 immutable identity |
| configs/progress.json | 软件各阶段当前事实 | 不进入配方 digest |
| configs/models.json | exploration/reviewer/evaluation 候选与次数 | 候选名不证明 endpoint |
| configs/privacy.json | 文本扩展名、大小、规则、neutral usernames | 不能关闭 coverage 或回显匹配 |
| configs/verification.json | 80/20/0、fixed probes、reference policy、missing judge policy | 全局默认阈值仍待任务校准 |
| configs/native-intake-kuka.json | 首例资产、Blender、镜像与 hash pin | 个案配置,详见 KUKA |
| configs/kuka-*.json | 媒体 patch/review、pilot、evaluation 个案 | 不应推广为任意 Blender 通用准入 |
Python library:模块之间怎样协作
包内代码刻意保持“普通 domain function + 薄 CLI”。这样 Harbor、脚本或未来调度器都能复用同一逻辑,也能在不调用模型和 Blender 的单元测试中验证边界。
| 模块 | 主要入口 | 责任边界 |
|---|---|---|
| cli.py | main(), check_repository() | 解析参数、编排基础函数、输出 JSON 和映射退出码;不放专业逻辑 |
| contracts.py | validate_schema(), validate_task(), validate_weights() | Schema 与 task 交叉引用;只认 draft,不做原生发布验收 |
| taxonomy.py | validate_taxonomy() | 目录 ID、组、职业引用与精确计数;输出 catalog_only |
| sources.py | validate_sources(), check_sources() | 来源 Schema、相对路径与 SHA;输出 registered_static_audit |
| versions.py | resolve_pipeline(), seal_pipeline(), check_pipelines() | 配方选择、内容寻址与不可覆盖 snapshot;不执行生产 |
| pipeline.py | production_plan() | 验证阶段拓扑并合并 progress;明确返回 plan_only |
| privacy.py | scan_payload(), check_contract_privacy() | 保守文本/文件名检查;原生、媒体、依赖仍由 adapter 负责 |
| evaluation.py | aggregate() | 冻结计划的完整性与宏指标;不执行 rollout 或 verifier |
| io.py | parse_json(), relative_path(), inside(), sha256() | 拒绝重复 JSON key、NaN/Infinity、路径逃逸和非规范相对路径 |
| schemas/*.json | Draft 2020-12 Schemas | task/taxonomy/sources/evaluation-plan/trial 的可安装合同 |
展开:严格 JSON 与路径为何重要
# 这些值会被拒绝:
{"reward": 0, "reward": 1} # duplicate key
{"reward": NaN} # non-finite
"../private/reference" # parent traversal
"/host/path/file.blend" # absolute path
"a\\b" # non-portable separator
# 合格包内路径:
"workspace/start.blend"
"output/final.blend"
目录地图
arkevo_task_scaling/
├── configs/ 阶段、版本、模型、隐私、评分与进度
├── pipelines/ 不可覆盖的配方 fingerprint snapshots
├── docs/ 设计与运行协议
├── software/blender/ Taxonomy、sources、实施入口与历史证据
├── src/arkevo_task_scaling/ CLI、contracts、versions、privacy、metrics
│ └── schemas/ task/taxonomy/source/evaluation/trial JSON Schema
├── examples/blender/ 明确标记 draft 的合同示例
├── templates/harbor/ 故意不可运行的集成边界样板
├── scripts/ 导入、原生准入、脱敏、个案执行脚本
├── tests/ 合同、版本、隐私、来源、CLI、指标测试
├── data/ 本地大文件与私有参考约定
├── runs/ 运行产物,Git 忽略
├── products/ 冻结包与 HTML,Git 忽略
└── web/kuka-task/ KUKA 展示个案
零基础推荐阅读顺序
- README.md:先看 01–07 全图和当前状态。
- 本页:建立通用合同、CLI、版本、隐私与评测心智模型。
- docs/DESIGN.md:理解为什么这样分层。
- docs/MODULES.md:把阶段映射到文件与实现状态。
- software/blender/WALKTHROUGH.md:看首题真实进度。
- software/blender/LESSONS.md:看评分、相机、内存、接口与脱敏踩坑。
- 按问题查 VERIFICATION / EVALUATION / PIPELINE_VERSIONS / SANITIZATION / INFRASTRUCTURE。
- 最后读 src/ 与 tests,用测试确认协议不是口号。
与 arkevo_blender_rl 的耦合与边界
arkevo_task_scaling 是上游方法论与首例实验场;arkevo_blender_rl 是 Blender 专用的批量自动化流水线(authoring → solver → scoring → packaging)。两者不是同一个执行器,也没有共享运行时 import。
| 耦合点 | 已验证事实 | 使用方式 |
|---|---|---|
| Taxonomy snapshot | 两仓 taxonomy.json 当前逐字节一致;47,050 bytes,SHA256 a7d0a0a5…272c38 | 批处理 authoring skill 从本地 snapshot 选择 profession/workflow ID |
| Task Schema snapshot | 两仓 task.schema.json 当前逐字节一致;5,832 bytes,SHA256 779c7afd…13826 | 批处理发布时校验 authoring 生成的 task.json |
| 合同语义 | 需求可发现、公开输入与 private reference 隔离、安全相对路径、Rule/VL criteria 等概念沿用 | 批处理在自己的 authoring skill 中增加更严格的校准与发布流程 |
| 版本策略 | 上游 80/20 KUKA 配方不会被批处理 70/30 覆盖 | 两套 scoring profile 独立版本化 |
| 概念阶段 | 两者都走造题、求解、评分、打包;上游强调 01–07 数据生产方法 | 批处理把中后段变成长驻 worker、handoff event 与不可变交付 |
arkevo_task_scaling
跨专业软件的方法论仓;当前助手 + 脚本半手工逐题;默认 Rule 80 / VL 20;含来源准入、Taxonomy、输入基线、avg@3/pass@3、KUKA 首例。
arkevo_blender_rl
Blender 批处理系统;四个独立组件和事件队列;authoring/solver/scoring/packaging 自动推进;Rule 70 / VLM 30;采用本地复制的合同快照。
批处理仓的 references/context-lock.json 当前记录的两个 snapshot digest 与实际复制文件的现行 SHA256 不一致,说明 lock metadata 已陈旧。实际文件彼此 byte-identical,但尚不能把 lock 当作可靠的自动同步证明;更新任一上游合同后应显式复制、重算锁并做跨仓测试。
测试告诉我们的真实边界
Contracts
隐藏 requirement、绝对路径、unknown references、agent judging、错误通道权重与“把 draft 改 frozen”都会失败。
Versions
源码/配置变化会让 sealed version 失败;tag/progress 不改 digest;snapshot 篡改被拒绝。
Privacy
JSON escape、URL encoding、敏感文件名、symlink、binary、空目录都有测试;clean receipt 会随内容变化。
Sources / IO
missing/hash mismatch、路径逃逸、symlink escape、duplicate JSON key、NaN/Infinity 都被拒绝。
Evaluation
缺一次、verification error、混 phase/version/config、重复 attempt 都阻止 headline metric。
Native intake
PNG metadata 去除须像素不变;patch 须匹配 source hash;serialized scan 支持 plain/gzip/zstd synthetic fixtures。
常见误解与重要 caveats
仓库是生产框架和首例证据,不是已具规模、跨资产验证、可直接训练的完整 benchmark。
历史文档提到的 820 来源、1,506 候选题和 210 题集合没有完整清单随仓保存,不能作为当前已验收数量。
四个历史 demo 的 SHA 已登记,但未在本项目内完成原生运行或用途审核;“公开下载”与“允许再分发/训练”是两件事。
输入基线协议很完整,KUKA 也跑过,但 input-baseline.json、comparison Schema 和 CLI 仍待实现。
共享 Bunker 可运维使用,KUKA 专用隔离已跑;这不等于通用 Harbor–Bunker adapter、Docker 跨服务器复现或 GPU 路线已经验证。
输入高分不自动说明题坏,输出涨分也不自动说明 verifier 鲁棒。必须看“新增项是否改善、继承项是否退化、伪解是否获益”的逐项证据。
术语表
| 术语 | 零基础解释 |
|---|---|
| RL task | 供 Agent 操作软件并由 verifier 返回 reward 的完整任务单位,不只是一段 prompt。 |
| Taxonomy | 职业场景和工作流目录,定义典型输入、输出和验收关注点。 |
| workspace | 实际派发给 solver 的阶段工程与附件集合。 |
| solver | 尝试完成任务的模型 + runner + 工具 + 环境配置。 |
| verifier | 隔离读取声明交付,运行 probes、VL 判断与合分的验收系统。 |
| probe | 在 Blender 等原生软件里测量真实结构或行为的固定程序。 |
| Rule | 程序化、可重复的规格或功能检查通道。 |
| VL / VLM | 视觉语言模型判断通道,只处理程序难以覆盖的视觉质量。 |
| RewardKit | 执行 criteria、分组、加权并保存明细的评分组织工具。 |
| Harbor | 任务封装与 trial 调度框架,连接 Agent、环境、产物和 verifier。 |
| Bunker | 一种计算环境平台;需要 adapter 才能成为通用 Harbor backend。 |
| hidden reference | 只供 verifier 使用的最少预期值、图片、片段或工程;不等于隐藏需求。 |
| input baseline | 未修改派发工程在同版 verifier 下的得分,用于分析新增工作。 |
| reward_delta | 最终得分减输入得分;诊断改进/退化,不是正式 reward。 |
| avg@3 | 每题三次 reward 先平均,再对计划中所有题做宏平均。 |
| pass@3 | 每题三次中至少一次 success 的比例。 |
| solver_failure | 执行设施正常,但 solver 未完成;按冻结协议计 0。 |
| verification_error | 评分设施或服务故障;不是作品 0 分,会阻止完整指标。 |
| pipeline_ref | pipeline ID、version、digest 三元组,绑定生产配方身份。 |
| snapshot_recorded | 当前配方内容与不可覆盖 snapshot 一致;不代表实际运行。 |
| source family | 同一原作品、版本或共享组件形成的家族,用于先切分再派生任务。 |
| sanitization | 对模型输入、solver payload 和产品中的身份、路径、凭据等做检查与安全派生。 |
| coverage_pending | 文本检查无法覆盖某些文件,必须补原生/媒体检查的阻塞状态。 |
| calibration | 用正例、替代解、部分完成、缺陷、投机样例和 holdout 验证评分器。 |
| frozen artifact regrade | 题面/输入不变、只升级 verifier 时,对同一冻结作品统一重新评分并保留旧分。 |
研究者可以从哪里开始动手
只想理解
按“README → 本页 → WALKTHROUGH → LESSONS”阅读,再打开测试看每条边界如何被强制。
想接新资产
先登记来源与家族,做固定版本原生准入和脱敏派生,再选择 workflow;不要先写 prompt。
想做自动化
优先补通用 pipeline_run_id stage receipts、baseline Schema/CLI、Harbor backend adapter 与 packaging generator。
任何“完成”声明都要追问:完成的是文件结构、内容哈希、原生功能、评分校准、运行完整性,还是产品交付?只有证据对应,状态才有意义。