为什么我不再信任 AI 代理并构建了安全执行器

发布: (2026年3月10日 GMT+8 10:32)
5 分钟阅读
原文: Dev.to

Source: Dev.to

引言

每个关于构建 AI 代理的教程几乎都会出现下面这句话的某个版本:

“添加一个系统提示,告知模型不要访问敏感数据。”

我遵循了这条建议一段时间,随后意识到我在让一个概率文本预测模型去强制执行安全边界。这不是安全——而是乐观。

AI 代理会以可预测、已有文档记录的方式失败:

  • 工具误用 —— 代理调用了不该调用的工具。
  • 通过工具输出进行提示注入 —— 代理浏览网页、调用工具后被欺骗。
  • 机密泄露 —— API 密钥、令牌和个人身份信息会通过工具的输入输出泄露。
  • 费用无限制 —— 代理陷入循环或出现错误时会产生无限费用。

这些并非新奇的攻击手段,而是任何生产系统都必须处理的乏味、可预测的失效模式。问题不在模型本身——它正是按设计那样工作。安全需求必须在确定性的代码中强制执行,而不是在模型的提示中。

Argus 的核心思想是让大语言模型(LLM)运行在一个强制安全的环境中,所有工具调用都必须经过代码审查。

Argus 的工作原理

在 Argus 中,每一次工具调用都会先经过 SecurityGateway,随后才会执行。

# Before the tool runs:
gateway.pre_tool_call(
    tool_name="read_file",
    arguments={"path": "/etc/passwd"},
    agent_role="executor"
)

# The tool runs (or doesn’t, if blocked)

# After the tool returns:
gateway.post_tool_call(
    tool_name="read_file",
    result=tool_output,
    agent_role="executor"
)

每一次调用会按顺序执行五项检查:

  1. 权限强制 —— 使用 Casbin(RBAC + ABAC)。每个代理角色都有明确的权限。
  2. 提示注入检测 —— 对照 14 条 OWASP LLM01:2025 模式进行匹配。
  3. 机密信息脱敏 —— 检测并剥离 API 密钥、令牌和个人身份信息。
  4. 外发验证 —— 对出站请求进行声明的白名单检查。
  5. 审计日志 —— 无论是被允许还是被阻止的调用,都会写入审计日志。

与 LangChain 的集成

from argus.adapters.langchain import wrap_tools
from argus.security.gateway import SecurityGateway, GatewayConfig
from argus.security.audit.daemon import AuditDaemon
from argus.security.audit.logger import AuditLogger

with AuditDaemon(socket_path="/tmp/audit.sock", log_path="audit.jsonl") as daemon:
    audit_logger = AuditLogger("/tmp/audit.sock")
    gateway = SecurityGateway(config=GatewayConfig(), audit_logger=audit_logger)
    safe_tools = wrap_tools(your_tools, gateway=gateway, agent_role="executor")

适配器使用 代理模式(而非回调),确保每一次工具调用都通过网关路由。

费用上限

Argus 包含一个费用追踪器,利用 LiteLLM 响应中的真实 token 计数,使你能够设置硬性上限——当预算超出时自动中止执行。

安装

pip install git+https://github.com/yantandeta0791/argus

安装后可使用 argus demo 命令快速运行演示。

Argus 不能解决的事项

  • Argus 在 工具边界 强制安全;它并不会让模型本身更聪明。
  • 替代良好的系统提示设计。精心构造的提示仍能降低不良行为的概率。

可以把 Argus 看作 纵深防御:稳固的提示 + 强制的工具层安全 = 更可靠的代理。

未来方向

该仓库托管于 . 如果你在生产环境中遇到真实的代理安全事件,作者欢迎你提交评论或 issue,描述这些情景。

0 浏览
Back to Blog

相关文章

阅读更多 »

开发者角色,重新定义

Developer = Product + Architect + QA。 那就是在 AI 代理带来的新现实下,今天软件工程师的角色。如果那个公式...