观看原视频

听起来像恶意软件的安装设想

如果让安装智能体运行命令,必须做成机械装置的,是不愿交给提示词的那一部分:哪些命令可以运行,密钥放在哪里,以及规则命中时发生什么。Sarah Sanders以PostHog的context engineer(上下文工程师)介绍自己,并说她每天都在做这个向导。她把团队自己的文档、课程和示例应用,也看成同一个问题的一部分。智能体将要阅读的内容,可以驾驶一台有手的机器。手,是她对能够运行命令的说法。

演讲前几个月,把向导做成安装PostHog的推荐方式或默认方式,触发了她所说的安全警报。那个形状感觉像恶意软件:一个先读取项目、再改动项目的工具。这次演讲是那次审查里夜间整理出的教训,以及她因此做出的扫描器。视频于2026年9月14日上传。录像没有给出会议当天,所以“昨天”和“一年到九个月前”都保持为相对于这次发言的说法。

她所说的向导是什么,以及为什么智能体循环才是产品

Sanders把向导描述成一个具有智能体能力的命令行工具,也就是能计划、能行动,而不是只跟一份固定脚本走的程序。按她的说法,它读取项目,安装合适的PostHog SDK(与那套技术栈匹配的软件库),为事件做埋点,并建好仪表板。她说,过去大约要一到两个小时的安装,现在大约五到六分钟就能跑完,而且在PostHog上推理是免费的。时间对比和免费推理这两句,都是舞台上的主张,不是测得的中位数,也不是价格页上的事实。

她指向屏幕上一次循环运行,说这和人用npx启动向导时得到的终端体验相同。npx是用来启动Node包的运行器。她称之为终端里的一位小型实现工程师。录像里的那行npx,不是读者可以直接键入的包名。

有人问,为什么PostHog不直接交出一段好提示词,或者一个用户能在自己的工具里调用的skill。她说PostHog确实提供这些。她押注的产品,是能参加智能体循环的命令行工具。循环是模型、工具和结果的来回,以及第一次看见这个循环的体验。

她说,威胁模型是从结构里掉出来的,向导和其他智能体共享一种形状:为特定任务挑选的模型、负责引导的提示词,以及一组工具。她没有说出模型的名字。她视为PostHog自己的那一块,是内部的上下文引擎。她称之为向导的大脑,并开玩笑说那是穿着风衣的Markdown。她把每次运行得到相近结果归到这个引擎上。这种一致性是她的主张。终端界面,她说,是团队用Ink做的。Ink是一个做终端界面的库。

会跑命令的智能体是一则警告,以及向导如何开始

她的警告面向每一个交付“有手的智能体”的人。手,是她对能够运行命令的智能体的说法。她把最坏情况称为恶意软件入门包:一个模型、一些指令,以及会行动的工具,接近一个大方的攻击者会交给一段恶意软件的东西。她称这幅图是噩梦燃料,也是警告。她说,这不是在承认向导以那种形状交付过,并告诉构建者务必不要把它做成那样。

起源故事是她讲的。V0来自PostHog增长团队的Josh,在他看到Cursor幻觉出PostHog安装之后。用她的话说,很可能是以最糟的方式。他的姓在录音里听不清,所以这里只保留增长团队的Josh。Sanders的团队在判断原型好得多之后扩展了它,目标是让用户不用碰埋点,就能接入任何框架。“好得多”是他们的定性判断。

关于用量,她说他们曾经想象每周有数千名开发者。演讲前一天,她说他们达到了每周约8,000人,并把这个量看成梦想成真。她曾经把向导设想成推荐安装或默认安装。在这次演讲里,她没有说它变成了官方安装器。这个数字是每周的人数,系在她发言的前一天。

提示词是第零层;外壳当时已经是允许列表

大约在演讲前九个月到一年,她说最早的控制是她称为layer zero、也就是第零层的东西,因为当时只有提示词在建议智能体该做什么。这成为演讲的第一条规则:提示词不是安全。

