やぁ
Copilot CLIを使いたいけどお金がない!!
なのでollamaを使って動くようなものをChatGPTといっしょに作りました
出来ること
大体 2機能あり生成と改善の機能があります。
1. コマンドの生成
入力が自然文だった場合は説明を元に1行のシェルコマンドを返します
カレントディレクトリの指定がされているから/path/to
などが出てこない
2. コマンドの改善/修正
入力がコマンドだった場合は意味を変えずによりよく改善/修正し1行のシェルコマンドを返します
環境設定
ollamaを使っています。
アイコンがとてもかわいいのでおすすめです
brew install ollama
ollama pull qwen2.5:7b-instruct-q4_K_M
設定
コピペで動きます!
#!/bin/zsh
MODEL="qwen2.5:7b-instruct-q4_K_M"
CURDIR=$(pwd)
query="$*"
[[ -z "$query" ]] && read -r "?説明またはコマンドや文章を入力: " query
prompt="あなたはシェルアシスタントです。
入力が既にコマンドの場合は、そのコマンドを意味を変えずに分かりやすく安全で効率的な形に改善してください。
入力が文章(説明)の場合は、その説明を元に適切な1行のシェルコマンドを生成してください。
どちらの場合もコードブロック記号や'''や\`\`\`は含めないでください。
カレントディレクトリは $CURDIR です。
入力: $query"
ollama run "$MODEL" "$prompt" | tr -d '\n'
モデルはどれでもいいのですが、下記の条件でモデルを選びました。
1. コードがある程度かける
2. 日本語に対応している
3. 軽いモデル
その結果、バランスの良いqwen2.5:7Bを使っています。
.zshrcに書く時に使うbindkeyを知りたい時は、こちらを
cat -v
他と重ならないやつがおすすめです。
私は使いやすいのでCtrl+@を使ってます。
csuggest-widget() {
BUFFER=$(~/.local/bin/csuggest "$BUFFER")
CURSOR=$#BUFFER
}
zle -N csuggest-widget
bindkey '^@' csuggest-widget
使い方
1. プロンプトを入力
2. 設定した bindkey(Ctrl+@)を入力
3. 約 2〜3 秒で提案が表示
4. 提案が良ければそのまま Enter
5. 微妙なら再生成
• 再生成する場合はもう一度 bindkey(Ctrl+@)を押す
6. それでも微妙なら…
• 手元の AI に頼ってください