今回いいたい事
AIのクライアントを作る時に、git submoduleを使うと色々なUIをリポジトリ別に実装できて嬉しかった。
以上です。以下、蛇足。
作ったもの
あ、ごめんなさい、書いておいてまだ未完成です。
vimとdiscordとshellで動くAI clientを書きました。名前はこにんこ。1
そんだけ。
闇鍋というかゲテモノじゃね?
いや、当初闇鍋を作りたかったわけじゃないんですよ。欲しいクライアントがあったんです。
くそどうでもいい動機
皆さんはこう思った事はありませんか? - 「AIへの質問をまちがえた…」 - 「いや、話題を逸らすなよ…」 - 「話が戻って無駄になった…」 - 「君のWeb検索は僕の求めてるのと違うよ!」僕はわりとあります。そこで、下記の機能を実装してました。
- 時間を戻す事ができる
- 時間を止める事ができる
- 過去の会話から分岐する事ができる
- Web検索は手動で設定する
ええ、僕の僕による僕のためのクライアントですが、これはこれで良さそうですよね?
何かを自動でうまく作るクライアントではなくて、敢えて手動部分を残すツール、自分の思い通りに動くシンプルな駒、影分身的クライアントです。
ただ、AI、特にLLMって汎用性が凄いんですよね。って事は派生を作りやすいわけです。増えるじゃないですか。しかたないんですよ。
こいつをUIとcoreで分けていったのですが、それにgit submoduleを使いました。
とても自然な流れだったのです。
技術的背景
これもどうでもよくて、こにんこ自体は大したものではないのです。deno製です。これも特に言うべき事はないですが、出力先をいくらでも作れるんですよね。
- discord bot(API叩くだけ)
- vim plugin(denopsを使用)
- CUI(STDIOだけでどうとでもなる)
git submodule
git submoduleはgitのリポジトリの中にgitのリポジトリを導入するものです。使い方はまぁ以外と簡単です。
だって、UIとcoreって分けたいじゃないですか。当然わけますよね。とりあえず、gitのリポジトリを作ります。
git init
そんで、
git submodule add [URL]
です。ここで、僕はcoreのリポジトリをURLにあてはめました。
これでUIをわければ闇鍋解除なのです。
git/configはどうなってるのか
リポジトリの中にリポジトリがあるのですが、こんなかんじです。
- README.md
- [submodule1]
- [submodule2]
- .git
- config
- modules
- [submodule1]
- config
- [submodule2]
- config
- [submodule1]
感想
AI関係ないじゃねーかと言われそうですが、こういう形でgit submoduleが役にたったので他の人もそういう状況に遭遇するかもしれないなって。
-
「最早vim pluginなのかよくわからん」ってなりましただから改名して「こにんこ(COllection of NINja's COworkers)」と名付けました。 ↩