Skip to content

[P1][Eval/Harness] 将实验配置真正应用到运行时,并记录 requested / effective 配置差异 #114

Open

Description

@helsome

问题

评测记录写了某个 model/provider,不代表实际 Agent 使用了它。当前 CLI / ExperimentService 的配置记录与 runtime 控制之间存在接线缺口,可能产生“标签是模型 A,实际仍跑默认模型”的无效横向比较。

当前现状

代码审查基线:6405b7b9a9aad331dcdb60dc1a7965328a6a6f4a。

  • scripts/eval/run.ts 先构造 Pi-runtime AgentKernel,再把 CLI 的 model/provider 等参数放进 ExperimentConfig。
  • packages/shared/src/evaluation/experiment-service.ts 的 ExperimentKernel 接口仅读取 LLM state;runCase 启动 run 时没有把所选 model/provider 应用到运行时,也没有校验实际生效值。
  • requested config 随实验/trace 保存,因此元数据本身不能证明使用了对应模型。
  • 此处是代码路径审查发现的配置接线问题;尚未声称已运行真实双模型 A/B 复现。

期待的解决方向

  1. 在每个实验/新建 case session 启动前,通过现有 Pi/LLM 控制接口应用受支持的模型选择。配置不受支持或应用失败时明确报错,不静默回退。
  2. 从运行时回读实际 model/provider,区分 requestedConfig 和 effectiveConfig。只有确认生效后,才把它记录成该 run 的实际模型。
  3. 对 thinking、strategy、budget 等已有 CLI 参数梳理实际消费位置:确实支持的接线;当前不支持的明确拒绝或标注未应用,不能作为已生效的实验维度。
  4. 保持 case/session 隔离,不让上一个实验的模型或配置污染下一实验。
  5. 保存最小可复现快照(effective model/provider、dataset/version、git SHA、适用的 prompt/strategy/budget 标识);复用 [Reproducibility] Persist immutable run manifests for Agent / Deep Research #21 方向,不新造另一套 Manifest 系统。

验证标准

  • 使用可观测的 runtime fake 覆盖:配置在 startRun 前应用、回读不匹配阻止运行、provider/model 不支持明确失败、连续两个实验不会配置串用。
  • CLI 参数解析 → ExperimentService → runtime control → run metadata 有一个小型集成测试,不能仅断言 metadata 等于 CLI 输入。
  • 至少完成同一小 case 的两次真实模型运行(可同一 provider 的两个模型),展示实际命令、Bun/OS、requested/effective 值、run id,以及成功真实 Tool/数据返回与最终输出;不要求统计显著性、性能 benchmark 或完整 Gold suite。
  • 凭证不进入报告;没有回读依据的参数不得冒充 effective config。
  • 旧实验记录仍可读,缺失 effective 信息明确为历史未知,不反填推测值。

Scope / 所有权

Refs #15(当前由 @xxstar-01 认领)、#21。这里只处理实验配置实际生效与如实记录,是可独立贡献的接线修复,不替代/关闭原 Issue,也不要求重写 AgentKernel 或新建 SDK。

与 #113 分工:#113 检查本轮是否有效执行;本 Issue 检查有效执行时到底使用了哪套配置。

