学习笔记 · Obsidian

中间件、沙箱与 Deep Agents 后端

LangChainTypeScript

结论

  • 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 BedrockAmazon 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:监控读写延迟、冲突、容量、失败恢复和跨租户访问拒绝。