学习笔记 · Obsidian

产品层级、Context 与 Memory

LangChainLangGraph

三层技术栈

层级LangChain 代表核心责任何时使用
FrameworkLangChainmodel/tool/message、agent loop、middleware 等高层抽象快速构建标准 agent,保留扩展能力
RuntimeLangGraphdurable execution、state、checkpoint、stream、HITL、低层编排长运行、复杂状态、确定性与 agentic 混合流程
HarnessDeep Agentsplanning、filesystem、subagents、context compression、预置工具多步骤长任务,需要 batteries-included 工作台

三者可以叠加:LangChain agent 运行在 LangGraph 上,Deep Agents 又组合 LangChain/LangGraph 能力。应从满足需求的最高层开始;只有抽象不够时才向下展开,避免同时维护重复的 loop、state 和 persistence。

Python 与 TypeScript 的 /concepts/products 正文相同;TypeScript 还保留一个 /concepts 别名。它们是架构选择页,不是三个互斥产品的营销对比。

Context 的两个维度

Context 按可变性分 static/dynamic,按生命周期分 single-run/cross-conversation:

类型载体生命周期示例
static runtime contextPython runtime context / TS config单次 run,只读user metadata、数据库连接、配置、依赖
dynamic runtime contextgraph state单次 run,可变;有 checkpointer 时可跨 invocation 恢复messages、中间结果、工具观测
dynamic cross-conversationstore + namespace多线程/多会话用户画像、偏好、历史事实

runtime context 不是 LLM prompt,也不是 model context window;它是应用代码安全传递依赖和元数据的方式。只有经过 prompt/middleware/tool 选择的信息才进入模型上下文。不要用进程全局变量承载用户、tenant 或请求状态。

Short-term 与 long-term memory

  • 短期记忆属于 thread state,经 checkpointer 保存;每个 step 开始读、执行后更新。
  • 长期记忆属于 store,自定义 namespace,不受单一 thread ID 限制。
  • 长对话即使没有超过 context window,也会增加成本、延迟和注意力稀释;应 trim、delete、summarize 或把稳定事实迁到 store。

长期记忆可分:semantic facts、episodic experiences、procedural instructions。写入策略有两类:hot path 立即可见但增加延迟和 agent 负担;background 降低主路径延迟但存在新鲜度、调度和重复处理问题。两者都必须有权限、租户隔离、纠错/删除和来源证据。

Provider 与 model

LangChain 用统一 model 接口降低应用层耦合,但每个 provider 仍由独立 integration package 负责版本与特性。provider:model 可自动解析包;新 model name 通常直接透传 provider API,但前提是当前包支持所需 API 版本。

Router/gateway 可以统一凭证、计费、fallback 和负载均衡,却增加一个数据与可用性中间层。OpenAI-compatible endpoint 只保证标准字段;ChatOpenAI 不会自动保留第三方非标准响应字段,需专用 integration 才能可靠使用 provider 特性。

错误索引的意义

Python 与 TypeScript 的 common errors 页是代码到排障文档的入口,异常包含 lc_error_code。主要分两组:

  • LangChain:prompt input、tool result 对齐、message coercion、model auth/not found/rate limit、output parsing;
  • LangGraph:recursion limit、chat history、concurrent update、node return value、missing checkpointer、multiple subgraphs。

错误码应进入结构化日志和告警维度,但不能回显凭证、完整 prompt 或用户隐私。具体原因与修复以各错误页为准,聚合页只负责路由。