2026年3月23日

vscodeからLM Studioを使いたい (4)

第3回で、モデルによって回答がずいぶん異なることがわかった。
vscode の方でも気をつけるべし。

 

LM Studio で MCPの設定をしたが、あれはたぶん LM Studio の中でしか有効じゃないと思う。Continue は Continue で設定があるのでそちらが使われるはずだ(第1回で設定してたと思う)。 

 Use Tool が効くのかどうかわからないが、金づちアイコンがあって小さいモデルだった Ministral 3 3B を使うことにした。コンテキスト長も長くしておく。

 

LM Studio に設定したので Continue 側も念のため Local Config を reload。Chat のモデルを ministralai/ministral-3-3b にする。設定の方では Chat、Autocomplete、Edit のそれぞれにモデルを設定できるようだが、使わなければどれでもよかろう、たぶん。 

何も書かなくても日本語で返してくれるように Rules の上の方に書いている。効果はあると信じたい。

これで、第2回でも使った24KBくらいのRustファイルをアットマークで指定し、その中のメソッドの1つをレビューしてくれという指示をChatに書いた。
5分くらいかかったように思うが返事があった。

 

Prompt Tokensが第2回よりも少ないのはモデルの違いが関係するのだろうか? ファイル名を指定したのにプロンプトにはその内容は現れていないし。
1回分の指示だが、CONTINUE CONSOLE で2つに分かれているだけかもしれない。16:44:08.3 の方は Prompt Tokens が 12,212 もあってコードの中身があるようだったのでね。

肝心の結果だが、なかなかよい。
Copilot のように該当する行へのリンクがないので、どの行に対する話なのか確認するのが面倒だった。
左のアイコンは現在のカーソル位置に反映、真ん中はコピー、右はクリックするとAIが頑張りだした。最終的にキャンセルされたのだが、それは手動で変更してしまったからかもしれない。

 

私がvscodeで使ったことがあるのは Copilot Chat、Google Code Assist、そして Continue の3つしかないのでサンプルが少ないのだが、使い勝手としては Copilot がよかった。Gemini Code Assist がその次で、Continue は最後かな。
さっき書いた、Chatとコードの対応付けがその理由だ。性能はまた別の話だろうし。

vscodeからLM Studioを使いたい (3)

今回は vscode の Continue ではなく LM Studio だけの話だ。 

 

あまりよく考えずにモデルをダウンロードしている。
専用GPUもないし、デスクトップPCは 1GBくらいしかメモリを割り当ててないのでサイズが小さい方が良いなあ、くらいだ。

 

一番小さいのが Gemma3 1Bで 700MBくらい。
このくらいだと意味がない日本語の会話(あいさつとか)だとすぐに返信してくる。アプリを作るときに変にキャラクターが喋ってるようにがんばって実装するくらいなら、こういう組み込み型のモデルを使うのもありなのかなあ、などと思った。

 

Rustの文法くらいならこれでもささっと回答してくれるので、これはこれでありかと思う。
が、コードを作ってもらおうとすると話は別だ。

まず、どのモデルを使っても特定のライブラリのことはわからないだろうから DeepWiki のMCPサーバー情報をインストールした。 


その上でこういうプロンプトをモデル「qwen2.5-coder-7b-instruct」にお願いした。

Rust言語のredbで、key=u32、value=StringのテーブルでDBを作成するサンプルコードを見せて。DeepWikiを使用すること。
https://github.com/cberner/redb

動かしてはいないのだが、だいたいこんな感じだよなっていうコードを出してくれる。

use redb::{Database, TableDefinition};

const MY_TABLE: TableDefinition<u32, String> = TableDefinition::new("my_data");

fn main() -> Result<(), redb::Error> {
    let tmpfile = tempfile::create_tempfile()?;
    let db = Database::create(tmpfile.path())?;
    
    let write_txn = db.begin_write()?;
    let mut table = write_txn.open_table(MY_TABLE)?;
    table.insert(1, "hello world".to_string())?;
    write_txn.commit()?;

    Ok(())
}

