所有注入的 AGENTS.md 指令都被"仅供参考"式前言弱化,建议改为约束性表述 #6626
mo-fei-work
started this conversation in
Ideas
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
位置
packages/context/agent-instructions/src/render.ts(常量WORKSPACE_CONTEXT_INTRO)受影响范围包括全部注入层级:
DSH_HOME下机器级AGENTS.mdAGENTS.mdREPLACEMENT_WORKSPACE_CONTEXT_INTRO拼接了同一段弱化前言)问题
目前所有指令文件——无论用户自己写的机器级全局文件,还是项目文件——都会被这样一段前言包起来注入:
may be relevant和when applicable两处都是可选化措辞:等于预先给了模型一个"可以不当回事"的合法借口,而且它把"用户亲手写的规则"和"从陌生仓库捡来的文件"混在同一档弱化里。这不是理论担忧——我们遇到过真实事故:工作区指令里明确写着"开始任何任务前先读另一份规范文件",代理因为整套指令被渲染成"仅供参考",跳过了必读文件,还在同一轮里违反了注入文本中明写的沟通纪律,全程没觉得自己违抗了什么。
补充一个结构性事实:本案例的规范体系是两层的——项目级 AGENTS.md 在工作区内,会被自动注入;项目组级规范刻意放在工作区外(供同组多个项目共享一份、只读引用),不会被注入,进入模型视野的唯一通道就是项目级文件开头那句"开始任何任务前:先读本文件,再读项目组级规范"。这句是全链条唯一的桥,而前言的弱化恰好作用在桥上——桥一软,工作区外的规范事实上永远读不到。跨目录引用规范的项目结构(多项目共享一套组级规范是常见需求)都会踩到这个坑。
建议
把前言改成义务表述,同时原样保留"不得覆盖上位指令"那半句,例如:
按目录作用域注入的那段前言一并修改,保持一致。
改动会连带:测试(有断言嵌着当前原文)和该包的 README(中英文两份)。
值得注意的是,同一渲染文件里的单文件变更通知路径("Updated instructions from: ...")已经在用祈使表述("Use the following content instead of the previously loaded instructions from this file")。也就是说弱化前言与强制表述在同一包内并存,建议的改动只是把基线路径统一到后者已有的语气。
说明
弱化措辞应该是出于防提示注入的考虑,但"不得覆盖系统、开发者、用户指令"那半句已经覆盖了这个威胁模型——与上位指令冲突的恶意内容照样会被拒绝。这个改动只是取消模型"无视与工作无冲突的项目规则"的自由裁量权。
附
触发本问题的真实工作区由这个公开模板生成(两层规范结构见上):
https://github.com/fore-thought/deepseek-harness-project-collection-starter
All reactions