你需要的是听写、编辑器语音命令,还是 AI 编程智能体?
本文目录
先想清楚你希望这些话做什么。如果希望它们出现在笔记或提示词里,你需要文字输入;如果希望它们选中并改变编辑器里的内容,你需要目标明确的编辑动作;如果希望系统自行拟定一项改动,你是在委派 AI 任务。
这些角色可以出现在同一工作流中。你可以口述解释,用已配置的命令选中文字,再让智能体提供候选补丁。为整个工作选软件之前,先确定每一步的角色。
一条关于口述编程的公开提问让这个区别变得具体:作者想要语音转写与编程相关命令,同时明确不想要会猜测实现的 LLM。这是一个有用的选型问题。谈论代码,不一定意味着要求 AI 写代码。
下面用一个虚构的临时编辑任务,展示达到同一结果的三条完整路线。流程与文字状态都是编写的教学材料,并非运行语音软件、编辑器或编程智能体得到的结果。
决定怎样口述之前,先定义结果
在可丢弃的临时缓冲区中,放入以下精确文字:
function seatsLeft(capacity, taken) {
const freeSeats = capacity - taken;
return Math.max(0, freeSeats);
}
const guidance = "replace freeSeats with availableSeats";
再设想有一个独立、初始为空的笔记输入框。任务分为两部分:
- 在笔记中输入字面原文
replace freeSeats with availableSeats。 - 将函数内的局部变量从
freeSeats改名为availableSeats,同时修改声明与返回表达式中的引用。
函数名、参数、计算和源码布局都保持不变。引号内的 guidance 字符串必须原样保留。本练习不涉及仓库搜索、新功能、终端操作或测试执行。
预期源码为:
function seatsLeft(capacity, taken) {
const availableSeats = capacity - taken;
return Math.max(0, availableSeats);
}
const guidance = "replace freeSeats with availableSeats";
预期笔记仍为:
replace freeSeats with availableSeats
这个小任务包含关键歧义。同样的话,可以是要保留的句子、对编辑动作的描述,或要求智能体提出该动作的指令。它的去向和解释方式,决定了实际是哪一种。
路线 A:口述笔记,再自己编辑两个标识符
先识别独立笔记输入框,将插入点放进去。口述这一行,检查可编辑文字,并修正或粘贴精确的标识符拼写。笔记现在应包含 replace freeSeats with availableSeats。
此时源码尚未改变。文字输入这一步完成了自己的工作,但还没有完成改名。描述编辑的句子,即使没有执行任何编辑器动作,也可以是有用的文字。
接着,手动选中源码第 2 行声明处的 freeSeats,只把这个标识符替换为 availableSeats。再选中第 3 行的引用,做同样替换。中间会短暂出现只有声明改了的状态;完成两处编辑后,才能把源码视为目标结果。
最后一起检查源码与笔记。两处代码引用都应使用新名称,引号内字符串与独立笔记则仍精确保留包含新旧名称的原句。这样便通过听写加手动编辑,完成了临时任务。
如果口述有助于记下解释,而现有编辑器已经能方便地精确选择,这条路线就适用。名称可以打字或粘贴。对于自己已经理解的两处修改,不必增加命令系统或 AI 生成的补丁。
路线 B:使用已配置的编辑动作与字面文字输入
直接用语音编辑,不只是识别说了什么。它还需要把识别到的请求映射为编辑器动作,并能识别当前目标、检查选区。
这段流程假定存在一种配置,能够选中精确显示的标识符、用给定文字替换选区,并把字面文字输入独立笔记。这些是本例的前提。下面的动作描述不是 Talon 或某款 IDE 的语音口令教程。
从原始源码和空笔记开始:
| 步骤 | 预期操作 | 继续之前要检查的状态 |
|---|---|---|
| 1 | 选中第 2 行声明处的 freeSeats |
只选中了这个代码标识符 |
| 2 | 用 availableSeats 替换已检查的选区 |
声明已改变;返回引用与 guidance 字符串未动 |
| 3 | 选中第 3 行引用处的 freeSeats |
只选中了剩下的那个代码标识符 |
| 4 | 用 availableSeats 替换该选区 |
源码与上方预期版本一致 |
| 5 | 移到独立笔记,使用配置中的字面文字通道 | 当前目标是笔记输入框 |
| 6 | 将 replace freeSeats with availableSeats 作为文字输入 |
精确笔记出现;没有进一步编辑源码 |
最终比较与路线 A 相同:两处代码标识符改变、引号内字符串不变、笔记精确一致。区别在于如何请求这些编辑。这里的人已经选定改动,由配置好的命令通道执行指定的编辑器动作。
如果第 1 或第 3 步无法确定选区,就先不要发出替换。改用手动选择和打字,完成剩余的明确编辑。如果第 2 步已经发生,就保留中间状态,检查还剩什么,而不是盲目开始全局替换。
实际安装时,应核对相关配置。Talon 的第一方源参考分别列出了文字输入、按键和模式定义。其听写模式说明仍区分命令与其他语音。因此,仅凭模式名称,不能确定每个短语都会按字面文字处理。
这份参考是文档示例,不是你的编辑器已安装某种选择或改名命令的证据。适配这条路线前,先确定当前配置支持的精确操作,以及怎样将类似命令的话输入为文字。如果缺少这项能力,那一步就继续使用手动路线。
路线 C:请 AI 智能体提供候选改动
第三条路线将这些话发往 AI 对话。你提供完整源码、精确名称、字面笔记和改动限制。请求输出的是供检查的候选补丁,因此在考虑它时,临时缓冲区仍未改变。
你可以先把解释口述进请求草稿,再粘贴精确材料。提交前检查组装后的请求。下面是完整版本:
只以文字形式,为这份精确的六行源码准备候选改动。
将局部变量 freeSeats 改为 availableSeats,修改第 2 行声明
与第 3 行引用。第 6 行引号内的字符串保持不变。
function seatsLeft(capacity, taken) {
const freeSeats = capacity - taken;
return Math.max(0, freeSeats);
}
const guidance = "replace freeSeats with availableSeats";
同时将以下精确的独立笔记行,作为字面文字返回:
replace freeSeats with availableSeats
保留 seatsLeft、capacity、taken、减法、Math.max(0, ...)、
guidance、引号内字符串、标点、空格和顺序。
只改指定的两个源码标识符。
返回虚构 scratch/seat-note.js 的 unified diff,把笔记放进
独立文字块,再给出简短解释。将实际完成的检查
与拟议检查分开。所需源码已全部粘贴在上方。
不访问仓库、不编辑文件、不运行命令或测试、不联网或部署。
你希望得到的是下面这个两处标识符补丁。这里展示的是作者编写的预期结果:
function seatsLeft(capacity, taken) {
- const freeSeats = capacity - taken;
- return Math.max(0, freeSeats);
+ const availableSeats = capacity - taken;
+ return Math.max(0, availableSeats);
}
将候选改动与完整源码比较,包括这段片段之外、应保持不变的 guidance 行。单独检查返回的笔记。两者符合任务后,可以手动把候选改动采用到可丢弃的临时缓冲区,再将最终文字与共同目标比较。
在真实智能体工作流中,应检查实际返回内容,不要假定它会与本例一致。额外整理、字符串改变或笔记缺失,都应让候选改动回到同一个小任务。解释很有说服力,也不能让错误补丁变正确。
当你希望获得拟定或提出改动的帮助时,这条路线有用。但对于这么小的改名,路线 A 可能已经足够。本例要识别的是委派步骤,不是把 AI 生成变成语音编程的前提。
分开字面文字、编辑动作与生成的改动
只看短语本身,工具无法得知你希望它扮演哪种角色。可以使用一张简短边界表:
| 这些话的角色 | 去向 | 本任务中的预期效果 | 仍需检查什么 |
|---|---|---|---|
| 字面文字 | 独立笔记输入框 | 短语按原文精确出现 | 标识符拼写、标点与去向 |
| 编辑器动作意图 | 已检查的源码选区 | 选中的代码标识符改为新名称 | 当前缓冲区、精确选区和结果文字 |
| AI 任务指令 | 已提供完整源码的预期对话 | 返回候选补丁与笔记 | 拟议改动、未变的字面内容和检查声明 |
| 引号内源码内容 | 第 6 行的 guidance 字符串 |
保持不变 | 没有被意外纳入改名 |
全局文字替换是一个有用反例。它可能产生:
const guidance = "replace availableSeats with availableSeats";
即使函数中的两处变量引用都正确,这一行仍违反任务。旧名称应留在这个字符串里,因为它是字面说明。“新名称到处都出现了”不是正确的完成标准。
同样,笔记里有正确短语,不代表已经编辑;智能体返回补丁,也不代表补丁已经应用。应比较你实际需要的产物:源码与笔记两者。
按缺少的步骤选择软件
更换工具之前,用自己最小的真实任务,明确缺在哪里。
| 现在什么不顺手? | 要调查的能力 |
|---|---|
| 将解释输入笔记或提示词 | 文字输入去向、草稿检查与修正 |
| 反复精确选择与编辑 | 实际编辑器和配置有文档支持的动作 |
| 根据需求拟定改动 | 智能体上下文、候选输出和检查补丁的方法 |
| 返回正确对话 | 任务导航与当前回答,以及所用输入路线 |
填写命令或快捷键之前,先记录环境与所需行为:
任务与精确起始内容:
应按字面输入的文字:
我想要的编辑器动作,如有:
我需要的 AI 生成产物,如有:
编辑器/平台/版本:
语音工具/版本/配置:
这项精确操作的文档:
怎样识别当前目标并检查选区:
怎样按字面输入类似命令的话:
哪些有文档、已在本地观察,或仍未知:
手动选择/打字的备用路线:
预期的前后文字:
实际尝试后的观察:
实际尝试之前,观察栏留空。源参考示例或别人的推荐,可以指向候选方案,但不能提供你的结果。你也可以保留现有工作流中已经合适的部分。同一任务可以用语音写笔记,用键盘改两个精确标识符。
配套的边界与适配卡包含本例的已填版本。另一个问题是口述 AI 请求应发往哪里,可参阅跨 AI 对话使用语音输入。
最后比较同一个目标
对 SCRATCH-6,完成条件很具体:声明与返回引用使用 availableSeats;引号内 guidance 字符串不变;独立笔记包含精确要求的短语。
计算仍是零与 capacity 减去 taken 的较大值。在本例的非负整数输入范围内,人工预期为:capacity 10、taken 3 时结果为 7;2 与 5 时为 0;5 与 5 时为 0。这些是推理示例,不是执行过的测试。
完整示例材料、预期补丁和完整路线流程将中间状态与同一最终目标放在一起。应根据谁提供文字、谁决定编辑来选择路线。口述可以参与其中,但不必让每句话都变成命令,也不必让每项编程任务都依赖 AI 生成。