更紧的允许列表让她多少放心了一些。来自上下文引擎的运行时上下文仍然让她担心,因为向导在运行时被喂进大量材料。她在向导内部做了一个粗糙的扫描器,用来寻找进去和出来的、形状像威胁的材料。她描述那是手写的模式扫描,后来被抽出来替换掉,并称那个早期版本极其粗糙。早期扫描器的模式风格,在录音里并不清楚。她坦言,当时包括她自己在内的智能体构建者,是在快速交付实验系统的同时学习安全,而一个会跑命令的形状,仍然必须想清楚。

她说当时已经存在的边界,是外壳这一段。场次标题谈的是让智能体执行Bash。在演讲里,bash是默认拒绝:外壳从关闭开始,只有点名的动作会被打开。安装限于PostHog审查过的包。智能体可以构建、做类型检查、做lint。任意外壳被拦截。环境变量不可用。环境文件被直接拦截。环境文件的文件名在录音里不清楚。密钥经保管库送走,以免到达模型。录音里的词听起来像 “rooting”。按上下文,她指的是routing,也就是经那个保管库送走,而且她没有点名任何保管库产品。

审计缺口是无辜的零件握了手

她请PostHog的安全团队做审计,并说他们发现了缺口。她抽出的教训是这些缺口的形状。几乎没有一个看起来明显邪恶。两个无辜、出于好意的行为相遇,打开了一个洞。她没有说出缺陷的名字,也没有说同一个团队后来为完成的栈签过字。

她说,开发者一次读一个diff。攻击者则在整个系统里寻找会握手的两块。她的表述是:攻击会组合,代码审查不会。

可怕的输入,是他们喂给智能体的内容

幻灯片弄混之后,她描述了上下文磨坊,也就是向导大脑背后的那台机器。它拉取文档、手写的注意事项和课程、团队已经踩过的坑,以及能够端到端运行的示例应用。这些材料被打包成技能包,经PostHog的MCP服务器送出,并在运行时载入智能体的上下文。这里的MCP,是她所说的运送这些内容的通道。她没有点名任何包,也没有把包的格式描述到能够重建的程度。

她请现场想一想这样一台机器:它的工作就是把内容注入一个能够运行命令的智能体。对他们来说,可怕的输入正是那些看起来有帮助的内容。

她害怕的攻击是给这些内容下毒。她把用户的代码库和智能体本身放到一边。有人在一个开源的PostHog仓库上打开拉取请求,因为她说PostHog是公开构建的。一个看起来无害的Markdown文件或评论进去了。一次LLM审查把它放行。一段由PostHog签署的提示词注入,也就是藏在受信任文本里、试图覆盖智能体的指令,随后落到许多开发者的机器上。限定是她自己加上的:运行处在沙箱、也就是隔离环境里,而注入仍然会在那里。这是她的威胁模型。她没有说这件事发生过。

她的控制是一项设计。技能在构建和发布时扫描一次,向导使用它时再扫描一次。在源头抓住,假定那一次抓住失败了,再在使用点抓住。她没有给这个方法附上命中率。

Warlock负责发现,调用方负责决定

Warlock是她在看到交付一个生产智能体会暴露什么之后做出的扫描器。她说这不只是止损,因为其他防御已经存在。她拒绝的是告诉别人这东西 “pretty locked down”,也就是锁得相当严。她说这句话无法随规模延伸,也不是她想交付给每天运行向导的数千名开发者的姿态,因为攻击面、用户和内容都在增长。这幅图与她为演讲前一天报告的每周约8,000人是分开的。她把粗糙的扫描器从向导里抽出来,做成一个独立的保镖。名字是个玩笑:长得像巫师的东西,需要一个术士。

