邵勃源 e35ab52873 feat(bridge): 完善 PaaS 任务恢复与通用客户端交互 5 days ago
..
README.md e35ab52873 feat(bridge): 完善 PaaS 任务恢复与通用客户端交互 5 days ago
cases.json e35ab52873 feat(bridge): 完善 PaaS 任务恢复与通用客户端交互 5 days ago
evidence.md e35ab52873 feat(bridge): 完善 PaaS 任务恢复与通用客户端交互 5 days ago
independent-software-check.py e35ab52873 feat(bridge): 完善 PaaS 任务恢复与通用客户端交互 5 days ago
measurements.csv e35ab52873 feat(bridge): 完善 PaaS 任务恢复与通用客户端交互 5 days ago
policy.txt e35ab52873 feat(bridge): 完善 PaaS 任务恢复与通用客户端交互 5 days ago
software-task.md e35ab52873 feat(bridge): 完善 PaaS 任务恢复与通用客户端交互 5 days ago

README.md

PaaS + OpenCode 单任务验收

目的:用固定输入检查实际部署智能体是否能接收文件、执行任务、登记产物、恢复观察,并记录可核查结果。它是小规模验收,不是“优于原始 Qwen”的对比实验,也不代表覆盖 125 个科学问题。

用例与指标

用例 固定输入 自动检查 必须人工检查
data 有重复和缺失值的 6 行 CSV 行数、去重数、缺失数、组均值、总体均值、实际清洗行与输入逐行比对、独立重算、产物存在 处理解释是否合理
qa 有版本覆盖和未知信息的合成政策 当前值、来源版本、未知字段为 null、引文逐字对照来源、产物存在 引文是否支持答案,是否正确区分冲突与版本替换
software 明确的函数行为和四个边界输入 输出案例值及源码/测试文件存在 审阅后在独立沙箱执行测试;脚本不执行生成代码
research 含混杂因素、反例和测量规范的合成证据 证据 ID、逐字引文、禁止因果夸大/伪称模拟的字段、产物存在 假设可证伪性、反证处理、计划可执行性;不是科学真实性证明

自动检查逐项记录通过/未通过和分子分母,不生成综合质量总分。它们不等权代表科研质量,也不保证 JSON 声明与报告一致。人工项初始为 not_reviewed;quality_score 保持 null。任务状态、是否取得产物、已报告 tokens/费用、从提交开始的观察墙钟时间单列。费用缺失为 null;服务端报告 0 不足以证明免费。初轮 correction_rounds=0;后续修订需单独保存 run_id、父版本、反馈与评分,不能覆盖首轮并当成首轮成功。

运行

需要本仓库开发依赖、运行中的 PaaS/执行服务、已部署的目标智能体,以及 AGENTPAAS_URL / AGENTPAAS_API_KEY(或已有本机配置)。不要把凭证写进本目录。智能体必须实际具有输入读取和产物写出能力;不要只按名称猜能力。

从 OpenCode 仓库根目录:

# 无网络、无模型调用,查看完整用例与标准
bun script/accept-agentpaas.ts

# 只读实际目录,选定 agent_id
bun script/accept-agentpaas.ts --catalog

# 一次只运行一个用例;output 的父目录必须存在,目标目录必须不存在
bun script/accept-agentpaas.ts --run --case data --agent-id ag_实际ID \
  --model-label 部署中实际模型版本 --output /tmp/paas-data-01 --wait-seconds 120

# 未结束、等待审批或观察断开后,只恢复原任务,不重复上传或提交
bun script/accept-agentpaas.ts --resume --output /tmp/paas-data-01 --wait-seconds 120

替换 --case 为 qa/software/research,分别选择适合该能力的智能体和新的输出目录。默认不探测模型;--probe-model 会额外发起小额模型请求,消耗由服务端计量。--model-label 是操作者记录的版本,脚本不会谎称已自动验证它,应先与部署配置核对。

脚本使用实际 OpenCode 桥接工具,先检查资源再上传固定输入,随后后台提交一次任务。--wait-seconds 为 0–900,只限制本轮观察时间,不是模型费用或服务端运行时间上限;停止服务端任务须在 OpenCode 用 agentpaas_task cancel。脚本不会自动批准工具操作;遇到审批,先在 OpenCode 展示材料并作决定,再 resume。第一次响应不明确且 receipt 处于 submitting、没有 run_id 时,--resume 按原请求键只读找回;仍查不到则保留凭据并提示核查,不重新运行 --run。

输出包括:

  • receipt.json:用例、模型标签、请求键、文件 ID、run_id、恢复信息;仅限本机保存,勿提交。
  • result.json:执行状态、自动检查、未评审项、耗时和服务端已报告用量。
  • result.md:该次快照的结果与下一步提示。
  • .agentpaas-artifacts/:经带鉴权接口下载并校验的真实文件。

未结束时 automatic_checks=null,不能计为质量失败或通过。completed 但关键文件缺失时,自动项必须失败。验收需同时报告未完成、审批等待、资源阻断等任务,不能只统计成功产出者。

后续效果对比

通过小样例后,再冻结模型版本、采样设置、输入证据、工具权限、预算和案例集,对原始 Qwen 与系统做配对重复实验。按场景分别报告完成率、产物检查、盲评质量、修订收益和成本;先做独立评分,再决定是否需要事先规定权重的总分。本目录不提供未经运行的模型成绩。

独立产物检查

运行模式由 cases.json 固定为 iterate,并写入 receipt/result,避免科研入口只返回聊天说明。data 自动检查实际下载的 cleaned.csv,并从原输入重新计算去重、缺失和均值;自报 JSON 正确但 CSV 错误仍不能全通过。qa/research 要求 evidence_quotes,逐字核对指定来源及报告中的引用;这仅验证出处,不能代替人工判断引文是否支持主张。软件的 result_cases 是模型自报值,不能计为代码测试通过。

软件独立测试是 independent-software-check.py 中的 9 个固定案例,与模型生成的 test_solution.py 分开。先审阅 solution.py,然后在已有可信 Python 镜像的隔离容器运行(替换两个绝对路径;镜像必须已在本机,不自动拉取):

docker run --rm --pull=never --network=none --read-only \
  --cap-drop=ALL --security-opt=no-new-privileges --pids-limit=32 \
  --memory=128m --cpus=1 --user=65534:65534 \
  --tmpfs /tmp:rw,noexec,nosuid,size=16m \
  --mount type=bind,src=/绝对路径/solution.py,dst=/work/solution.py,readonly \
  --mount type=bind,src=/绝对路径/independent-software-check.py,dst=/work/check.py,readonly \
  python:3.12-alpine python -B -I /work/check.py /work/solution.py

脚本限制 10 秒执行并输出逐例结果;保留 Docker 退出码和原始输出,异常/超时算执行失败。Docker 未运行、镜像缺失或没有实际执行时填写 not_run,不能填 0/9 或 9/9。本轮开发环境 Docker 未运行,尚未执行该容器验收。主验收不会在宿主机自动执行生成代码。

统计自动检查通过数和人工质量结果时分别展示,不合并成未经校准的总分。usage_complete / cost_complete 缺失或 false 时,只报告已观测用量,费用估算不能当成供应商账单。