代理在有选择的情况下更倾向于使用结构化查询而非自然语言。
Cala的团队在LinkedIn上分享了一项值得深入思考的发现。他们推出了一款MCP服务器,支持三种知识图谱的访问模式:自然语言查询、结构化查询语言和直接的实体/关系遍历。
他们原本预期代理会默认使用自然语言。然而,实际上大多数代理自主切换到了结构化查询和图谱遍历。没有任何提示,也没有任何引导。
显而易见的解释是“代理更喜欢效率。”我认为这并不完全正确。他们真正偏好的其实是确定性。
自然语言查询引入了两个解释层次:代理生成一条散文形式的查询,系统对这段散文进行解释,然后返回一个结果,代理需要解析这个结果。在这个过程中,代理无法验证查询是否被正确理解。而使用结构化查询时,契约是明确的。代理确切知道自己请求了什么,并且可以验证返回的结果。
这并不是对效率的自发偏好,而是工具使用的思维链条在正常发挥作用:选择一个代理可以最可靠地确认自己得到了正确答案的路径,然后再进行下一步。
如果这一点成立,可能会有几个影响:
- 以自然语言为首的工具接口可能在为错误的用户优化。人类操作员想要自然语言,而代理并不需要。
- 仅暴露自然语言端点的MCP服务器正在迫使代理通过一个非确定性的瓶颈,而如果有选择的话,他们会避免这个瓶颈。
- 针对代理的工具设计应该默认使用结构化访问,以自然语言作为备用,而不是反过来。
查看原文
Cala's team shared a finding on LinkedIn that's worth sitting with. They shipped an MCP server with three access patterns for their knowledge graph: natural language queries, a structured query language, and direct entity/relationship traversal.<p>They expected agents to default to natural language. Instead, most agents switched to structured queries and graph traversal on their own. No prompting, no nudging.<p>The obvious explanation is "agents prefer efficiency." I don't think that's quite right. What they prefer is determinism.<p>A natural language query introduces two interpretation layers: the agent generates a query in prose, a system interprets that prose, then returns a result the agent has to parse. At no point can the agent verify the query was understood correctly. With a structured query, the contract is explicit. The agent knows exactly what it asked for and can verify what it got back.<p>This isn't an emergent preference for efficiency. It's tool-use chain-of-thought doing what it's supposed to do: picking the path where the agent can most reliably confirm it got the right answer before moving to the next step.<p>A few implications if this holds up:<p>- NL-first tool interfaces might be optimizing for the wrong user. The human operator wants NL. The agent doesn't.
- MCP servers that only expose NL endpoints are forcing agents through a non-deterministic bottleneck they'd avoid if given the choice.
- Tool design for agents should probably default to structured access with NL as a fallback, not the other way around.