产品LangChain Blog·原文 2026年10月7日本站收录 2026年10月8日

LangChain为Deep Agents重构技能系统:工具可绑定技能、支持运行时固定与线程内重载

LangChain博客称,Deep Agents新增三项技能支持:工具可绑定到技能并在读取该技能时才加载、应用可在下一次模型调用前固定用户指定的技能、长线程可通过设置skills_metadata为None重新扫描技能库。

AI解读:Deep Agents此次更新解决的是技能数量增长后如何保持上下文精简的问题。LangChain称企业技能注册表已增长到数千个技能并跨团队、跨代理共享。

绑定工具后,工具不会在代理读取对应技能前进入上下文,提前调用会被当作未知工具而失败。LangChain表示这让代理在调用工具前已读过该工具的使用说明。

固定技能允许应用在消息中识别用户显式指定的技能(如 /meeting-prep),在下一次模型调用前把该技能说明加入对话,代理可在第一次模型调用就开始工作,而不必先读取技能描述。

技能重载通过把skills_metadata设为None来触发,下一次运行会重新扫描技能库并纳入新增或变更的技能。LangChain提示重载会改变系统提示并导致提示缓存失效,但闲置线程的缓存通常已过期。

LangChain称技能是开放标准,可跨模型和代理产品使用;本次三项能力已在该公司最新的deepagents中提供。

LangChain于其博客发文称,已为Deep Agents重构技能(Skills)支持,新增三项能力:将工具绑定到技能、固定(pinned)技能、以及在线程中途重载技能。原文称这些更新针对企业技能注册表增长到数千个技能、跨团队和代理共享后出现的常见需求。

据LangChain介绍,技能是一个包含SKILL.md文件的目录,SKILL.md含YAML前置元数据(name和description)以及代理需遵循的指令;技能还可捆绑scripts/、references/和assets/下的支持文件。代理在启动时只看到每个技能的名称和描述,任务匹配时才读取完整SKILL.md,仅在需要时再读取脚本或参考文件。

LangChain说明,绑定工具后,工具只在该技能被读取时才加载;在读取前调用该工具会因未知工具而失败。固定技能允许应用在用户显式请求某技能时(例如输入 /meeting-prep)在下一次模型调用前加载该技能;LangChain称这使代理在第一次模型调用即开始工作,减少一次往返并让行为更可预期。技能重载则允许长线程通过将skills_metadata设为None来重新扫描技能库,纳入新增或变更的技能。

如何绑定工具与技能

LangChain称此前技能与工具的披露是分开的:可以用工具搜索把工具schema排除在上下文之外,但没有任何机制把工具和解释其用法的技能关联起来——代理可能找到并调用工具却没读对应技能,或者读了技能还得再搜索工具。

更新后,技能可在前置元数据的metadata.include_tools下列出工具,这些工具传给SkillsMiddleware而非代理。LangChain给出的例子是,读取call-transcripts技能后解锁search_calls和get_transcript;绑定工具以新的系统消息到达,其上方已缓存的提示前缀保持不变。

LangChain表示,Anthropic和OpenAI的较新模型已支持在对话中途接受工具,在这类模型上Deep Agents会在技能读取后立即加入绑定工具并保持缓存前缀完整;在其他模型上则按此前方式把工具追加到请求中。

对于需要更多控制的情况,技能可以列出标签而非工具名,由传给SkillsMiddleware的函数把标签转成工具。LangChain称这可用于以一个名称披露整个工具组(例如某MCP服务器上的全部工具),或按运行时权限对工具进行访问控制,因为该函数能接收图运行时并据此判断用户身份、只返回其被允许使用的工具。

固定技能与会话中重载

LangChain称,没有固定时模型只看到技能描述、必须自行读取,这会增加一次往返,且不保证加载到正确技能。固定技能由应用从消息中找出技能名(或从界面解析)并传入pinned_skills,中间件会在下一次模型调用前把每个技能的指令加入对话。Deep Agents本身不解析消息,语法由开发者选择。

LangChain表示,固定技能的指令已在对话中,所以代理在第一次模型调用即开始工作;被固定技能的绑定工具也会一并带入。每个固定技能作为带标签的消息只加入一次,因此早前消息不变、提示缓存保持有效,聊天界面可把技能显示为标签而不是全文。

关于重载,LangChain称技能在每个线程开始时加载并保存在代理状态中,后续轮次复用同一组技能。把skills_metadata设为None可使下一次运行重新扫描技能库;原文举例,如果队友新增了competitive-intel-card技能,应用可选择使技能列表失效,下一次运行将重新扫描所有来源。

LangChain提示,重载若发现新技能会改变系统提示,从而使提示缓存失效;对于闲置线程,这一成本通常已经支付,因为提供商缓存一般在数分钟到一小时不活动后过期。LangChain还称,由于重置只是运行输入,应用可以把控制权交给用户,例如客户端提供 /reload命令;也可从update_state或中间件中重置。

信息来源

LangChain Blog原始来源