これと同じプロンプトをモデル「google/gemma-3-1b」に出したのだが、なんかMCPサーバへ指示するツール名の read_wiki_structure や ask_question が混ざったよくわからないコードを作った。

Reasoning とかいうモデルじゃないと推測などをしないから、プロンプトを愚直に受け取ってしまうのだろうか。いや、Tool Use の方か。

サイズが大きい方が賢いだろう、くらいしか考えてなかったが、なにかに対応しているとかまであるのだな。

vscodeからLM Studioを使いたい (2)

コンテキスト長が大きすぎる、というようなエラーが出てきた。


ここだと思うが、元が4096だったので倍にしたところ警告が出た。最初から Custom value だったのだけどそれはよいのかな?

> The higher the context length, the more memory the model will take. If you are unsure, don't change the default 

 

この値はモデルによるようなので設定してもダメなときはダメなんだろう。 

vscode に Continue のデバッグ出力っぽいタブを追加してみたが、プロンプトでファイル名を指定したためかファイルの内容がまるまる使われているようだ。ファイルサイズは24KBくらいなのだがそれがそのままコンテキストの長さになるのではなさそうだ。 エラー文言中の 8514 ってなんだろうね。。。プロンプトトークンなるものが 7831 になっていたのでそれにシステムプロンプトとかの分が足されたのかな?

 

ああ、設定画面はあくまでデフォルト値の設定だけで、自分がサーバになって提供するときの設定は別みたいだ。 

 

これを適当に引き伸ばしたところエラーは出なくなった。

 

 

 出なくはなったが!
Rustのソースファイルを渡したのにレスポンスとしてPythonのコードが返ってきた。。。
道のりは遠いな。

2026年3月18日

vscodeからLM Studioを使いたい (1)

最近、LM Studioをインストールした。ほとんど使っていない。

hiro99ma old blog: なんとなくLM Studioをインストールしてみる

使っていないのは、GitHub Copilot(Free) や Gemini Code Assist でそこまで困っていないからだ。とはいえ、Freeなのでまじめに使うとすぐ制限が来てしまう。Gemini Code Assistは Google Workspaceで使えるやつなのだがそんなに性能?がよくない。

Copilotは年間だと100ドルなので、今だと16,000円くらい。Claude Proは17ドル/月(年払いの場合)なのでその倍くらい。そう思うと劇的に高いというほどではないのだが、これをずっと払い続けると考えると、ほどほどなGPUを購入してローカルAIでそこそこに使えるかどうかを試したいところだ。

 

LM Studio は v0.4.6。Windows11で動かしている。
vscodeは v1.111.0。これも Windows11で動かしているが Remote Connection で WSL2 と接続している。
Extension は Continue v1.2.17 を選んだ。

Quick Start | Continue Docs

CLine が有名そうだったが少なくとも1回はアカウントを作ってログインしないと使えないようだったのであきらめた。無料ではあるがアカウントを増やしたくないのだ。

Windows の vscode は Extension の扱いがよくわかってない。LOCAL と WSL:UBUNTU(うちだとWSL2にUbuntuをインストールしているので)が分かれている。最初にインストールするとだいたい LOCAL の方にインストールされ、WSLにもインストールしたかったらそれ用のボタンをクリックすることが多い。しかし全部がそうなわけではなく LOCAL にしか表示されないものもある。
Continue Extensionは後者で LOCAL にしか出てこない。GitHub Copilot Chat や Gemini Code Assist は WSL:UBUNTU の方にもあるのだ。気になるが出てこないものはしょうがない。


Local Config はこんな感じ。qwen/qwen2.5-coder-14b しかインストールしていない。

name: Local Config
version: 1.0.0
schema: v1
models:
  - name: LM Studio
    provider: lmstudio
    model: AUTODETECT
    apiBase: http://localhost:1234/v1/

 
動作モード?はチャット欄の下で選択できるのだが、たぶん Agent を選ぶことになると思う。⚠マークが付いているのは今のモデルだといまいちかも、みたいな指標のようだ。推奨モデルはもっと上を求めているようだ。
ならば Chat でいいやんってなりそうだが、ツール類を使ってもらおうとすると Agent しか選択肢がなさそうだった。


