中间件与工具
langchain-anthropic 提供了两种使用 Claude 原生工具的方式:
- 中间件(本页面):生产就绪的实现,内置执行、状态管理和安全策略
- 工具(通过
bind_tools):低级构建块,您需提供自己的执行逻辑
何时使用哪一个
功能对比
示例:中间件与工具对比
示例:中间件与工具对比
使用中间件(开箱即用解决方案):使用工具(自带执行):
提示词缓存
通过在 Anthropic 服务器上缓存静态或重复的提示词内容(如系统提示词、工具定义和对话历史)来降低成本和延迟。此中间件实现了一种对话缓存策略,在最新消息之后放置缓存断点,允许将整个对话历史(包括最新的用户消息)缓存并在后续 API 调用中重用。 提示词缓存适用于以下场景:- 具有长且静态系统提示词的应用程序,这些提示词在请求之间不会更改
- 拥有许多跨调用保持不变的 tool definitions 的代理
- 早期消息历史在多轮对话中被重用的对话
- 降低 API 成本和延迟至关重要的批量部署
了解更多关于 Anthropic 提示词缓存 策略和限制。
AnthropicPromptCachingMiddleware
配置选项
配置选项
完整示例
完整示例
该中间件会缓存每个请求中直到并包括最新消息的内容。在 TTL 窗口内(5 分钟或 1 小时)的后续请求中,之前看到的内容将从缓存中检索而不是重新处理,从而显著降低成本和延迟。工作原理:
- 第一次请求:系统提示词、工具和用户消息 “Hi, my name is Bob” 被发送到 API 并缓存
- 第二次请求:缓存的内容(系统提示词、工具和第一条消息)从缓存中检索。只需要处理新消息 “What’s my name?”,加上第一次请求的模型响应
- 此模式在每一轮继续,每个请求都重用缓存的对话历史
提示词缓存通过缓存 token 来降低 API 成本,但不提供对话记忆。要在跨调用的过程中持久化对话历史,请使用 checkpointer,例如
MemorySaver。Bash 工具
使用本地命令执行执行 Claude 的原生bash_20250124 工具。
Bash 工具中间件适用于以下场景:
- 使用带有本地执行的 Claude 内置 bash 工具
- 利用 Claude 优化的 bash 工具接口
- 需要持久 shell 会话的代理与 Anthropic 模型配合使用
此中间件包装了
ShellToolMiddleware 并将其作为 Claude 的原生 bash 工具公开。ClaudeBashToolMiddleware
配置选项
配置选项
ClaudeBashToolMiddleware 接受来自 ShellToolMiddleware 的所有参数,包括:str | Path | None
Shell 会话的基础目录
tuple[str, ...] | list[str] | str | None
会话启动时运行的命令
BaseExecutionPolicy | None
执行策略(
HostExecutionPolicy、DockerExecutionPolicy 或 CodexSandboxExecutionPolicy)tuple[RedactionRule, ...] | list[RedactionRule] | None
清理命令输出的规则
完整示例
完整示例
文本编辑器
为文件创建和编辑提供 Claude 的文本编辑器工具 (text_editor_20250728)。
文本编辑器中间件适用于以下场景:
- 基于文件的代理工作流
- 代码编辑和重构任务
- 多文件项目工作
- 需要持久化文件存储的代理
提供两种变体:基于状态的(LangGraph 状态中的文件)和基于文件系统的(磁盘上的文件)。
State-based text editor
Filesystem-based text editor
view- 查看文件内容或列出目录create- 创建新文件str_replace- 替换文件中的字符串insert- 在行号处插入文本delete- 删除文件rename- 重命名/移动文件
配置选项
配置选项
StateClaudeTextEditorMiddleware(基于状态)Sequence[str] | None
可选的允许路径前缀列表。如果指定,则只允许以这些前缀开头的路径。
FilesystemClaudeTextEditorMiddleware(基于文件系统)str
required
文件操作的基础目录
list[str] | None
可选的允许虚拟路径前缀列表(默认:
["/"])int
default:"10"
最大文件大小(MB)
完整示例:基于状态的文本编辑器
完整示例:基于状态的文本编辑器
完整示例:基于文件系统的文本编辑器
完整示例:基于文件系统的文本编辑器
记忆
为跨对话回合的持久化代理记忆提供 Claude 的记忆工具 (memory_20250818)。
记忆中间件适用于以下场景:
- 长期运行的代理对话
- 在中断期间保持上下文
- 任务进度跟踪
- 持久化代理状态管理
Claude 的记忆工具使用
/memories 目录,并自动注入一个鼓励代理检查和更新记忆的系统提示词。StateClaudeMemoryMiddleware,FilesystemClaudeMemoryMiddleware
State-based memory
Filesystem-based memory
配置选项
配置选项
StateClaudeMemoryMiddleware(基于状态)Sequence[str] | None
可选的允许路径前缀列表。默认为
["/memories"]。str
要注入的系统提示词。默认为 Anthropic 推荐的记忆提示词,鼓励代理检查和更新记忆。
FilesystemClaudeMemoryMiddleware(基于文件系统)str
required
文件操作的基础目录
list[str] | None
可选的允许虚拟路径前缀列表。默认为
["/memories"]。int
default:"10"
最大文件大小(MB)
str
要注入的系统提示词
完整示例:基于状态的记忆
完整示例:基于状态的记忆
代理将自动:
- 在开始时检查
/memories目录 - 在执行期间记录进度和想法
- 随着工作进展更新记忆文件
完整示例:基于文件系统的记忆
完整示例:基于文件系统的记忆
代理将自动:
- 在开始时检查
/memories目录 - 在执行期间记录进度和想法
- 随着工作进展更新记忆文件
文件搜索
为存储在 LangGraph 状态中的文件提供 Glob 和 Grep 搜索工具。文件搜索中间件适用于以下场景:- 搜索基于状态的虚拟文件系统
- 与文本编辑器和记忆工具配合使用
- 按模式查找文件
- 使用正则表达式进行内容搜索
StateFileSearchMiddleware
配置选项
配置选项
str
default:"text_editor_files"
包含要搜索文件的键。对于文本编辑器文件使用
"text_editor_files",对于记忆文件使用 "memory_files"。完整示例:搜索文本编辑器文件
完整示例:搜索文本编辑器文件
中间件添加了可与基于状态的文件配合使用的 Glob 和 Grep 搜索工具。
完整示例:搜索记忆文件
完整示例:搜索记忆文件
Connect these docs to Claude, VSCode, and more via MCP for real-time answers.

