惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
W
WeLiveSecurity
O
OpenAI News
N
News and Events Feed by Topic
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Webroot Blog
Webroot Blog
Google Online Security Blog
Google Online Security Blog
云风的 BLOG
云风的 BLOG
N
News | PayPal Newsroom
H
Hacker News: Front Page
博客园_首页
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
The Last Watchdog
The Last Watchdog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
H
Heimdal Security Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
S
Schneier on Security
宝玉的分享
宝玉的分享
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Y
Y Combinator Blog
Cyberwarzone
Cyberwarzone
Microsoft Security Blog
Microsoft Security Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
GbyAI
GbyAI
Cloudbric
Cloudbric
TaoSecurity Blog
TaoSecurity Blog
人人都是产品经理
人人都是产品经理
P
Palo Alto Networks Blog
M
MIT News - Artificial intelligence
G
GRAHAM CLULEY
C
Check Point Blog
Apple Machine Learning Research
Apple Machine Learning Research
Last Week in AI
Last Week in AI
T
Troy Hunt's Blog
L
Lohrmann on Cybersecurity
www.infosecurity-magazine.com
www.infosecurity-magazine.com
P
Proofpoint News Feed
Blog — PlanetScale
Blog — PlanetScale
量子位
博客园 - 聂微东
S
Securelist
博客园 - 三生石上(FineUI控件)
F
Full Disclosure
G
Google Developers Blog
L
LINUX DO - 热门话题
P
Proofpoint News Feed
AI
AI
PCI Perspectives
PCI Perspectives

暗无天日

