New context engineering challenges in late 2026 · 干货攻略

  • 链接: https://x.com/hwchase17/status/2116553654857867330
  • 分类: x-tips
  • 来源: X @hwchase17(Harrison Chase,LangChain 联合创始人兼 CEO)
  • 作者: Jay
  • 更新: 2026-11-03
  • 仓库: https://github.com/langchain-ai/deepagents

这是什么

2026 年 10 月 31 日,LangChain 的 Harrison Chase 在 X 发了一条短推文,指向他的一篇 X 长文《New context engineering challenges in late 2026》。推文正文很短:

A lot of content engineering challenges have pretty standard solutions, which has lead to some engineers saying agent engineering is solved/boring. True to some extent, but there are a bunch of (fun) new ones emerging as agents evolve!

注意推文里写的是 "content engineering",这是笔误——他在正文和官方博客里讨论的都是 context engineering(上下文工程)。

核心命题是:"Agent 工程已经解决了"这个说法只对了一半。 上下文工程确实已经沉淀出一批标准解法(长对话摘要、大工具结果卸载、Skills 渐进式披露、Tool Search、Subagent 上下文隔离、把 Bash 当主工具),这也是很多工程师觉得"没什么新东西可做了"的原因。但他观察到,过去几个月 agent builder 的关注点集体转向了 proactive / always-on / goal-oriented(主动、常驻、目标导向) 的 agent,而这类 agent 引出的是一批全新的、目前业界尚无通用解法的上下文工程问题。

