知识集合
Deep Agents 工程教学
从 skills、memory、backend、middleware 到多 Agent、HITL、前端和 A2A 的 Deep Agents 实践。
主题Skills
主题Memory / 记忆
主题Context Engineering
主题Backends / 后端
主题Subagents / 子 Agent
主题Human-in-the-loop / 人机回路
主题Frontend / 前端
Deep Agents Frontend 学习路线
学习主题
01 概述:真实链路与 useStream 暴露了什么
它是什么
02 Subagent streaming:把专家子代理单独展示
它是什么
03 Todo list
它是什么
04 Sandbox
它是什么
05 Frontend HITL
它是什么
06 Dynamic Tools
它是什么
07 MCP + Skills 严格选择
它是什么
08 LangGraph Graph Execution
它是什么
09 Custom Stream Channels
它是什么
10 Markdown Messages
它是什么
11 Tool Calling
它是什么
12 Headless Tools
它是什么
13 Human-in-the-loop
它是什么
14 Branching Chat
它是什么
15 Reasoning Tokens
它是什么
16 Structured Output
它是什么
17 Message Queues
它是什么
18 Join & Rejoin Streams
它是什么
19 Time Travel
它是什么
20 Generative UI
它是什么
21 Frontend Integrations Overview
本章目标
22 Frontend Integration Examples
本章目标
主题Profiles / 模型配置
主题Advanced / 高级能力
Deep Agents 高级能力教学
这个目录继续学习 Deep Agents 里更靠近生产的能力。每章只做一个核心概念,代码放在 deepagentsrc/advancedteach/,讲义放在 deepagentsrc/advancedteach/docs/。
01 Interpreter 与 PTC
Interpreter 是 Deep Agents 的一个轻量代码执行层:模型不只发普通工具调用,还可以写一段 JavaScript 让运行时执行。PTC 是 Programmatic Tool Calling,它把允许的工具暴露到 Interpreter 的 tools 命名空间里,让代码循环、分支、并行调用工具。它
02 Sandbox 生命周期
Sandbox 是 Deep Agents 的执行环境后端:它让 Agent 不只读写文件,还能通过 execute 跑命令。生命周期问题解决的是“这个环境什么时候创建、什么时候复用、什么时候销毁”。生产里最常见的是 threadscoped:每个 conversation 一个 sandbox,同一个 threadi
第三章:Event Streaming
Event Streaming 是把一次 Agent 运行拆成连续事件:模型消息、工具开始/结束、状态快照和最终输出都会按运行过程吐出来。它解决的是前端不能只等最终答案的问题,IDE、聊天窗口、工具执行面板都需要边跑边更新。Deep Agents 继承 LangGraph 的流式协议,并额外提供面向子代理的 subag
第四章:Fault Tolerance
Fault Tolerance 是让 Agent 在真实生产错误里继续可靠工作的能力。它不是把所有异常吞掉,而是按错误类型分流:临时网络错误自动重试,可由模型修正的工具错误转成 ToolMessage,需要人判断的操作交给 HITL,无法处理的未知异常直接暴露给开发者。
第五章:Going to Production
生产 Deep Agent 的核心不是“把本地 agent 变量直接部署出去”,而是让每个 run 带着稳定的 threadid 和本次请求的 context。当后端资源依赖 threadid,例如 threadscoped sandbox 时,导出的 Agent 应该是 async graph factory:平台每
第六章:Rubric 与 Evaluation
Rubric 是把“做好”写成可判断标准,避免只凭感觉说 Agent 输出不错。RubricMiddleware 在一次 Deep Agent 运行内做 runtime LLMasajudge:工作 Agent 输出后,独立 grader 依据 rubric 给出 satisfied、needsrevision 或 f
第七章:Multimodal
Deep Agents 的内置 readfile 不只读文本。对受支持的图片、PDF、音视频文件,它会返回标准多模态 content blocks,让支持对应模态的模型直接检查文件内容,而不是把二进制转成乱码塞进 prompt。
第八章:模型能力注册表与运行时模型路由
模型名称不是能力声明。前端可以提交 modelid,但服务端必须用受控注册表确认它确实允许使用,并且满足本轮任务的能力要求;不能把任意 provider/model 字符串直接透传给 initchatmodel。
主题Middleware / 中间件
Middleware 学习路线
这组小章节专门补 Deep Agents / LangChain / LangGraph 里的 middleware。代码放在 deepagentsrc/middlewareteach/,讲义放在 deepagentsrc/middlewareteach/docs/。
第一章:生命周期钩子 `before_model` / `after_model`
这两个 hook 是最基础的 middleware 入口:beforemodel 在每次模型调用前执行,aftermodel 在模型返回后执行。它们适合做日志、限流标记、状态统计、轻量校验;不适合改写整个模型调用流程,那是 wrapmodelcall 的活。
第二章:`wrap_model_call`
wrapmodelcall 是包住模型调用的 middleware:你可以选择调用 handler(request),也可以不调用它直接返回。它解决的是模型层控制问题,比如改模型请求、统计调用、fallback、缓存命中、短路返回。
第三章:`wrap_tool_call`
wraptoolcall 是包住工具执行的 middleware:它拿到模型发出的 tool call,调用 handler(request) 后工具才会真正执行。它解决的是工具层控制问题,例如审计、重试、错误转译、结果改写和敏感信息过滤。
第四章:Deep Agents 默认 middleware 栈
Deep Agents 不是另起炉灶的 Agent runtime,它是把 LangChain agent loop 和一组默认 middleware 打包成 harness。createdeepagent(..., middleware=[...]) 里的自定义 middleware 会插入 Deep Agents
第五章:综合案例
本章把 wrapmodelcall、wraptoolcall 和 createdeepagent 放到同一条真实流程里。wrapmodelcall 观察模型层调用,并对临时上游错误做最小重试;wraptoolcall 观察并改写工具结果;Deep Agent 负责真实调用模型并决定工具调用。
06 类中间件与 `state_schema`
AgentMiddleware 类写法适合把多个 hook 和它们共享的配置放在一起。stateschema 用来扩展 agent state,让 middleware 能把计数、标记、审计结果这类运行时信息写回最终 state。它不是全局变量,也不是系统提示词,作用域是这次 agent run 的状态。
主题A2A / 远程 Agent
A2A 教学
这个目录学习如何把 Deep Agent 暴露成标准 A2A Server,以及如何作为 Client 调用远端 Agent。
第一章:通过 A2A 暴露 Deep Agent
A2A 是 AgenttoAgent 协议:调用方先读取远端的 Agent Card,了解它的接口和 Skill 元数据,再发送任务并接收 Message 或 Task。它不是 Deep Agent 的 task 工具,也不是 MCP;本例把一个真实 Deep Agent 包在 A2A Server 中,让另一个 A2
第二章:A2A 流式状态、超时和取消
代码在 deepagentsrc/a2ateach/02streamingandcancel.py。
第三章:认证与远端能力授权
代码在 deepagentsrc/a2ateach/03authandremotecapabilities.py。
第四章:多个远端 A2A Agent 编排
代码在 deepagentsrc/a2ateach/04multiagentorchestration.py。