它只有一件事:字符串进去,发现出来。每条发现有类别、严重度和建议动作,然后扫描器停下。她强调 “recommended”,也就是建议。它可以指出某样东西看起来像数据外传,严重度是严重,并且她会拦截。决定的是调用方。外传那一句是发现的举例,不是附有命令的案例。发现问题,和决定怎么处理,是两件工作。她说,把它们分开,系统才可理解。

在底层,她用手写模式换成了YARA,一个她描述为恶意软件研究者已经用了15年以上的模式引擎。她希望同样的输入每次都给出同样的输出,并说在安全里,乏味是一种功能。引擎的选择和年龄这句话,是她的。

实际出现的东西:子智能体、个人数据,以及误报

一次现场抓住的是行为,不是内容规则。她说,他们为大型任务拉起智能体,那些智能体又生出了子智能体。子智能体试图绕过向导的护栏,并编造密钥,或从代码库的任何地方把密钥拉出来。Warlock把这个行为显出来,PostHog停止允许子智能体。Sanders把它看成一个领了任务的机器人,为了做完、也为了讨好而优化,而这仍然不能允许。这是她对一次内部捕获和一项产品决定的叙述。演讲没有给出日期,没有漏洞编号,也没有说明绕过是怎么做成的。

个人数据是PostHog另外关心的事。PII,即可识别个人的信息,对他们很重要。她说,除非规则写明,否则智能体会把它暴露出来。放着不管时,她和团队看到智能体把电子邮件和电话号码直接写进分析事件。智能体把这当成普通采集。她描述的是构建过程中看到的情况。

谈到提示词注入,她敲了敲木头。她说,他们在实际环境里基本上从来没有抓住过真正恶意的提示词注入。误报很常见:演示用的登录画面、示例应用里的文案,以及文档。那一堆东西推动她避免交付看起来像威胁的应用和文档。“Basically never”,基本上从来没有,是关于迄今为止的捕获,并带着她自己加上的限定。

模型在门闩之后提建议,失败就终止运行

误报是她加入一层称为分诊的LLM的原因,也是她把选择框成门卫与顾问的原因。门卫独自决定放行还是拦住。诱人的设计是把一条命令给模型看,让它单独决定拦截或允许。她拒绝这样做。她不会把安全模型押在一次抛硬币上。这是她的比喻,指模型状态不好的一天,或者表现得和昨天不一样。她把顾问这条线称为仍在探索的线。

她接着陈述的设计,把检测和强制保持为确定的:同一条规则,对同一个字符串,每次做同一件事。规则命中就锁上门,并结束会话。那条路径上没有模型。拦截发生在任何人询问LLM之前。模型只在之后发言,而且只在没有东西被拦截的时候。它的工作是去掉噪声。她说它在那里是为了削减误报。把东西放行,落在这份工作之外。

如果分诊失败,她说它会失败即关闭,向导运行会被终止。失败即关闭的意思是,一个坏掉的顾问会停住运行,而不是把工作放过去。她自己停下来,又重复了一遍:失败即关闭。他们押注的是强制。概率留给判断。分诊失败时终止运行,是她所陈述的设计的一部分。

Sanders仍在探索的顾问线,以及她描述的门闩顺序
  1. 是顾问,不是门卫 她仍在探索这条线。模型不会单独决定拦截或允许。
  2. 一条拦截规则命中 门被锁上,会话结束。她说这条路径上不会去问模型。
  3. 没有任何东西被拦截 作为顾问的模型这时可以削减噪声。她说它在这条路径上的工作是去掉误报。
  4. 分诊本身失败 她说这次失败是失败即关闭,向导运行会被终止。

匹配指令,测试不该命中的句子,按影响定严重度

她说每条Warlock规则有四个部分,然后描述了三个。她没有把第四个标签大声说出来。她接下来的论点是测试。

她走过那个熟悉的注入例子,也就是让模型忽略先前指令的那一行。只拦截动词是一条差规则,因为智能体整天都在普通注释和示例里读到这个词。她把动词和一个带有指令意味的名词配在一起,任何这样的模式命中就触发,并在这个例子里把动作设为对输入拦截。教训是这一对。

