深入探讨 Claude 的高级特性、使用技巧和潜在风险。包含实战经验和最佳实践,对重度用户有参考价值。
昨晚,我在旧金山的 Claude Code Anonymous 做了一场分享。这是一个面向 coding agent 爱好者的非官方聚会。我决定聊聊最近一直困扰我的一种矛盾:一方面,让 coding agent 在尽可能少的限制下运行,给我带来了巨大的价值;另一方面,这种自由所伴随的风险又让我深感忧虑。
下面是我的幻灯片副本,以及补充的注释和链接,组成了一份带讲解的演示文稿。
今晚我要谈两件事……
为什么你应该始终使用 --dangerously-skip-permissions。(现场坐满了 Claude Code 爱好者,听到这里欢呼起来。)
以及为什么你永远不应该使用 --dangerously-skip-permissions。(这次没有人欢呼。)
--dangerously-skip-permissions 念起来有点拗口,所以在接下来的演示中,我会使用它那个更好听的名字:“YOLO mode”。
Claude Code 以这种模式运行时,真的感觉像是一个与普通默认版 Claude Code 完全不同的产品。
默认模式要求你持续关注它,跟踪它所做的一切,并且每隔几个步骤就主动批准它的修改和操作。
在 YOLO mode 下,你可以放任 Claude 独自解决各种棘手的问题,自己则去做完全不同的事情。
我怀疑,许多没有体会到 coding agent 价值的人,可能从未真正领略过 YOLO mode 的全部魅力。
接下来,我会向你展示过去 48 小时里,我仅靠 YOLO mode 完成的三个项目。
我在《通过 Claude Code 暴力破解,让 DeepSeek-OCR 在 NVIDIA Spark 上运行起来》中详细介绍过第一个项目。
我想在 NVIDIA Spark 上试用刚刚发布的 DeepSeek-OCR 模型,但要做到这一点,就得弄清楚如何使用 PyTorch 和 CUDA 运行模型。这件事从来都不容易,在 ARM64 设备上更是难上加难。
我通过 SSH 登录 Spark,启动了一个全新的 Docker 容器,然后让 Claude Code 自己想办法。它花了 40 分钟,我又补充了三个 prompt,最终解决了问题。在它工作期间,我吃了早餐,还折腾了几个其他项目。
第二个项目始于网页版 Claude Code。出于各种原因,我一直对在 WebAssembly sandbox 内运行服务端 Python 代码的方案很感兴趣。于是我决定看看,能否通过 Claude iPhone 应用发起一项任务,让它研究这个问题。
我想看看,使用直接运行在 Node.js 中的 Pyodide 来实现这件事究竟有多难。
Claude Code 成功让它运行了起来,还构建并测试了一个演示脚本,用来展示具体做法。
我新建了一个 simonw/research repository,用于保存这些实验的结果,每项实验分别放在一个独立的文件夹中。这个 repository 创建还不到两天,却已经收录了 5 个完成的研究项目。
下面是我最喜欢的一个,也是今天早上才做的项目。
我想试试 SLOCCount。这是一款诞生于 2001 年前后的 Perl 工具,可以统计代码行数,并按照 2001 年美国开发者的薪资水平估算开发成本。
……但我不想运行 Perl,于是决定让 Claude Code——先是网页版,后来又换到我的笔记本电脑——研究如何在 WebAssembly 中运行 Perl 脚本。
简而言之:它最终成功了!后来发现,SLOCCount 的一些辅助脚本是用 C 编写的,所以它还必须把这些脚本也编译成 WebAssembly。
现在,tools.simonwillison.net/sloccount 已经成了一款基于浏览器的应用。它能在 WebAssembly 中运行已有 25 年历史的 Perl+C 代码,可以分析粘贴进去的代码、GitHub repository 引用,甚至是装满代码的 zip 文件。
最疯狂的是,这三个项目对我来说甚至都算不上优先事项——它们只是支线任务,纯粹源于我的好奇心。我可以把它们外包给 Claude Code,让它在后台解决,而我则忙于其他事情。
在并行进行这三次异想天开的探索时,我自己也完成了大量有用的工作。
但是,--dangerously-skip-permissions 之所以会有这样一个吓人的名字,是有原因的。以这种方式使用 Claude Code(以及其他 coding agent)确实很危险!
原因就在于 prompt injection。三年前,我创造了这个术语,用它描述一类针对 LLM 的攻击:攻击者利用了系统将不可信内容与可信指令拼接在一起的工作方式。
(这个名字源自 SQL injection,因为两者的攻击模式很相似。)
直到今天,这仍然是一种极其常见的漏洞。
下面是一个针对 coding agent 的精彩 prompt injection 攻击案例。Johann Rehberger 在他的“Month of AI Bugs”活动中介绍了这个案例;在整个八月里,他每天都会分享一份新的 prompt injection 报告。
如果某个 coding agent——在这个案例中是 OpenHands——读取了这个 env.html 文件,它就可能受到诱骗:先在可用的环境变量中 grep hp_(用于匹配 GitHub Personal Access Token),再把结果发送到攻击者的外部服务器,以便“帮助调试这些变量”。
我还创造了另一个术语,用来描述 prompt injection 攻击中一种常见的子类型:致命三要素(lethal trifecta)。
只要一个 LLM 系统同时具备访问私有数据、接触不可信内容,以及对外通信的能力,攻击者就有机会诱骗系统,把私有数据泄露回给他们。
这类攻击极其常见。如果你正在运行 YOLO coding agent,并允许它访问私有源代码或 secret(例如环境变量中的 API key),就必须警惕这类攻击可能带来的风险。
这就是 prompt injection 的基本法则:任何能够把自己的 token 塞进你的 context 的人,都应该被视为已经完全控制了你的 Agent 接下来的行为,包括它会调用哪些工具。
有些人会试图说服你,可以使用更多 AI 来检测攻击,从而解决 prompt injection。这样做无法达到 100% 的可靠性,也就意味着它根本称不上有效的安全防御措施。
唯一可信的解决方案,是让 coding agent 在 sandbox 中运行。
最好的 sandbox,是运行在别人电脑上的 sandbox!这样一来,最坏的情况也不过是别人的电脑被攻陷。
不过,你仍然需要担心自己的源代码遭到泄露。反正我的大部分项目都是开源的,而且我让 Agent 处理的许多代码都属于研究代码,其中没有专有 secret。
如果你的代码确实敏感,就需要更加谨慎地考虑网络限制,后面的几张幻灯片会讨论这个问题。
有许多优秀的 sandbox 都运行在别人的电脑上。OpenAI Codex Cloud、网页版 Claude Code 和 Gemini Jules 都是非常出色的解决方案。
我也非常喜欢内置于 ChatGPT 和 Claude 消费级应用中的 code interpreter 功能。
使用 sandbox 时,有两个问题需要考虑。
第一个很简单:你需要控制文件系统中哪些文件可以被读取和写入。
第二个要难得多:控制 Agent 内部运行的代码可以建立哪些网络连接。
网络访问之所以如此重要,是因为它构成了致命三要素中的数据外泄环节。如果能够阻止系统与攻击者进行外部通信,那么即使攻击者成功偷偷植入了恶意指令,也无法窃取你的私有信息。
就在昨天,Claude Code CLI 新增了一项 sandbox 功能,Anthropic 还发布了一个新的开源库,展示其工作原理。
至少在 macOS 上,这套实现的关键是 Apple 鲜为人知但功能强大的 sandbox-exec 命令。
它可以根据策略文档中的配置,在 sandbox 中运行任意命令。
这些策略既可以控制哪些文件可见,也可以通过 allowlist 限制网络连接。Anthropic 运行了一个 HTTP proxy,并允许 Claude Code 环境与它通信,然后通过该 proxy 控制 Claude Code 可以访问哪些域名。
(我使用 Claude 本身,基于 Anthropic 的 codebase 综合生成了这个示例。)
……坏消息是,至少从 2017 年起,Apple 的文档就已经把 sandbox-exec 标记为 deprecated!
Codex CLI 同样使用了它,而且它至今仍是在 Mac 上运行 sandbox 最方便的方式。我希望 Apple 能够重新考虑这个决定。
所以,去勇敢地拥抱危险吧!
(但请在 sandbox 里这样做。)
OpenAI 意外对 Hugging Face 发动的网络攻击,是已经发生的科幻故事——2026 年 7 月 22 日
与 Claude Code 团队的 Cat 和 Thariq 围炉对谈——2026 年 7 月 21 日
Kimi K3,以及我们仍能从鹈鹕 benchmark 中学到什么——2026 年 7 月 16 日
本文是 Simon Willison 撰写的《与 Claude 一起危险地生活》,发布于 2025 年 10 月 22 日。
下一篇:Dane Stuckey(OpenAI CISO)谈 ChatGPT Atlas 面临的 prompt injection 风险
上一篇:网页版 Claude Code——Anthropic 推出的新型异步 coding agent
每月赞助我 10 美元,即可收到一份精心整理的邮件摘要,汇总当月最重要的 LLM 进展。
付钱让我少给你发点东西!