读:AI Agent 安全日志——从可见性与隐私的两难说起 - 暗无天日 AI写作的语言指纹——如何让文字不那么像机器 - 暗无天日 读:50 条 Claude Code 技巧——一个工程经理的六个月使用心得 读:AI 辅助开发为什么让 E2E 测试更有价值 - 暗无天日 读:在Emacs中使用Claude Code(Spacemacs适配版) - 暗无天日 Claude Code 背后的工程哲学——读 Agent Harness Engineering 读:Agent Harness Engineering——AI 智能体不只是模型,还有套件 - 暗无天日 browser-harness:让 AI 直接接管你的浏览器 - 暗无天日 读:Security-First CI/CD —— DevSecOps 自动化实践指南 TIL: 数字小键盘的小数点陷阱与行内算术求值 - 暗无天日 读:Immutability 不是万能药,它是一种权衡 - 暗无天日 Conducty:给 Claude Code 加上项目记忆和并行执行能力 - 暗无天日 读 — GitHub Trending 里的 Claude Code 技能包 读 — Prompt Caching 省钱指南 TIL: Emacs 中那些跟鼠标配合的冷门快捷键 - 暗无天日 读:Anvil——把 Emacs 变成 AI 的工具服务器 读:Emacs 代码折叠终极指南 - 暗无天日 读:Clojure 搭车客指南 - 暗无天日 git推送失败后恢复仓库损坏的完整记录 - 暗无天日 多智能体系统的两个有效模式——以及对 Claude Code 用户的启示 - 暗无天日 用 Org Babel 写 Literate 博文:扩展执行 + 定制导出 proced:Emacs 内置的进程查看器 - 暗无天日 从 proced 定制中学到的 Elisp 模式 读:让 Emacs proced 在 macOS 上显示 CPU 和内存 异步编程的函数着色税 - 暗无天日 链式调用的代价:JavaScript 和 Clojure 的共同教训 - 暗无天日 hyperfine:命令行基准测试工具 - 暗无天日 管道中的变量去哪了?——子 shell 作用域陷阱 - 暗无天日 开源包装器的信任陷阱:四个危险信号 - 暗无天日 程序员愿意为 AI 写文档,却不愿为同事写 - 暗无天日 mktemp: Shell 脚本中临时文件的安全陷阱与最佳实践 - 暗无天日 WSL9x —— 在 Windows 9x 里跑 Linux 内核 6.19 用 ox.el 做你想做的事 —— org-export 高级编程指南 读:Hot-wiring the Lisp Machine —— 用纯 Elisp 构建零依赖的 Org 静态站点生成器 Elisp 性能优化的六个实战教训 - 暗无天日 fcitx5 下 Emacs 无法切换输入法的排查 - 暗无天日 ERT 测试交互命令的三种方式 - 暗无天日 SEM Assistant: 当 Elisp 守护进程遇上 LLM 用 dmsg 给 Elisp 加上结构化调试日志 用 org-habit 追踪非每日习惯 - 暗无天日 Clojure X-Men:当编程语言特性变成超能力 - 暗无天日 TIL: 用 diff-hl 在 fringe 中显示 git 变更 读:llm-test —— 用 LLM agent 驱动 Emacs 测试 TIL: AI 时代的橡皮鸭调试 - 暗无天日 fcitx 启动后键盘输入卡顿的排查 - 暗无天日 TIL: 早期网页的图片热区导航 - 暗无天日 读 Seeing the Whole System 用 Emacs 自动生成每周链接推荐 - 暗无天日 读:ASCII control characters in my terminal 读 What to learn - 暗无天日 Lisp 的括号之痛——一个愚人节玩笑揭开的老伤疤 - 暗无天日 一本书该"线性读"还是"并行读" - 暗无天日 读 How to Monetize a Blog:一篇伪装成变现指南的讽刺文 Python Mock 第三方依赖的四种策略 - 暗无天日 Emacs Lisp 热重载实用指南 - 暗无天日 Prot 的 Emacs 配置哲学 - 暗无天日 TIL: 从直播对谈中学到的三个 Emacs 技巧 - 暗无天日 TIL: 自动使用项目虚拟环境的 Python - 暗无天日 TIL: 让 Help buffer 自动获得焦点 一条命令让本地开发用上 HTTPS —— slim 工具介绍 用 fsck 检查和修复 Linux 文件系统 排查Linux进程"卡死"实战:从strace到gdb全流程 - 暗无天日 PostgreSQL 索引:从基础到你可能不知道的高级用法 - 暗无天日 用 .pdbrc 自定义 Python 调试器 ANSI 转义码的标准化现状 - 暗无天日 终端程序的潜规则 - 暗无天日 PARA Org-mode 测试配置 - 暗无天日 AI越强越辣鸡?控制论说这是必然的 - 暗无天日 AI 越强越需要你盯着——反馈循环实操指南 - 暗无天日 你的AI代理正在偷你的密钥——四种你没想到的泄露通道 - 暗无天日 LLM 在 DevOps 中的三种角色 - 暗无天日 写作风格的反建议 - 暗无天日 反驳本质复杂性——Dan Luu 论为什么《没有银弹》错了 - 暗无天日 文件充满了危险——Dan Luu 谈文件系统的可靠性陷阱 - 暗无天日 AI 时代的 PARA 方法:用 Org-mode 和 AI 打造个人知识管理系统 Linux 数据去重学习笔记 - 暗无天日 创建跨平台 ZIP 文件的隐藏陷阱:Extra Field - 暗无天日 X11 Forwarding 排障指南 - 暗无天日 IP欺骗端口扫描:当别人冒充你去扫描别人 - 暗无天日 Linux 输入栈全景解析:从硬件按键到屏幕响应 - 暗无天日 Unix 系统中那些被埋没的配置开关——以 FontConfig 为例 - 暗无天日 在Linux上限制儿童使用电脑 - 暗无天日 GIF不仅仅是一种图片格式——用GIF流做些奇怪的事 - 暗无天日 Leiningen 学习笔记:Clojure 项目构建与管理从入门到实战配置 - 暗无天日 Google SRE Book 读书笔记 - 暗无天日 yes 管道 head 发生了什么 - 暗无天日 为什么 nohup 在 crontab 中不起作用 Bash中的Indirection与Nameref - 暗无天日 Linux PAM 简介 - 暗无天日 从Linux ISO文件启动计算机 - 暗无天日 用 Bash 打造一个Screen Locker 用GitHub Actions自动构建EGO博客 - 暗无天日 blocking I/O 的作用 - 暗无天日 mobileog 手机端同步提示Error:2 No such file 的解决方法 回收 WSL2 VHDX 文件占用空间 使用 org-mode columnview 生成任务列表 - 暗无天日 Emacs 作为 MPD 客户端 - 暗无天日 移动文件路径却不破坏org file link的方法 - 暗无天日 如何合理的导出help link 成HTML - 暗无天日 笑话理解之Biology - 暗无天日
读:AI Agent 生产化——一份从原型到上线的速查清单 - 暗无天日
2026-05-01 · via 暗无天日