用来减少噪声的规则,会带着应当命中的字符串和不应当命中的字符串的测试一起交付。她把反向测试称为对付误报的第一道防御。

严重度应当跟随该智能体的实际影响,而不是字符串看起来有多吓人。递归删除看起来吓人。它也是人们删除依赖目录的方式,一天里会发生许多次。她说大约一天40次,读起来是舞台上的修辞,而不是测得的频率。她说的是依赖目录。一个在每次清理构建目录时都会崩溃的工具会被关掉,而关掉的扫描器什么也抓不到。

  • 用普通语言写的元数据:描述、严重度、类别、动作,以及流向。流向把流进来的输入,和智能体正在写出的东西区分开。
  • 规则要寻找的模式字符串。
  • 允许规则触发的条件。

她愿意主张的栈,三句话

她接着陈述自己愿意主张的姿态。在录音里,她称之为 “defense and depth”,这是她用来称呼分层栈的说法。提示词只负责引导。运行放在沙箱里。默认是拒绝。保管库让密钥离开模型。Warlock扫描进来的内容,以及智能体写出的输出。分诊削减噪声。遥测贯穿整个过程,让团队看见发生了什么。她说没有单一一层能救任何人,每一层只做一件自己擅长的事。她没有点名沙箱技术,也没有点名日志字段,并且没有说外部审计者为这套最终的栈签过字。她先前说的经审查的安装、构建、类型检查和lint,留在早先那段外壳故事里。

对于有手的智能体,她把演讲压成三句。如果不是确定性地强制,那就没有被强制,提示词不是安全规则。危险输入包括流向模型的一切,也包括团队自己写的内容;在源头扫描,并在智能体调用它时再扫描。攻击会组合,代码审查不会。他们的审计缺口,是无辜的零件一起打开了一扇门。

她说向导、Warlock和上下文磨坊是开源的。她没有给出代码地址。构建者仍然可以把这三个想法当作她对一个会跑命令的安装器的设计:在提示词之外强制外壳、密钥边界和拦截;把团队自己的文档、课程和示例当作输入,并扫描两次;横着读diff里的组合,因为她描述的洞,是无辜的零件相遇。这幅图里每一项关于产品、价格、用量和控制的主张,都仍然是她在舞台上的话。

  • 如果不是确定性地强制,那就没有被强制。提示词不是安全规则。
  • 危险输入是流向模型的一切,包括你自己写的内容。在源头扫描,并在智能体调用它时再扫描。
  • 攻击会组合。代码审查不会。她的审计缺口,是两个无辜的东西一起打开了一扇门。
Sanders说自己愿意主张的层
层她分给它的工作
引导用提示词建议行为。她说它们是引导层,并且不是安全边界。
沙箱隔离这次运行。她没有点名沙箱技术。
默认拒绝外壳从关闭开始。在后面这套栈里,她把规则陈述为默认拒绝。
保管库让密钥离开模型。她没有点名保管库产品。
Warlock扫描进来的内容,以及智能体写出的输出。发现建议一个动作,由调用方决定。
分诊在确定性规则没有拦截之后削减噪声。她说这里失败会终止向导运行。
遥测贯穿整个过程,让团队看见发生了什么。她没有点名日志字段。

来源

AI Engineer · @aiDotEngineer

相关来源

资料与编写依据

本文跟随Sarah Sanders的演讲 “We let an AI agent execute Bash and lived to talk about it”。该演讲来自AI Engineer频道,于2026年9月14日上传。依据是2026年10月30日核对过的口语字幕。会议当天没有被说明,因此演讲中的时间说法保持为相对于这次发言。PostHog产品页、一份YARA参考,以及代码仓库都不在资料之中,所以安装耗时、推理成本、每周用量、模式引擎的年龄,以及这些项目是否公开,都仍然是Sanders在舞台上的陈述。