每天在终端里敲敲打打的开发者,近期在使用各路 AI CLI 工具(如 Gemini CLI、Claude Code)时,可能会遇到一个非常反直觉的场景:

明明某个 Agent Skill 文件里堂而皇之地写着“你可以输入 /generate-article 来触发我”,但如果你真的在命令行里敲下这个命令,CLI 框架却有可能直接拦截它,或者告诉你这是一个未注册的命令。然而,当你把这串带有斜杠的文本强行发给大模型时,它居然真的触发了对应的动作

这究竟是大模型产生的“幻觉”(以为自己有这个命令),还是AI创建skill时搞错了?

在这里插入图片描述

如图所示,未被强类型注册的指令在gemini cli中可以通过。但要理解它在 Agent 语境下是否有效有效,我们需要先破除一个旧时代的执念。

一个反直觉的类比:硬开关 vs 对暗号

在传统的 CLI 程序里,命令解析器就像一台带有实体物理按键的自动售货机(硬指令)。你按下 /build,机器内部的路由表(Registry)找到了对应的方法并执行;你按下未注册的 /generate-article,机器发现没有这个按键,直接抛出 Command not found 的错误并罢工。它的容错率是零。

但在 Agent 时代,交互的主体变成了一个坐在服务台前的人类大堂经理(大语言模型)

当你想让这位大堂经理帮你转交一份特殊文件时,你可以用一长串自然语言解释你的意图:“请帮我把这篇笔记转成技术博客”。但对于高频动作,每次都这么说太啰嗦了。于是你们约定了一个“暗号”——只要看到 /generate-article 这个词,就去走自动发布流程。

这个“暗号”,就是所谓不存在的软指令(Soft Commands)

在这里插入图片描述

拆开看:它到底怎么工作

在现代的 Agent 框架中,为什么没有注册在系统底层的斜杠指令也能大行其道?这归功于大模型的意图路由(Intent Routing)机制。

以 Gemini CLI 加载外部 Skill 为例,其内部执行链路其实非常巧妙:

  1. CLI 前端降级放行:当用户输入 /generate-article 时,CLI 源码确实没有注册这个原生命令。普通的程序会直接报错终止,但 Agent CLI 通常有一种 Fallback 机制:如果不是内置系统命令,就把它当成一段纯文本,原封不动地抛给底层的大模型
  2. 高密度特征命中:大模型收到了这段看起来像命令的字符串。此时,它的上下文中正挂载着所有的外挂能力(Skills)。例如在 blogger-agent 的描述文件里,可能明确写着:Trigger phrases include /generate-article...
  3. 工具调用(Tool Calling):大模型通过语义比对,发现你发来的文本与该 Skill 的描述高度契合。/generate-article 这个特殊的文本串,在这里起到的作用并非代码层面的函数路由,而是极高信噪比的意图特征词。模型心领神会,直接通过 activate_skill 工具唤起了对应的底层逻辑。

在这个过程中,斜杠 / 完全失去了它在传统终端里的“控制符”特权,退化成了一个普通的标点符号。但正是这种伪装成命令的形式,为用户提供了一个极低输入成本的意图锚点

它不解决什么

既然软指令这么好用,那我们以后干脆不要硬编码任何 CLI 命令了?并不是。事实上,Agent 时代的交互媒介正在形成一条光谱:

在这里插入图片描述

这种基于大模型意图识别的“软指令”机制并非万能,它的边界极其清晰:

  1. 它不解决确定性(Determinism):如果系统的某项操作需要 100% 的确定性执行(比如清理缓存 /clear-cache,或者不可逆的销毁动作 /delete-all),绝对不能依赖软指令。软指令经过大模型的语义理解层,永远存在微小的概率被模型“忽视”或误解为普通陈述。
  2. 它不解决低延迟与免 Token 场景:硬指令在本地系统直接执行,响应时间为微秒级且完全免费;而软指令必须走一次大模型推理,不仅耗时以秒计,还需要消耗实际的 Token 额度。

总而言之,Skill 文件里的斜杠指令既不是幻觉,也不是框架层面的漏洞。它是 Agent 开发者们在“自然语言太啰嗦”和“硬编码写死太僵化”之间,找到的一种极具实用主义色彩的工程平衡:借用传统 CLI 的肌肉记忆,跑在大语言模型的意图引擎上

Logo

更多推荐