ACI:Agent-Computer Interface
工具是 Agent 和世界之间的契约。像设计人机界面一样设计 Agent 界面
本页解决的问题
先给结论「ACI:Agent-Computer Interface」要解决的关键问题是什么?
工具是 Agent 和世界之间的契约。像设计人机界面一样设计 Agent 界面
让这个结论先证明自己值得留下。 把这一页当成决策工具,而不是需要背下来的定义。把概念连到一个真实任务、一个可观察结果,以及一个能改变你判断的失败上。
写下一个问题:试完这个方法后,你能用什么证据回答它?
结论听起来很完整,却没有检查最关键的假设。
传统软件开发中,我们花大量精力设计用户界面(HCI):按钮放在哪里、文案怎么写、交互怎么反馈。但当 Agent 成为系统的用户时,界面变成了工具定义。工具的名字、参数、描述,就是 Agent 的用户界面。
HCI 人 → 系统
ACI Agent → 系统
getWeather("NYC"),每次执行路径完全一样。Agent 工具是非确定性的:模型需要理解什么时候用、怎么用,这完全取决于工具的设计质量。
给模型足够的 Token 空间想清楚
正例:先写 file_path、再写 change_type、最后写 content
格式贴近模型的训练数据
正例:用标准 unified diff 格式,模型在训练数据中见过无数次
避免不必要的格式开销
{"start_line": 15, "end_line": 23} 精确行号正例:用唯一的上下文字符串匹配目标位置
Poka-yoke(防呆设计)
正例:只接受绝对路径,从源头消除歧义
文件路径:相对路径 vs 绝对路径
业界最佳实践建议:像给一个聪明但没有上下文的初级开发者写文档一样写工具描述。这个开发者什么都不知道,但理解力很强,你需要告诉他所有前提条件。
好的工具描述应该包含
工具描述对比
「核心概念:工具是 Agent 和世界之间的契约」为什么要看操作
「传统软件开发中,我们花大量精力设计用户界面(HCI):按钮放在哪里、文案怎么写、交互怎么反馈。但当 Agent 成为系统的用户时,界面变成了工具定义。工具的名字、参数、描述,就是 Agent 的用户界面」把结构落到了一个具体动作。这里真正要比较的不是名词谁更高级,而是数据如何被放置,以及最常发生的操作需要走多远。
读懂结构,要同时看访问方式和变化方式
「业界最佳实践建议:像给一个 聪明但没有上下文的初级开发者 写文档一样写工具描述。这个开发者什么都不知道,但理解力很强,你需要告诉他所有前提条件」揭示了一个容易被忽略的取舍:按位置读取、按键查找、从两端进出、插入新元素和遍历关系,适合的组织方式并不相同。一个结构在某个操作上很快,不代表它在所有操作上都快。
把规模和更新频率一起算进去
实践时可以把「业界最佳实践建议:像给一个 聪明但没有上下文的初级开发者 写文档一样写工具描述。这个开发者什么都不知道,但理解力很强,你需要告诉他所有前提条件」当作边界提醒:先写下数据量、最常用的操作和允许的延迟,再看 AI 给出的结构是否真的匹配。
从「核心概念:工具是 Agent 和世界之间的契约」走到「HCI 人 → 系统」
「核心概念:工具是 Agent 和世界之间的契约」先把问题落在「传统软件开发中,我们花大量精力设计用户界面(HCI):按钮放在哪里、文案怎么写、交互怎么反馈。但当 Agent 成为系统的用户时,界面变成了工具定义。工具的名字、参数、描述,就是 Agent 的用户界面」上;到了「HCI 人 → 系统」,讨论继续推进到「人类通过按钮、表单、菜单与系统交互。UI 设计的好坏直接影响用户体验。 用户点击「查天气」按钮 → 系统调用 getWeather("NYC") → 返回结果给用户 确定性:相同操作 → 相同结果」。两段连起来,重点就不只是记住一个结论,而是看清它成立所依赖的条件。
把这条判断带到下一个场景
遇到一个新的数据结构时,不要从定义开始背。先写出最频繁的操作,再估计数据量和更新方式,最后检查结构是否让这三个条件同时成立。
- 「核心概念:工具是 Agent 和世界之间的契约」:传统软件开发中,我们花大量精力设计用户界面(HCI):按钮放在哪里、文案怎么写、交互怎么反馈。但当 Agent 成为系统的用户时,界面变成了工具定义。工具的名字、参数、描述,就是 Agent 的用户界面
- 「HCI 人 → 系统」:人类通过按钮、表单、菜单与系统交互。UI 设计的好坏直接影响用户体验。 用户点击「查天气」按钮 → 系统调用 getWeather("NYC") → 返回结果给用户 确定性:相同操作 → 相同结果
- 「工具描述的学问」:业界最佳实践建议:像给一个 聪明但没有上下文的初级开发者 写文档一样写工具描述。这个开发者什么都不知道,但理解力很强,你需要告诉他所有前提条件
最后的「工具描述的学问」把讨论落到「业界最佳实践建议:像给一个 聪明但没有上下文的初级开发者 写文档一样写工具描述。这个开发者什么都不知道,但理解力很强,你需要告诉他所有前提条件」。回看这条线索时,最值得保留的是:当输入、规模或风险改变,哪些判断需要重新做一遍。
我把这篇文章里的一个判断改写成了今天可以验证的小实验。比记住结论更有用的是,知道下一步要观察什么。
读完以后我先回头找它成立的条件,而不是直接把方法搬进项目。这个顺序让后面的取舍清楚很多。
如果把这个判断放到真实工作里,最先需要补的约束是什么?我想知道从阅读到第一次实践之间,哪一步最值得先做。
还没有这篇文章的讨论。