コーディングの依頼は、具体的にすべき瞬間ほど短くなりがちです。
Cursorで失敗している関数を見ています。どの動作が変わったか、何を試して失敗したか、触ってはいけないファイルも分かっています。それでもAgentへ入力し始めると、「このバグを直して」に縮んでしまいます。
モデルが文脈を失ったのではありません。送る前に自分で削っています。
音声入力が効くのは、コードを画面に残したまま説明できるからです。CursorのAgentは自然言語の依頼を受け、コードベースを調べ、ファイルを編集し、コマンドを実行します。チャット入力欄では/から再利用可能なコマンドも呼び出せます。必要なのは別の録音画面ではなく、すでに作業が始まる入力欄へ十分な説明を入れることです。
入力の手間が、残る文脈を決めてしまう
よいコーディング依頼には、実際の挙動、期待する挙動、関係する領域、変更してよい範囲、すでに失敗した方法、完了確認のテストが含まれます。
どれも話すのは難しくありません。しかし小さく見える不具合のために全部入力するのは重く感じます。その結果、「ログインを直して」のような依頼になります。Agentはどのログイン経路か、何が失敗しているか、何をもって完了とするかを推測しなければなりません。
35秒話せば、対象ルート、エラー、前の試行、テストコマンドまで入ります。音声が自動的に依頼を正確にするわけではありません。雑にした理由の一つを消します。
入力先をCursorのままにする
TalkTalkTypeはOption-Spaceを押している間だけ録音し、離すと、録音開始時にフォーカスしていた欄へ結果を戻します。この場合はCursorのAgent、Ask、またはエディタ内の入力欄です。
コードを見ながら説明していると、途中で正確な関数名に気づいたり、型定義を見て制約を言い直したりします。別の音声入力ウィンドウへ移ると、説明対象が画面から消えます。
直接貼り付けにはmacOSのアクセシビリティ権限を使います。管理端末や保護された環境で自動入力が拒否される場合も、クリップボード経由ならCommand-Vで手動貼り付けできます。
意図は話し、構文は入力する
音声入力は、難しい部分が「何を意図しているかの説明」であるときに向きます。
- 再現条件を含む不具合説明
- 複数ファイルにまたがるリファクタリング境界
- 編集前に未知の領域を調査させる依頼
- 業務ルールや例外条件
- 生成差分のうち残す部分と戻す部分の説明
一方、正規表現、シェルパイプ、記号を含むパス、一文字違いの識別子、短いコード片はキーボードの方が確実です。
混ぜるのが自然です。正確な識別子は入力し、なぜ重要かを話します。
Cleanは表現を守り、Rawはすべてを残す
TalkTalkTypeのテキストモードは選択式ではなく、CleanとRawの二つだけです。Cleanは忠実な軽い整形です。話した言葉をすべて、話した順番のまま、文体も保って残し、明らかな言い淀みだけを除いて、一行で返します。Cursorで重要になるのはまさにこの点で、正確な識別子やファイル名、コード用語は、Cleanが一切書き換えないためそのまま残ります。
Rawは整形せず、言い間違いや途中で捨てた文も含めてそのまま返します。送信前に自分で編集するならRawが合います。
録音を別の指示へ黙って書き換えるモードはありません。整形後の結果は下書きとして届き、Enterを押す前に読めます。内容を理解しているが話す順番が崩れたとき、より引き締まった指示にしたければ、任意の音声リファイン(Voice Patch)で、挿入前に話し直して形を整えられます。その場合も、最初の貼り付けを黙って書き換えることはありません。
Cursor自体はコードエディタのサーフェスとして分類されます。この分類は決定論的で、バンドルIDとアクセシビリティの役割から決まり、言語モデルの推測は入りません。コード系のサーフェスでは、話したファイル名、パス、スラッシュコマンドはテキストのまま保たれ、解決されたり実行されたりするものとしては扱われません。Macの状況に応じた音声入力で、入力先の読み取り方を説明しています。
つまり、正確な表現やコード用語が重要なとき(Cursorではたいていそうです)はClean、自分で編集するならRaw、話す順番が崩れて引き締めたいときは音声リファイン、という使い分けです。Enterを押す前に下書きを一度読みます。整形は言い淀みを整えられますが、似た名前の関数が別物であることは、言わなければ分かりません。
話す順番を固定する
音声依頼は次の順番にすると散らかりにくくなります。
- 何をするか
- どこで起きているか
- 何を観測したか
- 何を変えてはいけないか
- どう確認するか
たとえば「セッションフックでタブ復元後に同じトークンの更新リクエストが二回出る。サーバーAPIと公開フックAPIは変えず、回帰テストを追加して認証テストを実行して」と話せます。
Cursorのカスタムコマンドには毎回同じ手順をMarkdownで保存できます。安定した確認項目はコマンドに置き、今回だけ変わる不具合の事実を音声で入れると役割が分かれます。
秘密情報は話さない
送信後のプロンプトにはCursor側のデータ設定が適用されます。送信前、TalkTalkTypeは音声を設定済みの音声認識プロバイダーへ送り、サービス側には音声、文字起こし、整形済みテキストの履歴を保存しません。ただしアカウント、端末、プラン、利用量、監査、サポートの記録は運用のため残ります。
APIキー、本番認証情報、顧客の個人情報など、どちらのクラウドにも送るべきでないものは録音にもプロンプトにも入れません。
昨日短くした依頼から試す
最初の回答が外れ、二通目で不足していた文脈を追加したCursorの会話を一つ探します。その最初の依頼を、前提、失敗した方法、制約、完了条件まで一度に話して作り直します。
音声はキーボードを置き換えるものではありません。記号は入力し、削りそうだった説明を話します。コードの横にカーソルを残したまま、依頼だけを完全にするための使い方です。