Agent Plan × DeepSeek Harness:有害内容检测与输出安全护栏
Agent Plan × DeepSeek Harness:有害内容检测与输出安全护栏
Agent 系统的安全边界与聊天模型有本质区别:模型输出从一段文本变成一系列行动。当 DeepSeek 系列模型被嵌入规划-行动-观察(Plan-Act-Observe)循环后,推理链、工具调用与外部信息回流共同构成新的风险面。本文提出以 Harness(环绕模型的工程化控制层)为核心的参考架构:输入闸门、生成护栏、行动闸门三层拦截,配合检测服务、审计日志与人工复核台,把有害内容的识别与处置从"模型自觉"转为"系统强制"。全文立场是:检测是前提,护栏是手段,可观测与可审计是底线——安全不应作为模型的附属能力,而应作为独立的系统工程存在。
1 为什么 Agent 需要一套安全护栏
1.1 从对话模型到行动主体
对话模型的安全义务止于文本:模型生成一段不可接受的内容,用户看到的是有害文字。Agent 则完全不同——模型输出会被解析为工具调用参数,写进数据库、发出邮件、触发支付流程。失效模式从"说了不该说的话"升级为"做了不该做的事",风险从内容违规扩展到系统破坏、资金损失与法律责任。
更本质的变化是信息回环。聊天场景中,模型一旦生成,风险即告终结;Agent 场景中,模型输出会以观察结果的形式再次进入上下文,污染后的上下文将影响后续所有决策。一次成功的提示注入足以劫持整个会话的行为轨迹。安全边界因此必须从"生成时刻"扩展到全链路:输入、生成、行动与记忆,每个环节都可能成为风险入口。
1.2 DeepSeek 模型定位
DeepSeek 系列模型(本文以 deepseek-chat 与 deepseek-reasoner 作为示例模型名)有两个显著特征。其一,开放权重:模型可私有化部署,集成方拥有完整的网络与数据控制权,也因而必须自行承担内容安全责任,无法依赖厂商云端策略兜底。其二,reasoner 的推理链:模型在输出最终答案前生成可见的思维过程,能力增强的同时引入新的泄漏通道——思维链可能暴露内部指令、评估标准与越狱残留。
这两点决定了安全设计的出发点:DeepSeek 属于"能力强、控制面需自建"的基座——能力增强使有害内容形态更隐蔽,长链推理下的多步诱导难以被单点规则捕获;控制面自建则意味着检测与护栏必须内建于系统工程。
1.3 Harness 的核心主张
Harness 的核心主张可以概括为:把不可控的模型,放入可控的系统。展开为四个能力簇:
- 检测(Detection):对输入内容、生成内容与行动指令进行风险识别,产出可解释的分类与置信度;
- 约束(Constraint):在生成前与行动前施加硬性拦截、改写与参数校验,不依赖模型的自觉;
- 可观测(Observability):全链路记录模型输入输出、检测判定与处置动作,支撑事后追溯与策略调优;
- 可审计(Auditability):每一次放行、拦截、升级决策都有证据链,能够对合规审查给出完整交代。
四者的关系是:检测是前提——没有可靠的判定,约束便无从下手;护栏是手段——约束必须落在强制检查点;可观测与可审计是底线——安全系统本身必须接受检验。
1.4 本文叙述框架
全文按"风险识别—架构设计—检测实现—护栏构建—循环集成—评估演进"推进:第 2 章建立威胁模型与风险矩阵;第 3 章提出三层闸门总体架构并定义信任边界;第 4 章展开检测层的技术路线、状态机与分级处置;其后章节覆盖输出护栏、Agent Plan 集成方式与评估体系。
2 威胁模型:Agent × DeepSeek 场景下的风险面
2.1 有害内容类型学
检测层的首要工程决策是分类体系。参考主流安全运营实践,本文覆盖以下互斥类别,并保留兜底类别以吸收长尾:
- 攻击与骚扰:侮辱、威胁、人肉搜索等针对个人或群体的攻击性表达;
- 性内容:色情文本、露骨描写、非自愿性内容;
- 自伤与自残:自杀倾向表达、自伤方法传授;
- 个人隐私信息(PII):未经授权的身份证号、手机号、住址等信息;
- 暴力与违法:恐怖主义内容、武器制造、犯罪方法指导;
- 欺诈与违法诱导:钓鱼话术、诈骗脚本、洗钱指引等;
- 误导信息:事实性错误、谣言,以及医疗、投资等场景的高危断言。
类型学设计有两个要点:一是类别必须版本化,合规要求变化(如新增数据保护条款)会引入新类别,检测器需按类别版本对齐部署;二是每个类别都要配备可操作的判定标准,避免检测器与人工复核对同一内容给出不同归类。
2.2 输入侧风险
输入侧指一切进入模型上下文的内容,风险集中在三类:
- 提示注入:用户或第三方内容中嵌入指令,试图覆盖系统指令、劫持 Agent 行为。Agent 场景下注入面显著扩大,网页抓取、邮件、文件与 API 返回都会进入上下文;
- 越狱:通过角色扮演、多轮诱导、编码混淆等手段绕过模型的对齐拒绝。reasoner 的推理链为越狱者提供了即时反馈通道,攻击者可以观察思维过程判断攻击是否接近成功;
- 对抗性样例:同义改写、Unicode 混淆、词序扰动使检测器漏检而模型仍能理解语义。
输入侧的核心矛盾是开放语料对抗迭代式攻击:检测器必须覆盖任意来源的文本,攻击者则可以无限试错。因此输入闸门的工程目标不是零漏检,而是提供可量化的基线风险抑制。
2.3 行动侧风险
行动侧风险发生在规划与执行阶段,特征是间接性——有害意图在规划中被拆散为多个看似无害的步骤,单步检测均通过,组合后构成危害:
- 规划污染:注入内容篡改 Agent 的规划状态,把无害任务编排为有害行动链,典型如诱导"获取联系方式"演变为"爬取用户通讯录并导出";
- 工具调用滥用:恶意或错误的参数触发高影响工具——发送邮件、删除数据、转账、发布内容。风险点在于模型对工具能力的理解与真实权限边界可能不一致;
- 记忆持久化污染:Agent 把经过观察写入的有害结论沉淀为长期记忆,污染后续所有会话。这是对话模型不存在、Agent 独有的通道,使攻击具有跨会话持续性。
应对行动侧风险,必须依赖行动闸门的组合式审查:风险等级叠加、行动与用户意图的一致性校验、权限边界核对,而非单步内容检测。
2.4 输出侧风险
输出侧风险指向用户呈现或进入行动通道的生成内容:
- 幻觉性有害输出:模型在欠缺事实支撑时生成有害断言,如虚构的医疗方案或投资建议。这类输出不来自恶意输入,而是能力边界所致,检测层无法仅靠"意图"维度识别;
- 思维链泄漏:推理过程可能暴露系统提示、内部工具清单与评估标准。直接透传思维链,等于把护栏的内部走线展示给攻击者。
由此得到两条工程结论:生成内容必须在输出闸门经过内容检测与事实性校准,检测维度至少包括"意图有害"与"事实存疑"两类;思维链默认不透传,只保留在受限观测通道中。
2.5 风险矩阵
下表汇总三类风险通道、代表性风险类型与对应防线,作为第 3 章架构设计的输入。
| 风险通道 | 代表性风险类型 | 主要防线 |
|---|---|---|
| 输入侧 | 提示注入、越狱、对抗性样例 | 输入闸门:来源分级、指令边界解析、注入检测 |
| 行动侧 | 规划污染、工具滥用、记忆污染 | 行动闸门:参数校验、权限边界、组合风险审查 |
| 输出侧 | 幻觉性有害输出、思维链泄漏 | 生成护栏与输出闸门:内容检测、事实校准、推理链脱敏 |
3 系统总体架构:三层闸门模型
3.1 架构总览
三层闸门模型把安全决策固化在三个强制检查点:内容进入上下文之前(输入闸门)、模型生成与行动规划之间(生成护栏)、行动执行之前(行动闸门)。检测服务、护栏服务、审计日志与人工复核台作为横切组件挂载于主链路两侧,构成安全中枢。
图 1:系统总体架构
数据流的关键特征有两点。第一,检测服务被输入闸门与输出闸门共用:同一套模型与规则服务两侧,判定口径一致,维护成本更低;护栏服务独立承载生成阶段的约束逻辑——Prompt 重组、受限解码与改写候选,与检测解耦以便各自演进。第二,审计日志是唯一的事实记录中心,所有闸门动作、检测判定与处置结果均追加写入;人工复核台消费升级案例,复核标签回流检测服务,形成持续校准的闭环。
主链路的强制检查点是"通过即信任"的边界:输入闸门通过的内容才允许进入上下文,输出闸门与行动闸门通过的内容才允许进入行动通道。任一闸门拦截即进入风险响应通道,由它决定改写、丢弃、阻断还是升级人工。
3.2 三层闸门
输入闸门(Input Gate)设在所有外部内容进入上下文的位置,职责包括三方面:注入检测,识别指令性文本与实际数据的边界冲突;来源分级,区分用户输入、工具返回与网页抓取等来源,按来源施加不同信任级别,例如网页内容默认视为数据而非指令;消毒与截断,对超长输入做摘要化与脱敏处理,压缩注入载荷可利用的空间。
生成护栏(Generation Guardrail)作用在模型生成过程与生成结果上,解决两个问题:内容安全,即生成文本的风险分类与改写;推理链管理,即对 reasoner 思维链的捕获、脱敏与隔离。生成护栏不阻止模型"思考",但确保思考产物不会原样流向下游。
行动闸门(Action Gate)作用在工具调用执行前,是最后一道强制防线,执行后一般不再重复校验(性能考虑)。其职责包括:参数 Schema 校验,防止类型越界与非法取值;目标风险评级,按工具与参数的高危程度分级;组合风险审查,对多步骤行动做风险叠加判断;权限边界核对,确保行动不超出最小权限范围。
3.3 信任边界与数据流
信任边界遵循两条原则:外部输入默认不可信,模型输出默认不可信。输入必须通过输入闸门才能进入上下文;模型输出必须通过输出闸门才能进入行动通道或呈现给用户。模型生成区因此是受控的半信任区——模型在其中自由生成,检测与约束包围在区域外沿。
数据流中容易被忽视的是观察回流:Agent 执行行动后回收的观察结果(工具返回、环境状态)本质上是外部输入,必须重新经过输入闸门才能写回上下文与长期记忆。这防止了一种循环绕过:攻击者让一段有害内容通过输出闸门后的行动副作用,再以"外部数据"的身份潜回上下文。
3.4 组件职责
安全中枢的四个横切组件职责如下表。
| 组件 | 职责 | 关键接口 |
|---|---|---|
| 检测服务 | 内容分类、置信度评分、风险等级判定,向闸门输出可解释结论 | detect(text, context) -> Verdict |
| 护栏服务 | Prompt 重组、受限解码、改写生成,执行生成阶段的约束策略 | guard(output, policy) -> GuardedOutput |
| 审计日志 | 全量事实记录、动作留痕,构造可追溯的证据链 | append(entry) |
| 人工复核台 | 升级案例复核、误判纠正、标签回流与分类器再校准 | review(case) -> Label |
组件间通过消息接口解耦:闸门只依赖判定与约束结果,不持有策略实现;审计日志要求追加型幂等写入,保证同一事件不重复记录。
4 有害内容检测层:从信号到判定
4.1 检测技术路线
检测层不依赖单一技术,而是四路信号的组合。先明确各自的能力边界:
规则引擎:基于关键词、正则与模板的硬匹配。延迟毫秒级、可解释、成本可忽略,适合身份证号、手机号等强模式信号;缺点是脆弱——同义改写与编码混淆即可绕过,只能承担第一层粗筛与白名单逻辑,不能作为主判定来源。
小模型分类器:百兆到十亿参数规模的文本分类模型,针对类别体系微调。吞吐高、延迟低,是性价比最优的主分类路径;局限是覆盖受训练数据分布约束,长尾攻击形态漏检率偏高,需要其它路线补位。
大模型自检:用 DeepSeek 家族模型对内容做语义级二次审查,能识别间接表达与多步诱导,灵活性最强;成本与延迟显著高于前两者,须按策略抽样调用;且存在同源盲区——模型的对齐盲点同时存在于检与被检两侧,自检不能作为唯一依据。
向量案例库检索:将历史拦截案例与人工复核标签向量化,按语义相似度召回同类风险。擅长黑话、谐音与行业术语等地域化表达;效果取决于案例库质量,冷启动期覆盖弱,需要人工复核信号持续回流。
4.2 检测流水线
四条路线并行作用于同一份待检内容,汇入融合层:
图 2:检测流水线
融合层的决策逻辑是:规则引擎命中强模式信号时拥有"一票拦截权",直接产出硬性判定;其余情况按类别维度对分类器概率、自检标签与案例相似度做加权合成,输出置信度评分。硬性拦截与软性融合并存,同时保留了规则的确定性优势与模型的语义覆盖。工程上还需控制延迟分配:规则引擎与小模型分类器常驻主链路,大模型自检按类别与风险等级抽样,向量检索优先命中缓存;四路并行执行、逐路可降级,任何一路超时都不应阻塞整体判定。
4.3 分类与状态
检测结论不是一次性快照,而是一个可迁移的状态。分类状态机定义了内容的生命周期:
图 3:有害内容分类状态机
设计意图有两点。其一,疑似与拦截共享升级路径:人工复核是唯一能够推翻机器结论的环节,因此"拦截"不等于终局,误拦截可通过升级路径修正,避免安全系统因过度拦截流失正常业务。其二,终审状态只允许由人工产生:机器检测的所有判定都是"可再审"的临时结论,终审通过或终审拦截带有复核人身份与复核理由,写入审计日志用于统计误拦率与漏检率。
4.4 置信度与分级处置
分级处置把连续置信度映射为离散动作,决策逻辑如下:
def decide(verdict: Verdict) -> Disposition:
if verdict.hard_rule_hit:
return Disposition.BLOCK(reason=verdict.rule_id)
if verdict.confidence >= 0.95:
return Disposition.PASS(evidence=verdict.evidence)
if verdict.confidence >= 0.80:
return Disposition.FLAG_OR_REWRITE(verdict)
if verdict.confidence >= 0.60:
return Disposition.ESCALATE(verdict)
return Disposition.BLOCK_AND_REVIEW(verdict)
阈值设置遵循三项原则。第一,阈值与下游行动风险联动:放行阈值不应全局固定,而要与行动闸门的风险评级相乘——转账、外发、删除等高危行动即使置信度 0.9 也应升级复核,只读查询等低危行动可放宽至常规阈值。第二,加注(FLAG)用于中置信场景:内容放行但附带风险元数据,供消费方与审计侧降权处理;改写(REWRITE)用于可修复的违规形态,如去除 PII 后再放行。第三,置信度必须持续校准:定期以人工复核标签回测分类器的校准曲线,修正过拟合导致的虚高概率。
4.5 对 DeepSeek reasoner 的适配
推理链为检测层带来三个需要专门处理的差异点。
思维链纳入检测范围。reasoner 的思维链是生成过程的一部分,检测流水线应同时接收"最终答案与推理链"两个输入。推理链往往比最终答案更早暴露恶意意图——模型可能在推理中规划越狱步骤,却在最终输出中给出无害措辞。仅检测最终答案会漏掉这类在过程中"计划作恶"的形态。
推理链默认可能泄漏。思维链包含内部指令的引述、工具清单与评估标准,直接透传等于向攻击者公开护栏内部走线。工程上默认将推理链视为内部敏感产物:只进入审计日志与受限观测通道,对外呈现前必须经过脱敏,去除指令引用与内部名称。
检测器对模型内部状态不可见。reasoner 以服务形式调用时,检测层无法读取模型中间状态,只能基于可见产出推断。应对措施有二:一是动作级自检,将候选行动描述再次送入低温度的自检调用,借助模型对自身行动语义的评估作为弱信号;二是推理链特征基线,对思维链长度、自否性表述等分布特征建立基线,偏离基线的异常形态作为弱信号汇入融合层。两个弱信号都不具备决定性,但与主分类器的输出叠加后,能显著压缩高危动作的漏检区间。
5 输出安全护栏
第 4 章检测层输出的是一份风险判定:有害分类、置信度与证据。护栏层的工作,是把这份判定翻译为对用户可见、对系统可执行的处置。检测回答"内容是否危险",护栏回答"如何处理危险内容"。二者解耦后,策略调整不必触碰模型与检测器,只需修改护栏的决策配置。
5.1 四策略处置模型
护栏对模型输出的处置分为四档,与检测层的置信度分级一一对应。
放行。 低风险内容直接返回。放行不等于零干预:仍要完成格式校验与审计留痕,只是不施加内容层面的改动。放行是占比最高的分支,因此该路径的延迟预算最严(见 7.1)。
加注。 内容存在轻度风险但具有合理表达价值时,不修改正文,而是附加警示。两类做法:一是内容水印,在返回元数据中标注"由 AI 生成"及内容溯源信息,服务于 5.5 的追溯与撤回;二是高风险标签,当模型回答涉及医疗、法律、金融等专业领域时,在正文头尾附加"仅供参考,不构成专业建议"之类的提示文本。触发条件应绑定风险类型而非笼统的高风险,避免所有回复都被同一句免责声明污染。
改写。 对中高风险的具体片段做脱敏、软化与重构。脱敏针对可识别载荷:电话号码、证件号、地址、真实姓名一律替换或截断;软化针对表达方式:命令式、诱导式语气改写为陈述式,降低可执行性;重构针对结构风险:将先断言后灌输的堆叠式输出重排为包含证据与不确定性的表述。改写不是为有害内容"洗白",而是保留信息价值、剥离危害载荷。改写结果必须经过二次快速检测,仍超阈值即按拦截处理,防止改写动作本身成为漏检通道。改写还应保持语义一致性:对改写前后文本做轻量相似度与信息保持校验,避免去风险的同时丢掉用户真正需要的信息。
拦截。 高风险内容不返回原文,回退到预置的无风险模板,或升级人工复核。模板按风险类型分别设计:涉自我伤害的回答不能简单拒绝,应指向求助渠道与紧急联系方式;涉越狱注入的回答使用中性拒绝语。升级人工复核时,模型原文、风险判定与证据一并进入第 3 章所述的人工复核台,由人工修订后放行,也可改判终止。
5.2 护栏决策流程
图 4:护栏决策流程
决策由风险等级、置信度与风险类型共同映射到四策略。两个关键设计:其一,改写失败与拦截同路,杜绝"改写即放行"的形式化通道;其二,人工复核结果(修订后放行或终止)回注审计日志,并沉淀为 8.1 评估数据集的增量样本。
流程的直接实现是配置驱动的动作选择器,判定表以风险类型和场景为键,可在不重启服务的条件下热更新:
def decide_action(verdict, policy):
if verdict.confidence >= policy.block_floor:
return "block"
if verdict.confidence >= policy.rewrite_floor:
return "rewrite"
if verdict.risk_class in policy.annotate_classes:
return "annotate"
return "allow"
def harness_output(raw_text, session):
verdict = detect_service.detect(raw_text, scope="output")
action = decide_action(verdict, session.policy)
if action == "allow":
result = raw_text
elif action == "annotate":
result = raw_text + session.policy.disclaimers[verdict.risk_class]
elif action == "rewrite":
result = rewrite_service.rewrite(raw_text, verdict)
recheck = detect_service.detect(result, scope="output")
if recheck.confidence >= session.policy.rewrite_floor:
return escalate(verdict, raw_text) # 二次检测未通过, 升级
else:
return fallback_or_escalate(verdict, raw_text)
audit.log(session.trace_id, verdict, action, result)
return result
5.3 结构化输出约束
言论类内容依赖检测,结构化输出则靠约束。当模型按约定 schema 返回 JSON 时,生成护栏首先做 schema 校验:字段缺失、类型不符、枚举越界即触发重试或拦截。确定性要求高的字段(动作类型、权限标识、金额、数量)不应由自由生成承担,应改由模板拼接与受控枚举填充,只把自由文本字段留给模型。解码层再做收窄:限制候选集(收紧 top_k/top_p)并设定中止序列,降低对抗性偏离的概率。
内容类型白名单是第三道约束:输出中的 URL 仅允许预登记域名(官方文档、内部系统、已审核新闻源),未登记外链一律剥除;代码块不直接执行,需要执行的高特权场景先进沙箱(只读文件系统、无网络命名空间),只向用户返回执行摘要;图片、附件、外呼等重介质在输出路径上单独过白名单与二次确认。
5.4 敏感动作二次确认与人机回退
护栏四策略管"生成",敏感动作二次确认管"行动"。确认分三级:低敏感动作由 Agent 自动执行;中敏感动作(发送外部消息、修改配置、删除单条数据)弹交互式确认,超时默认拒绝(fail-closed),绝不静默放行;高敏感动作(批量删除、权限变更、资金类操作)强制进入工单式人工审批。批量操作再叠加两条工程习惯:小样本试跑,先对 1% 样本执行并检验效果再放全量;干跑审计,正式执行前以审计模式跑完整流程,只记录不生效,输出操作影响清单供人确认。人工复核的结论与理由回注审计日志,成为后续策略调整与评估数据的来源。
5.5 会话级护栏
前述护栏以单个输出为对象,会话级护栏以对话整体为对象。其一是上下文内容追溯:输出片段携带溯源标记(源自用户输入、工具返回还是模型生成),一旦发现注入或污染,可沿标记定位源头并隔离。其二是撤回:发现已流式发出或已交付内容有问题时在会话内执行撤回——对纯文本回复标注"内容已撤回并修正",对已执行动作给出回滚操作或风险提示。追溯与撤回共同保证护栏犯错后可恢复,这一属性对第 8 章的灰度上线至关重要。
6 Agent Plan 集成:规划-行动-观察循环中的护栏
第 5 章的护栏作用对象是单次模型输出,而 Agent 的产出是一个规划-行动-观察循环的复合结果。一次请求会经历多个生成点:计划、工具调用参数、观察结果、最终回复。每个生成点都需要护栏,且风险形态各不相同:计划阶段的风险在意图,行动阶段的风险在参数与副作用,观察阶段的风险在不可信数据回流。
6.1 防护点分布
Plan 阶段:意图审查与子目标安全注释。 规划器将请求拆解为子目标列表,每个子目标隐含一次工具调用意图。此处的护栏对子目标逐项判定,重点识别"整体无害、局部越权"的规划——例如"整理通讯录"的计划中夹带"导出全部联系人并上传"。系统为每个子目标附加安全注释(safe / 需复议 / 禁止),注释随计划进入执行循环,Act 阶段的校验直接引用,避免重复计算。审查强度还应结合会话上下文:高权限账号、低龄用户或涉及外部投递的会话,计划级审查调用更高成本的模型复核,覆盖常规检测对隐蔽意图失敏的场景。
Act 阶段:工具调用参数校验、白名单与幂等保护。 行动闸门在每次工具调用前校验参数:类型、取值域、目标资源路径逐一匹配接口契约,超范围参数拒绝执行。工具集执行白名单与黑名单:未登记工具不可调用,登记工具按最小权限暴露能力。幂等保护针对有副作用的操作:写文件、发消息、转移资产等操作生成唯一操作 ID,相同 ID 的重复请求直接返回首次结果,抵御重试风暴与重放攻击。
Observe 阶段:观察结果清洗与提示注入检测。 工具返回值是不可信外部数据,进入上下文前完成三类处理:截断超长返回、剥离 HTML 与脚本、脱敏冗余字段;对疑似提示注入的文本(“忽略之前的指令”、角色切换指令、内嵌的伪造系统消息等模式,配合第 4 章的注入分类器)单独标记,隔离为不可信数据段——不参与后续规划的决策依据,仅作为可展示的事实素材。
6.2 计划级审查与逐步审查的差异
计划级审查对整份计划做一次性判定,成本低,擅长拦截整体意图偏移,但看不到执行期的动态风险。逐步审查在每一步工具调用前做参数级校验,能捕获计划级难以预见的细节风险——计划写着"查询文件",实际参数却指向敏感路径。工程实践是两级结合:计划级拦方向,逐步拦细节。对 deepseek-reasoner 这类思维链可见的模型,思维链中已显式暴露的工具意图可提前预校验,与第 4 章的思维链检测适配同源。两级审查的判定差异本身也是审计重点:逐步审查反复触发而计划审查放行的模式,提示规划器存在系统性风险偏好。
6.3 跨步记忆与持久化内容的周期重检
Agent 的记忆分两层:工作记忆(本轮循环内的跨步上下文)与持久化存储(文件、向量库、会话对象)。工作记忆每次写入前检测一次即可;持久化内容则不同——新规则上线或新案例入库后,既往"安全"的内容可能变为风险,需要周期重检:按时间轮询或按事件(规则变更、模型升级)触发,对存量内容重新跑一轮检测分级,重检结果写回审计日志。检测是时点判定,重检让时点判定具备有效期,这是会话级安全得以持续的前提。
6.4 全链路时序
结合时序图看一条完整请求。
图 5:Plan-Act-Observe 全链路时序
一个回合中,输入闸门只出现一次,护栏出现在每个生成点:计划生成后审查一次,逐步行动中每一步的参数与观察各检一次,最终输出再护一次。最贵的模型调用(规划与最终生成)各有至少一次护栏兜底,最廉价的外部数据路径(观察结果)反而经过最密的清洗——风险密度高的位置投入更多安全成本,可信度低的数据投入更密的清洗。图中 alt 分支展示了人工介入点:计划级审查拦截后升级人工复核,修订意见回注 Agent 继续执行;若人工终止,该回合结束并写入审计日志,用户侧收到明确的中止原因。
7 工程实现要点
7.1 延迟预算
安全业务在任何一层引入的延迟都会被用户感知。同步护栏必须控制住首 token 之前的开销:输入检测、输出放行判定、行动参数校验走同步路径,用规则加小模型实现,将单次检测延迟压到百毫秒量级。异步复核承接非关键路径:加注模板选择、深度改写、人工复核、周期重检进入异步队列,不挤占用户请求的时间线。流式输出的首 token 与端到端延迟是一对矛盾:逐 token 审查会显著抬高首 token 延迟,常见折中是首段预检后流式放行、段末统一复核;段末发现问题走改写或拦截,已发出的内容交给 5.5 的撤回机制兜底。延迟预算应在架构成型时划分:输入检测、输出判定、行动校验各自占用的时间窗口预先约定,后续优化在窗口内进行,避免安全模块成为端到端延迟的不可控变量。
7.2 成本分层
安全成本与检测强度须分层投放:规则前置,覆盖高确定性模式,命中即判,近零成本;小模型分类器作为常规防线,每条消息必过;大模型判定只抽样复核低置信度、高价值或用户申诉样本;deepseek-reasoner 这类高成本模型的深度推理仅保留给风险敏感场景(金融操作、对外发布)。分层的收益是成本随风险密度分布:日常请求绝大多数在小模型层结束,预算集中投向真正可疑的少数样本。
7.3 误报/漏报权衡与阈值调优
误报(安全内容被误判为风险)损害体验,漏报(风险内容被放行)损害安全,两者由同一组阈值牵引。阈值必须按风险类型与场景独立配置:创作类场景以加注为主、阈值偏松;金融与对外发布场景以拦截为主、阈值偏紧。调优不是一次性工作,而是第 8 章评估闭环的常规产出:离线评估给出权衡曲线,线上误报率回环修正。
7.4 可观测性
安全基础设施的故障本身就是安全事故,因此可观测性不是可选能力。三项要求:结构化日志——每次检测与处置记录 trace_id、范围(输入/计划/行动/观察/输出)、模型、风险分类、置信度、动作、延迟,字段全量且格式稳定;链路追踪——检测、护栏、闸门作为 trace span 挂接在主请求链路上,端到端延迟与失败定位在一个界面完成;审计隔离——安全事件日志写入独立存储,与业务日志物理隔离、不可变留存,保留期对齐合规要求,任何人工改判都要在此留痕。配套告警:护栏触发率突变、检测延迟升高、人工复核队列积压、护栏服务降级,四类事件阈值触发告警,保证退化的护栏不会默默失效。
8 评估体系
护栏是概率性系统,评估就是它的质量体系:没有基准与指标的护栏,无法说明自己比没有护栏强在哪里,也无法回答"该不该上线"。
8.1 离线评估
评估使用两块数据集:基准集以正常请求与正常输出为主,检验护栏不误伤;对抗集以红队构造的恶意样本为主,检验护栏不漏报;两者比例在 7:3 到 8:2 之间。核心指标:针对有害类别的精确率、召回率、F1;决策层指标——拦截率(高风险样本中被正确拦截的比例)与误伤率(安全样本被错误处置的比例);系统级指标——端到端有害率,即真实有害内容穿透输入闸门、生成护栏、行动闸门完整链路,最终到达用户或外部系统的比例。端到端有害率是唯一可以直接对外承诺的数字:单点召回率再高,流程衔接存在漏洞,端到端仍会泄漏。对抗集还应按季度刷新:模型与攻击手法都在演化,静态题库会让召回率指标虚高,掩蔽检测器的真实退化。
8.2 红队测试
红队成员应独立于开发团队,角色包括安全工程师与外部研究者,攻击面覆盖越狱提示、提示注入、组合攻击、社会工程。演练流程固定为四步闭环:构造样本,全链路跑批,记录穿透样本与失败位置,修复后回归验证;按固定节奏重复(每个版本迭代一轮)。穿透样本直接落入对抗集,保证数据集与真实威胁同步演化,避免对抗集沦为静态题库。
8.3 线上指标与灰度发布
线上监测四类指标:护栏触发率(四策略的分布与总量)、用户申诉率(用户主动反馈误判的比例,申诉样本必然人工复核)、误报率(由申诉与抽样审核结果反推)、漏报率(以隐藏探针样本周期性回灌测得的穿透比例)。发布路径强制灰度:shadow 模式旁路评估——真实流量经过完整护栏计算但结果不生效,先测误报率;确认无误后小流量放行,再逐步放量至全量;任一关键指标恶化即回滚阈值而非回滚功能,把变更面缩到最小。
图 6:评估闭环
闭环的关键是回流:线上监控发现的穿透样本与申诉样本,经人工标注后回流对抗集与基准集,下一轮离线评估因此更贴近生产真相;指标恶化时阈值能快速回滚。离线、红队、线上三环共享同一套数据集与指标定义,使"评估-调优-上线-再评估"成为可持续运转的循环而非一次性交付物。评估体系的成熟度,决定护栏能否在长周期内对抗样本漂移与攻击者进化。
9 失败模式与未来方向
9.1 已知失败模式
组合式越狱绕过检测。 单步无害、组合有害:攻击者把载荷拆进多轮对话的多个子目标参数中,任何单点检测都判定安全。缓解方向是跨步聚合检测——在 6.3 的跨步记忆层维护会话级风险累积评分,超过累积阈值即升级人工。过度拦截损害体验。 高误判率让用户持续面对拒绝与改写,产品价值被安全成本吞噬。缓解是分场景阈值与申诉通道,申诉样本必须回流评估集。检测器被逆向攻击。 攻击者通过观察输出推断检测规则(例如发现某关键词被改写)后构造规避变体。缓解是规则不公开、处置随机化、规则定期轮换。护栏引入新的可用性风险。 护栏服务超时或雪崩会把原本可用的系统拖垮。缓解是降级策略:护栏不可用时,高危动作默认拒绝、低危文本放行并标记,配合熔断与 7.4 的告警。
9.2 未来方向
可证明安全与形式化方法。 把 Agent 的行动空间定义为形式化权限模型(能力清单与可达状态集),对工具调用做静态校验与符号求解,"不能做什么"从概率性判断变为可验证约束,护栏从检测器逐步演化为策略执行器。端到端对齐优于后置过滤。 后置护栏是修正成本最高的位置;把安全信号前移到训练与微调阶段(护栏信号作为对齐奖励的组成部分),减少生成后再补救的损耗。后置护栏仍保留,但定位从主力变为兜底。生态级治理与标准。 模型层、框架层、应用层各自提供可插拔的护栏接口,跨组织共享去标识化的有害样本库与红队报告,让安全基线成为行业共识而不是每家企业的重复发明。
10 结语
本文的安全体系可以概括为三层闸门加一个闭环:输入闸门管住进来的话,生成护栏管住出去的文,行动闸门管住做的事;检测服务提供认知,护栏服务执行处置,审计日志留下证据,人工复核台兜底自动化判断的边界。每一层都很朴素,价值在于被组织成一个整体——检测评估风险,护栏执行处置,审计记录全过程,评估把线上反馈变成下一次迭代的输入。
回到开篇的三个词:检测是前提、护栏是手段、可证明是目标。当下的工程实践把检测与护栏做实、把审计做扎实,建立可观测、可评估、可回滚的闭环;长期沿着形式化权限模型与端到端对齐演进,逐步把"大概率安全"推向"可验证安全"。落地不必一步到位:从最小闭环起步——一条链路的检测、护栏与审计,一套离线与线上指标,一次完整的灰度上线——先让系统可度量,再让系统更安全。安全工程没有终点,但每一步都应有迹可循。
更多推荐

所有评论(0)