引子:四个一上规模就坏的东西

在笔记本上写个 Agent 原型不难。调几个 API、试几个 prompt,一个周末就能搞定。但把这个原型交给真实用户、承受真实流量、处理真实数据,问题就一个个冒出来了。原文总结了四类最常见的断裂点,它们几乎总是结伴出现。

状态

原型可以把所有东西放内存。但生产环境有并行会话、重启、崩溃的情况。两个用户可能互相拿到对方的上下文,进程重启就把进行到一半的任务丢掉了。

密钥

API key 硬编码或放在 .env 文件里跟着代码库到处跑。一旦泄露或需要轮换,就有停服风险。

信任

Agent 可以不加校验地调用任何工具、传任何参数。恶意输入能骗它调用删除接口,参数类型不匹配会让工具作用于错误的资源。

可观测性

原型阶段可以靠 print 调试。上线后 Agent 开始给出略显古怪的答案,用户投诉了才会被发现。

三种架构模式

写第一行路由之前就要选好架构。后期切换意味着同时重构状态管理、测试和追踪。

ReAct(思考→行动→观察→重复) :适合步骤不固定、工具选项多的场景。容易陷入无限循环,需要设置步数预算,中间过程不好追踪。

Plan and Execute(先定计划再逐步执行) :适合步骤可预测的长周期任务。问题是一旦环境中途变化,计划就过时了。

Multi-Agent(专业 Agent 通过协调器互相交接) :适合需要清晰角色分离的复杂工作流。一旦多个 Agent 互相传递任务、失败重试、读写共享上下文,就需要编排层管理协调。否则状态不可追踪,失败几乎无法复现。

配置和治理

动手写 Agent 逻辑之前,先把配置管好。模型版本用什么、密钥放哪里、工具开关怎么控——这些基础设施不先搭好,Agent 逻辑写得再漂亮也用不起来。

模型版本放在配置里 。改模型就像改数据库连接字符串:更新配置、重启服务,不涉及修改代码 。这样才能在不触发发布流程的情况下回滚降级的模型、按合规要求切换供应商、在低环境跑更便宜的模型。

Feature Flag (功能开关)让你不改代码就能控制 Agent 行为,比如启用新工具或切换模型版本。新功能可以先对部分用户开放,出问题可以用 kill switch(紧急关闭开关)立即禁用某个工具。工具开关和模型开关要分开管理,因为它们的风险级别和审批要求不同。

环境晋升机制 :每个 Agent 在到达生产环境之前,应该先依次经过本地开发、staging(预发布)等环境,逐级验证通过后才能晋升到下一环。每个关卡都是发现问题的最佳时机,自动化检查会阻止未稳定的构建继续往上走。

状态、内存与安全

短期记忆 vs 长期记忆

Agent 系统中的"记忆"有两个不同含义。持久化太少 Agent 无法完成多轮任务,持久化太多带来合规风险和检索延迟。

原则:大部分任务用上下文窗口或带 TTL(Time To Live,自动过期时间)的缓存就够了。不要一开始就上长期记忆。当你确实需要时,要准备的不仅是一个数据库,还包括 schema、索引策略、检索机制、删除路径和经过法务审核的保留策略。

