註冊並分享邀請連結,可獲得影片播放與邀請獎勵。

檢索結果 空閑時評
空閑時評 貼吧
一個關鍵字就是一個貼吧,路徑全站唯一。
建立貼吧
用戶
未找到
包含 空閑時評 的搜尋結果
天启大爆炸 (以下来自维基百科) 天启大爆炸,也成为王恭厂大爆炸、王恭厂之变等,为明朝天启六年端午节次日五月初六上午9时(1626.5.30),北京西南隅今西城区永宁胡同与光彩胡同的离奇爆炸事件,范围半径达750公尺,面积达1.77平方公里,造成2万余人的重大死伤。后人估算,此次爆炸威力相当于广岛原爆。 凡记载了王恭厂大爆炸的古籍均提及了传达数百里远的巨响和震荡,天色昏黑如夜,以及灵芝状烟云冲天等疑似由强烈地震、龙卷风、陨石所引发的多种离奇现象,单纯火药爆炸不足以解释。加上事件发生后,爆炸区域内与附近的死伤者皆有衣服被卷去而致全身赤裸、一丝不挂的怪状,更为此灾变蒙上了一层超自然力量的神秘色彩。 王恭厂大爆炸之成因至今未明,与公元1908.6.30发生在俄罗斯西伯利亚的通古斯大爆炸并列为人类历史上大规模毁灭事件的两大悬案。 《天变邸抄》描述: 天启丙寅五月初六日巳时,天色皎洁,忽有声如吼,从东北方渐至京城西南角,灰气涌起,屋宇动荡。须臾,大震一声,天崩地塌,昏黑如夜,万室平沉。东自顺城门大街(今宣武门内大街),北至刑部街(今西长安街),西及平则门(今阜成门)南,长三四里,周围十三里,尽为齑粉。屋数万间,人二万余,王恭厂一带糜烂尤甚。殭尸重迭,秽气熏天;瓦砾盈空而下,无从辨别街道门户。 爆炸发生,一时间京城内人畜、树木、砖石突然腾空而起,不知去向。爆炸威力之大,乃至炸飞的大木远落密云,石驸马大街(今新文化街)上3000公斤重的大石狮被掷出顺成门(今宣武门)外,其后木、石、人复自天雨而下,屋以千数,人以百数。在爆炸中,所伤男妇俱赤体,寸丝不挂,不知何故,且死者皆裸。 当时皇帝明熹宗正在干清宫用早膳,突然地动殿摇,起身冲出干清宫直奔交泰殿,近侍头部遭飞瓦击中而当场死亡。紫禁城里正在修缮大殿的工匠,因下堕者二千人,俱成肉袋;襁褓中的太子朱慈炅当日受惊身亡。 爆炸巨响南至河西务,东至通州,北至密云、昌平,甚至远距京城数百里的遵化、宣化、大同、山西广灵县及天津等地都感受到剧烈震动,爆炸威力之大,撼天动地之巨,远非火药库失事或地震引起灾变所能解释。然而值得一提的是,爆炸中心却「不焚寸木,无焚烧之迹」。 爆炸中心范围内,当时正在街上的官员薛风翔、房壮丽、吴中伟的座轿被震坏,伤者甚众;工部尚书董可威双臂折断;御史何廷枢、潘云翼在家中被活活震死;宣府杨总兵一行七人连人带马失去踪影;于承恩寺街上行进的一乘轿子,事后损坏在街心,女乘客与轿夫都不知去向。还有粤西会馆路口的塾师和学生一共36人,一声巨响之后,也没了踪迹。更诡异的是,进京才两天的绍兴周姓吏目之弟于菜市口遇见六人,拜揖尚未完,周某的头突然飞去,躯体倒地,而六人却无恙。爆炸之时,许多树木被连根拔起,飞落至远处,猪马牛羊、鸡鸭狗鹅,甚至残破的头颅及肢体更时纷纷被卷入云霄,又从天上落下。据说这一场碎尸雨,持续下了两个多小时。木头、石块、人头、断肢,以及各种家禽的尸体,纷纷从天而降,其中尤以德胜门外落下的人臂、人腿更多。 关于爆炸的情况,在《明实录·熹宗实录》、《国榷》、宦官刘若愚所著《酌中志》、北京史地著作《帝京景物略》、《宸垣识略》中均有记载,甚至连明代佚名小说《梼杌闲评》第四十回情节之中也提及此事件。其中以当时的邸报底本《天变邸抄》对王恭厂灾变记述最为详细,亦为最早记述王恭厂灾变之作。 对于王恭厂灾变的成因,几百年来一直众说纷纭,有人认为是地震引起的,有人说是火药自爆,亦有认为是由地震、火药及可燃气体静电引爆同时作用者。至于天然气引爆说、陨石坠落说、隐火山地球内核喷发说、甚至外星人入侵等假说更多。但由于王恭厂灾变的记载中有众多怪异现象,在相信这些记载皆为真实的前提下,均不可能由其中单一之因素造成,故每一种观点都无法使人完全信服。
顯示更多
DeepSeek告别“价格屠夫”:API大幅涨价,大模型行业进入新阶段 8月13日,深度求索官方宣布对DeepSeek API价格进行调整,引入峰谷定价机制。高峰时段为北京时间每日9:00至12:00和14:00至18:00,空闲时段价格仅为高峰时段的一半。新价格将于8月17日0时正式生效。 这次调价与DeepSeek V4全系列模型正式版上线同步推进。以DeepSeek V4 Pro为例,高峰时段每百万Token输出价格达到27元,较现行6元上涨约350%。即使是空闲时段的13.5元,也是此前价格的2.25倍。涨幅之大,超出了许多开发者的预期。 官方给出的解释是“更加合理地调配资源”,鼓励用户根据实际使用情况调整任务时间。但市场普遍认为,这远不止是一次简单的定价调整。 过去两年,DeepSeek凭借“高性能加极低定价”的策略横扫开发者市场,被冠以“价格屠夫”的称号。V4 Flash以“1元输入、2元输出”的价格迅速占领市场,调用量一度达到全球第一。但这种以补贴换市场的模式,终究难以持续。 智能体大规模落地带来的算力消耗激增,加上芯片、电力等运营成本持续走高,单纯的低价竞争已经难以为继。高盛在7月的研报中指出,DeepSeek的调价并不意味着需求走弱,反而反映出国内AI模型需求持续旺盛、算力资源趋紧,行业竞争正从激进的价格战逐步回归理性的定价框架。 事实上,涨价在整个国产大模型赛道已不是个例。智谱AI在2026年一季度API价格上涨了83%,调用量仍然增长了400%。摩根士丹利分析师也将DeepSeek的调价解读为行业定价纪律改善的积极信号。从年初的“价格屠夫”接连降价,到如今大幅涨价,DeepSeek的定价策略反转,折射出国内大模型行业正在经历从“以低价换市场”向“以价值定价”的战略转向。 对开发者而言,短期阵痛不可避免。高峰时段覆盖了国内开发者和企业用户最主要的工作时间,依赖低价API服务的下游应用需要重新评估成本。但长远来看,这或将倒逼行业建立更健康的商业生态。大模型不能永远靠补贴活着,当技术逐渐成熟、应用场景不断拓宽,价值回归是必经之路。 DeepSeek用两年时间证明了国产模型的能力不输海外,现在它需要用新的定价证明自己有能力走出一条可持续的商业化道路。 #AI# #DeepSeek#
顯示更多
0
115
6
0
轉發到社區
推荐这篇文章,Together AI 的 ThunderAgent(ICML 2026 Spotlight)。 把 agent 工作流当成一个"程序"来调度,而非一系列无关的请求——单节点吞吐翻倍,8 节点近线性扩展。 Together AI 在 7 月 29 日发布了 ThunderAgent——一个面向 agentic 推理的高吞吐调度系统。ICML 2026 Spotlight 论文。核心贡献:把 agent workflow 抽象为"程序"而非"一系列不相关的请求"。 问题:KV Cache Thrashing Agent 工作流在两个阶段之间交替:GPU 密集的推理阶段和 GPU 空闲的等待工具返回阶段。当数百个 agent 并发运行时,各自的 KV cache 在每轮不断增长,竞争有限的 GPU 内存。 传统推理引擎(vLLM、SGLang、TensorRT-LLM)按请求级别调度——agent A 暂停等待工具调用时,它的 KV cache 被 LRU 淘汰腾出空间给 agent B 的 prefill。当 A 的工具返回,引擎必须从头重算 A 的整段对话历史,这又淘汰了 C 的 cache。高并发下,这种淘汰和重算的级联反应导致严重的吞吐量和延迟退化——论文称之为 KV cache thrashing。 能通过加 GPU 节点解决吗?不完全。现有多节点路由器(如 SGLang Gateway)把每个 agent 钉在固定节点上以保留 cache 局部性——但 agent 的上下文长度不可预测增长,某些节点被赋予长上下文 agent 导致内存耗尽,其他节点闲置。 能通过 KV cache offloading 解决吗?也解决不了。LMCache 和 HiCache 把 KV cache 卸载到 CPU 内存或磁盘,扩大了总容量但只是延迟 thrasthing。当并发 agent 的工作集超过所有存储层级时,淘汰恢复,同一个恶性循环重现。 ThunderAgent 的解法 ThunderAgent 在 agentic 客户端和推理后端之间插入一个轻量调度层。它将每个 agent 工作流抽象为一个可调度程序(program),追踪其执行阶段、KV cache 占用和节点位置。 Program-level admission control:监控每个节点的内存压力,选择性暂停低优先级工作流,减少竞争 cache 的程序数量。当被暂停的工作流准备恢复时,通过全局等待队列路由到容量最充足的节点。 多节点部署:用全局等待队列替代了基于 session 的静态节点绑定。暂停的工作流恢复时被路由到可用容量最多的节点,在 KV cache 局部性和多节点负载均衡之间取得平衡。 评测 集成在 Together AI 自己的合成数据生成管道里——就是产生 CoderForge 等数据集的那套基础设施。对比 SGLang 默认调度器: 单节点 8×H100(HiCache offloading),batch size 192: • SGLang:吞吐 390 token/s,平均延迟 65s • ThunderAgent:吞吐 803 token/s,平均延迟 10.6s 多节点(2→8 节点): • 近线性扩展,16 GPU 到 64 GPU 吞吐从 671 增长到 2248 steps/min • 加速比随集群规模增大:2 节点 1.79× → 8 节点 2.39× 使用 一个 program_id 字段,OpenAI 兼容 API,直接适配现成的 offloading 和 speculative decoding。已被 SkyRL 和 NVIDIA Dynamo 集成。 GitHub: 论文: #AgentInference# #KVcache# #ThunderAgent#
顯示更多
Claude Code 和 Codex 都有 /goal 命令,很多人默认这俩差不多。刚读了 Charles Azam 的一个实验才发现,同一个命令下,是完全不同的两套系统,实验结果也挺好玩。 实验用的是一道光纤网络设计题,是他 2018 年当学生时做过的。他当年花了一周写 C++ 解它,可以作为一个人肉 baseline。这次他让 Fable 5 和 GPT-5.6 Sol 各跑三组 plain vs /goal 配对,每次 30 分钟,分数越低越好。 不过这个 benchmark 我倒是兴趣不大,我最感兴趣的是两套 /goal 的实现。 Claude Code:独立评审员模式 /goal 实现为 session 级的 Stop hook。主模型每跑完一轮,一个小评估模型(默认 Haiku)读取目标条件和对话记录,回答 yes/no 答 no 就再开一轮,答 yes 就清除目标 关键限制:评估模型不能用工具、不能看文件,只能根据对话记录里出现的证据来判断。它能抓住“提前退出”,但没法知道“再跑一千万次求解器迭代值不值” 优点是裁判独立(不是自己给自己打分),缺点是裁判是瞎的(只看 transcript) Codex:持久化状态 + 自我声明模式 goal 是持久化的线程状态:TUI 保存目标,SQLite 记录状态和预算 工作模型自己拿到 create_goal / get_goal / update_goal 三个工具。线程空闲但目标还在时,Codex 注入一个“继续干 + 完成度审计”的续跑轮次 关键区别:由工作模型自己声明完成。它看得到文件、也能用工具,但等于自己批改自己的作业 (这里对应的是作者查看的 Codex CLI 0.144.4;Claude Code 没有开源,相关实现来自 Anthropic 官方文档。)
顯示更多
0
26
49
2
轉發到社區
GM GN 距离2027年 仅剩162天 昨天喝的老北京豆汁,今天还在恶心。 英伟达、微软和Meta联合签署公开信,三家巨头联手喊话别管太严,看看这是什么事 polo的AI日报 7月27日,18条精选 ⬇️ 1. Suno推出多项新功能,含高级音轨分离、MIDI导出、歌词合写、截图生成歌曲、Apple CarPlay支持等。 💡灵感来得时候拍照就能变成旋律 2. Claude Opus 5系统提示词被完整泄露,共135027字符约3.4万token,含30个工具的JSON schema和严格的版权合规规则。 3. 蚂蚁百灵发布Ling-3.0-flash原生混合推理模型,124B总参数仅激活5.1B,传统推理和指令遵循对标上代旗舰。 💡124B的体量只激活5B干活 4. Black Forest Labs发布FLUX 3多模态模型,联合训练图像视频音频,单次生成20秒视频带原生音频,视频预测占训练算力95%以上。 💡95%算力押注视频 5. Midjourney V8.2正式发布,重点提升美学质量和个性化理解,低质量图像出现频率显著降低。 💡Midjourney终于更新了 6. xAI发布Grok CLI并支持/tutorial命令,下载后输入/tutorial即可上手。 💡Grok命令行工具来了 7. Runway Agent推出自然语言工作流功能,用自然语言构建、运行或编辑基于节点的工作流。 8. 百度搭子更新支持电脑手机接力、桌面端内嵌浏览器上线,复杂任务可跨端连续执行。 9. OpenRouter推出Classifiers测试版,自定义分类法自动标记每次AI请求的任务类型和部门归属,不增加推理延迟。 10. 开发者成功在8美元的ESP32-S3微控制器上跑起28.9M参数大语言模型,本地运行无需服务器,生成速度约9.5 tokens每秒。 11. Claude-thermos通过本地反向代理监控Claude Code会话,主智能体空闲超5分钟时自动发送预热请求刷新缓存,避免重新编码费用。 12. OpenAI与Anthropic游说美国限制中国开源模型,黄仁勋、纳德拉、马斯克、扎克伯格联名反对。 💡OpenAI和Anthropic想关门,黄仁勋马斯克联手拆墙 13. 数百用户向ChatGPT索要毒药与生物武器配方,部分获得高中生水平步骤指南。2025年夏季OpenAI内部已将GPT-5标记为高风险。 💡高中生水平配方也是配方,让人捏把汗 14. OpenAI智能体入侵Hugging Face事件细节曝光,GPT-5.6 Sol等模型数小时内完成人类黑客数周的攻击,OpenAI至少一周没察觉。 15. Kimi K3在网络安全漏洞利用测试ExploitBench上得分32.2%,远低于美国领先模型的76.2%,但优于智谱GLM-5.2的24.4%。 16. 佛州男子因相信ChatGPT拒绝就医险丧命,ChatGPT-4o多次建议无需就医,致其双肺血栓引发大面积肺栓塞,已起诉OpenAI及Sam Altman。 17. Anthropic联合Andon Labs发布Drone-Bench,评估AI模型自主操控无人机在室内定位追踪指定人员的能力。 18. 英伟达、微软和Meta联合签署公开信,警告对开放权重AI模型的过度监管将削弱美国AI竞争力,OpenAI和Anthropic未签署。 💡三家巨头联手喊话别管太严,没签字的恰好是游说限制的那两家 #AI# #人工智能#
顯示更多
0
44
18
0
轉發到社區
GM GN 距离2027年 仅剩164天 早上5点多就醒了,刷抖音学了一小时王虹搞定的挂谷猜想到底是什么。 我自己描述的话,就是拿一根没有粗细的木棍,放到桌面上挪动、转动这根木棍,让木棍朝向平面上所有方向,然后计算木棍扫过区域的占地面积,数学结论能做到无限接近于0,这是2D。王虹解决的是3D,文章结尾有个视频讲解。 顺便一起看看今天的Ai新闻 polo的AI日报 7月25日,13条精选 ⬇️ 1. Midjourney V8.2正式发布,重点提升美学质量、图像创意与个性化理解,低质量图像出现频率将显著降低。 💡Midjourney终于更新了 2. Anthropic发布Claude Opus 5,智能水平接近Fable 5但价格减半,Frontier-Bench多项测试表现亮眼。 💡Opus 5的性价比直接把Anthropic自家产品线打乱了 3. 蚂蚁百灵发布Ling-3.0-flash原生混合推理模型,124B总参数但仅激活5.1B,在传统推理、指令遵循与长文本上对标甚至超越上代旗舰。 💡蚂蚁在推理效率上的追求已经卷到了极致 4. Black Forest Labs发布FLUX 3多模态基础模型,联合训练图像、视频和音频,单次生成20秒视频带原生音频,视频预测占训练算力95%以上,与机器人公司mimic合作推进具身智能。 💡95%算力押注视频 5. Runway Agent推出自然语言工作流功能,用自然语言构建、运行或编辑基于节点的工作流。 6. 百度搭子更新支持电脑手机接力、桌面端内嵌浏览器上线,复杂任务可跨端连续执行。 💡电脑上没干完的活手机接着干 7. OpenRouter上线Classifiers测试版,支持自定义分类法自动标记每次AI请求的任务类型、部门归属、合规状态等。 💡AI调用量大了之后连账都算不清 8. 英伟达、微软和Meta联合警告应避免对开放权重模型过度监管,否则将削弱美国AI竞争力。 💡别把开源模型管死了,不然美国AI要被自己人卡脖子 9. Kimi K3在网络安全漏洞利用测试中大幅落后美国前沿模型,ExploitBench得分32.2%对比76.3%,知识蒸馏或为原因。 💡编程跑分第一但安全测试垫底,K3的偏科比想象中严重 10. 佛州男子因相信ChatGPT拒绝就医险丧命,起诉OpenAI及Sam Altman。ChatGPT-4o多次建议无需就医,致其双肺血栓引发大面积肺栓塞。 💡AI的医疗建议第一次闹出人命诉讼了,ChatGPT这个无需就医这个傻逼建议太行了 11. Anthropic联合Andon Labs发布Drone-Bench,评估AI模型自主操控无人机在室内定位追踪指定人员的能力。 💡先进的战争生产力 12. Anthropic为Claude Opus 5和Fable 5删除了Claude Code超过80%的系统提示词,新一代模型的上下文工程规则正在被重写。 💡模型越强需要的指令越少 13. Claude-thermos通过本地反向代理监控Claude Code会话,在主智能体空闲超5分钟时自动发送预热请求刷新缓存,避免重新编码费用。 💡智能体等人也能烧钱? #AI# #人工智能#
顯示更多
0
23
27
0
轉發到社區
道家有个说法,叫“财不入急门,富不入偏门” 这年头最扎心的真相是: 心动一次折寿三年,手痒一回退财十载。 我见过很多人,把半生血汗钱,炼成了废铁。 前几日一位朋友来找我,满面愁容, 说自己在五线城市盖了栋准五星酒店, 如今荒得像座龙王庙。 他问我怎么办? 我送他八个字:“斩断妄念,舍财保命” 他不甘心,说想找个下家接盘。 我笑了:“你这算盘,打的是水鬼拉人,越拉越沉” 这让我想起《神仙传》里一段旧事。 东汉时有个叫阴长生的修士, 他炼丹不成,家财散尽, 师门老祖问他:“你可知为何屡炼屡败?” 他答:“是火候未到。” 老祖摇头:“是你道心不纯,总想拿凡间铜臭,换九天仙丹” 后来阴长生在洛阳城外, 看尽商人倾轧,富者破产,才悟明白一个道理: 人世间最大的坑,不是你没机会, 而是你把所有机会都当成了机缘。 如今许多人,口袋里揣着这辈子都花不完的钱, 心里却空得像被妖风扫过,总想“干点啥”。 送外卖攒了二十多万, 非要开个洗衣店证明自己, 三个月亏光,继续回去送外卖。 这叫什么? 这叫“以苦钱填苦海,苦上加苦”。 还有人更荒唐, 孩子从国外回来,眼高手低, 张嘴就是几百万的“项目”。 父母一咬牙,投了, 结果连个水花都没见着。 我们这一行有句铁律: 宁让儿孙游山玩水,莫让儿孙胡乱试水。 你觉得是帮他,其实是把他往无底洞里推。 当你看不清前路时,记住吕祖的那句真言: “静里乾坤大,闲中日月长。” 此刻起,把你已经赚到的钱, 分成三份锁进不同的铁箱—— 一份保命,一份养家,一份压箱底。 这三把锁,要锈死,别轻易打开。 你风里雨里拼回来的那点本钱, 不是给你拿去赌运气的, 是让你在乱世里, 还能站着喘气的依仗。 最后送你一句话: 护得住心火,才等得到天明。
顯示更多
AWS 资深专家解决方案架构师 Daniel Abib 在官方博客里算了一笔账:同步调用时,Lambda 的计费时长几乎等于 agent 思考的时长,等待本身在按全量计算计费。 《在无服务器流水线中异步调用 Amazon Bedrock AgentCore agent 的模式》 在无服务器流水线里异步调用 Amazon Bedrock AgentCore agent,可以消除你的 AI agent 处理请求期间的空转计算成本。一个常见的例子是文档校验:在房地产融资的后台办公室里,agent 可以读取房产记录或贷款合同,推理信息是否完整、一致,然后返回一个下游步骤据此行动的结论。Amazon Bedrock AgentCore 提供了一个平台,让你能用任意框架或模型大规模地构建、连接和优化 agent。 这类 agent 带来一个传统流水线步骤没有的特性:它们在回答之前要思考一会儿。思考多久取决于提示词、模型和文档,但很少是即时的,而这个延迟改变了你调用它的方式。最常见的首版实现是用一个计算服务(比如 AWS Lambda 函数)调用 agent 并等待响应。函数等待期间什么都不做,但它仍在运行,每一秒都在计费。 值得看清成本到底落在哪里,因为调用的两侧计费方式不同。Amazon Bedrock AgentCore runtime(Amazon Bedrock AgentCore 的一项能力)采用基于消耗的计费模型,agent 空闲时不收 CPU 费用。例如,在等待大语言模型生成响应、或等待工具或 Model Context Protocol(MCP)调用返回的这段时间里,你只按内存计费,不按 CPU 计费。调用 agent 的那个计算服务没有这种特性。发出同步调用的 Lambda 函数、容器或 Amazon EC2 实例会一直阻塞,在 agent 响应之前始终持有(并支付)完整的计算配额。所以浪费不在 agent 一侧,而在调用方——它挂在一个打开的连接上空转。 这就让调用方的成本跟着 agent 的运行时间走。阻塞在 agent 上的函数,计费时长几乎等于整个处理时间;而启动 agent 后立即返回的函数,只按短暂的派发计费。解法是在等待期间释放调用方的计算资源,等 agent 出了结果再恢复流水线。本文展示三种做到这一点的模式(task-token 回调、直接服务集成、durable function),并与阻塞式反模式对比。 示例流水线 为了让各模式在同等条件下比较,我们把每个模式都跑在同一条流水线上,只更换调用 agent 的那一步。这条流水线是一个刻意简单、虚构的场景(房地产融资文档校验),选它只是为了把编排讲清楚。它不是本文的重点,它代表任何先调用 agent(或其他慢服务)、再对结果采取行动的流程,你可以把自家用例代入。 流水线有五个阶段: 1. Extract:一个 Lambda 函数对文档做 OCR 和文本提取。(提取是模拟的,所以场景不需要真实文档。) 2. Identify:一个 Lambda 函数对文档分类并设置路由标志(shouldOrganize、shouldValidate)。 3. Route:一个 Choice 状态根据这些标志决定流程走向。 4. Organize and Validate:一个 Parallel 状态在组织文档的同时,让 Amazon Bedrock AgentCore agent 在另一个分支里做校验。这个 Validate 分支是各模式之间唯一变化的部分。 5. Result:一个 Lambda 函数处理 agent 的结论,决定下一步动作(批准,或退回修改)。 图示如下:水平流程依次是 Start、Extract、Identify、Route(Choice)、并行的 Organize-and-Validate 阶段、Result、End,Validate 分支被标为可更换,图例列出了它的四种实现方式:阻塞反模式、模式 1(task token)、模式 2(直接集成)、模式 3(durable function)。流水线本身在每种情况下保持不变,只有 Validate 分支被换掉来演示各自的调用模式。 同一个 Amazon Bedrock AgentCore agent 服务全部四种情况。agent 检查每次调用并选择如何响应:如果收到 AWS Step Functions 的 task token,就在完成时唤醒那个执行;如果收到 durable function 的 callback ID,就唤醒那个 durable function;两者都没收到,就直接在响应里返回结论。这意味着你可以更换编排模式,而不必修改或重新部署 agent。 agent 如何不阻塞调用方就把控制权交回来 机制是 agent 的 action group 里的一个"归还控制权"动作。agent 推理结束后,调用一个 Lambda,把结果和 task token 发回 Step Functions。(后面的模式 2 会让 Step Functions 直接与 AgentCore 集成,完全省掉这个 Lambda。) 下面这段代码是这个 Lambda 的核心: The tool the agent calls once it reaches a verdict @tool def conclude_validation(approved: bool, issues: list, summary: str) -> str: verdict = {"approved": approved, "issues": issues, "summary": summary, "source": "agentcore"} # A Step Functions task token was passed: resume that execution if task_token: sfn.send_task_success(taskToken=task_token, output=json.dumps(verdict)) return "Step Functions resumed." # A durable-function callback ID was passed: resume the durable function if callback_id: lambda_client.send_durable_execution_callback_success( CallbackId=callback_id, Result=json.dumps(verdict).encode("utf-8")) return "Durable function resumed." # Neither was passed: this is a synchronous call, return the verdict inline return "Verdict recorded." 入口函数根据同样的信号决定在后台跑还是同步跑: @app.async_task async def validate_document_async(prompt, document, extracted_text): # Background work; conclude_validation fires the right callback when done agent = build_agent() await agent.invoke_async(message(prompt, document, extracted_text)) @app.entrypoint async def handler(event): task_token = event.get("taskToken") # passed by the task-token pattern callback_id = event.get("callbackId") # passed by the durable-function pattern # Asynchronous: start the work and return "accepted" right away if task_token or callback_id: asyncio.create_task(validate_document_async(...)) return {"status": "accepted"} # Synchronous: run now and return the verdict in the response agent = build_agent() await agent.invoke_async(message(...)) return verdict agent 就位之后,本文剩下的部分聚焦于调用它的四种方式。代码和基础设施定义都是示例中的摘录,用来演示每种模式。 调用 agent:四种方式 先讲阻塞式反模式以确立基准成本,再展示避开它的三个模式。 阻塞式反模式 最直接的实现:在同一个 Lambda 函数里调用 agent 并等待答案。它能用,而且实现简单——这正是它如此常见的原因——但函数在 agent 思考的整个期间一直活着。 // The Lambda function blocks here until the agent responds const response = await agentcore.send( new InvokeAgentRuntimeCommand({ agentRuntimeArn: AGENT_RUNTIME_ARN, payload: new TextEncoder().encode(JSON.stringify(payload)), runtimeSessionId: sessionId, }) ); // The function stays alive and billed for the entire time the agent is thinking. 函数的计费时长最终大约等于 agent 的处理时间。后面三个模式消除这段空闲成本,各自做出不同的取舍。特别是模式 2 使用 Step Functions 对 AgentCore Harness (InvokeHarness) 的优化集成,完全去掉 Lambda。 模式 1:task-token 回调 + 派发函数 这个模式在路径里保留一个 Lambda 做自定义逻辑,但去掉空闲成本。Step Functions 用 waitForTaskToken 集成调用这个函数——传入一个 task token 后暂停执行。函数用这个 token 启动 agent,然后在几秒内返回。执行保持暂停,不产生任何计算计费,直到 agent 用这个 token 调用 SendTaskSuccess 恢复它。 // Start the agent, pass the task token, and return without waiting const response = await agentcore.send( new InvokeAgentRuntimeCommand({ agentRuntimeArn: AGENT_RUNTIME_ARN, payload: new TextEncoder().encode(JSON.stringify({ ...payload, taskToken })), runtimeSessionId: sessionId, }) ); // Returning here does not complete the step. Step Functions stays paused until // the agent calls SendTaskSuccess with this task token. return { dispatched: true }; 对应的状态从上下文取出 token,并设置超时和心跳作为安全网——这样沉默的 agent 会让执行干净地失败,而不是无限期停在那里: "ValidateDispatch": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke.waitForTaskToken", "Parameters": { "FunctionName": "${ValidateDispatcherFunctionArn}", "Payload": { "taskToken.$": "$$.Task.Token", "document.$": "$.document", "extractedText.$": "$.extract.extractedText", "executionId.$": "$$.Execution.Id" } }, "TimeoutSeconds": 120, "HeartbeatSeconds": 60, "Next": "AgentCoreValidation" } 成本。 Lambda 函数仍然会跑,但只跑到启动 agent 并返回为止:几秒钟,无论 agent 之后要跑多久。你只为这次短暂派发付费,不为等待付费——因为函数在 agent 干活时已经关掉了。等待由暂停的 Step Functions 执行承担,它不为空闲计算计费。这是与阻塞版本的关键区别:阻塞版本里函数的计费时间跟着 agent 的处理时间走。 模式 2:直接服务集成 当你不需要围绕 agent 调用写自定义代码时,可以去掉派发函数,让 Lambda 完全离开路径。Step Functions 可以通过 AWS SDK 服务集成直接调用 Amazon Bedrock AgentCore,所以 agent 的响应直接流入下一个状态。Validate 分支于是变成单个 Task 状态: "ValidateDirect": { "Type": "Task", "Resource": "arn:aws:states:::aws-sdk:bedrockagentcore:invokeAgentRuntime", "Parameters": { "AgentRuntimeArn": "${AgentRuntimeArn}", "RuntimeSessionId.$": "States.Hash($$.Execution.Id, 'SHA-256')", "Payload.$": "States.JsonToString($.prep.agentInput)" }, "ResultSelector": { "raw.$": "$.Response" }, "TimeoutSeconds": 120, "Next": "ParseVerdict" } 成本。 路径里没有 Lambda,所以没有空闲的 Lambda 计算可付。Step Functions 承担等待,Standard 工作流按状态转换计费而不是按等待时长计费——处理期间的实质成本只有 agent 本身。 模式 3:Lambda durable function 如果你更愿意用代码而不是状态机来表达编排,Lambda durable function 给你同样的成本行为。用 @aws/durable-execution-sdk-js SDK,流水线阶段变成 context.step 调用,并行工作变成 context.parallel,等待 agent 变成 context.waitForCallback。等待期间函数挂起,不计计算费。agent 用 SendDurableExecutionCallbackSuccess 恢复它。 // Suspend the function until the agent calls back const result = await ctx.waitForCallback( "validate-agentcore", async (callbackId) => dispatchAgentCore(callbackId, document, extractedText, executionId), { timeout: { seconds: 120 } } ); 成本。 一个函数承载整条流水线,但挂起等待 agent 期间不按计算计费。你只为挂起之间短暂爆发的那几次执行付费——与 task-token 模式相同的经济性——而不是为等待付费。 测量差异 重点不是某个具体数字。agent 的运行时间随提示词、模型和文档变化。重要的是 task-token 模式里两个值之间的关系:Validate 状态活跃了多久,对比派发函数实际被计费了多久。我们测试中的单次运行让这个关系可见: Step Functions, ValidateDispatch state Returned (TaskSubmitted): 14:08:19 <- the function returned and shut down Resumed (TaskSucceeded): 14:08:34 <- the agent woke the execution State active ........ 19.6s Lambda, dispatcher function (CloudWatch REPORT) Billed duration ..... 4.8s Result: the state was active for 19.6s, but the function was billed for 4.8s. The ~14.8s in between is wait time with no Lambda function running. 在 Step Functions 的事件历史里也能看到同样的事:task-token 模式下,TaskSubmitted 事件(函数返回)与 TaskSucceeded(agent 恢复流程)之间隔着 agent 的处理时间。同步调用没有这样的间隔。 下表总结了每种模式下 Validate 分支(前面图示中高亮的部分)的实现方式: • 编排器:阻塞=Step Functions;模式 1=Step Functions;模式 2=Step Functions;模式 3=Lambda(代码) • 路径中的 Lambda:阻塞=有,存活且计费;模式 1=有,但提前返回;模式 2=无;模式 3=durable function 本身(挂起) • 等待期间的空闲 Lambda 计算:阻塞=为整个等待付费;模式 1=无;模式 2=无;模式 3=无 • agent 调用周围的自定义代码:阻塞=有;模式 1=有;模式 2=有限(状态转换);模式 3=有 • 调用方与 agent 解耦:阻塞=否;模式 1=是;模式 2=否;模式 3=是 • 相对复杂度:阻塞=最低;模式 1=较高(token 和回调的 IAM);模式 2=最低;模式 3=中等(检查点/重放) 读这张表时有一个提醒:总流水线时长不是有用的比较指标,因为它被 agent 自己的推理时间主导——每次运行都不同,而且在所有场景里基本相同。有意义的差异是等待期间你为多少计算付了钱,这由上表和计费时长读数体现。agent 运行时间增长时,派发函数的计费时间保持平稳。上面的数字来自单次运行,把它们当作这个关系的示意而非基准,请测量你自己的负载。 如何选择模式 下表总结了取舍,帮你选择模式: • 调用方成本:阻塞=整个 agent 处理时间;模式 1=几秒(仅派发);模式 2=零(无 Lambda);模式 3=几秒(仅派发) • 集成工作量:阻塞=低;模式 1=中高(IAM、心跳、超时);模式 2=低(单个 Task 状态);模式 3=中等(检查点-重放模型) • 业务逻辑位置:阻塞=在 Lambda(前 + 后);模式 1=在 Lambda(前 + 后);模式 2=只在 Amazon States Language(ASL)(内置函数);模式 3=在 Lambda(顺序代码) • 最适合:阻塞=原型、短 agent;模式 1=自定义前后处理逻辑;模式 2=纯编排、无自定义代码;模式 3=单个函数里的复杂异步工作流 最佳实践 防 agent 永不回答。 给每个 waitForTaskToken 状态设置 TimeoutSeconds,让执行以 States.Timeout 失败,而不是无限期挂起。如果你的 agent 发送心跳,也设置 HeartbeatSeconds 以更快发现死掉的 agent。捕获错误并路由到失败或人工审核路径。 重试时使用稳定的会话 ID。 把 sessionId 设为从执行上下文派生的值(比如 Step Functions 执行名),这样重试会恢复同一个 agent 会话,而不是重新开始。task-token 模式里在派发函数中设置;直接集成模式里在 Task 状态参数中设置。 打开 AWS X-Ray。 在 Step Functions 和 Lambda 配置中启用 Tracing: Active。X-Ray 会精确显示 agent 思考了多久、调用方等待了多久,确认你的模式确实在间隔期间释放了计算。 按速度而不是按 agent 的负载来配派发函数。 派发函数只序列化请求并调用端点。256 MB 内存和 30 秒超时通常就够。重活都在 agent 那边。 成本 这些模式会产生 Lambda 计算、Step Functions 状态转换、durable function 执行存储的费用,以及所有方案共有的 Amazon Bedrock AgentCore runtime 和 Amazon Bedrock 模型推理费用。agent 和模型成本在四种情况下相同。架构只改变编排开销,以及阻塞反模式中浪费的空闲 Lambda 计算。当前价格请查看各服务的定价页。 结论 把 AI agent 放进流水线是简单的部分。让它被经济地调用,才是区分原型与生产设计的地方。阻塞在 agent 上的 Lambda 函数实现简单,却在悄悄烧钱——计费时间里的大部分都在等待。本文展示了三种规避方式:需要在路径里保留 Lambda 时用 task-token 回调;最简单的情况用直接服务集成;偏好用代码表达编排时用 durable function。三者由同一个 Amazon Bedrock AgentCore agent 驱动,它会根据被调用方式调整自己的响应。 完整示例(完整的 agent、状态机定义和 durable function)在 GitHub 的 sample-bedrock-agentcore-async-stepfunctions 仓库。想深入的话,可以看 Amazon Bedrock AgentCore 关于异步任务处理的文档。生产部署请使用 Amazon Bedrock Guardrails,对 agent 的输入输出实施负责任 AI 控制。 原文: #Bedrock# #Serverless# #StepFunctions#
顯示更多