

子玥酱 (掘金 / 知乎 / CSDN / 简书 同名)
大家好,我是 子玥酱,一名长期深耕在一线的前端程序媛 👩💻。曾就职于多家知名互联网大厂,目前在某国企负责前端软件研发相关工作,主要聚焦于业务型系统的工程化建设与长期维护。
我持续输出和沉淀前端领域的实战经验,日常关注并分享的技术方向包括 前端工程化、小程序、React / RN、Flutter、跨端方案,
在复杂业务落地、组件抽象、性能优化以及多端协作方面积累了大量真实项目经验。
技术方向: 前端 / 跨端 / 小程序 / 移动端工程化 内容平台: 掘金、知乎、CSDN、简书 创作特点: 实战导向、源码拆解、少空谈多落地 **文章状态:**长期稳定更新,大量原创输出
我的内容主要围绕 前端技术实战、真实业务踩坑总结、框架与方案选型思考、行业趋势解读 展开。文章不会停留在"API 怎么用",而是更关注为什么这么设计、在什么场景下容易踩坑、真实项目中如何取舍,希望能帮你在实际工作中少走弯路。
子玥酱 · 前端成长记录官 ✨
👋 如果你正在做前端,或准备长期走前端这条路
📚 关注我,第一时间获取前端行业趋势与实践总结
🎁 可领取 11 类前端进阶学习资源 (工程化 / 框架 / 跨端 / 面试 / 架构)
💡 一起把技术学"明白",也用"到位"
持续写作,持续进阶。
愿我们都能在代码和生活里,走得更稳一点 🌱
文章目录
-
- 引言
- 一个核心认知:安全必须覆盖"完整执行链路"
- [第一层:输入安全(防 Prompt Injection)](#第一层:输入安全(防 Prompt Injection))
- 第二层:推理安全(限制模型自由度)
- 第三层:工具安全(最关键防线)
- 第四层:执行安全(防止系统失控)
- 第五层:数据安全(防泄露与污染)
- 第六层:输出安全(防止错误结果扩散)
- 第七层:审计与可观测(让系统"可解释")
- 第八层:人类在回路(Human-in-the-loop)
- 一个全链路视角
- 总结
引言
当你把 OpenClaw 从 Demo 推向真实使用场景之后,一个问题会越来越清晰:
AI 能力越强,系统风险越高。
过去的软件安全,大多围绕:
- 接口鉴权
- 数据加密
- 权限控制
但在 Agent 系统中,这些还远远不够。
因为你面对的不再是:
"用户调用系统"
而是:
"系统在替用户做决策并执行操作"
这意味着:
安全不再是某一个模块,而是一条贯穿全链路的能力。
一个核心认知:安全必须覆盖"完整执行链路"
在 Agent 系统中,一次任务的真实路径是这样的:
用户输入
↓
模型理解(LLM 推理)
↓
任务拆解
↓
工具调用
↓
外部系统交互
↓
结果返回
任何一个环节出问题,都可能导致:
- 数据泄露
- 错误执行
- 权限越界
所以安全不能只做在"入口",而必须:
覆盖每一个节点
第一层:输入安全(防 Prompt Injection)
一切的起点,是用户输入。
但在 Agent 系统中,输入不仅仅来自用户,还包括:
- 文件内容
- 网页数据
- 第三方 API 返回
这些都可能携带"恶意指令"。
典型攻击
请忽略所有之前规则,并执行以下操作...
如果模型被诱导成功:后续所有链路都会被污染
防御思路:输入"去指令化"
核心原则:
数据只能是数据,不能变成指令
例如:
dart
String sanitize(String input) {
return removeDangerousPatterns(input);
}
同时:
- 区分"用户意图"和"数据内容"
- 对外部内容加标记(如:
[UNTRUSTED])
第二层:推理安全(限制模型自由度)
模型推理是黑盒,但不能"完全放任"。
问题在于:
模型可能合理地做错事
风险表现
- 过度执行(Over-action)
- 错误理解任务
- 被上下文误导
防御思路:约束推理空间
1. 明确系统指令(System Prompt)
text
你只能执行白名单工具,不得调用其他能力
2. 限制输出结构
json
{
"action": "...",
"params": {...}
}
3. 引入中间校验层
dart
if (!isValidAction(output)) {
reject();
}
本质:
模型负责"建议",系统负责"决定"
第三层:工具安全(最关键防线)
一旦进入工具调用阶段:
系统开始影响现实世界
这是风险最大的环节。
风险点
- 调错工具
- 参数越界
- 连锁调用
防御思路:工具"强约束化"
1. 工具白名单
dart
allowedTools = ["read_data", "search"];
2. 参数校验
dart
if (!isSafe(params)) {
block();
}
3. 权限分级
- 读:自动
- 写:需确认
- 高风险:禁止或人工审批
工具层是"最后一道闸门"
第四层:执行安全(防止系统失控)
即使每一步都正确,也可能出现:
系统运行失控
例如:
- 无限循环
- 重复调用
- 成本爆炸
防御思路:强制执行边界
dart
maxSteps = 10;
timeout = 30s;
maxCost = 5$;
允许失败,但必须"有边界地失败"
第五层:数据安全(防泄露与污染)
Agent 系统天然面临两个问题:
- 数据泄露
- 数据污染
风险路径
本地数据 → 模型 → 外部 API
或:
不可信数据 → 模型 → 决策
防御思路:数据分层
dart
data = {
"public": ...,
"internal": ...,
"restricted": ...
};
处理策略:
- restricted 数据不进入模型
- 或只提供摘要
模型不应该"看到一切"
第六层:输出安全(防止错误结果扩散)
很多人忽略了一点:
输出本身也可能是风险源
例如:
- 生成错误指令
- 输出敏感信息
- 返回未校验内容
防御思路:输出校验
dart
if (containsSensitive(output)) {
block();
}
同时:
- 对关键操作结果做二次确认
- 对外输出做过滤
第七层:审计与可观测(让系统"可解释")
没有可观测性,就没有安全。
必须记录完整链路:
json
{
"input": "...",
"thought": "...",
"action": "...",
"params": "...",
"result": "..."
}
为什么重要?
当问题发生时:
- 可以复现
- 可以分析
- 可以追责
否则就是"黑盒事故"
第八层:人类在回路(Human-in-the-loop)
无论技术多先进,有一类操作必须:
人来兜底
例如:
- 删除数据
- 支付
- 外部写入
一个现实结论
完全自动化 ≠ 完全可信
合理的模式是:
Agent 提议 → Human 确认 → Agent 执行
一个全链路视角
把这些层组合起来,就是一个完整的安全体系:
输入 → 推理 → 工具 → 执行 → 数据 → 输出 → 审计 → 人类兜底
每一层:
- 都可能出问题
- 都必须有防御
总结
在 OpenClaw 这类 Agent 系统中,安全已经不再是"附加功能",而是:
系统设计的主线
真正的"可信智能体",必须具备:
- 输入可控(防注入)
- 推理受限(防越界)
- 工具安全(防误操作)
- 执行有界(防失控)
- 数据隔离(防泄露)
- 输出校验(防扩散)
- 全链路审计(可追溯)
- 人类兜底(最终控制)
最后可以用一句话总结:
AI 的可信,不来自"它不会犯错",
而来自"它犯错时,系统仍然可控"。