方面 短期记忆 长期记忆
范围 当前会话 跨会话持久化
适用场景 单轮和多步任务 用户偏好、历史决策、语义检索
何时清除 会话结束 显式删除或按策略
关键需求 TTL 或窗口管理 Schema、索引、保留策略、删除路径
示例工具 Redis with TTL、LangGraph checkpoints 向量数据库如 Chroma

Checkpoint 机制

一个 20 步的任务可能在 14 步失败。没有 checkpoint 就得全部重来。每完成一个关键步骤就把 Agent 状态写入持久化存储,带上步骤 ID 和时间戳。重启时从最新的 checkpoint 恢复继续执行。

六个 Agent 特有安全威胁

Agent 处理外部世界的内容并据此行动,这带来了常规安全检查表覆盖不到的六个威胁:

  1. Prompt 注入 :工具输出中的恶意内容改写 Agent 的指令。办法:所有外部内容都当作不可信,进入上下文之前先做无害化处理。
  2. 工具错误调用 :Agent 用错误参数调用工具,或远超预期地频繁调用。办法:对参数做严格的 schema 校验(规定参数的类型和取值范围),每次运行设置步骤数和调用次数上限。
  3. 数据泄露 :Agent 通过输出或外部 API 调用泄漏敏感数据。办法:对输出做过滤,给容器设置网络出口白名单。
  4. 权限提升 :Agent 访问超出自身角色的工具或资源。办法:运行时用白名单机制(不是黑名单)控制每个角色能调用的工具,每次调用记录审计日志。
  5. 失控执行 :Agent 陷入无限循环或调用数百次工具。办法:设置步骤数、tokens 数和挂钟时间(wall-clock time,实际经过的时间)三项硬限制。
  6. LLM 生成异常代码 :Agent 执行的代码可能访问意外的资源。办法:在沙箱中运行所有生成的代码,不给网络访问,文件系统设为只读。

Guardrails

安全护栏要加在平台层面,而不是靠 prompt 指令。平台层面的限制 Agent 绕不开——即使攻击者通过 prompt 注入骗过了 Agent,平台仍然能拦住越权操作。每个 Agent 角色需要一份声明式的、版本控制的 whitelist,指明它能调用哪些工具、读哪些数据、传哪些参数。校验在运行时由平台执行,Agent 逻辑无法绕过。

Human-in-the-Loop

删除记录、发送组织外消息、触发支付、做基础设施变更——这些都需要人工确认再执行。把审批门做成系统中命名的显式对象,容易添加、不会被意外绕过。每次触发、批准、拒绝和决策耗时都要记录。

测试和评估管道

没有评估直接上线,跟不做测试就部署一样不靠谱。Agent 的失败模式往往是隐形的:看起来合理的错误答案,或者本应成功却被拒绝的任务。

五级评估层级

评估类型 测什么 何时跑 是否阻断部署
Unit 单次 prompt 或工具调用返回预期输出 每次提交 硬失败时阻断
Integration 工具链和交接端到端正常 每次 PR 有回归就阻断
End to End 完整任务在类生产输入上完成 每次发布 低于阈值阻断
Regression 关键指标 vs 上次发布基线 每次发布 超定义差值阻断
Human Spot 人工抽检真实输出质量 每周 不阻断,但指导改进

使用 数据集 评估系统质量

评估系统的质量只取决于它的数据集。用简单规整的示例构建的数据集,在真正糟糕的构建上也会全绿通过。

数据集应来自三个真实来源:首次 staging 运行的输入、团队遇到的边界案例、Agent 应该拒绝而非尝试的场景。数据集和 Agent 代码一起做版本管理。每次生产事故后,在修代码之前先把出问题的 case 加入数据集。

CI/CD Eval Gates

评估连接到部署流程后,就从定期的质量检查变成了每次构建的自动发布标准。在非生产阶段就集成 eval gates,不要只在最终部署前才跑。

首次发布前设好阈值:任务成功率 80% 以上、安全拒绝率不超过可完成任务数的 3%、p95 延迟在 SLA 以内。上线后根据实际数据调整。

打包规范

