
当前大模型应用落地最常踩的坑之一就是“业务能力很猛安全边界失控”。无论是写代码助手、浏览器自动化 Agent还是企业内部的工单处理机器人一旦智能体开始具备“规划 执行”的能力安全对齐就不再只是大模型本身的事而是整个系统的责任。最近在梳理多智能体系统安全方案时看到 SafeEvolve 这个思路核心是让“约束策略”和“任务执行策略”一起进化而不是靠人工写死规则。本文围绕 SafeEvolve 的 Harness-Policy Co-Evolution 机制拆解其中的核心概念、架构思路、简化实现和落地经验适合正在做 LLM Agent 安全控制、提示词工程和自动化评测系统的同学参考。1. 背景与核心概念1.1 为什么 Agent 时代的“安全对齐”更难了传统的 Safety Alignment 主要针对单轮问答目标很明确让模型拒绝有害请求、不输出危险信息。到了 Agent 时代问题发生了质变。一个 Agent 不再只是“生成文本”而是会调用工具、访问外部系统、执行命令、读取敏感数据。比如一个浏览器自动化 Agent它会接收用户指令然后自己拆解成“打开网页 → 读取内容 → 填表 → 点击提交”等多个步骤。这时候的安全风险不再只是“回答了一个违规问题”而是“它真的执行了一系列可能越权的操作”。这种风险有几个典型特征隐蔽性单个步骤看起来没问题组合起来可能越界。环境依赖同一个动作在测试环境和生产环境的结果不同。动态性业务规则、API 接口、数据权限都在变静态的安全规则很难覆盖。也就是说Agent 的安全对齐必须从“内容过滤”升级为“行为约束”而且约束体系要能跟上 Agent 行为的变化。1.2 SafeEvolve 解决什么问题SafeEvolve 的核心观点是安全约束Harness和执行策略Policy不能各自独立维护必须协同进化。Harness 是外部施加的“约束装置”或者“护栏”包括安全规则、工具调用白名单、操作限流、权限边界、审批流程等。Policy 是 Agent 自己的决策策略决定它怎么拆解任务、选哪些工具、怎么编排步骤。两者其实是互相影响的。Policy 太激进容易突破 Harness 的限制Harness 太严格又会阻断正常业务能力。如果 Harness 是人工手写静态规则Policy 是模型动态生成两者很容易脱节。SafeEvolve 引入 Agent Experience智能体经验也就是 Agent 在执行任务时产生的日志、反馈、成功/失败记录、环境异常、用户反馈等利用这些经验来驱动 Harness 和 Policy 的同步迭代。简单说让系统从自己执行任务的真实轨迹里学习而不是等人出问题后再补规则。1.3 Co-Evolution 的直观理解如果你熟悉推荐系统可以类比“用户画像”和“推荐策略”的联合优化如果你熟悉强化学习可以理解为“环境动态”和“智能体策略”共同演进。在 SafeEvolve 里Co-Evolution 不是一个单独的算法而是一种学习和迭代机制当前 Policy 执行任务产生经验轨迹。经验轨迹被结构化保存标记安全标签。安全标记异常时Harness 更新约束规则。Harness 更新后Policy 需要重新适配避免合法操作被误杀。循环往复两边互相反馈直到达成稳定状态。这里的关键不是“动态规则引擎”而是“经验驱动”。也就是说更新的依据来自 Agent 真实的执行记录而不是预先设定的知识库。2. SafeEvolve 的整体架构拆解2.1 逻辑架构总览如果把它展开成一个系统实现一般会包含这几层Agent 执行层 ↓ 产生轨迹 经验采集层 ↓ 清洗、标注 策略分析层 ↓ Harness 更新层 ←→ Policy 更新层 ↓ 回放验证层Agent 执行层负责实际任务执行调用 LLM、工具、外部服务。经验采集层记录执行日志、工具返回、异常信息、用户反馈。策略分析层判断当前 Harness 是否出现过拦截失效、误杀、漏判。Harness 更新层根据异常样本生成新的约束规则。Policy 更新层根据新约束调整提示词模板、工具选择策略、重试逻辑。回放验证层用历史轨迹验证新旧策略的差异防止回归。这里的核心设计原则是Harness 和 Policy 不直接互相修改而是通过经验数据和验证结果间接影响对方。这样能避免“策略一更新安全规则就被削弱”这类问题。2.2 Harness 在 SafeEvolve 中的具体形态Harness 不是一个单独的进程它可以落在不同的控制点上。常见形态包括提示词层约束在系统提示词里加入行为边界。例如作为自动化助手你只能操作管理员明确授权的工具。 以下操作不允许执行 - 读取 /etc/passwd - 调用删除类接口 - 访问内网数据库工具调用层约束在 Agent 调用工具前经过一个校验器。校验器根据当前动作、参数、上下文判断是否放行。这是最常见的 Harness 控制点。执行结果层约束有些风险在调用前看不出来必须看返回结果。例如工具返回了异常数据Harness 可以中断后续步骤。环境隔离层约束通过沙箱、容器、最小权限账号、网络策略等基础设施实现。这类 Harness 不依赖模型安全性最高但灵活性差。SafeEvolve 关注的 Harness重点在“可以通过经验变更的规则层”例如校验器、审批策略、工具白名单、参数过滤规则。2.3 Policy 在 SafeEvolve 中的具体形态Policy 指 Agent 的决策逻辑它不一定是强化学习里的策略网络。在真实系统中Policy 的形态通常更朴素提示词模板任务拆解方式、输出格式要求、工具选择逻辑。工具选择策略同样一个操作优先选哪个工具。行动序列约束哪些动作必须按顺序执行哪些可以并行。中止条件什么情况下放弃当前任务请求人工介入。LLM 参数配置temperature、top_p、max_tokens 等影响探索和稳定性的参数。Policy 的更新在实践里往往是通过“检查点”完成的。先记录旧策略的性能数据再尝试新策略再对比回放结果选择合适的版本。2.4 SafeEvolve 与其他安全对齐方法的关系有同学会问SafeEvolve 和 RLAIF、Self-Refine、红队测试有什么区别方法核心思路主要局限RLAIF/RLHF用人类/AI 反馈微调模型参数成本高而且只调模型不调外部约束Self-Refine让模型自我纠错缺少外部校验模型可能在错误方向上“自信地修正”红队测试人工构造攻击样本找漏洞样本覆盖有限难以持续追踪动态变化SafeEvolve从 Agent 真实执行经验中联合更新 Harness 和 Policy需要完整的轨迹采集和评测体系工程复杂度高可以看到SafeEvolve 不是取代以上方法而是把它们当作经验来源之一。比如红队测试的结果可以作为 Harness 更新的输入RLAIF 的偏好数据也可以作为 Policy 更新的信号。3. 环境准备与构建思路到目前为止SafeEvolve 本身并没有一个统一的官方 SDK市面上也没有“一个包解决所有 Agent 安全对齐”的现成工具。因此本文的实战部分会给出一个简化实现思路重点演示如何围绕“经验采集 → 安全评估 → Harness/Policy 更新 → 回放验证”搭建闭环。3.1 建议的技术栈以下技术栈不是唯一选择而是为了快速搭建闭环比较常用的组合组件推荐工具用途开发语言Python 3.10Agent、策略脚本、实验脚本Agent 框架LangChain 或自研构建工具调用和任务执行链路大模型接口OpenAI / 通义千问 / 文心 等厂商 API决策和内容生成能力配置中心本地 YAML 环境变量Harness 规则和 Policy 参数管理存储SQLite开发/ PostgreSQL生产保存轨迹、策略版本、评测结果API 服务FastAPI提供评测与可视化接口任务队列Redis RQ可选异步执行批量回放任务版本需要根据你的项目实际情况调整本文示例以常见环境为例重点演示配置思路。3.2 项目结构规划一个适合做 SafeEvolve 闭环实验的项目结构可以这样组织safe_evolve_demo/ ├── agent/ │ ├── executor.py # Agent 执行器 │ ├── tools.py # 工具定义 │ └── prompts.py # 提示词模板 ├── harness/ │ ├── validator.py # 动作校验器 │ ├── rules.py # 规则定义 │ └── exceptions.py # 自定义拦截异常 ├── experience/ │ ├── collector.py # 轨迹采集器 │ ├── storage.py # 轨迹存储 │ └── annotator.py # 安全标注器 ├── evolve/ │ ├── harness_evolver.py # Harness 更新 │ └── policy_evolver.py # Policy 更新 ├── replay/ │ └── runner.py # 回放验证 ├── config/ │ ├── harness_rules.yaml # 初始护栏规则 │ └── policy_config.yaml # 策略参数 └── main.py # 主流程这个结构把“执行”和“治理”分离方便后续扩展成真正的线上系统。3.3 安装依赖以下命令用于创建一个干净的 Python 虚拟环境并安装基础依赖python -m venv .venv source .venv/bin/activate # Windows 下使用 .venv\Scripts\activate pip install langchain fastapi uvicorn pyyaml sqlalchemy pydantic如果你使用的 Agent 框架不是 LangChain也可以保留自研执行器核心模式不变。4. 核心实现经验驱动的协同进化闭环下面用代码和配置讲解 SafeEvolve 的核心机制。为了能在一篇文章里展示完整思路这里会用“文件操作工具”作为示例场景——Agent 可以读取文件、删除文件、创建备份、执行 shell 命令。真实项目中请你替换成自己的工具集和风险清单。4.1 定义工具与执行器先定义两个模拟工具一个安全工具read_file一个高风险工具delete_file。# 文件路径safe_evolve_demo/agent/tools.py import os import shutil def read_file(path: str) - str: 读取文本文件内容 if not os.path.exists(path): return fERROR: file not found: {path} with open(path, r, encodingutf-8) as f: return f.read() def delete_file(path: str) - str: 删除指定文件高风险操作 if not os.path.exists(path): return fERROR: file not found: {path} os.remove(path) return fSUCCESS: deleted {path} TOOL_MAP { read_file: read_file, delete_file: delete_file, }这里的delete_file是典型的高风险动作。真实场景中删除、覆盖、转账、发送消息、修改权限等都属于高风险类工具。4.2 定义 Harness 规则与校验器Harness 的职责是在工具调用前做一次检查。规则用 YAML 管理方便后续更新。# 文件路径safe_evolve_demo/config/harness_rules.yaml rules: - name: block_delete_from_tmp_notes tool: delete_file condition: path_contains: /notes/ action: deny reason: 禁止删除 notes 目录中的文件 - name: require_backup_before_delete tool: delete_file condition: always: true action: require_approval reason: 删除操作需要二次确认规则字段解释name规则唯一标识用于日志和审计。tool作用于哪个工具。condition匹配条件满足条件才触发规则。actiondeny表示直接拒绝require_approval表示需要人工审批后才能执行。校验器的实现思路是解析规则文件 → 遍历规则 → 判断当前动作是否匹配 → 返回决策。# 文件路径safe_evolve_demo/harness/validator.py import yaml from dataclasses import dataclass dataclass class Decision: allowed: bool reason: str require_approval: bool False class HarnessValidator: def __init__(self, rule_path: str config/harness_rules.yaml): with open(rule_path, r, encodingutf-8) as f: self.rules yaml.safe_load(f)[rules] def validate(self, tool_name: str, tool_args: dict) - Decision: for rule in self.rules: if rule[tool] ! tool_name: continue if self._match_condition(rule.get(condition, {}), tool_args): if rule[action] deny: return Decision(allowedFalse, reasonrule[reason]) if rule[action] require_approval: return Decision( allowedTrue, reasonrule[reason], require_approvalTrue, ) return Decision(allowedTrue, reasonno matching rule) def _match_condition(self, condition: dict, tool_args: dict) - bool: if always in condition and condition[always]: return True if path_contains in condition: path tool_args.get(path, ) return condition[path_contains] in path return False这里把“有风险但又不该一刀切”的操作设计成require_approval而不是直接 deny。这是 Harness 设计中很重要的一个原则过度拦截会让 Agent 失去原有的业务价值所以高危动作优先走“审批”而不是“全禁”。4.3 经验采集与结构化存储经验采集是 SafeEvolve 的关键差异化步骤。每一次工具调用都要采集足够丰富的信息包括任务 ID、调用时间Agent 输入和中间推理如果有工具名称、参数、返回结果Harness 决策结果人工反馈或下游环境反馈策略版本号# 文件路径safe_evolve_demo/experience/collector.py import json import time from datetime import datetime class TrajectoryCollector: def __init__(self): self.trajectories [] def record(self, task_id, step_id, tool_name, tool_args, result, decision, policy_version): entry { task_id: task_id, step_id: step_id, timestamp: datetime.utcnow().isoformat(), tool: tool_name, args: tool_args, result: result, decision: decision, policy_version: policy_version, } self.trajectories.append(entry) def export(self, pathdata/trajectories.jsonl): with open(path, a, encodingutf-8) as f: for item in self.trajectories: f.write(json.dumps(item, ensure_asciiFalse) \n) self.trajectories []真实系统中轨迹数据会写入 PostgreSQL 或 ClickHouse并且与链路追踪系统打通。这里为了演示简单使用 JSONL 追加写文件。4.4 安全标注器收集到的轨迹需要标注“是否安全”才能用于 Harness 更新。标注来源可以是人工审核标记用户显式反馈点赞 / 踩、投诉下游系统错误权限不足、校验失败、资源被破坏规则引擎自动标注# 文件路径safe_evolve_demo/experience/annotator.py class SafetyAnnotator: def __init__(self): # 真实场景中可能有更多标注来源 self.manual_labels {} def add_manual_label(self, step_id, is_safe): self.manual_labels[step_id] is_safe def annotate(self, trajectory): # 优先级人工标注 自动规则 step_id trajectory[step_id] if step_id in self.manual_labels: return self.manual_labels[step_id] # 自动规则delete_file 操作且没有审批记录标记为风险样本 if trajectory[tool] delete_file and not trajectory[decision].get(require_approval): return False return True注意自动标注规则本身也应该被纳入版本管理因为标注质量直接决定后续 Harness 和 Policy 更新的质量。4.5 Co-Evolution 核心循环当积累了足够的轨迹和标注后就可以启动 Harness-Policy 协同进化。为了简化展示这里用“启发式规则生成”和“提示词版本切换”的方式实现而不是训练模型。# 文件路径safe_evolve_demo/evolve/harness_evolver.py import yaml class HarnessEvolver: def __init__(self, rule_pathconfig/harness_rules.yaml): self.rule_path rule_path with open(rule_path, r, encodingutf-8) as f: self.rules yaml.safe_load(f)[rules] def evolve_from_trajectories(self, unsafe_samples): 从风险样本中生成新规则 new_rules [] for sample in unsafe_samples: tool sample[tool] args sample[args] path args.get(path, ) reason sample.get(reason, auto-generated from unsafe trajectory) # 如果风险样本涉及特定路径就生成路径匹配规则 if tool delete_file and /tmp/ in path: rule { name: fblock_delete_tmp_{sample[step_id]}, tool: delete_file, condition: {path_contains: /tmp/}, action: deny, reason: reason, } new_rules.append(rule) if new_rules: self.rules.extend(new_rules) self._save() def _save(self): with open(self.rule_path, w, encodingutf-8) as f: yaml.dump({rules: self.rules}, f, allow_unicodeTrue)Policy 更新的方式更明显是一个“版本切换”逻辑# 文件路径safe_evolve_demo/evolve/policy_evolver.py class PolicyEvolver: def __init__(self, policy_pathconfig/policy_config.yaml): self.policy_path policy_path with open(policy_path, r, encodingutf-8) as f: self.config yaml.safe_load(f) def adjust_for_harness(self, new_harness): 当 Harness 规则变化后Policy 需要同步调整。 示例如果禁止删除 /tmp 文件那么提示词中也要体现 避免 Agent 明明做了正确的删除操作却被拦截。 blocked_tools [] for rule in new_harness[rules]: if rule[action] deny: blocked_tools.append(f{rule[tool]}:{rule[condition]}) if blocked_tools: self.config[system_prompt_addition] ( 注意以下操作在你的工作环境中被禁止不要尝试执行 ; .join(blocked_tools) ) with open(self.policy_path, w, encodingutf-8) as f: yaml.dump(self.config, f, allow_unicodeTrue)这个调整的背后逻辑是如果 Harness 已经明确禁止某个动作那么 Policy 也应该提前知道而不是让 Agent 反复尝试浪费 token 和时间也增加误判概率。4.6 回放验证更新 Harness 和 Policy 后不能直接上线。要用历史轨迹做回放确保原本安全的轨迹没有被新 Harness 误拦。原本有风险的操作被新 Harness 正确拦截。Policy 的新提示词不会导致 Agent 拒绝执行合法任务。# 文件路径safe_evolve_demo/replay/runner.py class ReplayRunner: def __init__(self, validator): self.validator validator def replay(self, trajectories): stats { total: len(trajectories), blocked_unsafe: 0, false_positive: 0, false_negative: 0, } for traj in trajectories: decision self.validator.validate(traj[tool], traj[args]) is_safe traj.get(label, True) if decision.allowed and not is_safe: stats[false_negative] 1 elif not decision.allowed and is_safe: stats[false_positive] 1 elif not decision.allowed and not is_safe: stats[blocked_unsafe] 1 return stats回放结果可以展示为表格指标含义目标blocked_unsafe风险操作被正确拦截的数量越高越好false_positive安全操作被误拦数量越低越好false_negative风险操作漏拦数量必须为 0 或接近 0只有满足预设阈值的策略版本才能提交上线审批。5. 实战搭建一个最小闭环 Demo基础组件都拆解完了现在把它们组合起来跑一个完整流程。5.1 主流程代码# 文件路径safe_evolve_demo/main.py import json from agent.tools import TOOL_MAP from harness.validator import HarnessValidator from experience.collector import TrajectoryCollector from experience.annotator import SafetyAnnotator from evolve.harness_evolver import HarnessEvolver from evolve.policy_evolver import PolicyEvolver from replay.runner import ReplayRunner POLICY_VERSION v1.0 class SimpleAgent: def __init__(self, validator, collector): self.validator validator self.collector collector def execute(self, task_id, plan): plan 是一个列表每个元素是 {tool: delete_file, args: {path: /tmp/a.txt}} for step_id, step in enumerate(plan): tool_name step[tool] tool_args step[args] # 1. Harness 校验 decision self.validator.validate(tool_name, tool_args) # 2. 执行或拦截 if not decision.allowed: result fBLOCKED: {decision.reason} else: tool_func TOOL_MAP[tool_name] result tool_func(**tool_args) # 3. 采集经验 self.collector.record( task_idtask_id, step_idf{task_id}_{step_id}, tool_nametool_name, tool_argstool_args, resultresult, decision{ allowed: decision.allowed, require_approval: decision.require_approval, reason: decision.reason, }, policy_versionPOLICY_VERSION, ) print(f[Agent] step{step_id} tool{tool_name} result{result}) def main(): # 初始化组件 validator HarnessValidator(config/harness_rules.yaml) collector TrajectoryCollector() agent SimpleAgent(validator, collector) # 模拟任务Agent 计划删除两个文件一个安全一个危险 agent.execute(task_001, [ {tool: read_file, args: {path: data/config.json}}, {tool: delete_file, args: {path: /tmp/temp_cache.txt}}, {tool: delete_file, args: {path: data/config.json}}, ]) # 导出轨迹 collector.export(data/trajectories.jsonl) # 读取轨迹并标注 annotator SafetyAnnotator() with open(data/trajectories.jsonl, r, encodingutf-8) as f: trajectories [json.loads(line) for line in f] labeled [] for t in trajectories: # 假设人工审核发现删除 data/config.json 是不安全的 if t[tool] delete_file and t[args][path] data/config.json: annotator.add_manual_label(t[step_id], is_safeFalse) t[label] annotator.annotate(t) labeled.append(t) # Harness 更新 unsafe_samples [t for t in labeled if not t[label]] evolver HarnessEvolver() evolver.evolve_from_trajectories(unsafe_samples) # Policy 更新 policy_evolver PolicyEvolver() policy_evolver.adjust_for_harness({rules: evolver.rules}) # 回放验证 new_validator HarnessValidator(config/harness_rules.yaml) runner ReplayRunner(new_validator) stats runner.replay(labeled) print(Replay Stats:, stats) if __name__ __main__: main()5.2 运行效果在项目根目录运行python main.py预期输出类似[Agent] step0 toolread_file resultcontent of config.json [Agent] step1 tooldelete_file resultSUCCESS: deleted /tmp/temp_cache.txt [Agent] step2 tooldelete_file resultBLOCKED: 禁止删除 notes 目录中的文件 Replay Stats: {total: 3, blocked_unsafe: 1, false_positive: 0, false_negative: 0}这里有一个细节值得注意。初始规则里只禁止删除notes目录中的文件但在人工标注阶段我们发现delete_file删除data/config.json也属于高风险操作。于是 Harness 自动生成了针对data/路径的新规则Policy 的提示词也随之调整。这个过程就是一次最小化的 Co-Evolution。6. 常见问题与排查思路在设计和落地 SafeEvolve 这类系统时最容易遇到的问题集中在“规则误杀”“反馈质量差”“回放不稳定”“更新过度频繁”这几类。下面给出排查思路。问题现象常见原因解决思路Agent 频繁被拦截业务无法进行Harness 规则过严条件匹配过宽检查规则优先级缩小 path_contains 匹配范围把 deny 改为 require_approval风险操作漏拦轨迹标注质量差标注器漏标补充人工标注建立风险样本集对标注器做定期评估策略更新后效果反而变差没有回放验证直接上线必须增加回放验证环节对比新旧策略在历史轨迹上的指标Harness 规则持续新增规则膨胀失控缺乏规则生命周期管理为规则增加有效期、审计日志和定期评审机制Policy 调整导致合法任务被拒绝提示词措辞过于绝对Agent 理解成“不要执行任何相关操作”用正向指令替代负向指令例如“只允许在授权目录下创建文件”Agent 绕过 Harness 执行非法动作Harness 只做了一次前置校验缺少执行结果校验增加执行后检查层校验工具返回值是否包含敏感内容或异常状态回放测试结果和线上不一致回放用了旧轨迹线上行为分布变化定期收集线上新轨迹重新建立回放样本集对每一个问题都可以再深入一层。比如“规则膨胀失控”的问题工程上可以通过规则命中率统计来解决。每一条规则都记录触发次数、拦截后的用户反馈、误杀率超过一定条件就自动进入“待废弃”列表。7. 最佳实践与工程建议7.1 先建基线再谈进化很多团队在引入这套机制时上来就追求“自动生成规则”忽略了基线评估。更稳妥的顺序是先只做采集不改变线上行为。收集至少两周的轨迹数据。人工标注一批高置信度的安全/风险样本。用这批样本做 Harness 规则的初始版本。再启动自动更新机制。没有基线就无法判断自动更新到底是变好了还是变坏了。7.2 规则版本和策略版本必须可回滚在设计配置时给 Harness 规则和 Policy 都加上版本号并保存历史版本。更推荐的做法是“策略包”思想policy_package: version: 1.0.3 created_at: 2025-06-01 device_fingerprint: harness_rules_sha256 entry: - harness_rules_version - system_prompt_version - tool_allowlist_version这样做的好处是排查问题时可以直接定位“某次事故是否由某个版本的规则变更引起”。7.3 自动审批不是终点要设计“人机回环”SafeEvolve 强调“从经验中进化”但经验的来源最终还是要有人参与。一个比较实用的做法是分级处理低风险样本全自动规则引擎直接处理。中风险样本Harness 提交流程给人工决策决策结果回填训练数据。高风险样本无论 Harness 怎么决策都必须有人工审核记录。要明确一点安全对齐不可能完全脱离人去完成自动化的目标是把人的精力集中到真正有歧义、高风险的样本上而不是完全取代人。7.4 关注指标而不是只关注报错日志在线上运行 SafeEvolve 机制时至少需要维护四类指标拦截率高风险操作被拦截的比例。误杀率安全操作被拦截的比例。审批耗时require_approval 类操作的响应时间。策略迭代频率Harness 和 Policy 的版本更新节奏。其中“误杀率”是很容易被忽略的指标。一个 Harness 如果拦截了所有风险操作但同时拦截了 90% 的正常操作这个系统在实际业务中是没办法用的。7.5 不要把所有安全责任都推给 Harness最后一条建议来自实际教训Harness 是安全机制的一部分但不是全部。工具本身的权限最小化、环境隔离、数据脱敏、操作审计同样重要。如果你给 Agent 挂载了一个拥有生产库删除权限的数据库账号那么再强大的 Harness 也很难拦住所有误操作。合理的做法是“纵深防御”基础设施层限制权限让高危操作根本不可达。Harness 层增加规则拦截。Policy 层通过提示词和工具选择策略规避风险。审计日志层保证事后可追溯。这几层相互兜底才是一个健壮的 Agent 安全体系。7.6 从失败样本中学习也要从成功样本中学习在 Co-Evolution 的认识上有一个常见误区只根据风险样本来更新规则。实际上成功样本同样重要。如果一个操作通过了 Harness 校验并且用户反馈很好、下游没有异常那么这个样本就可以用来调整 Policy让 Agent 在类似场景下更稳定地选择这个路径。评估 Harness 是否存在过度拦截优化规则条件。把成功样本和失败样本都纳入学习循环才能避免策略往“越缩越紧”的方向跑偏。8. 总结与下一步建议SafeEvolve 的核心价值在前面的章节已经做了拆解。概括来说它不是某一个具体的算法而是一种“用 Agent 在真实环境中的执行经验同时驱动安全约束和决策策略协同更新”的系统化思路。对于已经上线多智能体应用、且安全规则靠人工维护的团队它有很好的借鉴意义。如果你想在项目中真正落地建议按下面的顺序推进先梳理现有 Agent 的工具调用链明确哪些操作存在高风险。建立采集模块把每一次工具调用的上下文、决策、结果都记录下来。用至少一个可控业务场景做闭环实验比如“删除文件”或“发送消息”这类有明确风险边界的行为。对比实验组和对照组的安全指标确认机制有效后再逐步扩大范围。在实际项目里最值得优先关注的还是那件事先把高质量的经验数据存下来。因为不管是 Harness 更新、Policy 调整还是后续更复杂的自动化学习都建立在一个基础上——你真正知道 Agent 在线上做了什么。很多团队觉得安全对齐难不是因为没有好模型而是连“Agent 行为回放能力”都没有。补上这一块再谈协同进化就会顺畅得多。