LM StudioとContinueがつながっているようなので、適当に動かしたい。しかしプロジェクト全体を指すような方法が見当たらない。他のAIに聞くと「@codebase で指定できる」ということだったがそういう@指示はなさそう。チャット欄に「@」のボタンがあり、そこに出てこないのだ。

インデックスされていないとどうのこうのというのも見かけたので設定を探したのだが、どうもその機能は deprecated されているらしい。 

リンク先はこちらだ。

How to Make Agent mode Aware of Codebases and Documentation | Continue Docs

先ほど Agent 以外だとツール類がどうのこうのと書いたのがこの辺の話だ。 

@Codebase についても代替案が書いてあり、built-inされたツールを使えだの、.continue/rules/ にプロジェクト構造についてのファイルを置きなさいだの、外部のファイルについては deepwiki などの MCP serverを使いなさいだの書いてある。

DeepWki のページには Streamable HTTP とある。 

DeepWiki MCP Server

なのでこの書き方で良いはずだ。

How to Use Streamable HTTP Transport

name: MCP servers
version: 0.0.1
schema: v1
mcpServers:
  - name: Deep Wiki
    type: streamable-http
    url: https://mcp.deepwiki.com/mcp


このくらいでよいのかな?
作業していた Rustのファイルを相対パスで与えてみると、ファイルを読んだりしているようだ。built-inのツールはこういうふうに使われるものでプロンプトを書く人が指定するものではないようだ。

 

このファイルは50行にも満たない短い内容なのだが、それでも回答が終わるのに2分くらいかかっていた。GPUがあるともっと速いのだろうが、どのくらい効果があるのかねぇ。

2026年3月11日

Windows11 Homeでディスク暗号化できるのか?

2026年3月のWindows Update中に、なんとなく設定アプリ画面を眺めていた。
「システム>バージョン情報」の一番下に「BitLocker」という項目がある。
そういえば、Home版でもBitLockerが有効にできるとかなんとかというのを以前読んだ気がすると思いクリックすると、Microsoft Storeのアプリが開いてアップグレード版を購入するかどうかという画面になった。

記事を見ると、画面の進み方が違った。 

「ディスクの暗号化」 である。ちなみに設定アプリの検索窓から "bitlocker" で検索してもこの画面になる。
暗号化するかどうかはスイッチで切り替えるだけである。確か、以前のHomeエディションではBitLockerを解除するとこの項目が消えた気がする。

スイッチをONにすると、うちのPCはMicrosoftアカウントログインにしていないので↑のサイトと同じように「完了するにはログインしてくれ」みたいな警告が出てくる。記事を見る前にONにしていたのでログインするまで暗号化されないのだろうと思っていたのだが、どうも暗号化されているか、少なくともある程度まで暗号化が進んでいたように見える。なぜならOFFにすると暗号化の解除が始まったからだ。

鍵の保存も何も問われなかったのだが大丈夫なんだろうか? 暗号化し終わらないと鍵をストレージに保存できないタイプなんだろうか。怖くて試せなかった。この記事からすると、暗号化が終わった後にコントロールパネルの方の画面から「回復キーのバックアップ」になるのかな。

Microsoftとしてはユーザを信用できない(たぶん実績があるんだろう)のでMicrosoftアカウントに保存させるよう促しているのだろう。問い合わせ件数が多いんだろうな。。。
とはいえローカルへの鍵保存をしてから暗号化してくれないと不安ではなかろうか。あるいはMicrosoftアカウントなりローカルなりに保存しないと暗号化が有効にならないとかだろうか。

 

ともかく、ディスクを破棄するときは一度暗号化してからデータ消去した上で物理破壊するのが安全そうだ。

2026年2月28日

なんとなくLM Studioをインストールしてみる

ローカルで動かすAIってセキュリティに敏感な人がやるのかなあ、くらいに思っていたのだが、お試しでAI の API を使ったアプリを作ってもらって実際に動かしてみてわかった。たぶん、API を使いたくても無料版ではすぐに無料枠を使い切ってほとんどなにもできないし、有料版だとお試しで動かすにしてもお金がかかりすぎるからじゃないだろうか。

