1. 从一份日报说起:AI 圈每天都在发生什么
做 AI 方向的内容或者工程落地,有一个很深的体会:这个领域的信息密度实在太高了。高到什么程度?你周一刚把某个模型的部署脚本调通,周三就发现社区里已经有人把推理成本压到了你的一半;你刚在团队里推完一套 Agent 框架,转头就看到另一个开源项目用更少的代码实现了更稳的工具调用。所以我一直有做“AI 日报”的习惯,不是为了追热点,而是为了给自己和团队建立一个信息锚点——今天到底有哪些东西是真正值得花时间看的,哪些只是噪音。
这份 2026 年 9 月 24 日的 AI 日报,核心关注的是几个方向:AI Agent 的开发与落地、Claude 和 Gemini 这两个主流模型工具链的使用细节、以及vLLM 这个推理引擎在实际部署中的各种坑。如果你是一个正在做 AI 应用开发的工程师,或者是一个想把自己的业务和 AI 结合起来的独立开发者,这份日报里的内容大概率能帮你省下不少试错时间。它不聊虚的,聊的是“这个东西怎么装、怎么配、报错了怎么办、哪个版本能跑通”这类一线问题。
我先把今天这份日报的整体结构交代一下。它大致分成三块:第一块是 Agent 相关的动态,包括框架选型、开发教程和实际项目里遇到的执行报错;第二块是 Claude 和 Gemini 的使用问题,从安装配置到账号权限,再到一些让人摸不着头脑的报错信息;第三块是 vLLM 的部署实践,包括 Docker 镜像选择、模型加载、调度器逻辑这些偏底层但绕不开的东西。每一块我都会结合自己的实操经验展开讲,不只是复述日报里提到的关键词,而是把背后的“为什么”和“怎么办”说清楚。
2. Agent 开发:从框架选型到执行报错的完整链路
2.1 Agent 框架到底该怎么选
Agent 这个词在过去一年里被用得有点泛滥了,但落到实际开发中,它其实就是一个很具体的问题:你希望模型不只是回答问题,而是能自己决定调用哪些工具、按什么顺序调用、拿到结果之后怎么继续。这个过程中,框架的作用是帮你把“思考-行动-观察”这个循环管理起来,同时处理上下文长度、工具注册、错误重试这些琐事。
日报里提到了几个和 Agent 相关的热词,比如“agent开发”、“agent框架”、“吴恩达 agent 教程”、“pi agent”、“hermes agent”。这几个词其实代表了不同的切入角度。吴恩达的教程偏向概念普及,适合刚接触 Agent 的人建立认知框架;而 pi agent、hermes agent 这类具体项目,则是工程落地时可以直接拿来用的东西。我的建议是,如果你刚开始做 Agent,不要一上来就纠结选哪个框架,先用最朴素的方式——直接调模型 API,自己写一个 while 循环来管理工具调用——把整个流程跑通一遍。你会很快理解 Agent 的本质就是一个带状态机的循环,框架帮你解决的只是工程上的便利性问题。
选框架的时候,我一般看三个维度:工具调用的稳定性、上下文管理的灵活性、调试信息的可读性。工具调用稳定性决定了你的 Agent 会不会在关键时刻掉链子;上下文管理灵活性决定了你能不能控制成本;调试信息可读性决定了你排查问题的时候会不会想砸键盘。很多框架在 demo 阶段看起来很美好,但一到真实场景,工具调用稍微复杂一点就开始各种异常,这时候如果没有清晰的日志,你根本不知道模型到底发了什么请求、工具返回了什么。
2.2 “agent execution terminated due to error” 这个报错怎么破
日报里有一个很扎眼的关键词:“agent execution terminated due to error.”。这个报错我在实际项目里遇到过不止一次,它属于那种信息量极低但出现频率极高的错误。Agent 执行到一半突然终止,日志里就给你这一行,没有任何堆栈信息,让人非常抓狂。
根据我的经验,这个报错通常来自三个方向。第一个方向是工具调用返回了框架无法解析的结果。比如你注册了一个工具,期望它返回 JSON,但实际返回了一个空字符串或者一段 HTML,框架在解析的时候直接抛异常,整个执行链就断了。第二个方向是上下文超长导致模型请求被截断。Agent 在多轮循环之后,上下文会迅速膨胀,如果框架没有做好截断或者摘要,模型端可能会直接拒绝请求,框架捕获到这个错误之后就终止了执行。第三个方向是沙盒环境的问题。日报里还提到了“显示更新agent沙盒”,这其实是一个很典型的场景:Agent 在执行代码或者访问外部资源时,需要一个隔离环境,如果沙盒初始化失败或者权限配置不对,执行就会在第一步就挂掉。
排查这个报错,我的习惯是先把日志级别调到最细,把模型请求和工具返回的原始内容都打出来。很多时候你以为是框架的 bug,其实只是某个工具返回了一个你没预料到的格式。另外,给 Agent 的每一步执行加上超时和重试机制也很重要,不要让一个卡住的工具调用把整个流程拖死。
2.3 Agent 项目落地时容易被忽略的细节
日报里提到了“agent项目”和“ai测试开发”这两个词,我把它们放在一起说。Agent 项目和传统的 AI 应用有一个很大的区别:它的行为是不确定的。同一个输入,模型可能选择调用工具 A,也可能选择调用工具 B,甚至可能选择不调用工具直接回答。这就给测试带来了很大的挑战。
我在做 Agent 项目的时候,会专门建一套“行为测试集”,不是测最终答案对不对,而是测 Agent 在特定场景下有没有做出合理的动作选择。比如用户问“帮我查一下明天的天气”,Agent 应该调用天气查询工具,而不是自己编一个答案。这种测试用传统的断言很难写,我一般会用“期望动作序列”的方式来做,把 Agent 实际调用的工具链和期望的工具链做对比,允许一定的顺序差异,但不允许关键步骤缺失。
还有一个容易被忽略的点是成本控制。Agent 的多轮循环意味着 token 消耗是普通对话的好几倍,如果不加限制,一个复杂的任务可能跑出几十轮循环,账单会非常难看。我的做法是给每个 Agent 任务设置一个最大循环次数和最大 token 预算,超过就强制终止并返回当前结果,同时记录日志方便后续优化。
3. Claude 与 Gemini:工具链使用中的真实问题
3.1 Claude Code 的安装与配置要点
日报里出现了“claude code”、“claude code安装”、“vscode配置claude code”这几个关键词,说明这个工具的关注度确实很高。Claude Code 本质上是一个命令行工具,它把 Claude 的代码能力封装成了一个可以在终端里直接调用的接口,支持文件读写、代码生成、命令执行这些操作。对于习惯在终端里工作的开发者来说,它比在网页里复制粘贴要高效得多。
安装过程本身不复杂,但有几个细节容易卡住人。第一个是环境变量配置。Claude Code 需要读取 API 密钥,如果你是在 Windows 上通过 WSL 使用,要注意环境变量是在 WSL 里设置还是在 Windows 里设置,两者是不通的。第二个是工作目录权限。Claude Code 在执行文件操作时,需要对你当前所在目录有读写权限,如果你在一个受保护的目录里启动它,可能会遇到静默失败。第三个是网络代理配置,这个不用多说,如果你的网络环境需要代理才能访问外部服务,记得在终端里把代理环境变量设好,否则 Claude Code 会一直卡在连接阶段。
在 VSCode 里配置 Claude Code 是另一个常见需求。我的做法是把它作为一个外部工具集成到任务系统里,通过 VSCode 的 tasks.json 配置一个快捷键,选中代码之后直接调用 Claude Code 处理,结果输出到终端或者新文件里。这样既保留了 VSCode 的编辑体验,又能用上 Claude 的代码能力。
3.2 Gemini 的账号权限与登录问题
日报里有一条很具体的信息:“your account is not eligible for gemini code assist for individuals at this”。这个报错的意思是,你当前登录的账号没有资格使用面向个人的 Gemini Code Assist 服务。这通常和账号的地区、年龄或者账号类型有关。如果你遇到这个问题,可以尝试换一个账号登录,或者检查一下账号的注册信息是否完整。
另一个高频问题是“gemini登录”和“gemini打不开”。Gemini 的登录流程依赖 Google 的账号体系,如果你在浏览器里已经登录了多个 Google 账号,有时候会出现账号混淆的情况,导致登录状态异常。我的建议是,在使用 Gemini 相关服务时,用一个干净的浏览器配置文件,只登录一个账号,避免各种奇怪的会话问题。如果页面打不开,先检查网络连接,再检查浏览器扩展是否有干扰,最后再考虑是不是服务端的问题。
“cli反代gemini显示403”这个关键词也值得说一下。403 通常意味着请求被拒绝了,可能的原因包括 API 密钥无效、请求头缺少必要字段、或者请求频率超限。如果你是通过命令行工具调用 Gemini,先确认你的 API 密钥有没有正确设置,再检查请求的 endpoint 是不是最新的。Gemini 的 API 版本更新比较频繁,旧版本的 endpoint 可能会被废弃。
3.3 Claude 的“物理学世界纪录”意味着什么
日报里有一个很有意思的词:“claude刷新物理学世界纪录”。这个说法听起来很夸张,但结合上下文,它大概率指的是 Claude 在某个物理相关的推理任务或者模拟任务上取得了很好的成绩。这类消息在 AI 圈里很常见,每隔一段时间就会有一个模型在某个基准测试上刷新纪录。
我的看法是,这类消息可以关注,但不要过度解读。模型在特定任务上的表现,和它在你的实际业务场景中的表现,中间隔着很大的距离。一个模型可能在物理推理上很强,但在你的客服场景里表现平平。所以看到这类新闻,我的习惯是去看它的评测方法和任务定义,理解它到底测了什么,然后再判断这个能力对我的工作有没有参考价值。
4. vLLM 部署实战:从镜像选择到调度器调优
4.1 vLLM 是什么,为什么大家都在用它部署大模型
日报里 vLLM 相关的关键词非常多:“vllm部署deepseek”、“vllm部署大模型”、“vllm是什么”、“docker部署vllm模型教程”、“vllm docker镜像中带模型吗”、“vllm scheduler逻辑”。这说明 vLLM 已经成了大模型部署领域的一个事实标准。简单来说,vLLM 是一个高性能的推理引擎,它的核心优势在于PagedAttention技术,能够显著提高显存利用率和吞吐量。你可以把它理解成一个专门为大模型推理优化的“操作系统”,它帮你管理显存、调度请求、批处理计算。
为什么大家不用原生的 HuggingFace Transformers 来部署?因为原生方案在并发请求下的效率太低了。Transformers 每次推理都要重新加载模型权重、重新分配显存,而 vLLM 通过 PagedAttention 把显存分成块来管理,多个请求可以共享这些块,大大减少了浪费。在实际测试中,同样的硬件条件下,vLLM 的吞吐量通常是原生方案的几倍甚至十几倍。
4.2 Docker 部署 vLLM 的镜像选择与模型加载
“docker vllm/vllm-openai:v0.27.1加载qwen3-embedding-0.6b”这个关键词给出了一个非常具体的场景:用 vLLM 的 OpenAI 兼容镜像来加载一个 embedding 模型。这里有几个点值得展开。
首先是镜像版本的选择。vLLM 的 Docker 镜像版本更新很快,不同版本对模型的支持程度不一样。日报里还提到了“glm5.3 使用vllm哪个版本的镜像”,这说明模型和镜像版本之间存在兼容性问题。我的经验是,不要盲目追新,先去看 vLLM 的 release notes,确认你要部署的模型在哪个版本里得到了官方支持,然后再选对应的镜像。如果你用的是比较新的模型,可能需要用最新的镜像;如果你用的是比较成熟的模型,用一个稳定的旧版本反而更省心。
其次是镜像里带不带模型。这是一个很常见的疑问。答案是:vLLM 的官方镜像通常不包含模型权重,你需要把模型文件挂载到容器里,或者在容器启动后从模型仓库下载。这样做的好处是镜像体积小、灵活性强,坏处是你需要自己管理模型文件的存储和版本。我的做法是在宿主机上建一个统一的模型目录,然后用 volume 挂载到容器里,这样多个容器可以共享同一份模型文件,节省磁盘空间。
加载 embedding 模型和加载生成模型有一点区别。Embedding 模型的输出是一个向量,不需要采样和解码,所以在配置上可以关掉一些生成相关的参数,把重点放在批处理大小和序列长度上。如果你用 vLLM 的 OpenAI 兼容接口来提供 embedding 服务,记得在启动参数里指定--task embedding,否则 vLLM 会默认按生成模型来加载,可能会报错。
4.3 vLLM 调度器逻辑与性能调优
“vllm scheduler逻辑”这个关键词说明有人在使用过程中遇到了调度相关的问题。vLLM 的调度器负责决定哪些请求先处理、怎么组批、显存不够时怎么抢占。理解它的基本逻辑,对调优很有帮助。
vLLM 的调度策略大致可以分成两类:FCFS(先来先服务)和优先级调度。默认情况下是 FCFS,但在实际生产环境中,你可能希望短请求优先处理,避免一个长请求把后面的短请求都堵住。vLLM 提供了一些参数来控制调度行为,比如--max-num-seqs控制同时处理的最大请求数,--max-num-batched-tokens控制一个批次里的最大 token 数。这两个参数直接影响吞吐量和延迟,需要根据你的硬件和业务特点来调。
我的调优经验是,先把--gpu-memory-utilization设到一个合理的值,默认是 0.9,但如果你的 GPU 还要跑其他任务,可以降到 0.8 左右。然后观察在不同--max-num-seqs下的吞吐量和延迟曲线,找到一个平衡点。如果你的业务对延迟敏感,就把--max-num-seqs调小一点,让每个请求得到更快的响应;如果对吞吐量更敏感,就调大一点,让 GPU 尽量跑满。
还有一个容易踩的坑是显存碎片化。长时间运行之后,vLLM 的显存池可能会出现碎片,导致明明还有空闲显存但无法分配。这时候可以尝试调整--block-size参数,或者定期重启服务来释放碎片。如果你的服务需要长时间稳定运行,建议加上显存监控和自动重启机制。
5. 常见问题速查与避坑经验
5.1 工具链问题速查表
| 问题现象 | 可能原因 | 排查方向 |
|---|---|---|
| Agent 执行中途终止,无详细日志 | 工具返回格式异常或上下文超长 | 调高日志级别,打印原始请求和返回 |
| Claude Code 安装后无法连接 | 环境变量或代理未配置 | 检查 API 密钥和终端代理设置 |
| Gemini 提示账号无资格 | 账号地区或类型不符合要求 | 更换账号或检查账号信息 |
| CLI 调用 Gemini 返回 403 | API 密钥无效或 endpoint 过期 | 确认密钥有效性和 API 版本 |
| vLLM 启动后加载模型失败 | 镜像版本与模型不兼容 | 查看 release notes 确认支持版本 |
| vLLM 服务运行一段时间后变慢 | 显存碎片化或请求堆积 | 调整 block-size 或重启服务 |
5.2 几个我踩过的坑
第一个坑是在 Agent 里用同步工具调用。早期我做 Agent 的时候,工具调用都是同步的,一个工具卡住,整个 Agent 就卡住。后来改成异步之后,情况好了很多,但引入了新的问题:异步调用的错误处理更复杂,需要小心处理超时和取消。我的建议是,如果你的 Agent 需要调用外部 API,一定要设置超时,并且把超时当作一种正常结果来处理,而不是异常。
第二个坑是vLLM 的模型路径写错。Docker 部署的时候,模型路径是容器内的路径,不是宿主机的路径。我见过有人把宿主机的路径直接写进启动参数里,结果容器启动后找不到模型,报了一个很模糊的错误。正确的做法是,先把模型目录挂载到容器内的某个路径,然后在启动参数里用容器内的路径来指定模型。
第三个坑是忽略 Claude Code 的工作目录。Claude Code 在执行文件操作时,是相对于你启动它的目录来解析路径的。如果你在一个很深的目录里启动它,然后让它操作一个相对路径的文件,可能会操作到错误的位置。我的习惯是在项目根目录启动 Claude Code,并且用绝对路径来指定要操作的文件。
5.3 关于“教别人用 AI 赚翻了”这件事
日报里有一个词很接地气:“教别人用ai赚翻了”。这反映了一个现实:AI 工具的学习曲线确实存在,很多人愿意为“怎么用”这件事付费。但我想说的是,如果你打算做 AI 相关的教学或者咨询,一定要建立在真实使用经验的基础上。这个领域变化太快,今天讲的方法明天可能就过时了,只有你自己真正踩过坑、解决过问题,讲出来的东西才有说服力。
我自己的做法是,每学一个新工具,都把它用在一个真实的小项目上,记录下遇到的问题和解决过程。这些记录本身就是最好的教学内容,因为它们是一手的、具体的、可复现的。比起泛泛地讲“AI 能做什么”,讲“我用 AI 做了这个,遇到了这个问题,我是这样解决的”要有价值得多。
6. 关于信息筛选的一点个人体会
做 AI 日报这件事,最大的挑战其实不是获取信息,而是筛选信息。每天产生的 AI 相关内容太多了,如果全部跟进,你根本没有时间做自己的事情。我的筛选标准很简单:这个东西能不能解决我当前正在面对的问题。如果能,就深入研究;如果不能,就记个关键词,等需要的时候再回来查。
另一个体会是,不要被“新”绑架。新模型、新框架、新工具确实让人兴奋,但大部分新东西在早期都不够稳定,用在生产环境里风险很高。我一般会等一个工具出了几个稳定版本、社区里有了足够多的实践案例之后,再考虑把它引入到正式项目里。在那之前,用成熟方案把业务跑起来才是正经事。
最后说一个很实际的问题:成本。不管是调 API 还是自己部署模型,成本都是绕不开的。我的习惯是给每个 AI 相关的项目单独记一笔账,包括 API 调用费用、GPU 租用费用、存储费用,然后定期回顾,看看哪些地方可以优化。很多时候,一个简单的缓存策略或者请求合并就能省下不少钱。这个习惯看起来不起眼,但长期下来效果很明显。