笔记
说明书之外

最近,一种软件使用方式变得越来越常见:把目标直接交给 AI。
“帮我把这件事做完。”
很多时候,说到这里就够了。
用户不需要先判断文件为什么打不开,也不需要告诉 AI 应该改哪项配置、调用哪个工具、按什么顺序操作。问题会在执行中出现,AI 会读报错、查文档、检查配置和文件格式。正常路径走不通,它可能写脚本、调用命令行,在几个软件之间转换数据,或者补上原软件缺少的那一小段能力。
用户交出去的是目的。中间路径,由 AI 自己寻找。
对软件来说,事情也变了。它原本为用户安排好的用法,不再等于用户实际采用的用法。
界面是一种预测
软件界面从来不只是外观。
菜单放在哪里,按钮何时出现,一项操作要经过几步,哪些功能可以放在一起,都包含了开发者对用户行为的预测。
公开 API 也是一种用法设计。它把厂商愿意长期承诺的能力整理成一组入口,也表达了产品希望外部系统怎样使用自己。
当软件主要由人操作,这种预测通常有效。大多数人会顺着界面找功能,也会把没有按钮、没有文档、没有 API 的地方理解成:这个软件做不到。
AI 不一定这样看。
它先面对用户目标,然后才看到某个产品提供的流程。界面走不通,不代表任务走不通。只要还有可读状态、可调用能力或可转换数据,它就可能继续找路。
于是,界面仍是推荐用法,却不再天然等于实际边界。
软件会被拆开
关键变化不是 AI 能替人点击多少按钮,而是把目标翻译成软件操作的工作,也交给了它。
它会决定用哪个工具,绕过哪段流程,在哪里补一点代码,哪些中间产物用完就可以丢掉。同一个 AI 先是用户,随后又临时成为集成者、维护者和开发者。
用户说得更少,软件反而可能被用得更深。
一个旅行应用可以被正常打开,用来安排每天的行程;也可以只贡献地点和日期,再由另一个工具生成提醒。一个排版工具可以提供完整编辑体验,也可以只贡献分页、字体检查或 PDF 导出。一个桌面软件即使没有公开 API,也可能通过文件格式、命令行和自动化操作进入更大的执行过程。
完整产品没有失去价值,只是同时成了可以拆用的材料。
面对当前任务,“功能是否完整”不再是唯一判断。更实际的问题是:它是否已经足够。
有缺陷的软件,加上一段临时修补和可靠验证,也许可以完成眼前工作。功能完整的产品,放进另一条流程,也许只剩一个很小的作用。
这种“足够”只对当前任务成立。它不能证明原软件正确,也不意味着临时绕行值得长期保留。它只说明,在眼下的环境、权限和验证条件里,这个组合能工作。
限制露出真身
人与软件之间曾经有一道自然分工:用户使用,开发者修改。
AI 让这道分工松动了。
厂商流程阻碍用户目标时,AI 未必等待下个版本。它可能换一种调用方式,改本地配置,加一层封装,转换文件,或者直接修补实现。
过去,产品流程和真正的系统约束常常混在一起。没有按钮、没有导出入口、没有公开某种组合方式,看起来都像边界。只要大多数用户停留在界面里,这些边界便足够有效。
AI 会把差别暴露出来。
有些限制保护数据一致性、账户安全和不可逆操作;有些只是厂商组织功能的方式。前者决定系统能否可靠运行,后者只是众多路径中的一条。
设计者未必能阻止 AI 找到别的路径,更无法控制用户手里的代码、文件和结果之后会被怎样处理。真正要问的是:
这项限制究竟保护了什么?
如果答案是资源、安全和不可逆后果,它就应该落在真正产生影响的系统层,而不是只靠界面隐藏入口。
如果答案只是产品偏好的操作顺序,AI 很可能会拆开它,重新组合它,甚至找到更短的路。
软件成为参照物
AI 不只会使用和修改软件,也会观察它。
它可以根据输入输出、界面行为、错误信息、文件结构和实际结果,推测软件在做什么,再写出一个新工具。
新工具可能包裹原软件,可能组合几个现成系统,也可能完全不再依赖原实现,只把它的行为当作参考。
到了这一步,普通依赖关系已经说不清两者的联系。新工具不再加载原软件,不表示它和原软件毫无关系。接口习惯、行为假设和操作语义,仍然可能被继承。
问题是,软件表现出来的行为并不是完整规格。
里面有设计选择,也有兼容补丁、历史偶然和未修复的缺陷。AI 可以模仿结果,却未必知道哪些行为值得保留。一个看起来忠实的重新实现,也可能把旧软件的错误一起继承下来。
所以,只比较结果是否相似不够。还要追问:新工具继承了什么,哪些行为出自有意设计,哪些只是历史留下的痕迹,以及它凭什么相信自己的实现仍然可靠。
看不见不再等于守得住
AI 没有让闭源软件自动变成开源。源代码是否可得,仍然影响审计深度、修改精度和长期维护成本。
但开闭源的区别,越来越难只用“别人看不到实现”来解释。AI 可以观察行为,分析接口、本地文件和运行结果,再重现相当一部分能力。闭源仍能限制直接复制,却不再天然阻止理解、适配和近似实现。
于是,差别会更多落在许可证、合同、服务控制、数据归属,以及开发者愿意建立怎样的协作关系上。闭源不只是隐藏代码,开源也不只是公开文本。它们代表不同的控制方式、信任基础、传播路径和商业空间。
设计者也要重新算一笔账:产品价值究竟来自实现不可见,还是来自服务、数据、品牌、社区和持续演进?
AI 不会替所有项目给出同一个答案,但会让单靠保密维持的壁垒越来越不稳。
意图离开原作者
软件发布以后,原作者仍然可以说明它为什么存在,提供推荐流程,也可以决定公开承诺哪些接口。
但当 AI 成为直接用户,原作者很难再预设下游意图。
软件可能被放进一个从未考虑过的任务,和完全无关的工具组合,或者被改造成面向另一类用户的新产品。原来的界面还在,却只是诸多路径中的一条。
软件内部保存的是能力、行为和限制。决定它们怎样被使用的意图,来自此刻的用户和任务。
所以,判断 AI 能否使用一个软件,不能只看它有没有专为 Agent 准备接口。结构化接口当然更可靠,但 AI 也会使用那些只为人设计、甚至没有预留集成能力的软件。
区别只在于,它要付出多少理解、试探和适配成本,以及失败以后能否知道问题出在哪里。
设计者还能决定什么
下游意图无法预设以后,设计者还能决定什么?
只要资源仍在系统手里,服务端权限、数据隔离和操作确认,当然可以限制一次调用的影响。但它们控制的是账户、数据和副作用,不是软件离开原环境以后会被怎样理解,也不是用户会拿自己的文件和本地程序做什么。
设计者先得分清,自己面对的是哪种边界。
保护数据、安全或不可逆结果的约束,应该落实在真正产生影响的系统层。说明它保护什么,失败会造成什么后果。即使有人走了另一条路,系统仍能守住不能被破坏的状态。
产品偏好的操作顺序,则要接受被拆开、重组甚至绕过。更有价值的问题,不是怎样把用户赶回原流程,而是原流程之外,哪些语义仍然必须稳定。
这并不是放弃产品设计。界面仍要服务大多数人,默认流程仍然可以表达经验和判断。只是,推荐用法不再等于最终用法,没有被正式提供的路径也不等于不会出现。
过去谈可扩展性,通常是在说插件、API 和几个设计好的集成点。
以后还要考虑一种用户:它会读取状态,试探路径,遇到缺口就写一点代码,再把软件放进开发者从未见过的组合里。
不必为此开放所有内部实现,也不必主动支持每一种自动化。真正需要的是,让能力本身更容易理解:状态清楚,错误可诊断,数据能够可靠进出,不能破坏的条件不依赖界面隐藏。
这些选择不能决定 AI 最终怎样使用软件,却能让设计者知道,哪些变化只是换了一条路,哪些变化会让软件失去成立的条件。
在说明书之外,软件会被读取、修改、绕行、组合,也可能以另一种形态重新出现。
厂商仍然可以设计默认路径,却很难再让它覆盖全部实际用途。
穷尽所有用法已经不现实。比预测更重要的,是清楚的语义、可靠的能力,以及对关键条件和后果的坦率说明。