違うかもしれないけど、ローカルで動かすことができる LM Studio を試してみる。


LM-Studio-0.4.6-1-x64.exe をダウンロードしてインストール。空き容量は2GB くらいいるのだと。ちなみにうちには専用 GPU が載っている PC はない。
それでも何か推奨してきたのでそのまま使ってみよう。3.4GB くらいいるそうだ。

 

そのままはいはいと進めるとウィンドウが開いた。左下になにか表示されている。
リモートのインスタンスと接続というのは、あれか、家の外でも Bitcoin フルノードは自分が立てたのを参照したいというあれと同じようなものか。多分違うな。。。

 

たぶんダウンロードが終わるまでは何もできないだろうと放置。
終わったら Load するかどうか聞いていたのでそうする。 

 

さて、何を打ち込んだものだか・・・。
今まで自分で調べたことがなさそうなことが良かろうと適当に打ち込んだ。チャットのタイトルが「Long野市」・・・。インターフェースを英語のままにしているからだろうか? ちなみに私は長野市には行ったことがないと思う。

 昨年のことなので、適当に検索して調べてくれたらうれしいと思ったがそういうことはなかった。 

 

さて、いったいLM Studioは何ができるんだろうかとGemini氏に聞いてみた。
「私のような」ではなく「ChatGPTのような」と回答するのが控えめだ。 

 

質問していったが、LM Studioさん(あるいはそのモデルさん)が自己強化されたり学習されたりということはなく、モデルはもうダウンロードしたものがすべてで、あとは RAG というしくみでデータを読み込ませたり?ができるくらいだそうだ。LM Studioさんに聞いても同じような回答だった。こちらは RAG ではなく拡張機能という言葉を使っていたが、たぶん似たようなもんじゃないかな。

  • 使用しているLLMに大きく依存し、それを超えることはない
  • ユーザーがプロンプトに打ち込む内容が判断材料のすべてだが、同じチャット内ではその内容も考慮される
  • 拡張機能やRAGはプロンプトを補助するようなもので、ダウンロードしたLLMが学習したり強化されたりはしない 

この辺の工夫次第なところが、やりこみ感があるというか、熱心になるところなんだろう。


ちなみにインストールしたノートPC(ThinkPad T14s)はこんなスペックだ。GPUって専用GPUを指しているのかと思ったけどオンチップのも数に入れるんだね。

 

RAG

長野市の気温データを LLM が持っていないから答えられなかった。気象庁のホームページから各地域の気象データをダウンロードできるようになっていたので、長野市のここ5年くらいの気温情報をCSVファイルでダウンロード(2.7KB)し、それを与えた。

英語になったが 2025年は7月が一番高かったのでこれであってる。まあ30秒もかかっているから自分でやったほうが早いといえば早いのだが、そういうことではないのだ。

 

添付したデータが小さければそのまま読み込み、大きければ RAGとして扱うんだとか。

Chat with Documents | LM Studio Docs

アップロードできるファイルサイズは 1MBくらいとチャットの回答で返ってきた。が「ユーザーの間で」っていうのは google/gemma-3-4b が作られた時点の情報ってことだからさすがに違うのかな。

> LM Studio のチャット欄にファイルを添付できるサイズの上限については、公式な情報が公開されているわけではありません。しかし、ユーザーの間で共有されている情報や経験則から、おおよその目安を以下のように挙げることができます。 


WSL2からアクセスできない

せっかくなのでAPIをたたくくらいはやっておこうかと、Windows上でLM Studioを起動し、サーバーをRunningにしてWSLからアクセス・・・失敗。
Windowsのコマンドプロンプトから curl すると成功。

IPアドレスが 172.29.128.1 になってて、これは HyperV の vEthernet? 
設定も LANからアクセスするかどうかしかなくて、こんなアドレスじゃうちの LANからもアクセスできないよ!!

