Deno + Claude4 + RooCode。Claude 4 が進化しているので、それに合わせて Roo のプロンプトを書き直した。
リポジトリはここ
たぶん .roo/rules/rules.md
と .roo/rules-orchestrator/01_workflows.md
だけ見ればいいです。
オーケストレーター用のプロンプト
システムプロンプト側
AI へのお題はダイクストラによる経路探索の実装。
効いたこと
- ハイラムの法則と単一責任原則に言及しながらリファクタさせる
- eslint の warn でかなり積極的なルールを採用して、それを根拠にリファクタリングさせる
- 最初は 単体ファイルだけで eslint を回す
- 通常のテストではログが邪魔になるので通所の CI では
eslint --quiet
とする
- モデル自体の性能向上
- デッドコードの削除、claude 3.x は無理だったが、 claude 4 と lint のおかげでやっとワークする
RooCode のカスタマイズ
Roo Orchestrator がすごい。タスク分析、サブタスク分割、サブタスク要約だけ収集、でかなりコストが浮くようになった。
タスク設計の Orchestrator へのプロンプトを厚めに書いて、システムプロンプト自体は小さくした。
もはや Roo Code しか使ってないので特化プロンプトを用意。
-
.roo/rules/rules.md
: システムプロンプト -
.roo/rules-orchestrator/workflows.md
オーケストレーター用のプロンプトで、カスタムワークフローを定義
オーケストレーター用のプロンプトで、ワークフローを指示
開発フローを自前でいくつか定義して、それを使うように指示した。
- 新機能追加ワークフロー
- 単一ファイルリファクタリングワークフロー
- ライブラリ API リファクタリングワークフロー
- 公開 API の設計改善に焦点を当てたプロセス:
微妙な点
カットオフ時期のせいか neverthrow の学習量が増えて使えるようになったが、早期リターンできないせいでネストが深くなる。
テストコードの分岐で Unreachable な分岐を無限に作ってしまう。
Deno.test("...", async () => {
if (result.isOk()) {
assert(...)
}
});
あとなんかやたら旧 API の互換性を取ろうとする。これはハイラムの法則に言及した自分が悪いのだが、それにしても固執する。旧 API を捨てろというと、やっと捨てる。
Views: 0