mcpField
W
wiki-research-loop

wiki-research-loop

github.com/rohitg00生産性2.9k138 回インストール4 週間前に更新
リポジトリ

wiki-research-loop について

ソースを取得し、主張を抽出・重複排除してページにまとめ、次のシードを追加するリサーチループのドライバーです。設定可能な制限、プライバシーチェック、実行記録を必要とする Wiki 調査ワークフロー向けです。

主な機能

  1. 01Web、arXiv、GitHub のフェッチャー
  2. 02主張の抽出と重複排除
  3. 03幅優先で処理するシードキュー
  4. 04予算・深度・ページ数の制限
  5. 05収束検出と停止スイッチ
  6. 06Markdown ログと実行統計

活用シーン

  1. 01調査課題を起点に Wiki を拡張
  2. 02自動ソース収集の範囲を制限
  3. 03新しい主張が収束した段階で実行を停止

MCP 対応

プラグインセッションでは、providers MCP サーバーの `run_provider_task` ツールに調査タスクを渡します。README には `wiki-query` との連携も記載されています。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/rohitg00/pro-workflow --skill wiki-research-loop

インストール後、Claude Code で/wiki-research-loopを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

scripts/
research-loop.js
scripts/source-fetchers/
arxiv.js
github.js
web.js

詳細

Wiki リサーチループ

Wiki を自動成長するナレッジベースに変えるドライバーです。wiki-builder と wiki-query の上に構築されています。

ループの動作

seed-queue (pending) → next-seed
  → fetch sources via plugins (web | arxiv | github)
  → extract claims
  → dedupe vs index (FTS5; later vector via 3.3.2)
  → compile new page or amend existing
  → upsert page (auto-FTS-index)
  → enqueue follow-up seeds (max-depth gate)
  → mark seed done
  → if budget OR convergence OR kill-switch → halt

停止条件(いずれかに該当した場合)

  • budget_usd を超過した(ループはフェッチャーごとのコスト見積もりを追跡します)
  • max_pages_per_run に達した
  • すべてのアクティブなブランチで max_depth に達した
  • 3 ページ連続で新しいクレームの追加が 5 % 未満だった(収束)
  • ファイル ~/.pro-workflow/STOP が存在する(オペレーター用キルスイッチ)
  • wiki.config.md の auto_research.enabled: false
  • Wiki が private: true であり、ローカル以外のフェッチャーが選択されている

コマンド

プラグインのセッションでは、以下のランナー引数を指定して、providers MCP サーバーの run_provider_task ツールを task: "research" で呼び出します。たとえば、args: ["run", "agent-memory", "--fetchers", "github"] のように指定します。任意の GitHub トークンは、プラグイン設定ダイアログから取得します。直接 CLI を実行する場合、明示的に指定された PRO_WORKFLOW_GITHUB_TOKEN を使用します。既存のマシン認証情報からトークンを取得しないでください。

node $SKILL_ROOT/scripts/research-loop.js run <slug> [--max-pages N] [--max-depth N] [--budget-usd 0.50] [--fetchers web,arxiv,github]
node $SKILL_ROOT/scripts/research-loop.js seed <slug> "<query>" [--depth 0] [--parent-id N]
node $SKILL_ROOT/scripts/research-loop.js seeds <slug> [--status pending|active|done|failed]
node $SKILL_ROOT/scripts/research-loop.js cancel <slug>
node $SKILL_ROOT/scripts/research-loop.js status

CLI フラグは、その実行中に限り wiki.config.md の設定を上書きします。

ソースフェッチャー

プラグインとして追加できます。それぞれ scripts/source-fetchers/<name>.js に配置します。インターフェースは次のとおりです。

module.exports = {
  name: 'web',
  match: (q) => true,                       // is this fetcher useful?
  estimateCost: (q) => ({ usd: 0, tokens: 0 }),
  fetch: async (q, opts) => [               // returns RawDoc[]
    { url, title, content, fetched_at }
  ]
};

