产品里的智能体为什么总“瞎”:Harmonic 的上下文可见性法则

2026-08-09
听中文精华AI 合成朗读00:00
自从我们切换到 deep agents 以来,我们从第一周到第四周的留存率提高了四倍。
— 嘉宾

关联

智能体做个产品界面,你满怀期待地把搜索结果和可视化图表渲染得漂漂亮亮,用户一问“为什么这家公司排在左边”,智能体却当场死机,回了一句“我不知道”。这恰恰是创业生态数据库 Harmonic 在打造其 AI 助手 Scout 时,踩过并最终趟平的坑。

这一集里,Harmonic 团队分享了他们如何从早期繁杂的解析图架构,全面切换到前沿模型加 Deep Agents(一种帮模型管理上下文、调用工具的智能体框架)的组合。你会听到三块内容:首先是他们抛弃旧架构后,如何用 50 个工具让智能体执行长链路复杂任务;接着是核心痛点——智能体偏爱代码和结构化数据,而非技术用户根本不想看这些,如何调和这种张力?最后是本集精华:他们提炼出的一套 UX 设计法则,即如何通过“渐进式披露”,确保前端展示的任何东西都不会对模型“隐形”。

说完了这一集的来龙去脉,来看看 Scout 是怎么脱胎换骨的。大概一年半前,Scout 1.0 采用的是一个复杂的 LangGraph 查询解析图。

它把用户的自然语言拆成各个语义部分,分别路由给自定义搜索语言和嵌入(一种把文本转化为向量的技术)去处理。图里的每个节点都有各自的模型和评估,需要疯狂调优,维护成本极高。

后来前沿模型能力提升,他们果断切换到了 Deep Agents。新架构变得极其精简,核心就是一个工具调用循环:模型在中间,外围是通过中间件挂载的一堆工具。他们给智能体配了 50 个连接生态的工具,从搜索实体到操作用户 CRM 应有尽有,智能体不仅能准确选对工具,还能极好地执行复杂的组合任务。

架构变简单了,Deep Agents 的上下文管理也立了大功。为什么这点如此关键?

当用户执行一次公司搜索,返回的结果可能包含上千家公司,每家又嵌套着团队和融资信息,实际响应轻轻松松就能达到上万行。如果直接把这些塞进传给模型的消息列表里,上下文很快就会爆炸。

Deep Agents 的核心优势就是管理上下文:当消息列表变长时它会自动运行压缩;对于返回数千行的工具调用,它会启用工具调用驱逐机制,把结果转存到文件系统里,只返回给模型一个轻量级的指针,模型可以按需读取,从而不被海量数据污染。正是这种强大的支撑,让 Scout 从第一周到第四周的用户留存率翻了四倍。

底层机具(harness,即管理和调度模型、工具与上下文的框架)的能力这么强,新的张力又出现了:这些智能体天生喜欢代码。它们被海量编码任务和结构化 JSON 训练过,动不动就往对话里输出 XML 或文件路径。

但 Harmonic 的绝大多数用户是 VC 机构里的非技术人员。他们要的是可以直接点击的公司列表和漂亮的交互界面。要打造一款真正好用的产品,就必须调和这种张力:既要给模型自由推理和行动的主观能动性,又要构建高度可预测的交互式 UX。

要理解怎么调和这种张力,就必须明白机具与模型之间的“上下文契约”。你可以这样理解:每次调用模型,你传入的都只是一个消息列表。

机具的职责,就是确保这个列表不触及容量上限或发生上下文腐烂(context rot,即上下文过长导致模型理解能力下降)。因此,消息列表里的内容模型一定看得见;而被机具卸载到外围的内容,则必须通过工具按需取用。

这就引出了本集最核心的法则:对于最终呈现给用户的 UX,模型必须有“渐进式可见性”——要么直接放在消息列表里,要么提供工具让模型能一步步去探查。否则,在模型眼里它就是彻底不存在的。

模型为什么必须“看得见”界面上的东西?拿可视化图表举例。

模型自己就很擅长吐出 HTML 或 SVG 代码来做行业图谱。这时候,绝对不能用那种“掩耳盗铃”的错误做法:即暴露一个叫“渲染数据”的工具,前端拦截后渲染图表,只给模型返回一句“执行成功 true”。

