Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions research/vehicle_program_v1/.gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Preserve exact publication bytes for SHA verification on every platform.
* -text whitespace=blank-at-eol,blank-at-eof,space-before-tab,cr-at-eol
# Frozen upstream includes three existing extra EOF blank lines; retain hashes.
code/upstream/** whitespace=blank-at-eol,space-before-tab,cr-at-eol,-blank-at-eof
7 changes: 7 additions & 0 deletions research/vehicle_program_v1/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
__pycache__/
*.pyc
.pytest_cache/
.env
credentials.md
private/
!trajectories/*.redacted.jsonl
11 changes: 11 additions & 0 deletions research/vehicle_program_v1/BRIEF.zh-CN.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# 汽车 NONT-D 完成汇报

陈一鸿,2026-10-19。

已完成汽车Val397无训练Program基线:Qwen3.5-9B、F66、SiliconFlow API。分类33/397=8.31%,分级53/397=13.35%,联合26/397=6.55%,合法终局115/397=28.97%。265条预算耗尽、17条后端错误均保留在397分母。

累计usage与未知结果预留估算49.07元(非账单),生成墙钟约9小时28分,含熔断后等待/恢复。保留9条先导,后续388条生成;未按结果重抽。397份收据与主指标复算、账本对账通过;380份非后端错误轨迹完整回放通过。

主要可见瓶颈是候选标准覆盖、比较no_match后的恢复规划,以及合法终局中的错误选择。结果较低,如实作为基线保留。汽车59标准条目对应44叶子,多条目可共享分类或等级;API精度/revision未核实。A/B/C合表口径待与赵天畅核对。

代码、汇总指标、脱敏轨迹和验证材料见本目录[README](README.md)。本次只有NONT-D,未完成汽车SFT/RL;Val397不是独立Test。公开轨迹为有损投影,不能用于训练或完整回放。
19 changes: 19 additions & 0 deletions research/vehicle_program_v1/CROSSCHECK.zh-CN.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# 与汽车 NONT-A/B/C 合表前的核验清单

状态:待双方核对,不能据本清单宣称已经完成公平对照。

| 项目 | 本次NONT-D | 需A/B/C确认 |
|---|---|---|
| 数据 | DocAILab/DCG@84a9a462,Val397 | 相同revision、ID集合和分母;不混Test395 |
| 输入权限 | 初始domain/field_name,按需field_description | 模型不得看到分类、分级或样本顶层标准匹配信息 |
| 标准 | 59条目/44叶子,category内部为条目ID | Top-5按条目还是去重类别;同叶子多等级如何处理 |
| 模型 | SiliconFlow Qwen3.5-9B,revision/精度未核实 | 是否同服务和模型;本地FP16不能默认等价 |
| 生成 | 32K上下文,512输出,temperature=0,thinking=false | 相同或明确披露差异 |
| C/D控制 | 同F66;D最多3Program/4规划/12Skill,每Program10步 | 共同Skill后端、总执行预算、工具版本和反馈规则 |
| 主评分 | 路径分类、分级、联合;失败全部入397 | 独立重算,合法终局率不冒充类别取值合法率 |
| F1 | 支持14叶子及固定44叶子分别报告 | 标签全集、无效预测处理;不照搬固定56联合标签 |
| 来源历史 | 9先导+388后续,显式基础设施恢复 | 先导是否纳入、失败是否重跑、费用/耗时口径 |

A=直接回答;B=固定Top-5→Top-1两个核心Skill;C=逐步选Skill;D=有序Program及预算内重规划。四组均未训练。C/D是编排方式对照,D/后续TRAIN-A是Planner SFT对照。

项目指标表中Weighted-F1、分级/联合Macro-F1、Macro-Precision/Recall及answer/level解析率等,需按双方统一评测定义补齐;本次不将Program validated_terminal强行改名为另一种输出schema的解析率,也不复制金融固定标签数。
37 changes: 37 additions & 0 deletions research/vehicle_program_v1/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# 汽车 NONT-D / ProgSkill:Val397 无训练结果

陈一鸿,2026-10-19。固定汽车开发验证集397条,使用未微调的 Qwen3.5-9B Planner 与模型型 Skill,F66 Program 框架。完整处理并验收;**性能较低的基线结果如实保留**。

| 指标 | 数量 / 全量分母 | 比例 |
|---|---:|---:|
| 分类正确 | 33/397 | 8.31% |
| 分级正确 | 53/397 | 13.35% |
| 联合正确 | 26/397 | 6.55% |
| 合法终局 | 115/397 | 28.97% |
| 任次Top-5叶子命中 | 214/397 | 53.90% |
| 任次Top-5含分类及等级兼容条目 | 104/397 | 26.20% |

265条预算耗尽、17条来源后端错误全部计入397分母,不重抽、不删失败。分类Macro-F1:14个有支持叶子0.212365,固定44叶子0.067571。分级来自选中标准条目。

累计usage及未知结果预留估算 **49.0696005元**,非供应商账单;2582个记录调用入口(含先导及本地发送前拒绝),已知输入29,999,427、输出271,045 tokens。夜间账本2536次HTTP,先导另有44次;二者不能与2582入口次数混淆。

## 材料入口

- [中文实验报告](REPORT.zh-CN.md):范围、结果、失败分析、限制。
- [汇报摘要](BRIEF.zh-CN.md):便于项目文档引用。
- [复现与发布边界](REPRODUCE.md):CPU检查、受控重建、身份差异。
- [指标JSON](results/evidence-summary.json)、[模型与预算](results/model-roles.json)、[聚合诊断](results/diagnosis.json)。
- [汽车A/B/C交叉核验清单](CROSSCHECK.zh-CN.md):尚未完成跨方法口径核验。
- `code/`:汽车适配、执行、API限流/恢复、评分及回放代码和测试,含固定上游F66代码。
- `trajectories/val397.redacted.jsonl`:397条有损公开投影,包含全部失败;不是训练集或完整回放输入。
- `results/trajectory-export.json`、`results/publication-verification.json`、`results/files.sha256.json`:导出清单、检查结果、发布文件哈希。

## 解释边界

数据固定 `DocAILab/DCG@84a9a462dcb828332f980ef121f40e1281ce1794`,Val397不是Test395。模型服务为SiliconFlow,精度与权重revision未核实,不能宣称等同金融本地FP16。59标准条目对应44叶子,Top-5条目不保证是5个不同类别。

先导9条全部保留,剩余388条生成;332条时接口错误触发熔断,经基础设施冷却恢复修复后补完65条。Prompt、模型名称、Program预算和评分不变,费用及原始计时未重置。先导与后续调度条件不同,不能称397条均首次在同一profile运行。

397份收据文件校验、逐条主指标复算及2536笔夜间请求账本对账通过;380份非后端错误轨迹完整回放通过,退出码0。公开投影不含真实元数据、原始消息、推理文本、gold或源ID;分类与等级使用不可反查的公开别名。原始证据受控保留。

仅发布汽车NONT-D;A/B/C不在本次结果内,SFT/RL未运行。clone/import及CPU测试不会启动真实模型或训练。
39 changes: 39 additions & 0 deletions research/vehicle_program_v1/REPORT.zh-CN.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# 汽车 NONT-D 实验报告

日期:2026-10-19;执行者:陈一鸿。目标:接用团队F66 Program框架,完成汽车领域未训练Planner基线,为后续同接口训练对照提供可复核起点。

## 方法与固定条件

上游代码来自团队commit `9473b2c2a330b7f48dc0c1831bda11e36d428379`,117个上游文件保持一致。Planner生成有序Program与状态引用,执行遇到失败后在余下预算内重新规划;不是随机抽取Skill。

初始输入只有domain与field_name,工具能获取当前来源的field_name和field_description;无表库上下文,不补造缺失元数据。样本分类、分级及顶层标准匹配说明不进入推理输入;gold仅用于独立评分。标准目录保持59个条目、44个叶子完整路径。

Planner与模型型Skill均为SiliconFlow `Qwen/Qwen3.5-9B`,无SFT/RL、无adapter。temperature=0,thinking关闭,输出512,上下文32768。官方tokenizer仅作参考容量校验;API端精度、模型revision和确定性未获验证。历史代码中的local后端FP16/seed参数不代表API服务实际身份。

预算:最多3个Program、每Program10步、累计12个Skill步骤、4次Planner尝试、同证据链相同成功调用限1次。夜间2路并发、72000 TPM;70元含先导估算停止线、原始14小时墙钟限制。HTTP错误不自动重试旧来源。

## 结果及完整性

主指标见[README](README.md)及[机器可读结果](results/evidence-summary.json)。全部397条均有收据;115条合法终局、219条Program预算耗尽、46条Planner预算耗尽、17条来源后端错误。失败均进入全量分母。合法终局中26/115=22.61%联合正确。

原始计时00:50:48至10:18:33生成结束,共9小时27分44秒,包含停机等待与恢复;10:20:43本机评分回放结束。费用核算为已知夜间usage47.5121280元+12笔未知结果预留0.654336元+先导0.9031365元=49.0696005元,不是账单。

9条先导来自1条canary和两批各4条测速,全部原样保留(含5条后端失败)。夜间生成其余388条;332条时503/超时触发连续错误熔断,原请求尾部冷却校验缺陷修复后显式迁移至v8续跑65条。原332份收据和2095笔账目不变,未改模型任务逻辑、Prompt或预算,未根据正确性重抽。不同阶段服务与调度条件须随结果披露。

原始397条数据与study/gold的ID、标签和允许元数据逐条对应;主指标另行逐条复算一致。全部收据绑定文件hash通过,2536笔夜间请求hash/结果/usage/金额对账通过,380份非后端错误轨迹完整控制器回放通过。回放验证执行一致性,不等于专家确认标注或算法设计正确。

## 低分分析

已观察路径中,104条曾检索到分类与等级兼容条目,其中58条形成合法终局,26条联合正确。既存在联合标准候选覆盖不足,也存在有候选但未完成或选错的问题。

176条遇到比较no_match,之后仅18条合法终止;142条重复同有效输入比较被拦截。51条实际比较候选已含gold兼容条目仍no_match,其中44条最终未形成合法终局。此处“兼容”仅指与提供gold一致,不是独立专家裁决。共享提示词已经说明比较非所有路径必选,但未训练Planner常未有效切换路径。

379条成功获取字段元数据;98条尝试字段类型解释失败。412组五条目候选中191组不足5个不同叶子,平均4.279个不同叶子;候选单位应与汽车A/B/C核对,不能直接套用金融类别Top-5口径。

剔除17个后端错误,联合仍只有26/380=6.84%;即使这17条全答对,也仅43/397=10.83%。12个调用触及输出长度限制,涉及10个来源,不能解释大多数失败。完全相同允许输入仅1组2条标签冲突,也不足以解释整体低分。

## 结论与后续

本轮可作为如实报告的汽车无训练基线。低合法率与合法答案内低正确率同时存在,不支持仅增加预算或原样重跑。金融团队同框架发布的联合18.72%、合法45.26%只作外部参照;数据、标准空间、元数据和后端不同,不能据此单独归因于领域难度。

先与汽车A/B/C核对候选单位、输入权限、模型服务及评分,尤其C/D的F66和总预算。后续只在隔离训练来源准备Planner示范和训练,不把Val397诊断轨迹转作SFT数据。本发布未运行训练或新的模型请求。
38 changes: 38 additions & 0 deletions research/vehicle_program_v1/REPRODUCE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# Reproduction and publication boundaries

This release includes code, aggregate metrics and 397 lossy trajectory projections. It does not include controlled data/gold, private source-ID mappings, raw prompts/replies, tokenizer/model assets, credentials or historical machine paths.

## Offline checks

Python 3.11+; publication checks were run with Python 3.14 on Windows. Run these commands separately from this directory:

```text
python -B -m unittest discover -s code/tests -v
python -B -m unittest discover -s code/upstream/runtime/tests -v
python -B -m unittest discover -s publication_tests -v
python -B tools/verify_release.py
```

The tests use fictional fixtures and scripted/mock transports. They do not call live models or train. Windows supervisor/status operations require psutil. Actual API reference token counting additionally requires tokenizers and jinja2 and the separately authorized pinned reference tokenizer. Retained local GPU code is not evidence that this API experiment used local weights.

## Code provenance

`results/code-publication.json` binds all 145 files in the historical final runtime. The 117 vendored upstream files remain byte-identical to team commit `9473b2c2a330b7f48dc0c1831bda11e36d428379`.

The public copy changes exactly three historical files: `code/README.md`, the local credential-file default in `api_backend.py`, and the local tokenizer-path default in `night_prepare.py`. Environment variables VEHICLE_NONTD_CREDENTIAL_FILE and VEHICLE_NONTD_TOKENIZER accept local asset paths, not API keys. These publication changes do not change Planner/Skill prompts, execution budgets, inference policy or scoring. New manifests are required; the public copy must not be inserted into the immutable historical run. Original code hashes and private run/score/replay hashes are retained in the aggregate evidence.

## Controlled data and fresh runs

Obtain the authorized DocAILab/DCG dataset at revision `84a9a462dcb828332f980ef121f40e1281ce1794` independently. `code/pinned-inputs.json` provides five input file hashes. From `code/`, `prepare.py --source <controlled-dataset-root> --output <new-directory-outside-git>` builds allowlisted inference data and an evaluator-only gold file. The supplied tests exercise the same path with fictional inputs. Preparation does not start a model.

`runner.py` provides mock/local/API execution; `score.py` performs evaluator-only scoring; `replay.py` re-executes a recorded complete controller trace without a model. `night_prepare.py`, `night_runner.py`, `night_supervisor.py` and `Night-Control.ps1` contain the bounded Windows API orchestration and recovery checks. Help and import do not start paid work. Do not infer permission for a new live run from this publication.

Exact historical replay requires the original immutable runtime and manifests, controlled study/registry, full traces and call records. Independent numerical scoring additionally requires controlled gold. These are intentionally absent. Hosted model weight revision/precision is not exposed, so a new API run is not guaranteed to reproduce the same outputs.

## Public trajectory schema

Rows are `val-0001` through `val-0397` in fixed evaluation order. Only known tool names, integer budget/attempt counters, enumerated statuses, termination flags and opaque predicted category/grade aliases are retained. All arguments (including state references), messages, raw outputs, observations, summaries, source metadata and gold are omitted. Invalid Planner replies retain their attempt/status, never the raw text. A trace SHA binds each public row to privately retained evidence. Aliases are consistent within this release; no mapping to private source IDs or standard labels is published.

All 397 receipts are represented, including 17 backend errors and 265 nonterminal budget failures. Public projections allow auditing aggregate completion and tool-sequence behavior; they cannot independently establish semantic correctness or serve as full replay/SFT data.

`results/files.sha256.json` lists every publication file except itself. Compare these hashes after download. `results/publication-verification.json` records the actual local checks and privacy scan scope; no GPU/API experiment is part of publication.
34 changes: 34 additions & 0 deletions research/vehicle_program_v1/code/Night-Control.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
param(
[Parameter(Mandatory=$true)][string]$Plan,
[ValidateSet('Check','Start','Status','Stop','Resume')][string]$Action='Status',
[switch]$Live
)
$ErrorActionPreference='Stop'
$nightPlan = Get-Content -LiteralPath $Plan -Raw -Encoding UTF8 | ConvertFrom-Json
$ops = Join-Path $PSScriptRoot 'night_ops.py'
$supervisor = Join-Path $PSScriptRoot 'night_supervisor.py'
if ($Action -in @('Check','Status','Stop')) {
& $nightPlan.python -B $ops --plan $Plan --action $Action.ToLower()
exit $LASTEXITCODE
}
if ($nightPlan.mode -eq 'api' -and -not $Live) { throw 'Live start requires -Live; preparation never starts model calls.' }
$preflight = if ($Action -eq 'Resume') { 'resume-check' } else { 'check' }
& $nightPlan.python -B $ops --plan $Plan --action $preflight
if ($LASTEXITCODE -ne 0) { throw 'Offline preflight failed.' }
$taskArgs = '"' + $supervisor + '" --plan "' + $Plan + '"'
if ($Action -eq 'Resume') { $taskArgs += ' --resume' }
$taskAction = New-ScheduledTaskAction -Execute $nightPlan.pythonw -Argument $taskArgs -WorkingDirectory $PSScriptRoot
$taskSettings = New-ScheduledTaskSettingsSet -Hidden -MultipleInstances IgnoreNew -ExecutionTimeLimit (New-TimeSpan -Hours 16) -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries
$principal = New-ScheduledTaskPrincipal -UserId ([System.Security.Principal.WindowsIdentity]::GetCurrent().Name) -LogonType Interactive -RunLevel Limited
$existing = Get-ScheduledTask -TaskName $nightPlan.task_name -ErrorAction SilentlyContinue
if ($existing) {
if ($existing.Actions[0].Execute -ne $nightPlan.pythonw -or $existing.Actions[0].Arguments -notlike ('*"' + $Plan + '"*')) {
throw 'Task name belongs to a different action.'
}
if ($existing.State -eq 'Running') { throw 'Night task is already running.' }
Unregister-ScheduledTask -TaskName $nightPlan.task_name -Confirm:$false
}
# No time trigger: the human must explicitly request Start or Resume.
Register-ScheduledTask -TaskName $nightPlan.task_name -Action $taskAction -Settings $taskSettings -Principal $principal | Out-Null
Start-ScheduledTask -TaskName $nightPlan.task_name
Write-Output ('Started independent task: ' + $nightPlan.task_name)
11 changes: 11 additions & 0 deletions research/vehicle_program_v1/code/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Vehicle NONT-D execution code

This is a publication copy of the final v8 runtime, not the identity of the historical immutable run. See ../REPRODUCE.md and ../results/code-publication.json.

The upstream F66 runtime is byte-identical to team commit 9473b2c2a330b7f48dc0c1831bda11e36d428379. Only this README and local asset-path defaults in api_backend.py/night_prepare.py differ from the final runtime. Model prompts, controller logic, budgets and scoring are unchanged.

Credentials are read only by explicit live operations, from VEHICLE_NONTD_CREDENTIAL_FILE or ~/.config/vehicle-nontd/credentials.md. The existing parser expects the dedicated heading 汽车 NONT-D SiliconFlow API and one API Key line. Never commit that file. VEHICLE_NONTD_TOKENIZER selects a separately authorized local reference tokenizer. No credentials, tokenizer assets, real study, gold or raw traces are included.

Python 3.11+; offline tests use the standard library. Actual Windows status/supervision also requires psutil; real reference counting requires tokenizers and jinja2. Public tests never request a real model. The retained local GPU backend was not used for the reported API result.

Run `python -B -m unittest discover -s tests -v` from this directory. New controlled runs require newly prepared manifests; do not insert this changed code into the old run or weaken identity checks.
Loading
Loading