AIの「根拠あります」に、原文で検印を押す。
Claude が回答で出典(プロジェクト内のファイルやウェブページ)を挙げると、mod 自身がその原文を読みに行き、主張と食い違っていないかを確かめます。結果は入力欄の上の帯と回答の本文に印で出て、原文の該当行を見ながら人が最終判断できます。
入れておくだけで、出典つきの回答が終わるたびに自動でチェックします。
原文にも同じことが書いてある
数値・条件が違う、否定されている など。いちばん重い印
添えた引用が原文に一字一句はないが、内容は食い違っていない
記述がない、取得に失敗、時間切れ、読まない設定のファイル
ボット対策などで取得できず、Web Archive にもない
自動では読めない。自分で開くリンクと[別の出典を探させる]
社内アドレスや秘密らしい値を含む URL。押したときだけ取りに行く
根拠を求めたのに URL がない/出典が名前だけ
件数は帯・ホバーのカード・/uradori で同じ数え方です。✔ ✖ ? はいつも、△ ⏸ 🔒 📄 はあるときだけ出ます(⏸ 🔒 📄 は ? に含めません)。
タイムアウトは30秒です(根拠:src/config.ts)。✖ 原文と違う
リトライは3回です(src/config.ts:3)。✔
実際のページやファイルの該当箇所を前後の文脈ごと表示し、根拠の行を ▶ で強調します。✖ が出たときはダイアログで自動で開きます(Esc で閉じる)。入力中ならキー入力を奪わず横に開くだけ。ターミナルが144桁未満と狭いときはトーストで知らせます。
チェックした文の後ろに 🔍 → ✔ / ✖ が付き、マウスを乗せると原文カードが重なって出ます。印は最近の10回答ぶん残ります。スマートフォンでは印だけ。
質問に「根拠」「出典」「一次情報」「エビデンス」などがあると、Claude にだけ見える指示(URL かファイルパスで書く、一次情報と HTML を優先、引用を「」で添える)を添えて送ります。帯に「🔍 根拠モードで送信」と出ます。
「」の引用や URL のテキストフラグメントは、モデルを使わずに原文と照合します。空白・全角半角の差は無視、「…」の省略にも対応。内容は合っているのに引用だけ合わないものは △ に分けます。
テキストフラグメント(#:~:text=…)付きリンクで、実際のサイトがその文までスクロールしハイライトされた状態で開きます(Chrome・Edge・Safari など)。
[訂正させる]は原文の抜粋つきで訂正を依頼。🔒 📄 には[別の出典を探させる]、⚪ には[一次情報で裏付けさせる]。直した回答もまた自動でウラ取りされます。
| コマンド | 動き |
|---|---|
/uradori | 原文ポップアップを開く(結果の要約と該当箇所へのリンクも文字で表示) |
/uradori 2 | 2件目の主張の原文を開く |
/uradori recheck | 直前の回答をもう一度チェックする |
/uradori off / on | 自動チェックを止める/再開する |
/uradori strict | 毎回の回答をウラ取り対象にする(もう一度で元に戻す) |
/uradori why | 直前の回答をウラ取りした/しなかった理由を表示する |
/uradori archive off / on | アクセス拒否のときに Web Archive を使わない/使う(既定: 使う) |
/uradori popup off / on | ✖ のとき原文ポップアップを自動で開かない/開く(既定: 開く) |
質問に根拠を求める言葉があるかどうかで動きが変わります。
| 質問 | 回答 | 動き |
|---|---|---|
| 根拠を求める言葉がある 根拠・出典・一次情報・ソース・裏付け・エビデンス・原典・ファクトチェック・cite など | URL・ファイルの出典あり | 原文でチェック → ✔ ✖ △ ?(数値・日付・規格などの主張から先に確認) |
| 出典が名前だけ | 帯に ⚪ URLなしの出典 n件 と[一次情報で裏付けさせる] | |
| 出典なし | 帯に ⚪ 根拠が示されていません と[一次情報で裏付けさせる] | |
| 根拠を求める言葉がない | URL・ファイルの出典あり | 原文でチェック |
| 出典なし | 何もしない |
「ソースコード」や数式の「公式」では発動しません。入力した文そのものは変わらず、根拠モードの印はそのターンかぎりです。
タイムアウトは60秒です(根拠:src/config.ts)根拠は src/config.ts の3行目です(直前の文が主張)docs/spec.md によると、〜ですsrc/config.ts:12、docs/a.md#L5)config.ts を修正しました」のような作業の報告example.com のようなドメイン名だけ、1.2.3 のようなバージョン番号「根拠あり」が伝言ゲームになる場面があるため。
Claude Code がウェブページを読むとき、受け取るのはページ全文ではなく小さなモデルが要約した結果です。
ドキュメントが古いと、Claude は古い内容を「根拠あり」として答えてしまいます。
リンクやファイルを自分で開くしかなく、結局確かめずに信じてしまいがちです。
Claude が読んだ要約を使わず、原文を自分で取りに行きます。判定は会話の履歴を持たない別のモデル呼び出しなので、Claude と同じ思い込みを引き継ぎません。
質問を送るときと、回答が終わったときの2か所で動きます。
送信時(prompt.submit):根拠を求める言葉があれば、Claude にだけ見える指示を質問に添えます。
回答完了時(turn.complete):$.clock.after(0, …) で処理を後回しにし、Claude を止めずに裏でチェックを始めます。サブエージェントの回答や空の回答は対象外です。
かっこ内の出典、「〜によると」「根拠は〜」などは文から直接取り出します。末尾の参考リンクのように対応が曖昧なものは、モデルに主張と出典を対にさせます。数値・日付・規格などの主張を先に確認します。
ファイルはプロジェクト内で秘密情報らしい名前でないものだけ。URL は社内アドレスや秘密らしい値を含むものを ⏸ にして送り出さず、それ以外をブラウザと同じヘッダーで取得します(1回15秒まで)。
403・429 やボット確認のページなら、Web Archive の最新の保存版で確かめます。保存版もなければ 🔒 です。
「」の引用があればモデルを使わずに原文と照合します。原文が大きいときは主張のキーワード(60_000→60000 のように正規化)と行番号を手がかりに抜粋します。
会話履歴のない呼び出しに主張・出典・行番号つき原文だけを渡し、一致/食い違い/確認できないと根拠の行番号を返させます(30秒まで)。根拠の行を示せなければ ? にします。
抜粋は判定モデルの言葉ではなく原文の行そのもの。URL には根拠の文を使ったテキストフラグメント付きリンクを作ります。✖ があればポップアップを開きます。
ブラウザと同じヘッダーで取りに行く
Web Archive の最新の保存版で確認。ポップアップに「📦 Web Archive 2026-04-25 の保存版で確認」のように出る
🔒。[別の出典を探させる]か、自分のブラウザで開いて確かめる
1回の回答でチェックする主張は最大6件、主張1件ぜんぶで60秒まで。時間を過ぎたものやリロードで途中になったものは ? にして、帯が「確認中」のまま残らないようにしています。判定モデルは hooks/register.tsx の JUDGE_MODEL(既定 haiku)で、sonnet に変えると精度が上がります。
Claude Code の mod の仕組みをどう使っているか。
| mod の機能 | ウラ取りでの使い方 |
|---|---|
session.start | セッション開始時に /uradori コマンドを登録 |
prompt.submit | 根拠を求める質問に、Claude にだけ見える指示(context)を添える |
turn.complete | 回答完了をきっかけに、裏でチェックを開始 |
command.run | /uradori の引数(番号・recheck・strict・why・archive・popup など)を処理 |
ui.render(AbovePrompt) | 入力欄の上の帯。根拠モードの表示もここ。アンケート表示中は譲る |
ui.render(AssistantMessage) | 回答の本文に印を付け、ホバーで原文カードを重ねる |
ui.render(Pane)+ $.ui.open | 原文ポップアップ。✖ のときはダイアログで開く |
$.fs / $.http | 原文を直接読む。Claude の要約を経由しない |
$.model.complete | 主張と出典の対応付け、および独立した判定 |
$.prompt.submit | [訂正させる][別の出典を探させる][一次情報で裏付けさせる]の依頼を送る |
atom(状態) | 結果の履歴(10回答ぶん)、オン/オフ、strict、Archive、自動ポップアップの設定を保持 |
hooks/register.tsx … イベント処理と UI(約1,160行)hooks/logic.ts … 出典抽出・URL の安全判定・引用照合・判定プロンプトなど純粋なロジック(約1,050行)tests/ … 表示(terminal / desktop / vscode / mobile)、引用照合、時間切れ、保留 URL など82件迷ったら ✔ にしない、が原則。
.env、*.pem、id_rsa、credentials など秘密情報らしいファイルは読まないlocalhost・プライベート IP・.internal などの社内アドレス、token= などを含む URL は自動で取りに行かず ⏸(リダイレクト先も同じ)。読んだページに仕込まれた指示で秘密を送らされるのを防ぐため/uradori archive off で止められる)約60秒で「古いドキュメント」を見抜く様子を試せます。
入手から動作確認・更新・うまくいかないときまでの詳しい手順は 導入ガイド にまとめています。
Claude Code がない環境でも、ブラウザで触れる体験デモで流れを試せます(動きを再現したもので、実際の判定はしません)。
demo/ には、docs/spec.md に「タイムアウト30秒」と書かれているのに、実際の src/config.ts は timeout: 60_000(60秒)という、ドキュメントが古いプロジェクトが入っています。
「docs/spec.md を読んで、タイムアウトとリトライ回数を教えて。どのファイルで設定されているかも書いて。コードは開かず答えて」
「タイムアウトは30秒、リトライは3回。どちらも src/config.ts で設定」
本文の文末に印が付き、原文ポップアップが自動で開く。src/config.ts の3行目 timeout: 60_000 が ▶ で強調されている。人はファイルを開いていません。
Claude が config.ts を開き直して「60秒でした。ドキュメントが古いです」と訂正し、帯が ✔ に変わります。