AI 时代开发者应该如何做到真正 AI Friendly

3 阅读4分钟

概念来源

"AI Friendly" 并非某一篇论文或某个人的单一发明,而是从几条线索交汇演化而来的:

1. "Machine Readable" 的延伸 早期互联网时代有 "human readable"(语义化 HTML、SEO 友好)和 "machine readable"(结构化数据、schema.org、RSS)的概念。AI Friendly 本质上是这一思路在 LLM 时代的升级版——不只是让爬虫能解析,而是让语言模型能理解和推理。

2. LLM 工具调用(Tool Use / Function Calling)的普及 2023 年 OpenAI 推出 Function Calling,Anthropic 推出 Tool Use,AI 从"问答机器"变成了"能执行操作的 Agent"。这直接催生了一个问题:怎样的 API、文档、系统设计才能让 AI Agent 正确使用?"AI Friendly" 作为工程实践开始被讨论。

3. Andrej Karpathy 的 "LLM OS" 视角 Karpathy 2023-2024 年多次提出 LLM 正在成为操作系统内核的类比——文件系统、API、工具都将被 LLM 调度。这把"如何让系统被 AI 友好使用"提升到了架构层面。

4. MCP(Model Context Protocol)的出现 Anthropic 2024 年底发布 MCP,明确定义了 AI 与外部系统交互的标准协议,这可以看作 "AI Friendly" 在工程规范层面的具体落地。


AI 时代开发者应该如何做到真正 AI Friendly

一、让你的代码对 AI 可读(Code-level)

代码本身就是 LLM 的上下文,可读性直接影响 AI 能否正确辅助你:

  • 命名要语义化,不要 dtmpfn2,要 userSessionDurationparseInvoiceDate。AI 推理依赖语义,缩写是噪音。
  • 函数要小、职责单一。AI 的 context window 有限,一个 500 行的函数让 AI 很难定位问题;20 行的纯函数则几乎总能被正确理解和修改。
  • 类型信息要完整。TypeScript / Python 类型注解不只是给编译器看的,LLM 通过类型推断能准确理解数据结构,减少幻觉。
  • 注释写"为什么",不写"是什么" 。"为什么这里要加锁" 比 "这里加了锁" 对 AI 更有价值。

二、让你的 API 对 AI 可用(API-level)

如果你在构建供 AI Agent 调用的服务:

  • RESTful 语义要严格:动词、状态码、资源命名必须规范。AI 从命名推断行为,POST /user/delete 这种设计会让 AI 产生错误预期。
  • 错误信息要机器可读:返回结构化的错误({ "code": "INSUFFICIENT_BALANCE", "message": "..." }),而不是 HTTP 500 + 一段 HTML 页面。AI Agent 需要根据错误决策下一步动作。
  • 提供 OpenAPI / JSON Schema:这是 LLM 理解你 API 能力边界的最高效方式,也是 MCP Server 的基础。
  • 幂等性:AI Agent 可能因为不确定上次调用是否成功而重试。没有幂等保证的接口在 Agent 场景下很危险。

三、让你的文档对 AI 可索引(Docs-level)

这是目前最被低估的方向:

  • 提供 llms.txt:类比 robots.txt,这是 2024 年兴起的约定——在网站根目录放一个 llms.txt,用简洁的 Markdown 描述你的产品是什么、核心文档在哪里,让 AI 爬取和理解你的内容。Anthropic、Vercel 等已经实践。
  • 文档结构要平坦:深层嵌套的文档树对向量检索不友好。把重要概念放在顶层,可以独立理解的页面比需要上下文的页面更容易被 RAG 正确召回。
  • 代码示例要完整可运行:AI 在理解和生成代码时,完整的 runnable example 比片段更有用,因为它包含了隐含的依赖和上下文。

四、设计 AI-native 的交互模式(System-level)

真正前沿的思考:

  • 暴露意图,而非仅暴露操作。传统 API 暴露 CRUD,AI-friendly 的设计还应该暴露"业务意图接口",比如 POST /order/fulfillment-check 而不是让 AI 自己编排 5 个 API 调用来判断订单能否履约。
  • 提供沙箱/干运行模式。AI Agent 在执行前需要验证方案,提供 dry_run=true 参数可以大幅降低 Agent 犯错的成本。
  • 状态要可查询。Agent 是异步、多步骤的。如果你的系统没有清晰的状态查询接口,Agent 就无法做错误恢复。
  • 操作要可审计和撤销。AI 会出错,软删除、操作日志、undo 机制是 AI 时代的基础设施,不再是可选项。

五、开发者自身的工作流(Workflow-level)

  • 用 CLAUDE.md / .cursorrules 等 context 文件描述你项目的约定、架构决策、不应该碰的地方。这是你和 AI 协作的"说明书"。
  • 把 AI 当 junior dev,不当搜索引擎:给任务、给约束、验结果,而不是问问题、粘贴答案。
  • 测试是 AI Friendly 的基础:有完整测试套件的代码库,AI 修改后可以立刻验证。没有测试的代码库,AI 改一处破一处,你无法信任它。

总结一句话:AI Friendly 的本质是减少模糊性——语义清晰的命名、结构化的接口、完整的类型和文档,让 AI 能在更少幻觉的情况下正确理解和操作你的系统。这和"对人友好的好工程"高度重合,只是对标准的要求更严格了。