别再逼大模型改习惯了:谈 Agent 接口的”顺势设计”

一个关于 --help-h 的启示


一、先讲个段子

假设你在做一个 CLI 工具,发现大模型(比如 GPT-4、Claude)在帮你写文档时,总是倾向于写 --help 而不是 -h

你有两个选择:

选择 A:逼着大模型改,每次提醒它”记住,要用 -h 不是 --help

选择 B:你改,让你的程序同时支持 --help-h

哪个更好?

答案显然是 B。但现实中,我们在设计 Agent 协作接口时,却总在犯选择 A 的错误。


二、从 Claude Code 说起

用过 Claude Code 的人都知道,这东西有多爽。

你不需要记一堆命令,直接说”帮我改一下这个函数”,它就能:

  1. 读懂你的意图
  2. 调用 grep 找代码
  3. 调用 refactor 重构
  4. 调用 test 跑测试

但你看过 Claude Code 的内部实现吗?

它并不是真的理解自然语言,而是把自然语言”编译”成了结构化指令。

你说:"优化这个函数"
     ↓
LLM 解析成:{action: "refactor", target: "foo()", goal: "performance"}
     ↓
执行具体的 CLI 命令

这里的关键是:Claude Code 适配了人,而不是人适配了 Claude Code。

它不说”请使用 /refactor 命令开头”,而是让你随便说,它来猜。


三、Agent 协作的接口问题

现在来到 Agent 与 Agent 之间的协作。

我们面对的是一个类似的问题:

Agent A(用 CrewAI 写的) 想和 Agent B(用 LangGraph 写的) 协作,该怎么通信?

方案 1:自然语言对话

Agent A: "嘿,帮我研究一下量子计算"
Agent B: "好的,你想了解哪方面?"
Agent A: "就...最新的进展吧"
Agent B: "好的,我搜一下..."

问题在哪?歧义太多,回环太多,无法验证。

就像你让两个外国人用蹩脚的英语交流,能听懂,但效率低,还容易错。

方案 2:结构化 JSON(A2A 协议)

{
  "task_id": "123",
  "action": "research",
  "topic": "量子计算",
  "constraints": ["最新进展", "2024年后"],
  "output_format": "markdown"
}

没有歧义,可验证,可追踪。

这就像两个工程师用 API 文档协作,精确、高效。


四、但这里有个坑

很多人听到”结构化”,第一反应是:逼用户写 JSON。

这就是那个 --help vs -h 的问题:

你不要逼着大模型(或用户)改习惯,你要设计系统去适配它。

正确的分层设计

用户说人话(自然语言)
     ↓
【CCG 层】大模型帮你翻译成结构化意图
     ↓
【A2A 层】标准化的 Agent 间通信协议
     ↓
执行

CCG(Claude Code for Gemini) 是什么?

它不是一个具体产品,而是一种设计理念:

  • 对人:保持自然语言的便利(Vibe Coding)
  • 对机器:输出严格的结构化数据

就像 Claude Code 做的那样——你说人话,它内部转 JSON。


五、那 Markdown 呢?

有人可能会问:用 Markdown 行不行?

答案是:看你在哪一层。

层级推荐格式原因
人 → AgentMarkdown人看得舒服,Agent 也能解析
Agent → AgentJSON/YAML精确、快速、无歧义

Markdown 就像邮件,适合人类阅读和写作,但你不应该用邮件来传数据库查询。

A2A 协议选择了 JSON,这是对的。 因为它是机器之间的语言。


六、给开发者的建议

如果你正在构建 Agent 系统,记住这三点:

1. 分层不要混

不要把”人用的接口”和”机器用的接口”设计成同一个东西。

  • 给用户:聊天框、Markdown 编辑器
  • 给 Agent:A2A、JSON-RPC、gRPC

2. 顺势而为

观察你的大模型倾向于怎么输出,然后适配它。

  • 如果它总输出 --help,你就支持 --help
  • 如果它喜欢用 YAML,你就支持 YAML
  • 不要跟它较劲

3. 渐进式结构化

不要一上来就逼用户写 JSON。

阶段 1: 自然语言(Vibe Coding)
阶段 2: Markdown 模板(半结构化)
阶段 3: JSON/YAML(完全结构化)

让用户在舒适区里,慢慢过渡到更精确的方式。


七、总结

回到开头的 --help vs -h 问题:

好的设计不是逼着世界适应你,而是你适应世界。

Claude Code 成功,是因为它适配了人类的自然语言习惯。 A2A 协议成功,是因为它适配了机器需要精确性的需求。

而我们做开发者的,就是要在这两者之间搭一座桥:

让人说人话,让机器做机器事,中间用 CCG 层的智慧来翻译。

这就是未来 Agent 协作的范式。


参考阅读


如果你也在构建 Agent 系统,欢迎交流。毕竟,我们都在探索同一片新大陆。

agent a2a claude-code interface-design developer-experience vibe-coding