Activity

  1. RXQ6 commented on Sep 17, 2026

    @RXQ6
    Contributor

    /claim

  2. github-actions commented on Sep 17, 2026

    @github-actions

    @RXQ6 已认领该 Issue,并已自动设为 Assignee。提交 PR 时请在描述中写 Closes #114。

  3. github-actions commented on Sep 24, 2026

    @github-actions

    @RXQ6 这个 Issue 已认领超过 7 天,目前没有发现关联的 open PR,也没有看到最近 7 天的进度更新。

    如果仍在推进,请在 3 天内 留一条简短进度说明(包括正在等待的前置依赖也可以);如果已经有 PR,请贴出链接。若 3 天内没有回应,认领会自动释放,方便其他贡献者接手。

  4. github-actions commented on Sep 27, 2026

    @github-actions

    @RXQ6 在提醒后 3 天内没有进度回应,且仍未发现关联的 open PR;本次认领已自动释放。Issue 保持开放,可以重新认领。

  5. removed
    claimedClaimed by a contributor and currently in progress
    on Sep 27, 2026
  6. yjg-djb commented on Sep 30, 2026

    @yjg-djb
    Contributor

    /claim

  7. github-actions commented on Sep 30, 2026

    @github-actions

    @yjg-djb 已认领该 Issue,并已自动设为 Assignee。提交 PR 时请在描述中写 Closes #114。

  8. 2 remaining items

  9. github-actions commented on Oct 14, 2026

    @github-actions

    @yjg-djb 这个 Issue 已认领超过 7 天,目前没有发现关联的 open PR,也没有看到最近 7 天的进度更新。

    如果仍在推进,请在 3 天内 留一条简短进度说明(包括正在等待的前置依赖也可以);如果已经有 PR,请贴出链接。若 3 天内没有回应,认领会自动释放,方便其他贡献者接手。

  10. removed
    claimedClaimed by a contributor and currently in progress
    on Oct 18, 2026
  11. github-actions commented on Oct 18, 2026

    @github-actions

    @yjg-djb 在提醒后 3 天内没有进度回应,且仍未发现关联的 open PR;本次认领已自动释放。Issue 保持开放,可以重新认领。

  12. yuee3 commented on Oct 18, 2026

    @yuee3

    /claim

  13. github-actions commented on Oct 18, 2026

    @github-actions

    @yuee3 已认领该 Issue,并已自动设为 Assignee。提交 PR 时请在描述中写 Closes #114。

  14. yuee3 commented on Oct 18, 2026

    @yuee3

    接手本 issue(前一认领已自动释放),先交代对现状的核对结果与计划:

    现状核对(main @ 当前 HEAD)

    本认领的计划

    1. 按 scripts/eval/README.md 与 preflight 要求,准备同一 provider 两个真实模型(优先 DeepSeek:deepseek-chat 与 deepseek-reasoner,满足"同一 provider 的两个模型")的同一小 case 运行。
    2. 记录并提交:实际命令、Bun/OS 版本、requested/effective 值、run id、真实工具/数据返回与最终输出;凭证与 key 不进入任何报告。
    3. 若运行中遇到 preflight 门禁或证据口径问题,会在本 issue 留言请维护者裁定,不自行猜测。

    预计 1–2 周内提交证据报告;每 7 天内至少一条进度更新。

  15. yuee3 commented on Oct 18, 2026

    @yuee3

    进度更新(接手认领,接续 @yjg-djb 09-30 的未决问题):

    已完成:两个真实 DeepSeek 模型的 preflight 级证据(main @ ec0b8d27)

    环境:Windows 10 x64 (10.0.19045) + Bun 1.3.14,仓库内 vendored Pi runtime(@earendil-works/pi-coding-agent,仓库锁定版本)。凭证经 FINAGENT_PROVIDER_OVERRIDES 注入进程环境,不落任何文件、不进本报告。

    $ FINAGENT_PROVIDER_OVERRIDES='[{"provider":"deepseek","apiKey":"***"}]' \
      bun scripts/eval/run.ts --mode live --model deepseek/deepseek-v4-pro --max-cases 1 --preflight-only
    
      [ok     ] Agent model              deepseek/deepseek-v4-pro
      [ok     ] Pi runtime               get_state round-trip succeeded.
      [ok     ] Model availability       deepseek/deepseek-v4-pro is in the runtime catalog (14 model(s) available).
      [ok     ] Model credentials        One-token prompt succeeded in 2863ms.
      [FAILED ] Data source (LongBridge) Data source not ready (CLI not installed)
      [SKIPPED] Judge                    No judge requested — judged metrics will be explicitly reported as not measured.
    
    $ … --model deepseek/deepseek-v4-flash …
      [ok     ] Model credentials        One-token prompt succeeded in 871ms.

    两个不同真实模型在官方 DeepSeek 端点完成了真实推理(one-token 探针),requested → normalizeModelSelection → setModel 的链路语义与 #269(已合并)的集成测试一致。

    验收标准当前状态

    条目 状态
    1. runtime fake 覆盖(startRun 前应用/回读阻止/不支持失败/不串用) ✅ #116 已落地
    2. CLI→Service→runtime→metadata 集成测试 ✅ #269 已合并(config-chain.test.ts)
    3. 两次真实模型运行证据 ⚠️ preflight 级已完成;case 级被 LongBridge 数据源门禁挡住(本机无长桥账号)
    4. 凭证不进报告 / 无回读不冒充 effective ✅ 本报告即按此执行
    5. 旧记录可读、缺 effective 标记为历史未知 ✅ #116/#122 unapplied 标记覆盖(已复核)

    请维护者裁定证据口径(2026-09-30 由 @yjg-djb 提出后未决)

    验收条文要求"两次真实模型运行……以及成功真实 Tool/数据返回与最终输出"。两个选项:

    1. 探测级证据可接受:上两次真实模型 preflight one-token 运行 + test(eval): 补齐 #114 的 CLI→Service→runtime→metadata 链路集成测试 #269 的链路集成测试,是否满足"真实模型运行"的口径?数据源可用性与模型配置在本 issue 语义中正交([P0][Eval Reliability] 修复 Live Nightly 全部运行失败仍显示成功,并增加运行有效性闸门 #113 的 preflight 也把两者分开报告)。
    2. 需要 case 级运行:则需 LongBridge(或等价真实数据源)凭证。本机已就绪 LongBridge CLI(0.30.0,官方 release,sha256 校验通过)——拿到已授权账号后,longbridge auth login 设备授权 + 两个 --case 级真实运行 + requested/effective/run id/真实工具输出证据,可在一天内补齐。

    若选 1,本 issue 剩余工作即告完成;若选 2,请告知是否接受"等价真实数据源"(如其他 provider 的真实行情)以及是否有仓库推荐的测试账号方案。凭证口径明确后立即执行收尾。

  16. github-actions commented on Oct 26, 2026

    @github-actions

    @yuee3 这个 Issue 已认领超过 7 天,目前没有发现关联的 open PR,也没有看到最近 7 天的进度更新。

    如果仍在推进,请在 3 天内 留一条简短进度说明(包括正在等待的前置依赖也可以);如果已经有 PR,请贴出链接。若 3 天内没有回应,认领会自动释放,方便其他贡献者接手。

  17. yuee3 commented on Oct 26, 2026

    @yuee3

    进度更新(回应 stale-claim 提醒):

    证据已在最新 main 上刷新(main @ 543e88c66d4d9b8ddddf42bb2c7f2303822d16f9)

    环境:Windows 10 x64 (10.0.19045) + Bun 1.3.14,仓库内 vendored Pi runtime(仓库锁定版本)。凭证经 FINAGENT_PROVIDER_OVERRIDES 注入进程环境,不落任何文件、不进本报告。

    $ FINAGENT_PROVIDER_OVERRIDES='[{"provider":"deepseek","apiKey":"***"}]' \
      bun scripts/eval/run.ts --mode live --model deepseek/deepseek-v4-pro --max-cases 1 --preflight-only
    
      [ok     ] Agent model              deepseek/deepseek-v4-pro
      [ok     ] Pi runtime               get_state round-trip succeeded.
      [ok     ] Model availability       deepseek/deepseek-v4-pro is in the runtime catalog (14 model(s) available).
      [ok     ] Model credentials        One-token prompt succeeded in 2769ms.
      [FAILED ] Data source (LongBridge) Data source not ready (CLI not installed)
      [SKIPPED] Judge                    No judge requested — judged metrics will be explicitly reported as not measured.
    
    $ … --model deepseek/deepseek-v4-flash …
      [ok     ] Agent model              deepseek/deepseek-v4-flash
      [ok     ] Pi runtime               get_state round-trip succeeded.
      [ok     ] Model availability       deepseek/deepseek-v4-flash is in the runtime catalog (14 model(s) available).
      [ok     ] Model credentials        One-token prompt succeeded in 2049ms.
      [FAILED ] Data source (LongBridge) Data source not ready (CLI not installed)

    两个真实 DeepSeek 模型在官方端点完成 one-token 真实推理(deepseek-v4-pro 2769ms / deepseek-v4-flash 2049ms),--model provider/model-id 简写 → normalizeModelSelection 拆分 → setModel 应用 → Pi runtime 的链路语义与 #269(已合并)的集成测试一致。preflight 失败时无任何 case 被执行,与 #113 的有效性语义一致。

    验收标准当前状态

    条目 状态
    1. runtime fake 覆盖(startRun 前应用/回读阻止/不支持失败/不串用) ✅ #116 已落地
    2. CLI→Service→runtime→metadata 集成测试 ✅ #269 已合并(config-chain.test.ts)
    3. 同一小 case 两次真实模型运行证据 ⚠️ preflight 级已在最新 main(543e88c)复核通过;case 级仍被 LongBridge 数据源硬门禁挡住(本机无已授权长桥账号)
    4. 凭证不进报告 / 无回读依据不冒充 effective ✅ 持续执行
    5. 旧记录可读、缺 effective 标记为历史未知 ✅ #116/#122 unapplied 标记覆盖(10-18 已复核)

    请维护者裁定证据口径(2026-09-30 由 @yjg-djb 首提,10-18 复提,至今未决)

    case 级 live 运行被 preflight 的数据源门禁(longbridge quote AAPL.US 真实调用)硬性拦截。两条路径:

    1. 探测级证据可接受 → 模型配置接线语义已由上述证据 + test(eval): 补齐 #114 的 CLI→Service→runtime→metadata 链路集成测试 #269 完整覆盖,本 issue 可收尾;
    2. 需要 case 级运行 → 需要一个已授权的 LongBridge 账号,或维护者认可的等价真实数据源。LongBridge CLI 本身可按官方 release 安装;凭证到位后一天内可补齐完整 case 级证据(实际命令、requested/effective、run id、真实工具/数据返回与最终输出)。

    在口径明确前,本认领保持活跃,7 天内会有下一条进度更新。

  18. github-actions commented on Nov 3, 2026

    @github-actions

    @yuee3 这个 Issue 已认领超过 7 天,目前没有发现关联的 open PR,也没有看到最近 7 天的进度更新。

    如果仍在推进,请在 3 天内 留一条简短进度说明(包括正在等待的前置依赖也可以);如果已经有 PR,请贴出链接。若 3 天内没有回应,认领会自动释放,方便其他贡献者接手。

  19. yuee3 commented on Nov 3, 2026

    @yuee3

    认领人进度更新(yuee3,认领保持活跃):

    1. 代码层验收目前状态未变:标准1 = fix(eval): apply experiment config to the runtime and record requested/effective (#114) #116(runtime fake,已合并)、标准2 = test(eval): 补齐 #114 的 CLI→Service→runtime→metadata 链路集成测试 #269(config-chain.test.ts,已合并);唯一剩余标准3(同一小 case 两次真实模型运行的 requested/effective/run id 证据)。
    2. 标准3 的前置依赖未解除:live preflight 强制 LongBridge CLI + 已授权账号(longbridge quote AAPL.US),我没有长桥账号,无法产生 case 级证据。9-30 与 10-18 两次请维护者裁定证据口径(探测级 preflight vs case 级真实运行)均未获回应。
    3. 10-26 已提交过探测级复验证据(comment 6411064184:main@543e88c 上 deepseek-v4-pro / deepseek-v4-flash 双模型 preflight,一次 token 真实推理,requested/effective 差异可见)。

    在等待的事项:维护者对"探测级 preflight 证据是否可替代 case 级运行"的裁定,或提供一个可授权的测试账号。裁定后一天内可补齐标准3。请勿释放认领。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

claimedClaimed by a contributor and currently in progress

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions