通用 Agent 已经很强了。用户可以在 Codex、Claude 或其他 Agent 中整理文档、修改程序、查找资料,再连接不同工具完成任务。
这让垂直应用遇到一个很直接的问题:还需要做自己的 Agent 吗?
如果用户已经有熟悉的 Agent,为什么要在每个应用中重新建立对话、再讲一次背景?但如果垂直应用只提供一组工具给外部 Agent,它又很难深入产品中特有的工作状态与流程。
我在设计 Lantide 时,最后的答案是两者都要,但负责不同的事情。
外部 Agent 保留自己的推理与规划能力,Lantide 提供可搜索的数据分析工具;内置 Agent 则由 Lantide 掌握执行循环,通过状态机深入分析工作流。两个入口最后接入同一个 Control Plane,操作相同的数据、SQL、Plan、结果与报告。
外部 Agent 不需要再学一套工作方式
外部 Agent 最大的价值是通用。
用户原有的对话中可能已经包含需求、文档、代码和其他系统的信息。任务进行到数据分析时,应该直接使用 Lantide,而不是把所有背景搬进另一个聊天框。
因此,Lantide 通过 MCP 向外提供能力。外部 Agent 自己决定如何拆解任务,Lantide 负责告诉它有哪些工具、当前的工作区状态,以及哪些操作需要确认。
这里有一个现实问题:工具会越来越多。
早期版本在 Admin 模式下一次提供 114 个工具,名称、说明与参数结构合计约 158 KB。功能很完整,但 Agent 每次接入都要先面对整本目录。
后来我把入口收敛成 25 个核心工具,其余能力在需要时搜索。Agent 想做统计、修改 HTML 报告或管理数据源时,先用自然语言找到相关能力,再根据返回的 schema 调用。初始工具说明降到约 29 KB,底层功能并未因此删除。
外部 Agent 已经有自己的 loop。Lantide 没有必要在 MCP 后面再藏一个 Agent 指挥它,而是把自己做好,成为一个能被通用 Agent 使用的数据分析环境。
内置 Agent 的价值是理解产品状态
外部 Agent 能操作 Lantide,不代表内置 Agent 就没有价值。
当用户直接在 Lantide 中工作,产品知道当前打开的是哪个工作区、聚焦哪个项目、正在自由探索、规划分析,还是执行已经批准的 Plan。这些状态会决定当前合理的操作。
所以内置 Agent 使用状态机。
规划时,它可以检查数据、厘清方法并建立 Plan;进入执行后,才取得正式执行 SQL、记录进度与建立报告的工具。当操作改变项目或 Plan 状态,工具与 prompt 也会在同一轮更新。
状态机不负责替模型分析。模型仍然决定要查什么、如何拆解问题。状态机负责让它知道自己正处于哪个工作阶段,以及这个阶段有哪些边界。
内置 Agent 也能直接配合界面。它建立 SQL,用户就能看到新的标签页;执行完成后,结果会进入工作区;需要确认时,流程就在界面上暂停。这种深度集成很难只靠一份对外工具说明完成。
两个 Agent,不能有两套领域规则
同时支持内外部 Agent,最容易犯的错误是各做一套。
两套工具、两套权限、两套文档格式,短期看起来比较快,最后一定会产生分歧。用户切换一个入口,之前的工作就无法衔接。
所以我把差异留在 Agent 层,把领域规则收回 Lantide。
内置 Agent 有自己的状态、Ask/Agent 模式与对话确认;外部 Agent 有 MCP Access Mode、session 与执行审批。两者的入口治理不同,但最后都接入共享的工具定义、领域服务与成果契约。
我把这一层称为 Control Plane。它管理工作区状态、操作权限、确认要求、分析对象与执行记录,再把工作交给底层的查询、数据源与文档服务。
外部 Agent 建立的 SQL 和报告,可以回到 Lantide 继续查看与修改;内置 Agent 也能接着处理同一份成果。两边管理数据源时,更新的是同一份状态。外部 Agent 正在写入时,内置 Agent 会暂停,避免同一个工作区被同时修改。
真正让两个 Agent 衔接起来的不是共享聊天记忆,而是共享工作成果。
垂直应用应该掌握什么?
通用 Agent 越成熟,垂直应用越不需要重做通用 Agent 已经擅长的能力。用户应该能带着自己的 Agent、上下文与工作方式进入产品。
但垂直应用仍然要掌握自己的工作世界:有哪些重要对象、工作如何推进、哪些操作需要确认,以及什么才算完成。
Lantide 的分工因此很清楚:外部 Agent 提供广度,内置 Agent 提供领域深度,Control Plane 保证两者操作同一套数据与成果。
这套设计也有成本。每项能力都要考虑内置状态与外部权限,两个入口都要验证,工具搜索和状态路由也各有失败方式。但这些成本换来的不是多一个聊天框,而是让 Lantide 同时成为一个完整的分析产品,以及一个通用 Agent 可以使用的分析环境。
对垂直应用来说,问题已经不是要不要做 Agent,而是产品要把哪一层留在自己手中。
我的选择是:Agent 可以决定如何思考与规划;Lantide 必须定义工作如何发生,以及什么才算完成。