全文长文在 X 上(需登录,链接 https://x.com/i/article/2116547440857718784 ),同一作者把它发表在 LangChain 官方博客(2026 年 11 月 2 日,标注 5 min read),本篇攻略以博客全文为权威版本。


核验来源

官方来源(已逐条读取)

来源 用途
https://x.com/hwchase17/status/2116553654857867330 推文原文与作者身份,经 X oembed 接口确认发布时间 2026-10-31 15:31 UTC
https://www.langchain.com/blog/context-engineering-challenges-late-2026 长文官方全文,作者 Harrison Chase,2026-11-02 发布
https://docs.langchain.com/oss/python/deepagents/overview Deep Agents harness 能力边界与 create_deep_agent 入门写法
https://docs.langchain.com/oss/python/deepagents/subagents 同步 subagent 配置(subagents 参数、GeneralPurposeSubagentProfile)
https://docs.langchain.com/oss/python/deepagents/async-subagents 异步 subagent(AsyncSubAgent、graph_id/url、任务更新与取消)
https://docs.langchain.com/oss/python/deepagents/memory 记忆的分层落盘写法(CompositeBackend / StateBackend / StoreBackend)
https://docs.langchain.com/oss/python/deepagents/skills Skills 的三层加载机制与 frontmatter 撰写规范
https://docs.langchain.com/oss/python/deepagents/quickstart 安装与最小可运行示例(pip install deepagents)
https://pypi.org/pypi/deepagents/json 包版本 0.7.32(官方 PyPI 元数据)
https://github.com/langchain-ai/deepagents 主仓库 langchain-ai/deepagents(仓库自述:"The batteries-included agent harness")

未能直接读取的部分:X 长文页 x.com/i/article/2116547440857718784 需要登录才能渲染(无登录访问会被重定向到登录引导页),因此正文内容取自同作者、同标题的官方博客版本,二者标题与作者一致,可视为同一文本的两次发布。


文章给出的六类新难题

这是全文最有价值的部分,也是"到底什么没被解决"的答案清单:

  1. 主动但不打扰(How to be proactive without being annoying) 常驻 agent 靠监听事件流或心跳唤醒,需要主动向用户推送信息。推送太少没有帮助感,推送太多会造成打扰。如何把这个"不too much、不too little"的量校准好,目前没有通用解法。

  2. 记忆(Memory) 记忆系统由"底层数据结构"+"围绕数据的智能层(本身就是一个小 agent)"两部分组成。数据结构其实很简单(文件、单条字符串),最难的是这个智能层该记住什么、何时记住。两个极端都容易翻车:什么都不记,或记得过于碎片化。

  3. 异步(Async) agent 运行时间越来越长,且互相调用的工具/子 agent 运行时间也越来越长,但面向用户的主 agent 必须保持对新消息的响应。结果就是大量工作下沉到异步工具和异步 subagent。随之而来的新问题:主 agent 如何被通知"活儿干完了"?主 agent 还在跑 / 已结束 / 卡在等待人工审批,分别该怎么处理?

  4. 目标追踪(Goal Tracking) agent 从"执行任务"转向"追求目标"。需要能拆解目标、做实验、拿反馈、持续迭代。既要让它真的去尝试新实验(而不是重复老路),也要让它思考大目标而不是碎任务,还要在长时间跨度上保持一致。

  5. 对齐(Alignment) 目标设计本身就是难题:用户要设计出 agent 无法作弊的目标。经典反例是"消灭代码库里的所有 bug"——agent 直接把代码库删了(没有代码 = 没有 bug)。作者引用 DeepMind 的 specification gaming 来说明:盲目优化目标会达成目标,却用我们预料不到的方式作弊。怎么设计 harness,让 agent 不仅盯住目标,又不过度优化目标,是开放问题。

  6. 浏览器使用(Browser Use) 编码 agent 的关键工具是能跑代码的 Bash;通用 agent 里,浏览器正在接替这个位置。但浏览器比终端难驱动得多:跟图片交互还是跟 DOM 交互?两者都是巨大的对象,上下文怎么管?


上手步骤

文章本身是观点文章,不含代码。但每一类新难题在 LangChain 自家 harness(Deep Agents)里都有对应的官方机制,下面是按官方文档可验证的落地路径。

第 1 步:装环境(官方 quickstart)

pip install deepagents
# 或 uv:uv init && uv add deepagents && uv sync

当前 PyPI 官方版本为 0.7.32。Google / OpenAI / Anthropic 三家都有内置联网搜索工具,不需要额外装包和额外 API key;用别家模型或想用 Tavily 才需 pip install tavily-python。

第 2 步:最小可运行 agent(官方 overview 写法)

from deepagents import create_deep_agent

def get_weather(city: str) -> str:
    """Get weather for a given city."""
    return f"It's always sunny in {city}!"

agent = create_deep_agent(
    model="anthropic:claude-sonnet-5",
    tools=[get_weather],
    system_prompt="You are a helpful assistant",
)

agent.invoke({"messages": [{"role": "user", "content": "what is the weather in sf"}]})

模型字符串用 provider:model 格式(如 openai:gpt-5.5、google_genai:gemini-3.6-flash、anthropic:claude-sonnet-5),均为官方文档给出的示例。

第 3 步:对齐"上下文隔离"——同步 subagent(对应文章"上下文已标准化"的那部分)

subagent 的作用是 context quarantine:主 agent 只收到最终结果,而不是产生它的几十次工具调用。

agent = create_deep_agent(
    model="openai:gpt-5.5",
    subagents=[{
        "name": "researcher",
        "description": "Research agent for information gathering and synthesis",
        "system_prompt": "你负责资料收集,只返回结论摘要",
        "tools": [search_tool],
        "mode": "isolated",      # 默认值:子 agent 只看被委派的任务
        "model": "openai:gpt-5.5",
    }],
)

字段均为官方 spec:name/description 必填,system_prompt 对 isolated 模式必填,mode 可选 "isolated"(默认)或 "fork"(继承父对话与系统提示)。

不想带委派能力时,官方给的唯一正确路径是关掉默认 general-purpose subagent:

from deepagents import create_deep_agent
# 在当前 harness profile 上设置:
# general_purpose_subagent = GeneralPurposeSubagentProfile(enabled=False)
# 并且不要通过 subagents= 传入任何同步 subagent

文档明确写了:不要用 excluded_middleware 排除 SubAgentMiddleware,那是必需的脚手架,列出来会抛 ValueError。

第 4 步:对齐"异步"——Async subagent(对应文章 Async 难题)

from deepagents import AsyncSubAgent, create_deep_agent

async_subagents = [
    AsyncSubAgent(
        name="researcher",
        description="Research agent for information gathering and synthesis",
        graph_id="researcher",   # 对应 Agent Protocol server 上的 graph id
        # 不传 url → ASGI 传输(同部署内进程内调用)
        # url="https://coder-deployment.langsmith.dev"  # 传了则走 HTTP 传输
    ),
]
agent = create_deep_agent(model="google_genai:gemini-3.6-flash", subagents=async_subagents)

同步 vs 异步的差别(官方表格):异步立即返回 job id、supervisor 不阻塞、可并行不阻塞、可中途下发后续指令(update_async_task)、可取消运行中的任务(cancel_async_task)、子 agent 自身保持状态。异步子 agent 需要跑在实现 Agent Protocol 的 server 上(LangSmith Deployment 或自建的兼容服务)。

第 5 步:对齐"记忆"——分层落盘(对应文章 Memory 难题)

官方记忆文档把记忆分成:Deep Agents 自带的 checkpointer(会话即 episodic memory 线程)、把历史会话搜索包成工具(client.threads.search,按 user_id 或 org_id 过滤)、以及组织级记忆(用 CompositeBackend 路由路径到不同的 backend):

from deepagents import create_deep_agent
from deepagents.backends import CompositeBackend, StateBackend, StoreBackend

agent = create_deep_agent(
    model="google_genai:gemini-3.6-flash",
    memory=["/memories/preferences.md", "/policies/compliance.md"],
    backend=CompositeBackend(
        default=StateBackend(),
        routes={
            "/memories/":  StoreBackend(namespace=lambda rt: (rt.server_info.user.identity,)),
            "/policies/":  StoreBackend(namespace=lambda rt: (rt.context.org_id,)),
        },
    ),
)

组织级记忆官方建议设为只读,以防通过共享状态做 prompt injection。记忆写入还有两条路线:对话热路径直接写(即时可用但增加延迟、agent 需要多任务并行),或"睡眠时间"后台整合(延迟但可批量整理)。

第 6 步:对齐"渐进式披露"——Skills(对应文章 Skills 条目)

SkillsMiddleware 的三层机制:① 发现——启动时扫描 skill 路径,解析 SKILL.md frontmatter,只把 name 和 description 注入系统提示;② 读取——agent 调用 skill 时才读全文;③ 执行——按需读取引用脚本/资源。官方建议 SKILL.md 正文控制在 5000 token 以内、500 行以内,description 要写清"做什么 + 什么时候该激活",同域技能的描述要能区分开。


适用边界

  • 这是一篇观点/趋势文章,不是教程,也不是规范。 文中六类问题,作者自己写明"我们(LangChain 以及业界)并不一定有解,至少没有通用解"。它适合用来判断该不该把项目往 proactive agent 方向推、以及提前识别哪几块需要自研;不适合当设计依据直接照抄。
  • 文中所有观点都只有 Harrison Chase 一个来源。 除了博客正文与他引用的官方文档,文中并无第三方数据、基准或论文佐证;没有出现可核验的性能数字、采用率或收益数据,因此本篇不引用任何量化结论。
  • 作者有立场。 他是 LangChain CEO,文中多处引用自家产品(Deep Agents)和自家博客作为例证(包括"proactive agents""ambient agents""company harness"等文内链接),读者应把其中的产品选型倾向与问题描述分开看。
  • 上下文工程"已解决"的清单是有条件的。 摘要、大结果卸载、Skills、Tool Search、Subagent 隔离、Bash 主工具这一套成立的前提是:agent 是被动应答、请求-响应式的。一旦转入常驻、异步、目标导向,文章列出的六类难题就重新出现——这两件事并不矛盾。
  • 上手步骤基于 Deep Agents 官方文档,属该 harness 的当前实现,不是跨框架通用做法;文中代码片段均取自官方文档页面,未做改写。deepagents 版本号为读取时(2026-11-03)的 PyPI 官方元数据,后续会变动。
  • Deep Agents 只是文章观点的一个实现载体。 它提供的 subagent 隔离、异步任务、记忆落盘、Skills 加载,恰好对应文章里"已标准化"的那部分;对 proactive 打扰度校准、目标反作弊、浏览器上下文管理,官方文档中并没有对应的通用开关。

未决与不确定

  • X 长文页本身未能在无登录状态下读取,正文以官方博客版本为准;若博客与长文后续出现修订差异,以修订后的官方博客为准。
  • 文章提到的 "ambient agents"(事件驱动常驻)与 "Hone" 等具体项目,本文仅转述作者引用,未逐一核验其官方文档。
  • 文中"Claude Code 一年半前发布""Deep Agents 一年多前发布"等时间表述转述自作者原文,未做独立时间线核对。