这种做法灾难性的后果在于,一旦用户指着屏幕问“为什么这家公司放在左侧?”,模型会彻底宕机,因为它根本不知道前端干了什么。

正确的做法是,让模型的输出直接留在消息列表里,用类似 XML 的标签包裹住图表代码。前端照常拦截并渲染出漂亮的界面,但最关键的是,模型对图表的全貌一清二楚。用户让它“把背景色换掉”,它完全有能动性去修改。

图表这种小东西留在消息列表里没问题,但搜索公司返回的成千上万条结果该怎么办?同样的道理,最幼稚的做法是“发后即忘”(fire and forget):模型触发搜索,前端立刻渲染出并列的结果列表,但结果信息压根没传回给模型。

用户如果问“第二家公司的 CEO 是谁”,模型毫无上下文,也无法建立上下文。更好的解法是,让工具返回一个搜索 ID 和结果计数,模型据此通过工具去抓取前 10 条结果来建立认知。

而最优雅的“原生解法”,则是把 Deep Agents 的文件系统当作智能体、前端以及各种后台进程的共享存储空间。模型可以触发一个后台搜索智能体,持续将排序好的数万条结果写入共享文件系统;前端实时读取并渲染这些结果;与此同时,如果用户提问,主智能体能随时使用 grepls(文件查找与列表指令)读取特定片段来作答。三方完美和谐。

本集带走

最后收个尾,这一集值得带走的是一条核心判断与三个实操心法。核心判断是:智能体本质上就是模型加上机具,当你想把它变成产品加上 UX 时,UX 必须遵守机具与模型共享上下文的底层规则。

第一个心法,模型对展示给用户的任何产物都必须具备“渐进式可见性”。你要么把它放在消息列表里,要么给它配套工具去读取,否则界面上渲染得再绚丽,在模型眼里也是一片虚无。

第二个心法,绝对不要用“只返回成功”的工具去糊弄模型,这会彻底切断模型的能动性。你要么让产出物留在对话流里,要么让前端和模型都能从同一个文件系统里去读写数据。第三,如果你在设计时发现自己总在对模型说“相信我,用户会看到这个效果,你别管了”,赶紧停下——这说明有东西脱离了模型的感知边界,你需要回到第一性原则,重新梳理上下文的流动。

【背景】Harmonic 是一家提供创业生态实时数据库的公司,宣称追踪了数千万家公司和数亿从业者。LangChain 是一家专注于大语言模型应用开发的公司,其开源框架被广泛用于构建智能体工作流。

全部金句 5 条

自从我们切换到 deep agents 以来,我们从第一周到第四周的留存率提高了四倍。
We have four times the retention from week one to week four since we switched over to deep agents.
—— 嘉宾 · [01:30]

我们发现的核心张力在于,这些智能体喜欢看起来像代码的东西。
The central tension that we found is that these agents love things that feel like code.
—— 嘉宾 · [06:03]

这是在确保模型拥有主观能动性来自由推理和行动与构建一个 UX 之间的张力,这个 UX 需要具有很好的交互性,具有以可预测和确定性方式渲染的丰富元素。
the tension between making sure the model has agency to reason and act freely with building a UX that’s kind of nicely interactive, has rich elements that are rendered in a predictable and deterministic way.
—— 嘉宾 · [06:47]

如果你正在构建一个 UX,并且有一些东西与对话并排很好渲染,但它既不存在于消息列表中,也没有被机具卸载并提供发现它的方式,那么它对智能体来说本质上就是不可见的。
if you’re building a UX and you have something that’s nicely rendered side by side with the conversation, but it doesn’t exist either in the message list or offloaded by the harness with a way to discover it, it’ll be essentially invisible to the agent.
—— 嘉宾 · [08:32]

智能体根本不知道实际发生了什么,因为它基本上只是向虚空发射东西,然后得到一些成功消息。
The agent has no idea what actually happens because it’s kind of just firing something into the void, getting back some success message.
—— 嘉宾 · [09:53]

接着看

顺着「智能体」挖下去

换个口味