chat.md: The Hacker's AI Chat Interface [Experimental] について
chat.md は、AI との会話を編集可能な .chat.md のプレーンテキストファイルとして保存する VS Code 拡張機能です。会話をワークスペースやバージョン管理に含めたい開発者に向けており、MCP 経由でツールを利用できます。
主な機能
- 01編集可能な .chat.md ファイルによる会話
- 02過去の発言の編集と AI 応答の続き生成
- 03Anthropic および OpenAI 互換 API への対応
- 04ローカルおよびリモート MCP サーバーのツール呼び出し
- 05ワークスペースのファイルと画像をコンテキストとして添付
活用シーン
- 01AI 会話を VS Code 上でバージョン管理された Markdown ファイルとして管理
- 02過去のメッセージを編集し、その時点からモデルに続きを生成させる
- 03ネイティブのツール呼び出しを持たないモデルから MCP ツールを利用
MCP 対応
chat.md は MCP クライアントであり、VS Code の設定で構成した stdio およびリモートサーバー(Streamable HTTP と SSE)に接続してツールを検出します。現時点ではツールのみ対応しており、プロンプトとリソースは今後の対応予定です。
詳細
chat.md:ハッカーのための AI チャットインターフェース[実験的]
ついに、あらゆる LLM で MCP に対応した、完全に編集可能なチャットインターフェースが登場しました。
chat.md は、プレーンテキストファイルを通じて AI とのやり取りを再構築する Visual Studio Code 拡張機能です。一時的なウェブインターフェースや独自仕様のチャットウィンドウとは異なり、chat.md はファイルを中心とするアプローチを採用しています。AI との会話は .chat.md 拡張子を持つ Markdown ファイルにすぎません。編集、バージョン管理、共有が可能で、すべてあなたのファイルです。AI はファイルに直接応答を書き込みます。
これで、任意の '*.chat.md' ファイルをあなたがハックできる AI エージェントとして使えます。自由に非線形の AI との会話を楽しんでください。
gemini-2.5-pro と wcgw mcp を使って、この vscode 拡張機能を公開したときのチャットはこちらです
注記 ⚠️:chat.md は 100% AI によってコーディングされており、機能豊富な POC として扱ってください。
chat.md を選ぶ理由
| ほかの AI ツール | chat.md |
|---|---|
| ❌ 直線的な会話、または編集機能が限定的 | ✅ 非線形の編集 — 履歴を書き換え、会話を分岐できます |
| ❌ ツールの実行が独自実装に依存 | ✅ あらゆる LLM モデルでツールを呼び出せます |
| ❌ AI の応答を手動で編集できない | ✅ LLM に言葉を言わせる — 編集して、その続きから応答させられます |
| ❌ 多くの LLM が MCP に対応していない | ✅ あらゆる LLM モデルで MCP サーバーを利用できます |
| ❌ アシスタントの応答が最大トークン数に達すると再開できない | ✅ 不完全な AI の応答を任意の時点から再開できます |
| ❌ 会話がクラウド上に保存される、またはアクセスできない | ✅ コードと同じ場所に、人が読める形式のファイルとしてローカル保存できます |
| ❌ ワークスペースのコンテキストが分離されている | ✅ プロジェクトからファイルを直接添付できます |
機能
🗣️ ファイルベースの会話
Copilot のインライン候補、ChatGPT のウェブインターフェース、Cursor のサイドパネルとは異なり、chat.md は会話をワークスペース内の第一級のファイルとして扱います。
# %% user
How can I optimize this function?
[#file](src/utils.js)
# %% assistant
Looking at your utils.js file, I see several opportunities for optimization:
1. The loop on line 24 could be replaced with a more efficient map/reduce pattern
2. The repetitive string concatenation can be improved with template literals
...
🔌 あらゆるモデルに対応
- Anthropic Claude:すべてのモデル(Opus、Sonnet、Haiku)
- OpenAI:GPT-4、GPT-3.5、o シリーズ、および OpenAI Responses API に対応
- カスタム API:あらゆる OpenAI 互換エンドポイント(Azure、Google Gemini など)
- すばやい切り替え:会話の途中で異なるモデルを切り替えられます。
🛠️ MCP による汎用ツールエコシステム
Chat.md は Model Context Protocol(MCP) クライアントです。あらゆる LLM で使える、ツール実行のためのオープン標準です。
多くのチャットアプリケーションとは異なり、Chat.md はどの LLM にもツール呼び出しを制限しません。
- 真に汎用的:あらゆる AI モデル(Claude、GPT、オープンソースモデル)で、あらゆる MCP ツールを利用できます
- モデルに依存しない:会話を支える AI がどれであっても、ツールは同じように動作します
- ベンダーロックインなし:ツールの機能を失わずにモデルを切り替えられます
<tool_call>
<tool_name>filesystem.searchFiles</tool_name>
<param name="pattern">*.js</param>
<param name="directory">src</param>
</tool_call>
📎 コンテキストに応じたファイル添付
- テキストファイルや画像を会話に直接添付できます(コピーした画像を貼り付けられます)
- おなじみの Markdown 構文でファイルにリンクできます:
[file](path/to/file) - ファイルはチャットドキュメントを基準に解決されるため、プロジェクトのコンテキストに最適です(または絶対パスを使用できます)
💾 編集可能な会話
chat.md ファイルは単なるテキストなので、AI とのやり取りを完全に制御できます。
- 非線形編集:会話の前半を編集して、履歴を書き換えられます
- 会話のハッキング:AI の応答を編集して、AI に言葉を言わせられます
- 続行の制御:編集した任意の時点から AI に続けて応答させられます
- 途中で切れた出力を再開:AI の応答が途中で切れた場合は、新しいアシスタントブロックを追加して続けられます
- Git と相性抜群:会話の変更を追跡し、プロンプトを共同編集し、会話を分岐できます
- 会話テンプレート:よくあるタスク向けに、再利用可能な会話の開始文を作成できます
はじめに
クイックスタート
- VS Code マーケットプレイスから「chat.md」をインストールします
- API キーを設定します:
- コマンドパレット → 「Add or Edit API Configuration」
- 新しいチャットを作成します:
Opt+Cmd+'(Mac)/Ctrl+k Ctrl+c(Windows/Linux)を押すと、新しい「.chat.md」ファイルが作成され、ワークスペース情報がユーザーブロックに入力されます。- または、任意の場所に
.chat.md拡張子のファイルを作成し、vscode で開きます。
- 「# %% user」ブロックにクエリを入力して「Shift + Enter」を押します(または、新しい「# %% assistant」ブロックを作成して Enter を押します)。
- アシスタントが応答をストリーミングし、ツールを呼び出す様子を確認します。
任意で、チャットのライブプレビューを表示するために、Markdown プレビューを横に並べて開くことができます。より使いやすくなります。
使用方法
# %% systemブロックを挿入して、システムプロンプトに新しい指示を追加できます。- VS Code の設定で API 構成と MCP 構成を手動で追加できます。設定例を参照してください。
- 下部にあるライブステータスバーの「Chat.md streaming」アイコンをクリックするか、「chat.md: Cancel streaming」コマンドを実行すると中断できます。
- 新しいチャットの作成と同じ「Opt+Cmd+'」ショートカットを使って、ストリーミングをキャンセルすることもできます。
- 「Refresh MCP Tools」コマンドを実行すると、すべての mcp サーバーを再読み込みできます。その後、「MCP Diagnostics」を実行すると、利用可能な mcp サーバーを確認できます。
- 「Select api configuration」コマンドを使って、API プロバイダーを切り替えられます。
設定
chat.md は、以下の優先順位(高い順)で適用される3段階の設定システムに対応しています。
- ファイル固有の設定 - 個々の
.chat.mdファイルの先頭で設定します - プロバイダー固有の設定 - 各 API プロバイダーの VS Code 設定で設定します
- グローバル設定 - VS Code のデフォルト設定
ファイル固有の設定
任意の .chat.md ファイルの先頭でパラメーターを設定します:
selectedConfig="my-provider"
openaiApi="responses"
reasoningEffort="high"
maxTokens=4000
maxThinkingTokens=20000
# %% system
Your system prompt here
VS Code の設定
VS Code の設定 UI または settings.json から設定できます:
chatmd.apiConfigs: 名前付き API 構成(プロバイダー、API キー、モデル、ベース URL、任意の推論/トークン設定、およびopenaiApi:"auto" | "chat" | "responses")chatmd.selectedConfig: アクティブな API 構成chatmd.openaiApi: OpenAI API モード -"auto"(OpenAI がホストする gpt/o-series には Responses API を、それ以外には Chat Completions を使用)、"responses"、または"chat"chatmd.mcpServers: MCP ツールサーバーを設定しますchatmd.reasoningEffort: グローバルな推論の深さ(none、minimal、low、medium、high)chatmd.maxTokens: グローバルな最大応答トークン数chatmd.maxThinkingTokens: グローバルな最大思考トークン数
ツールの実行
AI の応答にツール呼び出しが含まれている場合、拡張機能は自動的に次の処理を行います:
- アシスタントの応答の後に tool_execute ブロックを追加します
- 指定されたパラメーターでツールを実行します
- ツールの結果をドキュメントに挿入します
- AI が続けられるよう、新しいアシスタントブロックを追加します
次の操作でツールの実行を手動で開始することもできます:
- ツール呼び出しを含むアシスタントの応答の末尾にカーソルを置き、Shift+Enter を押します
- tool_execute ブロックが挿入され、ツールが実行されます
キーボードショートカット
Shift+Enter: 次のブロックを挿入します(ユーザー/アシスタントを交互に切り替えます)。カーソルがツール呼び出しを含むアシスタントブロックの末尾にある場合は、tool_execute ブロックを挿入しますOpt+Cmd+'(Mac)/Ctrl+k Ctrl+c'(Windows/Linux):新しいコンテキストチャットを作成するか、進行中のストリーミングをキャンセルします
MCP ツールの統合
任意の Model Context Protocol サーバーに接続して、AI の機能を拡張できます:
ローカル MCP サーバー(stdio)
VS Code と同じ環境で動作するローカル MCP サーバーの場合:
"chatmd.mcpServers": {
"wcgw": {
"command": "uvx",
"args": [
"--python",
"3.12",
"--from",
"wcgw@latest",
"wcgw_mcp"
]
}
}
リモート MCP サーバー(Streamable HTTP)
chat.md は、MCP spec 2025-11-25 の新しい Streamable HTTP トランスポートに対応しています。このトランスポートは、従来の HTTP+SSE トランスポートに代わるものです。リモート MCP サーバーへの接続には、こちらを推奨します。
"chatmd.mcpServers": {
"remote-mcp": {
"url": "https://example.com/mcp",
"transport": "streamable-http"
}
}
カスタム HTTP ヘッダー(認証用など)を渡すこともできます。
"chatmd.mcpServers": {
"remote-mcp": {
"url": "https://example.com/mcp",
"transport": "streamable-http",
"headers": {
"Authorization": "Bearer your-token-here"
}
}
}
トランスポートの自動検出
デフォルトでは、transport フィールドは "auto" です。chat.md はまず新しい Streamable HTTP トランスポートを試し、サーバーが対応していない場合は、自動的に従来の SSE トランスポートに切り替えます。トランスポートには "streamable-http"、"sse"、または "auto" を明示的に設定できます。
| 値 | 動作 |
|---|---|
"auto"(デフォルト) | まず Streamable HTTP を試し、SSE に切り替えます |
"streamable-http" | 新しい Streamable HTTP トランスポートのみを使用します |
"sse" | 従来の SSE トランスポートのみを使用します |
リモート MCP サーバー(従来の SSE)
非推奨の HTTP+SSE トランスポートのみをサポートする、古いリモート MCP サーバー向けです。
"chatmd.mcpServers": {
"remote-mcp": {
"url": "http://localhost:3000/sse",
"transport": "sse"
}
}
必要に応じて、環境変数を追加することもできます。
"chatmd.mcpServers": {
"remote-mcp": {
"url": "http://localhost:3000/sse",
"transport": "sse",
"env": {
"API_KEY": "your-api-key-here"
}
}
}
AI はローカルサーバーとリモートサーバーの両方から利用可能なツールを自動的に検出し、その使い方を把握します。ツールのリストは最新の状態に保つため、5 秒ごとに自動更新されます。すべての MCP サーバーは並行して初期化されるため、応答が遅いサーバーや障害が発生したサーバーによって、ほかのサーバーがブロックされることはありません。
基本理念
chat.md は人為的な「チャット」というパラダイムから脱却し、AI とのやり取りの本質はテキスト処理であることを認識しています。会話をファイルとして扱うことで、次のことが可能になります。
- 永続化が簡単になります - 特別なクラウド同期や独自形式は必要ありません
- 共同作業が組み込まれています - ほかのコードと同じように共有、差分確認、マージができます
- バージョン管理が自然にできます - 時間の経過に伴う変更を追跡できます
- 無制限にカスタマイズできます - ファイルを自由に編集できます
制限事項
- MCP -- 現在はツールのみがサポートされています。プロンプトとリソースは今後サポートされる予定です。
- anthropic API では、キャッシュはまだサポートされていません。
- Gemini、ollama、llm studio、その他のモデルには、openai-api のみを使用してアクセスできます。
vscode の設定例
vscode の JSON 設定
"chatmd.apiConfigs": {
"gpt-5.2": {
"type": "openai",
"apiKey": "",
"model_name": "gpt-5.2",
"openaiApi": "responses",
"reasoningEffort": "none"
},
"gemini-2.5pro": {
"type": "openai",
"apiKey": "",
"base_url": "https://generativelanguage.googleapis.com/v1beta/openai/",
"model_name": "gemini-2.5-pro-exp-03-25"
},
"anthropic-sonnet-3-7": {
"type": "anthropic",
"apiKey": "sk-ant-",
"base_url": "",
"model_name": "claude-3-7-sonnet-latest",
"maxTokens": 6000,
"maxThinkingTokens": 18000
},
"openrouter-qasar": {
"type": "openai",
"apiKey": "sk-or-",
"base_url": "https://openrouter.ai/api/v1",
"model_name": "openrouter/quasar-alpha"
},
"groq-llam4": {
"type": "openai",
"apiKey": "",
"base_url": "https://api.groq.com/openai/v1",
"model_name": "meta-llama/llama-4-scout-17b-16e-instruct"
},
"together-llama4": {
"type": "openai",
"base_url": "https://api.together.xyz/v1",
"apiKey": "",
"model_name": "meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8"
}
},
"chatmd.mcpServers": {
"wcgw": {
"command": "/opt/homebrew/bin/uv",
"args": [
"tool",
"run",
"--python",
"3.12",
"--from",
"wcgw@latest",
"wcgw_mcp"
]
},
"brave-search": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-brave-search"],
"env": {
"BRAVE_API_KEY": ""
}
},
"fetch": {
"command": "/opt/homebrew/bin/uvx",
"args": ["mcp-server-fetch"]
}
},
"chatmd.selectedConfig": "gemini-2.5pro",
"chatmd.maxTokens": 8000,
"chatmd.maxThinkingTokens": 16000,
"chatmd.reasoningEffort": "medium"
設定に関する注意事項:
maxTokens(デフォルト:8000)は、モデルの応答に使用するトークンの最大数を制御します- OpenAI の推論モデル(o1、o3 シリーズ)では、
maxTokensはmax_completion_tokensの合計予算として使用されます(思考トークンと応答トークンの両方を含みます) - Anthropic モデルでは、
maxThinkingTokensで思考トークンの予算を個別に制御できます。または、reasoningEffortから自動的に計算できます - プロバイダー固有の設定はグローバル設定を上書きし、ファイル固有の設定はその両方を上書きします(優先順位の詳細は CONFIGURATION.md を参照してください)
ライセンス
MIT License - 詳細は LICENSE ファイルを参照してください。
フィードバックと貢献
- GitHub リポジトリで問題を報告してください
- プルリクエストによる貢献を歓迎します
クレジット
- wcgw mcp を使った Claude
- chat.md を使った Gemini 2.5 pro
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。