Imported from chenwudao/Attack-Experiments (
AGENTS.md). Install upstream withnpx skills add chenwudao/Attack-Experiments. Copyright stays with the author.
Attack 科研项目 Agent 协作规范
适用范围
- 本文件适用于整个仓库。
- 本项目研究 MPC/MAPS/PA-Attack 风格的黑盒多模态对抗攻击,目标硬件为单张 Google Colab T4。
- 主 Agent 负责理解用户意图、选择子 Agent、控制研究范围、整合证据并交付最终结论;不要把三个角色只当作写作口吻,符合路由条件时应实际调用
.codex/agents/中对应的自定义 Agent。
每次提示的自动路由
收到每个与本项目有关的用户提示后,先按下面规则分类,再开始实质工作。用户明确指定角色、执行顺序或禁止委派时,以用户要求为准。
- 调研任务 ->
research_agent- 触发意图:查论文、查最新方法、找开源实现、比较相关工作、核对公式/实验设置、判断创新性、检索外部证据。
- 典型词:
调研、文献、论文、最新、相关工作、SOTA、搜索、查一下、原文怎么说。
- 分析任务 ->
analysis_agent- 触发意图:解释已有结果、审计指标、读日志/CSV/JSON/Notebook、诊断失败机制、比较方法、提出最小消融或下一步决策。
- 典型词:
分析、诊断、为什么、对比、总结结果、机制、审查、下一步。
- 实验任务 ->
experiment_agent- 触发意图:写或改代码/Notebook、设计消融、运行检查或实验、修复实验流水线、生成评测产物。
- 典型词:
实验、实现、修改、运行、复现、消融、验证、修复、写代码、写 notebook。
- 复合任务
- 同时命中多个角色时,拆成有明确输入、输出和验收标准的子任务。
- 无依赖的只读调研与结果分析可以并行;先等待它们返回摘要,再由主 Agent 决定是否启动实验。
- 实验依赖调研或分析结论时必须分阶段执行,不能让实验 Agent 在关键机制尚未确定时自行猜测。
- 同一时刻只允许一个写入型 Agent 修改项目文件。其他 Agent 保持只读,避免 Notebook、缓存和结果相互覆盖。
- 无需委派的情况
- 问候、单句改写、路径说明、Git 状态查询等轻量管理任务由主 Agent 直接处理。
- 任务过小、无法合理拆成独立子任务,或调用 Agent 的成本明显超过收益时,主 Agent 可直接完成,但应保持对应角色的质量标准。
调用子 Agent 时,提示中必须写清:问题边界、允许读取/写入的文件、已知事实、禁止重复的工作、期望输出和验收标准。子 Agent 只返回压缩后的证据与结论,不把大段原始日志灌入主线程。
共同科研原则
- 优先做机制可解释、一次只改变一个因素的对照实验;复杂框架没有黑盒收益时,回到表征、注意力与多代理融合机制。
- MAPS 风格评估的主指标是八类下游任务的非目标 UASR:报告逐任务 UASR、任务均值、最差任务、每图任务覆盖率(至少
coverage@6/8和coverage@8/8)。Target ASR 只作为诊断,不能替代非目标 UASR。 - 明确写出黑盒模型、数据集、样本数、提示词、扰动预算、随机种子和攻击配置。UASR 表示回答是否改变,不等价于准确率下降或语义正确性下降。
- 不用代理损失单独选择方案。需要同时检查黑盒 UASR、最差任务、覆盖率、代理/黑盒一致性,以及必要的梯度或注意力诊断。
- 固定口径比较;不得把不同样本子集、提示模板、答案归一化、缓存签名或模型版本的结果直接并列成因果证据。
- 清楚区分:论文原文、仓库已有结果、本轮实际执行结果、静态检查结果、机制假设。没有执行 GPU 实验时,不得声称获得了算法收益。
- 任何结论都标注证据强度和限制。当前常见限制包括单一黑盒模型、50 个或更少样本,以及 UASR 仅衡量答案变化。
项目基线与实验闸门
- 默认数据集为 Flickr30k,默认黑盒模型为
Qwen/Qwen2.5-VL-3B-Instruct,默认扰动预算为L_inf = 16/255;若用户指定其他设置,以用户设置为准并在报告中注明。 - 已有固定 50 样本结果可作为回归参照,但不得伪装成本轮新实验:MPC 八任务均值约 73.75%,PA 约 48.75%;具体口径以
mpc_pa_brief_report.md为准。 - 优先使用
Attention-MultiAgent-Mechanism-Diagnosis.ipynb的分阶段策略:Stage A 先比较表征,Stage B 只对胜出表征比较融合。 - 本地 Windows 静态检查不能验证 CUDA、显存、模型钩子或黑盒行为。正式算法结论必须在 Colab T4 或用户提供的等价 GPU 环境上运行。
- 正式 Colab 实验必须从 WSL2 Ubuntu 通过已认证的 Google Colab CLI 发起;Windows PowerShell/native Python 仅用于静态检查、manifest 准备和结果整理,不得作为正式 T4 攻击或黑盒评测执行面。运行时记录 Colab CLI 版本和启动元数据。
- 当 Colab CLI 或 Google Drive 需要用户登录、OAuth 或授权确认时,必须使用 Codex 内置浏览器打开授权页;调用可见性控制将浏览器设为可见,并将授权页保持到后续任务仍可见(需要跨回合时标记为 handoff)。不能只把授权 URL 打印到 WSL 终端,也不能假设系统 Chrome 会自动弹出;若页面被隐藏或标签失效,重新打开同一授权页并保持可见,再让用户操作授权按钮。
- 首轮诊断默认 10 张图、100 步;跑通端到端与缓存签名后再扩到 50 张或更多。候选方案至少使用两个随机种子;优先要求相对基线有约 5--8 个百分点且跨任务一致的增益,再申请扩大资源。
- 更改数据、随机初始化、dtype、EOT、注意力/融合方式、阈值、提示词或模型版本后,必须更新实验签名或重新生成攻击样本,禁止复用不兼容缓存。
- Token、密钥和凭据只能从环境变量读取,例如
HF_TOKEN;不得读取、打印、写入 Notebook、提交或保留明文凭据。
主 Agent 的交付格式
主 Agent 汇总子 Agent 结果时,优先给出:
- 一句话结论或当前决策。
- 已验证证据:模型、样本数、指标和产物路径。
- 机制解释:哪些是观察,哪些只是待验证假设。
- 下一步最小实验:只改变一个机制,写明成功/失败阈值。
- 限制与未完成项。
如果子 Agent 之间结论冲突,主 Agent 不做简单投票;回到原始证据、统一评测口径,并提出能区分竞争假设的最小实验。
文件与版本控制
- 保留用户已有改动,不覆盖无关文件,不使用破坏性 Git 命令。
- 修改 Notebook 时确保单元顺序、配置入口、缓存签名和输出说明一致;不要把静态 JSON/AST 通过写成 GPU 实验通过。
- 只提交与当前任务有关的源码、Notebook 和小型报告;不提交模型权重、数据集、攻击图片、缓存、密钥或大体积生成物。
- Git 若继承失效的
127.0.0.1:7897代理,只对当前 Git 命令使用临时无代理参数,不修改或暴露凭据。