---
type: study
created: 2026-08-11
updated: 2026-08-11
sensitivity: standard
status: verified
tags:
  - study
  - langchain
  - typescript
  - integrations
  - middleware
  - sandbox
  - deep-agents
topic: LangChain JavaScript 中间件 沙箱与 Deep Agents 后端
sources:
  - https://docs.langchain.com/oss/javascript/integrations/middleware
  - https://docs.langchain.com/oss/javascript/integrations/middleware/index
  - https://docs.langchain.com/oss/javascript/integrations/middleware/anthropic
  - https://docs.langchain.com/oss/javascript/integrations/middleware/aws
  - https://docs.langchain.com/oss/javascript/integrations/sandboxes
  - https://docs.langchain.com/oss/javascript/integrations/sandboxes/index
  - https://docs.langchain.com/oss/javascript/integrations/backends
  - https://docs.langchain.com/oss/javascript/integrations/backends/index
last_verified: 2026-08-11
---
# 中间件、沙箱与 Deep Agents 后端

## 结论

- Middleware 是 context engineering、harness 定制和运行时安全的扩展点；当前官方 provider middleware 重点是 Anthropic/AWS prompt caching。
- Prompt cache 只复用 provider 侧 prefix token，不提供会话记忆；跨 invocation 的历史仍需 checkpointer。
- Sandbox 负责隔离 agent-generated code；Backend 负责 Deep Agents 文件/记忆/工件持久化。隔离与持久化是两个独立控制面。

## 路由去重

以下三组根路由均与各自 `/index` 返回相同正文：middleware、sandboxes、backends。原始 source 仍全部保留。本组共覆盖 8 条路由。

## Anthropic Prompt Caching Middleware

`anthropicPromptCachingMiddleware` 自动在 system message、tool definitions 与最近 user message 设置 cache breakpoint，形成对话式 prefix 复用。适合长且稳定的 system prompt、大量固定工具、多轮复用历史和高并发应用。

- TTL 可为 `5m` 或 `1h`；
- 每次请求缓存到最新消息，下一轮只重算新消息及新增响应部分；
- 简单场景也可直接给 ChatAnthropic content 设置 `cache_control`，middleware 更适合统一控制 system/tool breakpoint。

TTL 不是业务数据过期策略；prompt/tool 版本变化时要确保 cache key/prefix 实际变化。

## AWS Bedrock Prompt Caching Middleware

`bedrockPromptCachingMiddleware` 通过 `modelSettings` 配置，`ChatBedrockConverse` 转为 AWS wire format。支持 Anthropic Claude 与 Amazon Nova，但模型族行为不同：

| 能力 | Claude on Bedrock | Amazon Nova |
|---|---|---|
| system prompt | 支持 | 支持 |
| tool definitions | 支持 | 不支持 |
| message | 支持 | 支持，但排除 tool-result 场景 |
| 1h TTL | 支持 | 不支持，仅 5m |

可配置是否启用、TTL、最少消息数，以及不支持模型时 ignore/warn/raise。cache checkpoint 只有在前缀达到 provider 最小 token 数（文档提示常见至少 1024，模型可能更高）时才生效。

Prompt caching 降低输入 token 成本与延迟，却不会保存 conversation memory。需要跨调用历史时使用 LangGraph checkpointer，例如 MemorySaver 或持久实现。

## Middleware 供应链

目录把 Anthropic 标记为 official integration；社区 middleware（如 task steering、authority enforcement）明确由社区维护，LangChain 不管理或背书。引入前要审计：

- package owner、签名/锁文件、发布历史与维护状态；
- middleware 能读取/修改的 prompt、state、tools 和 credentials；
- fail-open/fail-closed 行为、异常传播和 ordering；
- tracing 是否泄露正文或身份信息。

多个 middleware 的顺序会改变行为，应固定并通过集成测试验证。

## Sandbox

Sandbox 为 agent-generated code 提供隔离执行环境。当前目录列出 LangSmith，以及 Deno、Daytona、Modal、Leap0 等 provider 入口；具体实现细节在各 provider/相关文档，不应从目录卡片推断能力完全等价。

生产 sandbox 基线：

1. 每任务或租户隔离，低权限用户和只读基础镜像；
2. 默认断网或 egress allowlist，禁止访问宿主、cloud metadata 和内部网；
3. CPU、内存、进程、磁盘、文件数、执行时间与输出限制；
4. 仅通过显式 artifact 通道导入/导出，结束后销毁；
5. 镜像、依赖与执行事件审计，敏感输出脱敏。

## Deep Agents Backend

Backend 将 Deep Agents 的虚拟文件、memory、artifact 和 conversation history 映射到数据库、对象存储或虚拟文件系统。当前目录只列出社区 MongoDB VFS Adapter，并明确社区实现不由 LangChain 维护。

Backend 设计必须定义：

- tenant namespace 与对象级授权；
- path 规范化、目录语义和并发写冲突；
- version/ETag、原子写和幂等；
- retention、配额、加密、备份与删除；
- sandbox 只能访问被挂载的 backend 子树，不能自动获得整个持久层。

## 运维验证

- Prompt cache：记录 read/write cached token、命中率、首 token 延迟、TTL 和 provider/model；不要把 cache hit 当 memory hit。
- Middleware：记录版本、顺序、决策与异常，敏感 prompt 只保留摘要。
- Sandbox：监控启动耗时、执行时间、资源超限、网络拒绝与销毁成功率。
- Backend：监控读写延迟、冲突、容量、失败恢复和跨租户访问拒绝。

