Yibo Peng · Long Lian · David Wagner† · Sizhe Chen†
† 联合指导。
本版本实现了论文中最终的 全响应 KL 公式,也即 无解析 变体。学生模型在受攻击的上下文下进行 rollout。一个由相同基础模型初始化的干净上下文教师模型,在配对的干净上下文下对学生模型采样的 token 进行评分。反向 KL 信号应用于每个采样的响应 token,包括推理 token;不使用 </think> 边界来选择监督跨度。
training/tinker/:全响应 KL 训练配方和论文中的精确配置。scripts/:数据准备和 Tinker 检查点导出工具。evaluation/sep/:SEP 静态与自适应评估器。evaluation/pismith/:PISmith 训练/评估覆盖层与启动器。evaluation/agentdojo/:AgentDojo 工具与攻击运行器。evaluation/lm_eval/:MMLU-Pro、GPQA Diamond、GSM8K 和 Minerva MATH 运行器。docs/REPRODUCIBILITY.md:端到端命令和实验设置。cp .env.example .env
python scripts/prepare_data.py
bash training/tinker/setup.sh
bash training/tinker/train_full_kl_qwen36.sh
设置脚本会检出固定的上游 Tinker Cookbook 提交,并应用本仓库中的源码覆盖层。它不会修改机器上其他的 Tinker 检出。
Tinker 检查点必须使用 Tinker Cookbook 权重映射器进行转换:
python scripts/export_tinker_adapter.py \
--tinker-path 'tinker://RUN_ID:train:0/weights/final' \
--output-dir adapters/secopd-full-kl
不要将原始 Tinker 适配器与普通 PEFT 合并。Qwen3.6 线性注意力(linear-attention)和 lm_head 键名需要由 tinker_cookbook.weights 实现的 Tinker 映射。
评估命令、硬件说明以及精确的冻结配置,请参阅 docs/REPRODUCIBILITY.md。
不会跟踪任何 API 密钥、模型权重、生成的输出、私有路径或实验日志。凭据从环境变量中读取,运行时 judge 配置仅写入被忽略的 runtime/ 目录下。
训练覆盖层面向 Thinking Machines Lab 的 Tinker Cookbook。SEP 评估源自 Meta-SecAlign,PISmith 评估面向 PISmith,AgentDojo 评估面向 AgentDojo。确切的上游修订版本和许可证列于 docs/THIRD_PARTY.md。
@article{peng2026secopd,
title = {{SecOPD}: Mitigating Adaptive Prompt Injections by On-Policy Distillation},
author = {Peng, Yibo and Lian, Long and Wagner, David and Chen, Sizhe},
journal = {arXiv preprint arXiv:2608.21500},
year = {2026}
}