0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Copilot CLIもどきを作ってみる

Posted at

やぁ

Copilot CLIを使いたいけどお金がない!!
なのでollamaを使って動くようなものをChatGPTといっしょに作りました

出来ること

大体 2機能あり生成と改善の機能があります。

1. コマンドの生成

入力が自然文だった場合は説明を元に1行のシェルコマンドを返します
カレントディレクトリの指定がされているから/path/toなどが出てこない

2. コマンドの改善/修正

入力がコマンドだった場合は意味を変えずによりよく改善/修正し1行のシェルコマンドを返します

環境設定

ollamaを使っています。

アイコンがとてもかわいいのでおすすめです

環境
brew install ollama
ollama pull qwen2.5:7b-instruct-q4_K_M

設定

コピペで動きます!

~/.local/bin/csuggest
#!/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を知りたい時は、こちらを

bash
cat -v

他と重ならないやつがおすすめです。
私は使いやすいのでCtrl+@を使ってます。

.zshrc
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 に頼ってください

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?