こちらを見てみたが、既に 0.0.0.0 だった。ならば Windows に割り当てている IP アドレスにしてしまえ、とやってみると反映はされた。されたのだが、よく考えると Nat モードなのでホスト側から WSL2 にアクセスできるが逆はできないのか・・・?

Mirrored にするとあっさりアクセスできた。

$ curl http://localhost:1234/v1/models
{
  "data": [
    {
      "id": "google/gemma-3-4b",
      "object": "model",
      "owned_by": "organization_owner"
    },
    {
      "id": "text-embedding-nomic-embed-text-v1.5",
      "object": "model",
      "owned_by": "organization_owner"
    }
  ],
  "object": "list"
}



サンプルにあったこれだけのコードの実行に 1m21.066s もかかるのだ。漠然としすぎた質問のせいかもしれんが、まあスペックに依存するということだ。

import lmstudio as lms

with lms.Client() as client:
    model = client.llm.model() 
    result = model.respond("特定のトピックについて詳しくなるための、おすすめの学習順序を教えて。")
    print(result.content)


おまけ

デスクトップPCのほうが性能が良かろうと思ったのだが、全然そんなことはなかった。

 

ただ、チャットに入力してから出力されるまではデスクトップPCの方が早かった。これは他のアプリについてもそうだから、ThinkPad T14sの方が単純にスペックが低いのかなあ。困ってはいないのだけど 、気になる。

最初に打ち込んだ「長野市の平均気温」もすぐに回答された。文言もほぼ同じだったのだが、こちらは 2023年の平均気温というデータを出してきた。・・・少なくとも気象庁のデータとは一致しなかった。載せていたURLも404だった。

CSVデータありならちゃんと回答するかと思ったが、これは平均気温のデータで最高気温のデータじゃない、とか言われてしまった。。。「平均気温が一番高い月」って言ってるのに。新しくチャットを開いてやってみたが、今度は各月のデータを列挙するまでは良かったものの何故か合計して年間平均気温を求めたあと、なぜか「それゆえ6月」と答えてきた。

やっぱりVRAMが512MB程度ではまともに動かないということだろうか。
むずかしいね。 

うちのZero TrustはWSL2のGitHubへのsshを通してくれない

前回、CloudflareのZero Trustについてちょっとだけ書いた。
今のうちの環境では、Zero Trustを有効にしたCloudflare WARPをオンにするとGitHubと接続できなくなる。ブラウザで見たりはできるのだが、とりあえず git pull は通らない。通らないと言うか鍵のパスフレーズ入力にもたどり着かない。
ちなみに、Cloudflare WARP アプリの名前は Cloudflare One Client という名前にリブランディングされるようだ。

 

そんなもんかと思っていたがこれは WSL2 環境で行った場合で、Windowsの方で git pull すると成功した。WSL2 のすべての通信がダメなわけではなく apt get などは問題なさそうだ。よくある ssh -T git@github.com が進まない。ローカル環境の Raspberry Pi に SSH するのは問題ない。ping github.com なども通るので DNS は問題ないのだと思う。

ssh -Tv git@github.com で詳細を見てみる。

...略...
debug1: Local version string SSH-2.0-OpenSSH_9.6p1 Ubuntu-3ubuntu13.14
debug1: Remote protocol version 2.0, remote software version b15cbbe
debug1: compat_banner: no match: b15cbbe
debug1: Authenticating to github.com:22 as 'git'
debug1: load_hostkeys: fopen /home/xxx/.ssh/known_hosts2: No such file or directory
debug1: load_hostkeys: fopen /etc/ssh/ssh_known_hosts: No such file or directory
debug1: load_hostkeys: fopen /etc/ssh/ssh_known_hosts2: No such file or directory
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: sntrup761x25519-sha512@openssh.com
debug1: kex: host key algorithm: ssh-ed25519
debug1: kex: server->client cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
debug1: kex: client->server cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY

ここで止まっている。 
鍵交換の応答を期待しているが返ってきていない?
-o KexAlgorithms=ecdh-sha2-nistp521 をつけるとうまくいったという人がいたのでまねしたが変わらず。
ログに出てくる sntrup761x25519-sha512 というのが暗号量子対策として変更された方式なのかな。

