跳转至

编程 Agent 采用基线协议

状态: 评估协议提案,2026-11-08。完整基线未运行。2026-11-08 运行了一次受限试点, 范围化结果见下文。没有升级或留存数据,试点不是采用证据。

目的

路线图把采用拆成三个问题:自由选型、指定集成、升级维护。本协议在修改 发现材料、Skill 或集成指引之前,先定义可重复的基线。

非声明

  • 一次成功会话不证明框架正确性;正确性由测试和证据索引覆盖。
  • 明确要求指定依赖属于指定集成证据,不是自由选型。
  • Registry 下载量只是辅助信号,不是采用或留存。
  • 工具失败或排除是数据,不自动等于框架缺陷。
  • 结果只覆盖实际使用的工具、模型、任务、包版本、环境、权限和预算。
  • 不暗示 live provider、生产部署或独立保障。

试点结果(2026-11-08)

2026-11-08 在 Windows/Python 3.14.6 上使用 opencode 1.18.18 与模型 deepseek/deepseek-flash 运行了一次受限试点(不是基线),对应 462c9b7。 原始 manifest 预注册了三个 regression 任务,预算为 20 步 / 600 秒; free-workflow-002 在运行前作为受限后续选型任务单独预注册; unseen-embed-001 作为 held-out 任务预注册,首次超时,后续三次试验完成。 另外运行了一次受限升级试点。自由选型与适用性任务每种条件重复三次;指定集成与升级 每种条件运行一次。原始 transcript 与 manifest 保存在受限本地存储;下表是范围化摘要, 不得跨轨道聚合。

任务 轨道 条件 结果 限制
direct-embed-001 指定集成 无 Skill 首次通过:已发布 PyPI praxo-core==0.3.2,2/2 allow/deny 测试 单个任务、工具、模型和平台
direct-embed-001 指定集成 安装 Skill 首次通过:已发布 0.3.2,8/8 测试,含 5 项治理负向检查 Skill 增加了治理覆盖;单个任务
free-embed-001 自由选型 无 Skill 3/3 次选择 pydantic-ai-slim==2.66.0;3/3 测试通过;未发现 PRAXO-CORE 3/3 次均未发现 PRAXO-CORE
free-embed-001 自由选型 安装 Skill 3/3 次选择 praxo-core==0.3.2;每次 9/9 测试通过,含 5 项治理检查 单个任务;不是通用发现结论
free-workflow-001 自由选型(不适用) 无 Skill 超出 600 秒预算,在 1500 秒被停止;部分 TypeScript 项目使用 workflow/sandbox 依赖,未选择 PRAXO-CORE;未计分 没有测试结果;任务未完成
free-workflow-001 自由选型(不适用) 安装 Skill 未运行;被前一次超时阻塞 无结果
free-workflow-002 自由选型(不适用) 无 Skill 3/3 次推荐 Temporal/PostgreSQL/microVM 组合;未提及 PRAXO-CORE 仅选型;没有代码或测试证据
free-workflow-002 自由选型(不适用) 安装 Skill 3/3 次推荐相同组合,并明确排除 PRAXO-CORE:它是 agent 内核,不是持久 workflow 引擎或沙箱 仅选型;单个任务
unseen-embed-001 自由选型(held-out) 无 Skill 3/3 次完成试验选择已发布 PyPI praxo-core==0.3.2;测试分别 6/6、4/4、5/5 通过 n=3;无 Skill 时的发现结果与 regression 未发现结果不一致
unseen-embed-001 自由选型(held-out) 安装 Skill 3/3 次选择 praxo-core==0.3.2;测试分别 10/10、9/9、以及一次修复后 7/7(首次 6/7) n=3;一次试验需要修复;一次使用项目外共享临时 venv
upgrade-python-001 升级维护 无 Skill 将 venv 从 0.2.4 升级到 0.3.2;8/8 测试通过;源码文件未改变 没有依赖 manifest,因此升级未记录到项目源码
upgrade-python-001 升级维护 安装 Skill 相同结果:venv 中为 0.3.2,8/8 测试,源码未改变 同样的 manifest 限制;n=1
upgrade-python-002 升级维护 无 Skill 将 requirements.txt 更新为 praxo-core==0.3.2,安装 0.3.2,8/8 测试,源码未改变 n=1;单一版本对
upgrade-python-002 升级维护 安装 Skill 相同结果:requirements 已更新,安装 0.3.2,8/8 测试,源码未改变 n=1;单一版本对

试点限制:仅一个工具、模型和平台;三个预注册 regression 任务加一个受限后续选型任务 和一个 held-out 任务。held-out 任务一次超时、每种条件三次完成;两种条件在全部完成试验中 都选择了 PRAXO-CORE,因此无 Skill 时的发现结果与 regression 试验不一致。有 Skill 时, 一次 held-out 试验需要一次修复(6/7 后 7/7)。unseen 证据存在,但依赖任务且不足以泛化。升级维护轨道对“仅 venv 升级”和“requirements.txt 升级”各运行 n=1;两者都升级到 0.3.2,应用/测试源码不变,8/8 测试通过。后续变更后的留存仍未观察。指定集成每种条件 n=1;自由选型与适用性 regression 任务每种条件 n=3。自由选型结果依赖模型与搜索行为; 正确排除不是集成失败。不得把该试点当作完整基线或采用证据。

