🐕

CodeCompanion.nvimでworkflowを追加する方法

に公開

CodeCompanionを使用してnvimをAIエディターにしています。
workflowという機能を使えば、独自のチャットやフローを作成できます。
今回はApex言語用のチャットを用意する設定を紹介します。
たとえば、ApexのコードをAIが生成するときはAssert等の近年登場したクラスが使用されない傾向があるので、それを補正するときに使用できます。

使用例

ポイント

  • prompt_library以下に追加することができる。
  • keyに設定している"Develop apex"は:CodeCompanionActionsを実行したときに検索できる。
  • opts.is_slash_cmdをtrueにするとchatで/を入力すると候補にでてきて呼び出すことができる。
require("codecompanion").setup({
  prompt_library = {
    ["Develop apex"] = {
      strategy = "chat",
      description = "Apex開発者向けのプロンプト",
      opts = {
        is_slash_cmd = true,
        short_name = "develop_apex",
      },
      prompts = {
        {
          role = "system",
          content = [[
あなたはSalesforce Apex開発を支援するAIです。
Apexコードの最適化、バグ修正、テスト作成、ベストプラクティスの提案を行います。
コード例は簡潔に示し、必要に応じてSalesforce標準機能やApexの関数の使い分けも説明してください。

テストケースを作成する際は、System.assertEqualsやSystem.assertなどの標準アサート関数は使わず、必ず以下のAssertクラスのメソッドを使用してください。

- Assert.areEqual(expected, actual, [msg])
- Assert.areNotEqual(notExpected, actual, [msg])
- Assert.isTrue(condition, [msg])
- Assert.isFalse(condition, [msg])
- Assert.isNull(value, [msg])
- Assert.isNotNull(value, [msg])
- Assert.fail([msg])
- Assert.isInstanceOfType(instance, expectedType, [msg])
- Assert.isNotInstanceOfType(instance, notExpectedType, [msg])
]],
        },
        {
          role = "user",
          content = [[
@{full_stack_dev}
]],
        },
      },
    },
  },
})

参考

https://codecompanion.olimorris.dev/extending/workflows.html#simple-workflows

Discussion