你需要的是听写、编辑器语音命令,还是 AI 编程智能体?

使用 AI 辅助编写与复核。

本文目录

先想清楚你希望这些话做什么。如果希望它们出现在笔记或提示词里,你需要文字输入;如果希望它们选中并改变编辑器里的内容,你需要目标明确的编辑动作;如果希望系统自行拟定一项改动,你是在委派 AI 任务。

这些角色可以出现在同一工作流中。你可以口述解释,用已配置的命令选中文字,再让智能体提供候选补丁。为整个工作选软件之前,先确定每一步的角色。

一条关于口述编程的公开提问让这个区别变得具体:作者想要语音转写与编程相关命令,同时明确不想要会猜测实现的 LLM。这是一个有用的选型问题。谈论代码,不一定意味着要求 AI 写代码。

下面用一个虚构的临时编辑任务,展示达到同一结果的三条完整路线。流程与文字状态都是编写的教学材料,并非运行语音软件、编辑器或编程智能体得到的结果。

决定怎样口述之前,先定义结果

在可丢弃的临时缓冲区中,放入以下精确文字:

function seatsLeft(capacity, taken) {
  const freeSeats = capacity - taken;
  return Math.max(0, freeSeats);
}

const guidance = "replace freeSeats with availableSeats";

再设想有一个独立、初始为空的笔记输入框。任务分为两部分:

  1. 在笔记中输入字面原文 replace freeSeats with availableSeats。
  2. 将函数内的局部变量从 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 生成。