[Vscode] Continue拡張機能でカスタムコマンドを使って作業効率アップ！

## はじめに
- この記事では、VSCodeの拡張機能「Continue」のカスタムコマンドを紹介します。
- カスタムコマンドでは、プロンプトに指示するショートカットを定義できます。
- カスタムコマンドを利用すると、LLMへ短く効率的にプロンプトを指定することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/c5d7b3bf-4287-c07b-f55a-69a90c57890a.png)

/でショートカットを指定できる。
testはハイライトしたコードに対して、ユニットテストを書いてのプロンプトになっている。

## Continueとは
-「Continue」は、ソフトウェア開発のためのオープンソースのオートパイロット(コーディング支援AIツール)です。
- VS CodeやJetBrainsにChatGPTの力をもたらすIDE拡張機能であり、深くカスタマイズ可能に構築され、開発データから継続的に学習します。
- 詳細は https://continue.dev で確認できます。

## カスタムコマンド定義方法
- Continueの画面の右下の歯車アイコンをクリックすると、設定ファイル(conofig.json)が開く。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/75afaab9-22d8-e542-d0d5-7dab13678397.png)
- 次のcustomCommandsに追加したいコマンドを定義して保存する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/5e205bd8-5a26-fde5-69ea-81fae23e4391.png)

- 例えば、日本語翻訳を、英語に翻訳、絵文字を追加を定義してみる。
```
"customCommands": [
    {
      "name": "test",
      "prompt": "Write a comprehensive set of unit tests for the selected code. It should setup, run tests that check for correctness including important edge cases, and teardown. Ensure that the tests are complete and sophisticated. Give the tests just as chat output, don't edit any file.",
      "description": "Write unit tests for highlighted code"
    },
    {
      "name": "toJ",
      "prompt": "Translate the selected sentence to Japanes. Give the sentence as chat output, don't edit any file.",
      "description": "日本語"
    },
    {
      "name": "toE",
      "prompt": "Translate the selected sentence to English. Give the sentence just as chat output, don't edit any file.",
      "description": "英語"
    },
    {
      "name": "addEmoji",
      "prompt": "Use emojis to decorate. Give the tests just as chat output, don't edit any file.",
      "description": "絵文字"
    }
  ],
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/2f56f646-d48d-d0fe-7cf0-1b39ab8c9975.png)

## デモ
- 文章を英語に翻訳してみる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/0ad7d7b0-f2d2-ff22-6dc7-a587722c19d1.png)

- ファイルを指定して文章に絵文字を追加してみる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/b17ede04-82a3-174a-bd3b-6abee03401f6.png)

- 前の文脈が影響してうまく指示がいかないケースもあった。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/2b19fa5e-349c-79ed-04b9-c918d8e18af0.png)

- その場合には、セッションをクリア(Ctrl +L)して命令しなすとうまくいくことがあった。

## 代替案

- あらかじめプロンプトとしてショートカットを入力する方法のほうがスムーズに指示できた。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/e53b72fb-a777-3ef7-070d-a15dfe6ed4d0.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/dcca1ba7-0c56-cffa-49d2-a4910d21ea2e.png)

- その時によってショートカットを切り替えたくなるかもしれないから、あらかじめファイルで用意しておいて、作業する最初に入力するのもいいかも。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/fd10ae2d-725f-3ab5-1759-853108840646.png)

- ChatGPTでも試してみた。こんな曖昧なプロンプトにもちゃんと答えてくれる・・・。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/3af05024-17bc-ee85-8faf-4d84d56ea835.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/074f0b2d-bedf-fd6a-03c3-478a3be44b9d.png)

## 参考

- Contineのカスタムコマンドを試してみるところ、この方のXの投稿をみて感銘をうける。ChatGPTのメモリ機能は、備忘録くらいに考えてたんだが、こんな使い方あるんだなとびっくりする。思い浮かばなかったよ・・・。

https://twitter.com/ytiskw/status/1785307195607036263