AI代理安全生产:ReAct循环漏洞与防御
Sriram Madapusi Vasudevan 在 InfoQ 演讲中探讨了生产环境下自主AI代理的安全保护模式。他重点剖析了 ReAct 循环在上下文、推理和工具执行三阶段隐藏的关键漏洞,如记忆中毒和恶意工具执行。
针对这些风险,他分享了深度防御、LLM-as-a-judge 评审机制以及 MAESTRO 威胁建模等缓解策略,帮助开发者在 AI 加速开发的同时守住安全底线。
#开发者 #工具 #AI代理 #安全 #ReAct #LLMasJudge #MAESTRO #威胁建模
@DevToolboxHub
Sriram Madapusi Vasudevan 在 InfoQ 演讲中探讨了生产环境下自主AI代理的安全保护模式。他重点剖析了 ReAct 循环在上下文、推理和工具执行三阶段隐藏的关键漏洞,如记忆中毒和恶意工具执行。
针对这些风险,他分享了深度防御、LLM-as-a-judge 评审机制以及 MAESTRO 威胁建模等缓解策略,帮助开发者在 AI 加速开发的同时守住安全底线。
#开发者 #工具 #AI代理 #安全 #ReAct #LLMasJudge #MAESTRO #威胁建模
@DevToolboxHub
Laravel 图片上传防 PHP 注入中间件
图片上传存在已知风险:一个有效 JPEG 文件可在 EXIF 注释中隐藏 PHP 代码,却仍能通过 MIME 检查、扩展名检查和 getimagesize()。一旦文件被写入可执行路径,就可能实现远程代码执行。
GitHub
#开发者 #工具 #Laravel #安全 #文件上传 #PHP #中间件
@DevToolboxHub
图片上传存在已知风险:一个有效 JPEG 文件可在 EXIF 注释中隐藏 PHP 代码,却仍能通过 MIME 检查、扩展名检查和 getimagesize()。一旦文件被写入可执行路径,就可能实现远程代码执行。
laravel-image-sanitize 是一个轻量中间件,在上传处理前扫描图片中的 payload 标记(<?php、phar),若有发现则通过 Intervention Image 从头解码并重新编码,仅保留像素数据,丢弃所有附加内容。使用时通过 Composer 安装,挂载到路由即可。
注意这不能替代 Laravel 自身的验证规则,两者应同时使用。默认支持 JPEG、PNG、GIF、BMP、WebP,不包含 SVG。质量默认 100(近无损),可调整。配置可发布并自定义允许类型、扫描模式、驱动等。
GitHub
#开发者 #工具 #Laravel #安全 #文件上传 #PHP #中间件
@DevToolboxHub
CtroEnv:测试与调试环境变量
传统测试环境变量往往需要修改 process.env 并祈祷清理干净。CtroEnv 提供 objectSource(),可将普通对象包装为环境源,无需全局操作。每个测试都能获得独立环境,告别 beforeEach/afterEach 清理。四种错误码精准定位问题,支持格式化输出。
GitHub · npm
#开发者 #工具 #CtroEnv #Nodejs #TypeScript #Testing #CICD #DevOps
@DevToolboxHub
传统测试环境变量往往需要修改 process.env 并祈祷清理干净。CtroEnv 提供 objectSource(),可将普通对象包装为环境源,无需全局操作。每个测试都能获得独立环境,告别 beforeEach/afterEach 清理。四种错误码精准定位问题,支持格式化输出。
测试时使用 defineEnv 和 objectSource 即可注入任意覆盖值,验证解析结果、缺失变量或类型错误。CtroEnvError 会一次性收集所有错误,避免逐一修复。秘密值可通过 secret() 标记并自动掩码,支持自定义掩码字符串。
调试方面有四个错误码:missing_required(变量缺失)、type_mismatch(类型不匹配)、invalid_value(校验失败,如无效URL)、validation_failed(自定义校验拒绝)。formatErrors 函数可将错误按类型分组并带颜色输出。
CI/CD 集成:CLI 直接解析配置文件,无需导入 schema。支持快速键对比(1秒内完成)、严格值校验、未知键警告(基于 Levenshtein 距离提示)、JSON 输出(可接入 Slack、监控面板)。提供 GitHub Actions 示例,构建阶段通过 Vite/Next.js 插件在失败时终止构建。
GitHub · npm
#开发者 #工具 #CtroEnv #Nodejs #TypeScript #Testing #CICD #DevOps
@DevToolboxHub
gstack:Garry Tan 开源了他的日常开发栈
Y Combinator 总裁 Garry Tan 将其每天使用的工具集 gstack 开源(MIT 许可)。它把 Claude Code 变成一个由 23 名专家组成的虚拟团队——包括 CEO、工程师、设计师、QA 和发布工程师——强制每次变更在发布前经过多视角审查。核心理念不是“写得更快”,而是“审查后再发布”。
对于产品构建者,可以从中借鉴三点:即使独自工作也要设置审查关卡;在完成成本低的今天,做完整的事情而非粗糙版本;当 AI 显得自信或两个模型一致时,更要保持最终决策权。
GitHub: github.com/garrytan/gstack
#开发者 #工具 #gstack #GarryTan #YC #ClaudeCode #AI编程 #代码审查 #MIT
@DevToolboxHub
Y Combinator 总裁 Garry Tan 将其每天使用的工具集 gstack 开源(MIT 许可)。它把 Claude Code 变成一个由 23 名专家组成的虚拟团队——包括 CEO、工程师、设计师、QA 和发布工程师——强制每次变更在发布前经过多视角审查。核心理念不是“写得更快”,而是“审查后再发布”。
gstack 的核心在于审查视角:CEO 视角审视这是否真的是 10 星产品,工程师视角检查架构能否扛住边界情况,设计师视角判断“好”的标准,开发者体验视角关心他人能否顺利接手。最后还包含测试、提交 PR 和部署后的监控步骤。
Garry 在 ETHOS 文件中写道:“工程之墙已倒下,剩下的只有品味、判断力和完成整件事的意愿。” 他声称今年自己写代码的速度比 13 年前快数百倍,但重点不在速度——当写代码成本几乎为零时,决定“构建什么”并拒绝输出垃圾,成了全部工作。他提出“煮海”原则:过去因为工程师时间昂贵,建议不要做完整的事;现在完整版本只要多花几分钟,就应该做完。
另一个关键原则是:“AI 模型推荐,用户决策。”、“两个 AI 模型对同一变更达成一致是强信号,但不是命令。” 每个审查视角的作用都是挑战工作,而不是例行盖章,最终由人决定采纳哪条反馈。
对于产品构建者,可以从中借鉴三点:即使独自工作也要设置审查关卡;在完成成本低的今天,做完整的事情而非粗糙版本;当 AI 显得自信或两个模型一致时,更要保持最终决策权。
GitHub: github.com/garrytan/gstack
#开发者 #工具 #gstack #GarryTan #YC #ClaudeCode #AI编程 #代码审查 #MIT
@DevToolboxHub
Paper 命令注册:用 Brigadier 替代 CommandExecutor
传统 Paper 插件通过
Paper 内置了 Mojang 的 Brigadier 框架,通过
迁移到 Brigadier 可大幅简化 Paper 插件命令开发,消除重复劳动和潜在 bug。虽然旧命令映射仍能工作,但 Brigadier 已成为推荐的首选方案。
#开发者 #工具 #Paper #Brigadier #Minecraft #Command
@DevToolboxHub
传统 Paper 插件通过
plugin.yml + CommandExecutor 注册命令,存在多个痛点:args[0] 需手动解析、不支持选择器(@a、@p)、Tab 补全须单独维护 TabCompleter 且容易不同步,命令树静态固定,无法根据配置动态改变参数结构。Paper 内置了 Mojang 的 Brigadier 框架,通过
LifecycleEvents.COMMANDS 生命周期钩子注册命令树,无需 commands 块。权限检查挂在树节点上,Brigadier 在构建 Tab 补全时自动过滤无权限的命令,例如 requires() 确保只有拥有对应权限的玩家才能看到 /punish。命令树可根据配置条件化注册——例如 /report 只在启用 severity 时增加 severity 参数,否则注册简化版,Tab 补全和错误提示始终准确。ArgumentTypes.player() 返回的不是 Player 对象,而是一个解析器,支持 Steve、@a、@p 等选择器,无需手动实现。解析后通过 resolvePlayer 转换为玩家,同时处理空选择器的情况。整体注册流程比传统方式更清晰、类型安全,且 Tab 补全自动同步。传统方式的问题:Bukkit.getPlayer(args[0])只能精确匹配当前在线玩家,不支持选择器和模糊匹配;Tab补全必须手动同步,易出错;命令树固定,无法动态调整。
Brigadier 方式示例:在LifecycleEvents.COMMANDS内注册/punish字面量,requires检查权限,then追加target参数并绑定执行方法。对于/report,先读取配置,若启用 severity 则注册含 severity 分支,否则注册简单分支。ArgumentTypes.player()的使用:在命令上下文中获取PlayerSelectorArgumentResolver,调用resolve(ctx.getSource())获得玩家列表,取第一个或处理空情况。这样命令处理器就能直接使用解析到的玩家。
迁移到 Brigadier 可大幅简化 Paper 插件命令开发,消除重复劳动和潜在 bug。虽然旧命令映射仍能工作,但 Brigadier 已成为推荐的首选方案。
#开发者 #工具 #Paper #Brigadier #Minecraft #Command
@DevToolboxHub
Symfony Scheduler:将定时任务纳入代码版本
SSH 进服务器看 crontab 时,发现一堆被注释掉的行、指向已删除命令的入口、无人知晓的 3am 任务——这些都在单台机器上,不在 Git,不在部署流程,随自动伸缩消失。Symfony Scheduler 组件让定时任务变为版本化的 PHP 代码,随应用发布、接受代码审查、可单元测试。自 Symfony 6.4 稳定以来持续演进。
#开发者 #工具 #Symfony #PHP #Cron #Messenger #Scheduler #单元测试
@DevToolboxHub
SSH 进服务器看 crontab 时,发现一堆被注释掉的行、指向已删除命令的入口、无人知晓的 3am 任务——这些都在单台机器上,不在 Git,不在部署流程,随自动伸缩消失。Symfony Scheduler 组件让定时任务变为版本化的 PHP 代码,随应用发布、接受代码审查、可单元测试。自 Symfony 6.4 稳定以来持续演进。
核心是一个实现ScheduleProviderInterface的类,用#[AsSchedule]标记。every()接受人类可读间隔(如'1 hour'),cron()使用标准 cron 表达式。消息是普通 DTO,无基类无接口。调度本身是 Messenger 传输层——到期的消息经同一总线、中间件、重试策略和失败传输处理。运行命令为php bin/console messenger:consume scheduler_main,生产环境用 Supervisor 或 systemd 管理,无需任何 crontab 行。
注意单进程锁陷阱:如果运行多个消费者,每个都会独立触发调度。安装symfony/lock组件并用共享存储(Redis、数据库)加锁,只有锁持有者生成消息。可选->stateful()配合缓存池记录上次运行,让恢复的 worker 能补发错过的触发。
可单元测试调度逻辑:通过getSchedule()->getRecurringMessages()获取消息,对getTrigger()->getNextRunDate()断言,在 CI 中捕获 cron 变更,而非在工单中调查。调度随部署和回滚同步,锁和状态保持在框架边缘,业务逻辑只关心消息 DTO。
#开发者 #工具 #Symfony #PHP #Cron #Messenger #Scheduler #单元测试
@DevToolboxHub
OpenNG Foundation 与 spartan/ui 1.0
本周 Angular 生态迎来多项更新:OpenNG Foundation 成为 Spectator、Elf 等知名库的新家,spartan/ui 发布 1.0 稳定版。此外还有 Storybook 通过 AnalogJS 实现 Angular 现代化、ng-conf 落幕及新会议 AI Dev Craft 等消息。
OpenNG Foundation 旨在为开源库提供持续维护支持,已托管 Spectator、Elf 等项目。由 Gerome Grignon 宣布,团队成员包括 Dominic Bachmann 等。目前 GitHub 上已有 8 个仓库。
spartan/ui 1.0 正式发布,提供超 55 个组件,基于 Signals、Standalone、zoneless 变更检测和 SSR 构建,可完全自定义样式。被视为 Angular 版的 shadcn/ui,由 Robin Götz 发起并持续活跃维护。
Storybook 的 Angular 集成通过 AnalogJS 实现现代化。AnalogJS 将 Angular 从 CLI 构建管线中解耦,暴露为标准 Vite 插件,使 Storybook、Vitest 等工具无需额外配置即可编译 Angular 组件。
ng-conf(始于 2014 年的首届 Angular 会议)宣告结束,其替代会议 AI Dev Craft 将于今年 10 月在拉斯维加斯举行,演讲者征集已开放。
#开发者 #工具 #OpenNG #SpartanUI #Angular #Spectator #Elf #Storybook #AnalogJS #ngconf #AIDevCraft
@DevToolboxHub
本周 Angular 生态迎来多项更新:OpenNG Foundation 成为 Spectator、Elf 等知名库的新家,spartan/ui 发布 1.0 稳定版。此外还有 Storybook 通过 AnalogJS 实现 Angular 现代化、ng-conf 落幕及新会议 AI Dev Craft 等消息。
OpenNG Foundation 旨在为开源库提供持续维护支持,已托管 Spectator、Elf 等项目。由 Gerome Grignon 宣布,团队成员包括 Dominic Bachmann 等。目前 GitHub 上已有 8 个仓库。
spartan/ui 1.0 正式发布,提供超 55 个组件,基于 Signals、Standalone、zoneless 变更检测和 SSR 构建,可完全自定义样式。被视为 Angular 版的 shadcn/ui,由 Robin Götz 发起并持续活跃维护。
Storybook 的 Angular 集成通过 AnalogJS 实现现代化。AnalogJS 将 Angular 从 CLI 构建管线中解耦,暴露为标准 Vite 插件,使 Storybook、Vitest 等工具无需额外配置即可编译 Angular 组件。
ng-conf(始于 2014 年的首届 Angular 会议)宣告结束,其替代会议 AI Dev Craft 将于今年 10 月在拉斯维加斯举行,演讲者征集已开放。
#开发者 #工具 #OpenNG #SpartanUI #Angular #Spectator #Elf #Storybook #AnalogJS #ngconf #AIDevCraft
@DevToolboxHub
Dory 现已支持 Snowflake
Dory 将 Snowflake 作为一等数据源集成,用户可在 AI 原生 SQL 工作区中查询、探索和协作 Snowflake 数据。本次发布支持创建和测试连接、在控制台中运行 SQL、浏览数据库、模式、表和视图、预览表数据,并利用 Dory 的工作区模型将查询、结果集和上下文组织在同一位置。
本次发布聚焦基础功能,后续可扩展治理元数据、高级认证和更多 Snowflake 专属工作流改进。
#开发者 #工具 #Snowflake #Dory #SQL #AI #数据库 #云数据
@DevToolboxHub
Dory 将 Snowflake 作为一等数据源集成,用户可在 AI 原生 SQL 工作区中查询、探索和协作 Snowflake 数据。本次发布支持创建和测试连接、在控制台中运行 SQL、浏览数据库、模式、表和视图、预览表数据,并利用 Dory 的工作区模型将查询、结果集和上下文组织在同一位置。
支持的核心数据库工作流:
• 创建并测试 Snowflake 连接
• 在 Dory SQL 控制台中运行 SQL
• 浏览数据库、模式、表和视图
• 检查表列并预览表数据
• 使用默认仓库、数据库、模式、角色和会话选项
• 通过密码或密钥对认证
认证方式:
密码认证:提供账户标识符、仓库、默认数据库、模式、用户名、可选默认角色和密码即可快速验证。
密钥对认证:粘贴 PEM 私钥,避免存储普通密码,适用于生产环境。
在工作区中的使用:
连接保存后即可在 SQL 控制台中运行标准 SQL,在资源管理器中浏览对象层次。表预览使用 Snowflake 感知的标识符引用和分页,无需手动编写预览查询。
人机协同工作流:
Dory 不仅是 SQL 编辑器,更是 AI 原生数据工作区。用户可手动探索,也可让 AI 辅助编写或优化 SQL,审核、重跑、调整并继续分析。
本次发布聚焦基础功能,后续可扩展治理元数据、高级认证和更多 Snowflake 专属工作流改进。
#开发者 #工具 #Snowflake #Dory #SQL #AI #数据库 #云数据
@DevToolboxHub
Google 发布 A2UI v0.9:跨平台生成式 UI 标准
Google 正式推出 A2UI v0.9,这是一个框架无关的标准,允许 AI 代理声明用户界面意图,并在 Web、移动端和桌面端原生渲染,无需引入随机代码。该版本着重强调与现有设计系统的对齐。
更新内容包括全新的 Python SDK、改进的错误处理机制,以及多种传输方法。同时提供了迁移指南和演进规范,帮助开发者平滑过渡。
#开发者 #工具 #Google #A2UI #生成式UI #跨平台 #PythonSDK
@DevToolboxHub
Google 正式推出 A2UI v0.9,这是一个框架无关的标准,允许 AI 代理声明用户界面意图,并在 Web、移动端和桌面端原生渲染,无需引入随机代码。该版本着重强调与现有设计系统的对齐。
更新内容包括全新的 Python SDK、改进的错误处理机制,以及多种传输方法。同时提供了迁移指南和演进规范,帮助开发者平滑过渡。
#开发者 #工具 #Google #A2UI #生成式UI #跨平台 #PythonSDK
@DevToolboxHub
InfoQ 发布《Agentic AI Architecture》电子杂志
InfoQ 推出 Mini book《Agentic AI Architecture》,由行业专家撰稿,全面覆盖智能体 AI 架构的要素与趋势。该电子杂志试图将智能体 AI 架构确立为一种新型软件架构,认为它很可能在未来数年主导行业发展。
#开发者 #工具 #AgenticAI #AgenticAIArchitecture #InfoQ #软件架构
@DevToolboxHub
InfoQ 推出 Mini book《Agentic AI Architecture》,由行业专家撰稿,全面覆盖智能体 AI 架构的要素与趋势。该电子杂志试图将智能体 AI 架构确立为一种新型软件架构,认为它很可能在未来数年主导行业发展。
#开发者 #工具 #AgenticAI #AgenticAIArchitecture #InfoQ #软件架构
@DevToolboxHub
生成式AI学习路线图:从入门到开发者
一份面向开发者的生成式AI系统学习路线已发布,从零基础到生产级部署,共分八个阶段,强调实践项目构建与真实应用能力。
路线面向学生、软件开发者、创业者等零基础学习者,每阶段均附带实践示例,后续文章将从“什么是生成式AI”开始循序讲解。
#开发者 #工具 #生成式AI #学习路线 #PromptEngineering #RAG #AIAgents #LLM #DeepSeek #Mistral
@DevToolboxHub
一份面向开发者的生成式AI系统学习路线已发布,从零基础到生产级部署,共分八个阶段,强调实践项目构建与真实应用能力。
第一阶段:AI基础(生成式AI概念、Token、嵌入、幻觉、上下文窗口、训练 vs 微调)
第二阶段:提示工程(零样本、少样本、思维链、角色提示、优化技巧)
第三阶段:主流模型对比(GPT、Claude、Gemini、Llama、DeepSeek、Mistral、Qwen)
第四阶段:AI开发(Python、API、SDK、流式响应、函数调用、结构化输出)
第五阶段:RAG(嵌入、向量数据库、文档分块、语义搜索、生产级RAG系统)
第六阶段:AI代理(多代理、规划、记忆、工具调用、MCP协议)
第七阶段:实际项目(AI聊天机器人、简历分析、网站构建、客服、PDF聊天、代码助手等)
第八阶段:部署与生产(安全、鉴权、限流、监控、日志、性能优化、成本控制、扩缩容)
路线面向学生、软件开发者、创业者等零基础学习者,每阶段均附带实践示例,后续文章将从“什么是生成式AI”开始循序讲解。
#开发者 #工具 #生成式AI #学习路线 #PromptEngineering #RAG #AIAgents #LLM #DeepSeek #Mistral
@DevToolboxHub
Cloudflare 内部统一数据平台 Town Lake 详解
Cloudflare 详细介绍了其内部统一数据平台 Town Lake 和 AI 分析代理 Skipper。该平台处理了约 9.1 万次计费查询,其中计费工作负载占全部平台查询的 53%,形成主要使用量。
Town Lake 采用基于 Trino、Iceberg、R2 和 DataHub 的湖仓一体架构,旨在统一访问运营、计费、安全和业务数据,支持治理的跨系统分析和自然语言访问。Skipper 作为 AI 分析代理,进一步简化了数据获取流程。
#开发者 #工具 #Cloudflare #TownLake #Skipper #Trino #Iceberg #R2 #DataHub #数据平台
@DevToolboxHub
Cloudflare 详细介绍了其内部统一数据平台 Town Lake 和 AI 分析代理 Skipper。该平台处理了约 9.1 万次计费查询,其中计费工作负载占全部平台查询的 53%,形成主要使用量。
Town Lake 采用基于 Trino、Iceberg、R2 和 DataHub 的湖仓一体架构,旨在统一访问运营、计费、安全和业务数据,支持治理的跨系统分析和自然语言访问。Skipper 作为 AI 分析代理,进一步简化了数据获取流程。
#开发者 #工具 #Cloudflare #TownLake #Skipper #Trino #Iceberg #R2 #DataHub #数据平台
@DevToolboxHub
用 Conversation ID 追踪 AI Agent 实际工作链
Agent 可观测性常犯一个错:精确记录模型调用、提示词和 token,却在 Agent 真正开始操作软件时失去追踪。这种痕迹看起来很干净,事故却无法定位。Honeycomb 的 Agent Timeline 仪表指南指出,GenAI span 应涵盖 Agent 引发的所有工作:模型调用、工具调用、任务移交、下游服务、数据库查询和后台任务。Conversation ID 是跨 trace、服务、多轮交互的用户级工作单元,它决定了团队拿到的是完整的 trace 还是一堆无法关联的 span。
先从产品会话边界注入真实 conversation ID,贯穿 Agent 运行时、LLM 调用、工具执行、队列和数据库,然后在测试环境主动制造故障来验证链路完整性。Agent 可观测性遵循的是 Agent 引发的实际工作,Conversation ID 是贯穿这根链条的线索。
#开发者 #工具 #AIAgent #ConversationID #OpenTelemetry #Honeycomb #LangSmith #AgentObservability #可观测性
@DevToolboxHub
Agent 可观测性常犯一个错:精确记录模型调用、提示词和 token,却在 Agent 真正开始操作软件时失去追踪。这种痕迹看起来很干净,事故却无法定位。Honeycomb 的 Agent Timeline 仪表指南指出,GenAI span 应涵盖 Agent 引发的所有工作:模型调用、工具调用、任务移交、下游服务、数据库查询和后台任务。Conversation ID 是跨 trace、服务、多轮交互的用户级工作单元,它决定了团队拿到的是完整的 trace 还是一堆无法关联的 span。
OpenTelemetry GenAI agent-span 规范要求gen_ai.conversation.id仅在真实标识存在时填充,不得回退到 UUID、trace ID 或内容哈希。每个 agent 还需分配唯一的gen_ai.agent.name,子 agent 不能继承父名称。同时在 collector 层对 prompt 等敏感内容做脱敏,避免数据蔓延。Trace 不应止于遥测收集,而应成为评估、回归检测和发布门禁的控制面。Candidly 的案例显示,trace 特征预测客户对话是否解决的 AUC 达到 0.90。
先从产品会话边界注入真实 conversation ID,贯穿 Agent 运行时、LLM 调用、工具执行、队列和数据库,然后在测试环境主动制造故障来验证链路完整性。Agent 可观测性遵循的是 Agent 引发的实际工作,Conversation ID 是贯穿这根链条的线索。
#开发者 #工具 #AIAgent #ConversationID #OpenTelemetry #Honeycomb #LangSmith #AgentObservability #可观测性
@DevToolboxHub