首页 / 文章 / 我让AI代理无人看管地运行交易机器人,它两次崩溃后我才设置门阻止它。
← 返回
安全技术

我让AI代理无人看管地运行交易机器人,它两次崩溃后我才设置门阻止它。

✍️ zhirenhun 📅 2026/8/19 👁 107 阅读 ⏱ 8 分钟
我让AI代理无人看管地运行交易机器人,它两次崩溃后我才设置门阻止它。

我经营着一个一人的 AI 公司:Claude Code 负责编写和维护代码,我负责做出需要人类判断的决策。它构建的大部分内容都在无人值守的情况下运行 — — 一个在 5 分钟调度器上运行的实时策略机器人,以及一个每周的内容管道,可以在我不先阅读草稿的情况下自动草拟并发布(我的英文阅读水平不足以自己审阅)。

这种安排一直有效,直到出现两个特定时刻,‘代理是有能力的’和‘代理可以安全地无人值守’这两个属性竟然是不同的。下面是说明两次发生的事情,以及我在第二次之后构建的门禁,以免第三次发生同样的问题。

事件 1:它编辑了一个实时机器人,而调度器运行了半审查的版本

我让代理用一个新的交易策略替换一个亏损的策略,该策略已经经过回测并通过了盈利因素门槛的检查。它重写了 run.py,保存了文件,并且正在向我解释这一变化的途中。

该机器人的 Windows 任务计划表条目每 5 分钟运行一次,无条件地执行,无论人类是否正在审查中。它触发了。新代码存在一个错误:它将当天仍在形成的价格 K 线视为已收盘的 K 线,并基于不完整的数据做出了真实(模拟)的卖出决策。

我很快发现了问题,暂停了计划任务,并开始查究问题的深度。结果发现问题远不止这一个错误:

安全网中存在三个独立的漏洞,只有在第一个漏洞被触发后才被发现。我们修复了所有四个问题,进行了现场验证,并重新启用了调度。这一教训我牢记于心,用 plain language 表达为:在让代理接触它驱动的文件之前,先禁用计划任务 — — 而不是在你弄清楚为什么这很重要之后才禁用。

事件 2:从错误 #1 恢复过程中破坏了对错误 #1 的修复

在上述修复过程中,我执行了 git reset --hard HEAD~1 以撤销一次不良的测试提交。--hard 不会撤销一次提交 —— 它会丢弃工作树中的所有未提交更改。这包括上述事件中的安全修复,这些修复尚未提交。我从头重新实现了它们。

这里没有什么复杂的问题出错。一个破坏性的 git 命令恰好按照其文档所述执行了操作,而一个行动迅速的代理在未停下来检查其他未提交内容的情况下直接使用了它。这种错误,一个细心的高级工程师也许十年才会犯一次。如果没有任何事先检查,一个每周提交数百次的代理会比那更早犯错。

事件 3 其实并不是一次事故 — — 我当时已经构建的门禁实际上捕获了它

在内容流水线存在的时候 — — 草稿、安全检查、发布,没有人先读英文 — — 我已经学到了足够的知识,知道在发布步骤前不加硬性门禁就发布该流水线是不行的。三层防护,任意一层阻止即可:一个手动维护的已知敏感字符串拒绝列表,一个实时扫描,它会读取每个 .env 文件并检查当前的任何密钥值是否在草稿中逐字出现,以及来自第二次模型调用的语义通过,它会在实际草稿前询问“这是否看起来可以安全发布”,而不是依赖规则列表。

第一次真实测试,未计划内的:流水线起草了一篇关于本周工程工作的帖子。门禁在草稿中捕获了三个真实的账户号码,并在到达 git 或博客之前阻止了发布。其中一个号码甚至不在手写的拒绝列表中 — — 它被一个通用的“此类字符串看起来像账户号码”模式捕获,这正是拥有多层防护的目的。草稿至今仍位于一个被 git 忽略的文件夹中,从未发布,光标也没有越过它。

这就是前两起事件和第三起事件之间的区别:前两起事件,我在某件事已经发生之后才得知。第三起事件,我之所以得知,是因为门禁当时已经存在并在任何事情发生之前完成了它的工作。这种差距 — — 事后发现 vs. 事先防范 — — 是这篇文章存在的全部原因,而不仅仅是一份事故日志。

我从此得到的教训

编写良好代码的 AI 代理和能够安全无人值守运行的 AI 代理并不是同一个命题,对前者的测试对后者几乎没有帮助。上述每一个漏洞都是在某件事实际上出错之后才被发现的,而不是有人提前预测到的 — — 断路器的盲点仅在第一个错误触发后才显现;git 重置的危险仅在它吞噬了真实工作之后才被命名。

我正在把这个门闩 — — 拒绝列表加实时秘密扫描加语义检查模式 — — 拉出来做成一个独立的工具,供单个开发者和小团队使用,他们运行的 AI 代理具有真实的写入权限(比如活跃的机器人、发布流水线、部署步骤),且不需要人工实时审查每个操作。这不是通用的秘密扫描器 — — 已经有不错的付费方案(GitGuardian、gitleaks)。这是专门为代理即将在无人看管的情况下执行不可逆操作的那一刻设计的,而此时没有人在盯着那一秒。

如果你在运行任何种类无人看管写入权限的代理,并且你有自己版本的事件 1 或 2,我很想听到它 — — 正试图基于超过我自己的两个数据点来构建这个。

——

🧑‍💻

zhirenhun

一个热爱技术的程序员,喜欢分享前沿AI知识和开发经验。

ai opensource python security
← 上一篇
将 CLAUDE.md 从 548KB 压至 34KB:测量加载时机及保持小巧的提交门禁
下一篇 →
Qwen3.8-2.4T-A95B 现已在 DigitalOcean 推理引擎上提供

📌 相关推荐

我尝试对自己的 Agent 引擎进行提示注入,未成功,原因如下。
2026/8/25
企业AI访问控制:将策略转化为运行时强制
2026/8/13
Slopsquatting:将AI幻觉武器化的供应链攻击
2026/8/1
← 返回文章列表