@DeRonin_: 任何使用或学习智能体系统的人都应该读一读这个。我在每个新智能体项目前执行的安装顺序:1.…
摘要
一条分享智能体项目结构化安装顺序的推文:使用 direnv 配合密码管理器保障凭证安全,使用 litellm 或 portkey 作为模型代理管理成本和回退,使用 uv + git 在评估通过时提交以确保可复现性,使用 mitmproxy 实现 LLM 调用的全面可观测性。重点介绍了常见故障模式和安全漏洞。
查看缓存全文
缓存时间: 2026/05/18 00:24
任何使用或学习代理系统的人,都该读读这篇
我在每个新代理项目开始前执行的安装顺序:
- 隐私保护:direnv + 真正的密钥管理器
安装 direnv,然后把它接入你们团队的密码管理器(通过 1Password CLI 的 op run、doppler、infisical、vault,选一个)。
direnv 的作用:当你cd进一个文件夹时自动加载该文件夹的环境变量,退出时卸载。真正的妙处在于把它和密钥管理器连起来,这样凭据永远不会以明文形式存在磁盘上。
它能避免的问题:
- API 密钥意外提交到 git 历史——2026 年最常见的 AI 代理入侵模式
- 凭据通过 shell 历史记录从一个项目泄露到另一个项目
- 共享的
.env文件被某个队友悄悄备份到 Dropbox - 密钥因存放在
/Users/你/项目下而随电脑丢失去向
没人提到的那部分:大多数“我的代理被越狱了”的故事,最终都追溯到代理本不该有的一个凭据上。把密钥按项目限定范围,把项目按文件夹限定范围,任何一个单一漏洞的爆炸半径都会大幅缩小。
在改用 direnv + op run 之前,我靠 .env 文件发布过两个代理,后来改的那天起,再没遇到过那类噩梦。
- 令牌管理:litellm 或 portkey 作为模型代理
一个 URL 即可对接所有 AI 提供商(Anthropic、OpenAI、Google、Mistral、本地模型)。所有开销都经由此处流转。
它能为你节省:
- 按提示哈希缓存响应,重复任务可减少 30-60% 费用
- 遇到速率限制时自动降级(Sonnet 返回 429?自动回退到 Opus,再到 GPT,再到你的本地备份,用户无感)
- 按功能、按用户的预算上限,在调用前就阻止开销超过 $200,而不是事后审计
- 模型路由规则:简单任务走 Haiku,昂贵的走 Opus,永远不会搞错
- PII(个人身份信息)在请求离开你网络前脱敏——安全性的附带好处
没人提到的那部分:我听说过的每一个“$4000 AI 账单”故事,结尾都是“我们前面没有加代理”。这是个在开销发生前就设置护栏的地方。
我自己动手写过 2 周的路由器,后来换成 litellm 只花了 20 分钟。这件事我会永远感到惭愧。
- 上下文:uv + 每次评估通过时自动提交
安装 uv(新的 Python 包管理器,比 pip+venv 快 10-100 倍,由 ruff 背后的 Astral 团队开发)。然后在每次评估套件 通过 时自动提交,提交信息中包含模型版本和通过率。
它能保留什么:
- 通过
uv.lock确定的精确依赖集,你知道代理使用的是哪些包,不会因静默更新而出现意外 - 精确的提示词 + 代码状态,从单个 git 哈希即可重现任何历史运行
- 精确的模型版本与精确的通过率配对,为几周后生产环境出问题时提供追溯证据
- 一键回滚到已知正常工作状态,当重构搞砸时
- 合规故事:每个提示版本都与 commit 日志中的模型版本绑定
安全方面:当生产环境出了大问题时,你想说的是“提示版本是 X,模型是 Sonnet 4.6.1,上次评估通过率是 94%”,而不是“我猜我们是周二部署的?”前者是一份事件报告,后者是一封辞职信。
我因为“在一次会话中改了 3 个提示导致某处出错”而丢失的代理,比实际 bug 导致的还要多。
- 可见性:在每个 LLM 调用前放置 mitmproxy
它基本上就是代理的监听器。安装它,让你的代理流量经过它,然后你就能实时看到代理与模型之间的每一次对话。
实际能看到的内容:
- SDK 在调用失败时悄悄执行的每一次静默重试
- 发送的完整提示(包括你意外嵌入的任何凭据)
- 模型在你的代码做出反应 之前 返回的内容
- 每次调用、每个工具、每次循环迭代的精确令牌成本
- 那些静默触发你的代码执行你本意之外的响应的内容——这就是提示注入所在之处
没人提到的那部分:如果一个被代理抓取的网站把指令悄悄塞进数据里,mitmproxy 可以看到你的代理 何时 决定服从这些指令。没有这一层,你只能信任代理做了正确的事,但无法验证。
我发布过 3 个代理后才加了这个,我现在根本说不清它们在生产环境中到底在干什么。
- 评估:inspect-ai(各大实验室实际使用的框架)
一个评估框架能通过数字而不是感觉告诉你“这个代理是有效的”。inspect-ai 是 Anthropic、DeepMind 和英国 AI 安全研究所用来撰写论文中评估报告的工具。开源,MIT 许可。
你自己写的版本不会有:
- 在同一任务上运行 5 个不同模型并排对比评分
- 针对代理风险行为(撒谎、操纵、滥用工具)的预置测试
- 评估使用工具的代理的合适结构,而不仅仅是聊天
- 可复现的评分,同一输入总是得到相同的评分
- 可重现的评估种子,这样不稳定的测试就是真的不稳定,而不是运气不好
我自己在 4 个项目里写过 4 次评估框架,然后 4 次都扔掉了。
如果你曾经想在公开场合说“我的代理通过了安全检查”,那这个检查必须来自一个别人也能重新运行的框架。就是这个框架。
把这些串起来的关键操作:在每个仓库里保留一个 /lessons.md 文件。任何奇怪的代理行为、任何边界案例、任何凌晨 2 点发现的配置变更,都写下来。
你不会记住它们的。三周后你再回来,这个 lessons 文件是你唯一还能理解发生了什么的凭借。
锁住这 5 步,保留 lessons 文件,你的下一个代理系统只需要 2 天而不是 2 个月。
p.s. 网上半数关于“AI 代理”的内容来自那些从未在自己的循环上跑过 mitmproxy 的人。他们实际上不知道自己的代理在做什么。他们只是在放产品演示视频。别做那种人。
对我而言,这些是在我搭建任何系统、开始任何会话之前必须拥有的东西。
正确的环境设置 = 开发效率提升 10 倍。
相似文章
@sudoingX: 任何正在思考、学习或已经使用智能体系统的人都应该知道这一点。前几步的……
一条推文线程概述了构建智能体系统的五个基础工具:Tailscale用于网状网络,Termius用于SSH访问,tmux用于持久会话,私人git仓库作为记忆,以及从一开始就脚本化一切。帖子强调这些基础比任何特定模型或框架更重要。
@jamonholmgren: 我来把我的整个智能体开发环境设置全盘托出,因为我看到太多人错过了其中的重要部分,并且……
Jamon Holmgren 分享了他全面的智能体开发环境设置,包括工作流程文档、自愈文档、跨智能体审查、自动化测试和自治智能体循环。
@paulmillr: https://x.com/paulmillr/status/2075335421920239651
这篇推文描述了一种安全且可靠的代理AI开发环境设置,使用通过SSH访问的专用服务器,配合tmux实现会话持久化,带有原生tmux集成的终端模拟器,以及用于安全访问的VPN。作者主张采用这种方式而非本地代理执行,原因是安全和可靠性方面的考虑。
@Hevalon: 本周二,我将发布一份指南,介绍如何构建一个完整的Agentic系统,配备支持沙盒、并行子智能体、带控制策略的工具调用、推理路由以及防范注入和权限提升攻击的框架。
一份关于构建安全Agentic系统的指南,包含沙盒隔离、并行子智能体、带控制策略的工具调用、推理路由以及防范注入和权限提升攻击,由Evangelos Pappas发布。
@degenrsc: https://x.com/degenrsc/status/2064714047241736302
一份关于使用多 LLM 系统与持久内存构建研究代理框架的详细指南,通过基于文件的身份、项目文档和记忆索引,让研究人员无需在每次会话中重复解释上下文。