組み込みフェッチャー:

  • web.js — 標準入力/標準出力のシムを通じて、ユーザーが利用可能な WebFetch ツールで取得します。結果はプレーンテキスト/Markdown として扱います。
  • arxiv.js — https://export.arxiv.org/api/query(無料、公開、キー不要)。要約とメタデータを返します。
  • github.js — https://api.github.com/search/repositories と README の取得を使用します(明示的に設定された GitHub トークンを使用し、未設定の場合は未認証のレート制限が適用されます)。

スタンドアロン CLI の実行時は、~/.pro-workflow/fetchers/<name>.js からカスタムフェッチャーを読み込みます。プラグインの MCP サーバーが使用するのは同梱のフェッチャーのみです。設定済みのトークンがユーザー提供モジュールに渡されることはありません。

予算の適用

イテレーション前:選択されたフェッチャーすべての estimateCost を合計します。累積コストの予測値が budget_usd を超える場合は停止します。

イテレーション後:LLM のコンパイル手順(Anthropic/OpenAI のパススルー)で使用されたトークンを追跡します。超過した場合は強制終了します。

環境変数によるフェッチャーごとの上書き:WIKI_LOOP_BUDGET_USD、WIKI_LOOP_MAX_PAGES、WIKI_LOOP_MAX_DEPTH。

シードキュー

wiki_seeds テーブルを使った SQLite ベースのキューです。

フィールド意味
query自然言語のシード
statuspending → active → done|failed
parent_idこのシードを生成したシード
depthルートからの BFS 深度

ループは (depth ASC, created_at ASC) の順に取り出すため、幅優先で探索します。

収束の検出

コンパイル済みページごとに、クレームテキストのトークンと直前の 3 ページとの Jaccard 係数を計算します。新規コンテンツが < 5 % の状態が 3 ページ連続した場合、停止して converged を報告します。

キルスイッチ

touch ~/.pro-workflow/STOP

ループは各イテレーションで確認し、正常に停止します。次回の実行で再開するには、ファイルを削除してください。

プライバシーガード

wiki.config.md に private: true が設定されている場合、ループはローカル以外のフェッチャーを拒否し、警告を出力します。許可されるのは、手動シードによる raw/ への取り込みのみです。

リアクティブトリガー(Phase 3.3.4)

scripts/file-watcher.js は wiki/<slug>/wiki/**/*.md を監視します。ユーザーがクレームを編集すると、深度 0 で検証用シード(verify: <claim>)をキューに追加します。pro-workflow の file-watcher.js フックを通じて接続されています。

Cron ティック(Phase 3.3.4)

scripts/research-tick.js は、Cron 形式の任意のランナーから起動できます。シードが保留中のオプトイン済み Wiki のうち、最も古いものを選び、1 回のイテレーションを実行します。フックイベント:pro-workflow:research-tick。

出力

各実行で次のものが書き込まれます。

<wiki-root>/logs/research-<UTC-timestamp>.md   # human-readable run log
<wiki-root>/derived/run-<UTC-timestamp>.json   # structured stats

実行ログの行:

[2026-05-08T10:42Z] seed-3 (depth=1) "memory consolidation in agents"
  fetcher=arxiv hits=3
  fetcher=web hits=2
  compiled wiki/concepts/memory-consolidation.md (claims=7, novel=4)
  enqueued 2 follow-up seeds
  cost so far: $0.04 / $0.50

wiki-query との統合

コンパイル済みの各ページは wiki-cli.js page を通るため、FTS5 の整合性が保たれます。重複排除の手順では、候補クレームのテキストを使って searchWiki を呼び出し、類似した重複項目を検索します。

ステータス(Phase 3.3.1)

提供済み:ループドライバー、シードキュー、web/arxiv/github フェッチャー、予算上限、収束検出機能、キルスイッチ、手動の run コマンド。

延期項目:

  • ベクトルによる重複排除(sqlite-vec による Phase 3.3.2)
  • LLM によるクレームの新規性判定(現在は Jaccard トークン重複率を使用)
  • Cron とリアクティブ機能(Phase 3.3.4)

コメント