Agent 和普通服务一样遵循容器规则,外加一项:模型版本放在配置里,这样无需改代码就能回滚。需要固定的内容:

  • 基础镜像:Dockerfile 中用精确 tag(如 python:3.11.9-slim
  • 运行时版本: .tool-versions 或 Dockerfile 中的 ARG
  • 依赖:带哈希值的 requirements.txtpackage-lock.json
  • 模型名称:配置文件或环境变量,绝不能出现在源码里
  • 系统 prompt:带版本管理变更历史的 prompt 注册表

超过一秒的 Agent 任务应该异步执行。API 接受请求后立即返回,任务队列持有作业直到工作进程取走,客户端通过轮询或 webhook 获取结果。

监控、成本和反馈闭环

上线不是终点。模型更新后 Agent 开始给错误答案,但它不会抛异常,标准基础设施监控抓不到它。

七个监控信号

  • Traces(追踪) :每个步骤、工具调用、模型调用和决策点的完整序列(工具示例:LangSmith、Arize Phoenix、Weave)
  • Token 用量 :每次运行、每个用户、每个模型版本的输入/输出 tokens(工具示例:Provider dashboards、custom span attributes)
  • 工具调用 :哪些工具被调用、传了什么参数、每次耗时(工具示例:Custom spans inside your task runner)
  • 延迟 :p50/p95/p99 的完整运行和单步延迟(工具示例:Prometheus、Datadog、Grafana)
  • 错误率 :工具失败、模型超时、审批门触发、解析错误(工具示例:Alerting platform + custom counters)
  • 输出质量 :通过定时任务对实时输出的随机样本跑评估(工具示例:DeepEval、Ragas、LangSmith eval runs)
  • 成本 :每次运行、每个用户、每种 Agent 类型、每个模型版本的费用消耗(工具示例:Provider billing API + custom resource tagging)

成本护栏

Token 成本不是线性的。检索步骤返回更长文档会让每次运行的输入 tokens 翻倍。推理循环多一步就会给所有用户的每次请求增加 token 消耗。按 Agent 类型和租户设置预算告警。突然的成本飙升几乎总指向一个具体、可修复的问题。

信号 通常意味着什么 先查哪里
单次成本翻倍 检索返回更长文档,或循环多了一步 按步骤看 token 用量分解
拒绝率高于基线 Prompt 变更、模型更新、输入分布偏移 对比 prompt 版本变化
p95 延迟升 50% 工具调用变慢,或供应商负载高 看工具耗时 span,再看供应商状态页
评估分数下降 5%+ 模型漂移、数据漂移、prompt 回归 跑完整 eval 套件对比上个基线

事件响应三问

Agent 事故需要不同的初始响应。模型输出的不确定性往往让你无法复现事件,事件波及范围也很难评估——因为你不知道 Agent 碰过哪些外部系统。

开始调查时先问三个问题:(1) 根据输入和它生成的计划,Agent 想做什么?(2) 根据追踪记录,它实际做了什么?(3) 根据审计日志,它改变了哪些外部状态?审计日志不是可选项。它让你能在出错的运行之后做撤销或补偿,也是回答第三个问题的唯一可靠手段。

反馈闭环

每次出了生产事故,修代码之前先把出问题的例子加入评估数据集。这样一来,以后再有类似的问题,回归测试那一关就会拦住它,不会悄无声息地又上线了。团队还应该按周检查评估分数的变化趋势、成本有没有异常、以及审批门触发了多少次。

收尾

生产就绪的 Agent,本质上是一个围绕"什么东西会坏"刻意构建的系统:能安全跨环境流动的配置、崩溃后还能恢复的状态、不会被滥用的工具、能在用户发现问题之前就拦住质量退步的自动化评估体系、以及每次运行后能告诉你发生了什么的可观测性。

原文的建议是从密钥管理和评估数据集开始,给你风险最高的工具加一个人工审批门,为第一次部署配上监控。每次发布之后就是下一轮评估周期的起点,构建周期结束了,评估周期才开始。