Post-quantum security for SSH access on GitHub - The GitHub Blog

$ ssh -v git@github.com exit 2>&1 | grep 'kex: algorithm:'
debug1: kex: algorithm: sntrup761x25519-sha512@openssh.com
^C 

そういうのはともかく、Zero Trust なのか Cloudflare WARP なのかわからないが、それを有効にすると NGになるし影響があるのは WSL2 での ssh だけというのが気になる。 

 

何もしてないのに。。。

あとは Windows で設定しているファイアウォールが影響しているとか?と思ってゆるい設定にすると通ってしまった!
そして設定を戻したのに通ってしまった!

な、何もしてないのに。。。

 

しかしその後もあまり調子よくない

その後はあまり気にせず使っていたのだが、PCの再起動をしてからまた調子が良くない気がする。SSH などは問題ないのだが winget のサイトと接続できない。Chrome もなんか時間かかったし DNS関係でなんかあるのかねぇ。


2026/02/24追記

よくわからないのだが、メーラーのThunderbirdに設定している Yahooメールのアカウントだけアクセスに失敗する。Gmailや他のアカウントもあるのだが失敗するのはYahooだけだ。「ログイン情報を送信しています...」のあとに失敗したダイアログが出てくる。ファイアウォールでこけているわけでもなさそうだし、パスワードの渡し方の設定を変更すると「対応してない」と出ているので通信自体はしているようだ。海外からのアクセスを許可しないようにしていたので無効にしたのだが関係ない。まあ、もう1台で動かしている Thunderbird の方は問題なく動いているから PC 側の設定だ。

ああ、いまわかった。

Windowsの IPv4 DNSサーバを 1.1.1.1 にしていたのだが、これを宅内のルータに設定すると動くようになった。
Cloudflare WARPをオンにするとダメになるから、DNS周りのなにかなんだろうなぁ。 

 

2026/02/28追記

Windows Firewall Control では WSL上でファイアウォールによるブロックが起きたときに通知が来ない。来たことはあるのかもしれないが記憶にないくらいには通知が出ない。ブロックしたログにも出てこないようだ。

SSHを使うのはほぼ WSL2からだったのだが、最近ブロックされていたのは 22番ポートを開けていなかったからのように思う。だったら「何もしてないのに直った」はおかしいのだが、Windowsファイアウォールの設定をリセットしてやり直している今はそんな状況だ。

Windows Firewall Control の推奨プロファイルは「レベル - 中」なのだが、これは送信を遮断側に倒す。「レベル - 低」がおそらく Windows の標準レベルでこちらは許可側にするようだ。なのでレベル中にしておくと送信失敗になってしまう。 

これで通知が出てくれれば気付くのだが、WSL2 は出てこないし他のアプリでもときどき出てこない。Windows Firewall Control のログにも出てこない。Windows ファイアウォールのログであれば出てきそうなのだが設定の変更ができない。設定を変更しなくても OK できない。注意事項に書いてある件が影響しているのだろうけど、Home版だと標準でグループポリシーオブジェクトを変更するツールは付属していないのでどれかのセキュリティツールが変更しているのだろうか。

 


ログは諦めて WSL2 側、正確には HyperV 側のファイアウォール設定に SSH などの送信許可を与えるようにした。

WSL2のファイアウォール設定 | hiro99ma blog

 

2026年2月24日

ThinkPad T460sにUbuntu24.04を入れたがスリープから復帰しなかった

長らく使っていなかった ThinkPad T460s だったが、長時間アプリを動かすテストにちょうど良さそうだったので Ubuntu24.04 をインストールした。

それはよかったのだが、蓋を閉じたりしてスリープさせると復帰しなかった。電源オフにしてもキーボードのバックライトが点いたままで電源周りが上手く行ってなさそう。

Debianのページに書いてあるとおりに /etc/default/grub に修正するといまのところ大丈夫そうだ。 

InstallingDebianOn/Thinkpad/T460s - Debian Wiki 

 

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash intel_iommu=off"

 

"splash" は元々書いてあったのでそのまま残しているだけだ。