windsurf-MCP — 継続実行を奪還するMCPプラグイン

Tool

概要

windsurf-MCPは、AIによる長大な・多段階な生成を行う際に頻出する「途中で生成を止めてしまう(ask_continue)」という問題に対処するための実験的ツールです。ローカルにMCPサーバーを立て、モデル側に「log_dev_memo」というローカルログ書き込みAPIがあるかのように見せかけることで、モデルの出力フローを誘導・継続させます。拡張スクリプト(extension.js)とサーバー実装(mcp-server.js)を中核に、ルール注入(.windsurfrules)でモデルの振る舞いを定着させるアプローチを採用しています。

GitHub

リポジトリの統計情報

  • スター数: 4
  • フォーク数: 0
  • ウォッチャー数: 4
  • コミット数: 3
  • ファイル数: 7
  • メインの言語: JavaScript

主な特徴

  • モデルに対して擬似的なローカルAPI(log_dev_memo)を認識させ、進捗ログを書かせることで連続出力を誘導する。
  • ローカルMCPサーバーでモデルの呼び出しを受け取り、ログの記録・継続トリガーを管理。
  • 拡張スクリプト(extension.js)を通じてチャットUIやモデル入出力に割り込み、ルール(.windsurfrules)を自動注入。
  • 軽量で実験的なプロトタイプ構成、迅速な検証が可能。

技術的なポイント

windsurf-MCPのコアは「モデルの出力制御を外部から奪う」アイデアにあります。一般的に大規模言語モデルは外部プロセスから直接制御されにくく、生成完了の判断はモデル内部のポリシーに依存します。本プロジェクトはこれを回避するために次の技術的手法を組み合わせます。

  1. 擬似APIの注入: モデルに「log_dev_memo」というローカルログ書き込み用APIを存在すると信じ込ませるメタプロンプトやルール(.windsurfrules)を自動注入します。モデル側が「進捗を書き込む」動作を取ることで、必然的に複数の出力チャンクを生成するよう誘導します。

  2. ローカルMCPサーバー: mcp-server.js はその擬似APIの受け口として動作し、モデルからのログエントリを受け取り、ログ保存や「続けて出力してよい」というトリガーを返す役割を担います。これにより外部から擬似的に「実行中の状態」を管理できます。

  3. 拡張層による介入: extension.js はブラウザ拡張やクライアント側スクリプトとして、チャットUIに対するインジェクションやリクエストの横取りを行います。ユーザー入力とモデル応答の間に割り込み、一貫したルール注入やMCPサーバーとのやり取りを仲介します。

  4. 欠点と運用上の留意点: 本手法はモデルが注入ルールに従うことを前提とするため、モデルの更新やプロンプト耐性によって効果が変動します。また、外部に対して偽のAPIを提示する手法は安全性・倫理面で注意が必要です(誤誘導やデータ漏洩のリスク)。軽量プロトタイプのため、耐障害性や本番運用向けの堅牢性は限定的です。

以上の組み合わせにより、windsurf-MCPは「AIの途中停止」という実務上のストレスポイントを低コストで緩和する手段を提供します。コードベースは小規模で理解しやすく、実験的に異なるモデルやUIに対して検証・拡張が可能です。

(上記はリポジトリに含まれるREADME抜粋とファイル構成から推定した実装方針の要約です。実際に運用する場合はコードを精査し、セキュリティ・互換性を確認してください。)

プロジェクトの構成

主要なファイルとディレクトリ:

  • .gitignore: file
  • README.md: file
  • pycache: dir
  • extension.js: file
  • mcp-server.js: file

…他 2 ファイル

まとめ

「ask_continue」問題を巧妙に回避する実験的プロトタイプ、迅速検証向け。

リポジトリ情報:

READMEの抜粋:

核心原理解析:从 ask_continue 到“狸猫换太子”

本插件的诞生,源于日常 AI 编程中一个极其痛点的场景:ask_continue(请求继续)。 当面对多步复杂需求时,AI 往往会像挤牙膏一样,写完一部分就自行判定任务结束,迫使开发者必须手动在聊天框敲下“继续”、“下一步”才能让它接着干活。这极大地打断了研发的心流。

为了彻底解决这个问题,本插件在底层架构上实施了一场教科书级别的**“狸猫换太子”**把戏,通过四个步骤彻底接管大模型的执行流:

第一步:布下诱饵 (The Trojan Horse)

大模型本身运行在封闭的沙箱中,不受外部控制。为了打破这层外壳,我们在本地启动了一个 MCP (Model Context Protocol) Server,并向 AI 谎称我们提供了一个名为 log_dev_memo 的本地日志工具。 配合自动注入的 .windsurfrules,我们在大模型的潜意识里打下思想钢印:“每次你写完一段代码,必须调用 log_dev_memo 把进度写进系统日志里。”

第二步:精准拦截 (The…