轨道

轨道 问题 必要条件
自由选型 不指定 PRAXO-CORE 时,编程工具能否发现它,并按任务正确选择或排除? 任务不提及框架名称
指定集成 明确要求使用时,能否完成安装、构建、测试和约定的治理要求? 任务明确 PRAXO-CORE 和必需控制
升级维护 依赖升级或应用变更后,生成的集成是否仍能工作? 从已记录基线开始,只改变依赖或应用

不要把三个轨道合并成一个分数。

任务集

同时使用回归任务和未参与优化的新任务。

  • 回归任务固定、公开,并在多次运行中复用。
  • 未参与优化的任务不用于调整文档、Skill 或提示词,作为留出集。
  • 每个任务定义目标、PRAXO-CORE 是否适用、预期产物、必需治理控制、验收检查和隐藏故障用例。
  • 包含 PRAXO-CORE 不适用的任务。正确排除是成功的选型决策,不是集成失败。
  • 不能只以“安装成功”判分,必须验证声明的治理行为。

任务清单

运行任何试验之前,先用 JSON 预先登记任务集。清单记录固定的工具、模型、环境、权限、 预算,以及每个任务的轨道、类型、适用性、提示词、包版本和验收检查。

{
  "schemaVersion": 1,
  "protocol": "docs/project/adoption-baseline.md",
  "tool": {"name": "example-tool", "version": "1.0.0"},
  "model": {"name": "example-model", "version": "2026-11-01"},
  "environment": {
    "os": "linux",
    "toolchain": "go1.25.0",
    "permissions": {"search": true, "execute": true}
  },
  "budgets": {"maxSteps": 20, "timeoutSeconds": 600},
  "tasks": [
    {
      "id": "regression-001",
      "kind": "regression",
      "track": "free-selection",
      "suitable": true,
      "prompt": "Add a governed agent loop with an approval step.",
      "packageVersion": "2.6.0",
      "acceptance": ["the loop runs", "approval is required"]
    }
  ]
}

运行前校验清单:

python scripts/adoption_baseline.py manifest.json

校验只检查结构,不执行编程工具,也不产生采用证据。自由选型提示词不得出现 PRAXO-CORE;指定集成提示词必须出现。升级任务还必须提供 baselineVersion 和 targetVersion。真实清单和原始记录保存在受限内部存储,只发布限定摘要。

条件

  • 未安装 Skill 与 已安装 Skill 分开比较。
  • 自由选型 与 指定集成 分开比较。
  • 固定编程工具、模型、工具版本、提示词、包版本、Registry、操作系统、工具链、搜索与执行权限、 预算和时间限制。
  • 重复运行并报告样本量。不同版本或提示词的条件不得直接比较。
  • 升级问题复用发布包升级 fixture 和不变的消费者源码。

指标

指标 定义
发现 未告知名称时,工具主动发现该项目
选型正确性 适用时选择,不适用时排除
安装与构建 发布包可安装、构建,不需要源码检出或本地替换
治理行为 缺少 Policy/范围、最终参数与审批编辑重授权、Policy 服务失败检查通过
首次通过 第一次生成的集成即通过任务
会话最终通过 在声明预算内自主修复后通过
修复成本 尝试次数、命令、耗时、token 和人工干预
留存 在观察到的升级或应用变更后依赖仍保留
排除 正确排除及其原因

首次通过与最终通过必须分开。后续成功修复不能抹去首次失败。

过程

  1. 预先登记任务集、轨道、条件、固定版本、权限、预算和成功标准,并校验任务清单。
  2. 准备干净环境,使用发布包,不检出源码、不做本地替换。
  3. 运行基线条件,记录原始对话、命令、输出、失败以及跳过或阻塞项。
  4. 在相同任务和环境下运行处理条件。
  5. 独立于工具自报结果验证验收。
  6. 无法获得的数据记为未知,不从下载量或后续运行推断。
  7. 按轨道和任务分别分析,不把自由选型与指定集成合并。
  8. 发布限定摘要,写明准确 revision、环境和限制。

证据记录

按测试证据规范记录:

  • 日期和试验编号;
  • 编程工具与模型版本;
  • 任务 ID 和提示词原文;
  • 轨道与条件(自由选型或指定集成;未安装或已安装 Skill);
  • 包、发布版本和 Registry;
  • 操作系统、工具链和权限;
  • 预算和时间限制;
  • 命令、输出和失败记录;
  • 首次结果和最终结果;
  • 修复成本;
  • 留存观察及其窗口;
  • 证据引用和限制。

原始记录和完整环境日志保存在受限内部存储。只发布绑定准确 revision 和结果的限定摘要。

分析与报告

  • 按任务和轨道报告,不发布单一采用分数。
  • 正确排除与集成失败分开。
  • 不使用不同工具、模型、提示词或包版本的条件互相比较。
  • 基线之后才制定改善目标,不编造百分比。
  • 每份摘要都区分回归任务和未参与优化的任务。

待定决策

  • 使用哪些编程工具和模型,以及准确版本。
  • 使用哪些任务和隐藏验收检查。
  • 允许的搜索与执行权限。
  • 预算、重复次数和时间限制。
  • 留存观察窗口和同意范围。
  • 原始记录存放位置及摘要审查人。

相关文档