mcpField
T
THOR

THOR

ローカル
github.comメモリ・ナレッジ52 日前に更新

THOR について

THORは、Claude Codeなどのコーディングエージェント向けのローカルメモリです。関連するファイルやコマンドに応じてメモを提示し、ルールが現行の状態に合うと確認できた場合は変更を拒否します。メモリと学習データは原則として端末内に保存されます。

主な機能

  1. 01プロジェクトごとのメモリ分離
  2. 02関連ファイルやコマンドに応じたメモ提示
  3. 03ルールを実時検証し該当変更を拒否
  4. 04古いメモや未使用メモの検出
  5. 05メモリと学習データのローカル保存
  6. 06メモの改訂履歴を保持

活用シーン

  1. 01新しいセッションにプロジェクトの制約を伝える
  2. 02有効なルールに関わるファイル変更を防ぐ
  3. 03古くなったメモや役立たないメモを見直す

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"nworks3d-thor": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/nworks3d/thor-mcp:2.6.2"
]
}
}
}
起動コマンドdocker run -i --rm ghcr.io/nworks3d/thor-mcp:2.6.2

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
ocighcr.io/nworks3d/thor-mcp:2.6.2

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

翻訳後に原文が更新されています。最新の内容は原文をご確認ください。

Claude Code 用 THOR

THOR - AI コーディングアシスタントのための記憶

ほとんどの記憶ツールはアシスタントに注意を促すだけです。THOR は拒否できます。

証拠を添えたメモを渡してください。たとえば、「このファイルには今もあの行が含まれている」のように、すぐに実行できる簡単なチェックです。そうすると、そのメモは助言ではなくなります。THOR は、該当する編集やコマンドの実行前に拒否します。アシスタントが無視できる提案ではありません。確実な停止です。

その証拠は、必要となるまさにその瞬間に、実際のプロジェクトを対象としてリアルタイムで検証されます。古くなり、現在の実態を表さなくなったメモは、ひそかに証拠としての効力を失います。そのため、誤って処理を止めることはありません。

ほかのローカルメモリも書き込みを拒否できます。異なるのは、拒否の根拠です。盲信するルールではなく、リアルタイムで確認された証拠です。そして、学習も含め、それを生み出す一連の処理はすべて一か所、つまりこのマシン上で行われます。

ほとんどのメモは情報を伝えるだけです。ピン留めされて各セッションの開始時に引き継がれるか、アシスタントがそのメモに関連するファイルやコマンドを初めて扱うときに提示されます。

提示され続けるのに一度も評価されないメモについては、メモごとではなく、ひとまとめにして尋ねます。セッション終了時のレビュー(/thor-eval)で、THOR はプロジェクトごとに週に一度ほど尋ねます。THOR は、通常のターンを中断して、メモが役に立ったか邪魔になったかを尋ねることはありません。レビューで取り上げるのは、そのセッション中に実際に表示されたメモだけです。ほかの無関係な作業でしか表示されなかったメモは対象になりません。メモを最後に書き直してから「これは不要だった」という判定が 2 回続くと、通常のメモは再び提示されなくなりますが、探せば引き続き確認できます。メモの文章、チェック、バインディングを書き直すと、このカウントはリセットされます。また、チェックによって拒否できるメモがこの方法で非表示になることはありません。

ヘルスチェックでは、劣化したものをはっきり示します。現在は失敗する証拠、参照先のないメモ、表示される機会がないほど詰め込まれたメモなどです。

コード以外のもの、つまりレシピ、本、トレーニングログなどは、それぞれ専用のライブラリに分けて保存されます。そのため、デプロイのルールと保存場所を奪い合うことはありません。

アカウントも、キーも、クラウドも不要で、すべてデフォルトでマシン上に保存されます。どのメモを残す価値があるかについての学習内容も含まれます。マシンの外に出る可能性があるものは 2 つだけです。詳しくは以下の「マシン上に保存される内容」をご覧ください。

始め方。 このリポジトリのリンクを AI アシスタント(Claude Code)に送り、「THOR をインストールして」と伝えてください。セットアップはすべて自動で行われます。必要なのは、Claude Code を閉じて一度だけ開き直すことです。 手順の詳細は、下の始め方をご覧ください。あなたがアシスタントの場合は、AGENTS.mdをお読みください。


THOR は無料で、GPLv3 ライセンスです。役に立ったと感じたら、開発を支援できます。 Ko-fi で支援する または YouTube メンバーになる — 強制ではなく、有料の壁もありません。どちらの場合も、すべてオープンのままです。

一緒に作業する人のために、AI アシスタントとして THOR をセットアップしていますか? すぐに AGENTS.md をご覧ください。あなた向けに書かれています。

動画:YouTube で解説する THOR

動画で見たい方へ。上の動画では、THOR とは何か、なぜ作られたのかを説明しています。

何をするのか

伝えたことを覚えます。 ルール、注意点、決定事項、プロジェクトの構成。一度だけ、自分の言葉で伝えれば、変更するまで残ります。

必要なタイミングで返します。 覚えておく必要のある検索ボックスではありません。メモは、その内容に関係するファイルを操作したり、コマンドを実行したりしているとき、まだその話を聞いていない会話に届きます。

警告するだけでなく、間違った変更を止めます。 確認可能な内容を含むメモは、書き込みそのものを拒否できます。ほとんどのメモは情報を伝えるだけです。これは意図的な設計です。正当な作業を妨げるルールは、このシステムが引き起こし得る最も大きなコストだからです。

プロジェクトごとに記憶を分けます。 プロジェクトごとに独自の記憶があります。あるリポジトリのルールが別のリポジトリに漏れることはありません。

古くなったときに知らせます。 移動したファイルを指すメモ、誰にも読まれないメモ、より目立つメモに押し出されたメモなど、役に立たなくなった記録を追跡します。何が起きているのかを平易な言葉で率直に伝えるので、修正できます。

すべてが自分のマシン上にとどまります。 アカウントも、キーも、サーバーも必要ありません。THOR が自ら何かを送信することはありません。マシンの外に出るものは2つだけで、どちらもあなたが許可した場合に限られます。1つ目は、THOR 自体に関するバグレポートです。表示された正確な内容に明示的に同意した後に限り、GitHub ページに送信されます(ファイルパス、プロジェクト名、コンピューター名、アドレス、キー、パスワードは、送信前に削除されます)。2つ目は、選択した場合に、指定した場所へ記憶のバックアップを保存することです。このマシン上に保存するバックアップなら、何も送信されません。THOR が自分のルールをテストできるよう、記憶の横に保存される最近のコマンドと応答の短い記録は、マシンの外に出ることはなく、無効にすることもできます(install --set-recording off)。

実際にはどのように動くのか

何か月も前、このプロジェクトは古い Node のバージョンに固定されていて、新しいバージョンではビルドが壊れると、苦労して知りました。そのことを一度伝え、先に進みました。

今日、新しい会話で依存関係を追加するために package.json を開きます。古く見えるエンジンのバージョン範囲に気づき、親切な修正を加えてバージョンを上げようとします。まさにそのとき、入力する前に、あなた自身の言葉が目の前に表示されます。

それがすべてです。使うことを覚えておかなければならない検索ボックスではありません。必要なタイミングで現れる記憶です。

「そのための CLAUDE.md はもうあります」

ほとんどのアシスタントは、起動時にルールファイル(CLAUDE.md、AGENTS.md、 .cursorrules)を読み込みます。これは役に立ちますが、すぐに限界が来ます。

ある程度の大きさを超えると電話帳のようになり、電話帳を最初から最後まで読む人はいません。アシスタントはざっと目を通して要点をつかみ、そのまま先に進みます。ルールはそこに書いてありました。それでも見落とされました。その後、何も問題がなかったように見えるのは、その行がまだファイルに残っているからです。そのため、守られていると思い続けてしまいます。

ここが、本当に違うところです。履歴もなく、このプロジェクトで何が犠牲になってきたかも知らず、昨春に本番環境を壊したものとまったく同じ書き込みを、キーひとつで実行しようとしている、新しいエージェントを想像してください。ルールファイルなら、そのことは4ページ目のどこかに書いてあったでしょう。THOR はそのキー入力を止めます。書き込みは行われません。そして、それを止めるのは、問題が起きたその日に、あなたが書いたメモです。

約束しているのは、これだけです。よりよい助言ではなく、間違った変更が反映されないこと。

そこにたどり着くのは簡単ではありませんし、始める前に知っておく価値があります。メモがその力を得るのは、力を発揮できるように書かれている場合だけです。実際のファイルやコマンドに結びつき、今も適用されることを確認できる情報を含んでいる必要があります。THOR には、まさにその書き方を学べる初期メモが付属しており、機能しないメモは受け付けません。AGENTS.md に、ルールの仕組みがすべて記載されています。

これを支えるのは3つの仕組みで、すべてあなたのマシン上の1つのファイルに収まっています。

1. 失われるものは何もありません。 すべてのメモは永久に保存されます。考えが変わっても古いバージョンは残るため、以前はどう考えていたのか、いつ変わったのかをいつでも振り返れます。メモの2つのバージョンが矛盾する場合、THOR は片方を黙って選んでもう片方を捨てるのではなく、両方を保持して知らせます。これは、あなたが知っていることにソースコードと同じような配慮を向けるということです。

2. 適切なタイミングで届きます。 THOR は、あなたが送るメッセージのたびに記憶を確認します。そして、アシスタントがルールに関係するファイルに初めてアクセスしようとしたり、コマンドを実行しようとしたりすると、そのルールがその場でアシスタントに提示されます。間違いが起きた後ではなく、起きる前に。

3. アシスタントが管理します。 手作業で記入しなければならないノートではありません。アシスタントはメモを追加し、修正し、事実でなくなったメモを無効にし、実際に役立ったメモに印を付けることができます。THOR をうまく使えば、作業中にアシスタントがひそかに整理してくれる THOR になります。

コードも読み込みます。プロジェクトを指定すると、ソースとドキュメントを取り込むため、「この部分はここでどう動くのか」という問いに、推測ではなく実際のプロジェクトに基づいて答えられます。

デフォルトでは、すべてがあなたのマシン上にとどまります。クラウドもアカウントもサブスクリプションもなく、登録する必要もありません。任意の機能が使えない場合、THOR は動作を停止するのではなく、より簡単な方法にひそかに切り替えます。

実際に作業を止められるメモ

適切なタイミングで警告を表示する価値は大きく、長い間、THOR にできるのはそれだけでした。メモは警告を発することはできましたが、拒否することはできませんでした。

バージョン 2 では、メモに有効性を証明する仕組みを持たせられます。THOR がその場で実行し、メモの内容がまだプロジェクトに当てはまるかを確認できる簡単なチェックです。「このファイルには、今もあの行が含まれている」「あのファイルは今も存在する」「私たちが書くものには、この文字は一切登場しない」。あるいは、間違っていることではなく、抜けていることを見つけるために、「私が起動するすべてのエージェントは、作業に使うモデルを指定する」。

これにより、メモにできることが変わります。

  • 証明がその場で実行でき、条件を満たすメモは、誤った変更を完全に阻止できます。
  • 言葉だけで裏付けられたメモは、警告だけを行えます。アシスタントに情報を伝えることはできますが、決して禁止することはできません。
  • 証明を実行できない場合(ファイルが移動した、パスがなくなったなど)、何もブロックされません。確認が必要なものとして報告されます。

この最初の種類の停止は、アシスタント自身のツールを使った編集よりも広く適用されます。保護されたファイルの削除、内容を空にすること、アシスタントが実行したコマンドによる上書きも、同じ誤った変更と見なされ、同じように阻止されます。

この区別を設ける理由は、耳の痛い話ですが、率直に伝える価値があります。メモは古くなります。メモを書いても、プロジェクトは先に進み、メモはいつの間にか間違った内容になります。古いメモなら何でも作業をブロックできるツールがあれば、ほとんどの場合、何か月も前に当てはまらなくなった理由で作業を止めることになってしまいます。だから THOR は、そのメモが今この瞬間もプロジェクトの状態を正しく表していると証明できる場合に限って、その力を与えます。

このページの冒頭ですでに述べたとおり、ほとんどのメモは何もブロックしません。ヘルスチェックには、ブロックできるメモの数が表示されるので、確認してください。作者自身のメモを初めて測定したときは、2999 件中、自らを証明できたメモは 2 件でした。意識的に取り組んだ 1 日で、その数は 256 件になりました。どのような証明がメモを裏付けるかは、そのメモごとに判断する必要があるため、手作業で進めていきます。

この数が表示されること自体が重要です。何もひも付いていないセーフティネットは、機能するセーフティネットと見た目がまったく同じです。

THOR が確認するので、覚えておく必要はありません

思いついた人に任せていると、結局何も起きません。だから THOR は、2 つの場面で自ら確認します。

メモが書かれたとき。 そのメモを検証できるかどうかを尋ねることなく、THOR が試します。コマンド、フラグ、ファイル名を明記したルールは、ファイルやコマンドを監視するものと同じガードにかけられます。ルールに書かれた内容に基づくチェックが、誤った変更を実際に拒否し、通常の変更は通すなら、そのメモは拒否機能を持つルールとして保存されます。適切なチェックがなければ、通常のメモとして保存されます。適切なタイミングで再び表示されますが、何かを拒否することはできません。却下されたメモには、代わりに何を書けばよいかが示されます。

すでにあるメモについて。 THOR は各レビューの開始時に、以前のメモを自ら整理します(以下を参照)。アシスタント自身の判断が必要なものだけが、ひとまとめにして渡されます。そのため、これらの機能ができる前に書かれた記憶も、見込みなしと扱われず、引き続き処理されます。

注意点をはっきり述べておきます。THOR が証明できるのは、一致する変更が止められるようにメモが 配線されている ことです。入力したテキストが、実際のコマンドで使われているテキストと同じかどうかは判断できません。スペルミスのある断片でも、配線は完璧で、何も防げないことがあります。そのため、ヘルスチェックでは 2 つの異なる数を報告します。何かを拒否できるメモの数と、実際に拒否したことのあるメモの数です。信頼すべきなのは、後者です。

レビューは、たまったものを片付けるほうきです。セッションの最後に /thor-eval を実行してください。記憶として提示されたものの、まだ判定されていない項目をすべて確認し、いつの間にか古くなった内容を修正して、メモを 1 つずつではなく、一度にまとめて未処理分を片付けます。実行されないセッションでは、その未処理分が次のセッションに引き継がれるだけです。

実行を覚えておく必要はありません。前回のレビュー以降、プロジェクトで 1 時間作業が行われ、アシスタント自身もそこで少なくとも 10 分作業していると、THOR はレビューが提出されてチェックされるまで、アシスタントのターンを終了させません。THOR はレビューの開始時に古いメモを自ら整理します。アシスタントが扱うのは、自身の判断が必要なものだけです。また、何が判定され、何が拒否されたかを示すレビュー報告の部分は、THOR が自らの記録に基づいて作成するため、捏造できません。THOR 自身のツール以外の方法で提出されたレビューはカウントされず、THOR がその理由を伝えます。

レビューの頻度は、ご利用のプランによって異なります。 レビューは通常の作業と同じ使用量制限を利用するため、THOR はプロジェクトごとに週 1 回に抑えています。小規模プラン(Pro および Max 未満のすべてのプラン)では、これが厳密に適用されます。見つかった内容にかかわらず、週 1 回で、毎日実施されることはありません。Max でも週 1 回ですが、問題が見つかった場合(欠陥、実際の作業を拒否するルール、未実施のチェック、カウントされなかったレビュー、THOR 自体のバグ)は毎日実施され、レビューで問題が見つからなかった時点で週 1 回に戻ります。THOR はインストール時に Claude Code の設定ファイルからプランを読み取り、初回セッション時の質問で確認を求めます。install --set-plan max または install --set-plan small で回答を記録できます。レビューのリクエストには、どちらが適用されるかが 1 行で記載されます。

骨組みのある記憶

バージョン 1 は記憶力に優れていましたが、異議を唱えることはありませんでした。適切なタイミングでアシスタントにメモを渡し、あとは期待するだけでした。バージョン 2 は、骨組みを備えた同じ記憶です。

  • ノートは拒否できます。 見出しのとおり、このセクションではそのことを説明します。 バージョン1にできたのは、話すことだけでした。
  • 不適切なノートは受け付けられなくなりました。 発動する可能性がまったくない、誤りを証明する手段がない、長々と書かれている、またはすでにあるノートをそのまま繰り返しているノートは、理由と修正方法を示して入口で拒否されます。バージョン1では渡されたものを何でも保存していたため、その半分にたどり着けないと数か月後に判明することもありました。
  • 実際に行ったことを数えます。 何件のノートが何かを拒否できるのか、実際に拒否したことがあるノートはいくつか、メモリのうち再び読み込まれない部分はどれほどか。バージョン1には、本来の目的である安全網について数値がありませんでした。そのため、壊れた安全網が1年間もそのままになってしまうのです。
  • メンテナンスは必須になりましたが、しつこく催促することはありません。 繰り返し発動するノートの評価と古いルールの整理は、プロジェクトの評価中に一度だけ依頼されます(プロジェクトごとに週1回)。ターンのたびに最後に依頼することはありません。ターンを中断するのは、セッション自体が行ったことだけです。つまり、保存したばかりなのに二度と表示されないノート、未完了のセットアップ、あなたが述べたのに保存されなかった決定です。後で対応するという約束で済ませることはできません。
  • メモリのコピーを別の場所に保存できます。保存先はあなたが選びます。 バックアップは初回のセッションで選択します。インストール時に勝手に有効化されることはないため、選ぶまでは何もバックアップされません。選択すると、THORはメモリ全体をおよそ1日に1回、プライベートなgitリポジトリに書き込みます。install --set-backup localを指定すると、このマシン上のメモリの隣にそのリポジトリが置かれ、どこにも送信されません(メモリファイルの破損には対応できますが、ディスクの故障には対応できません)。install --set-backup <folder or address>を指定すると、指定した場所(NAS上のフォルダー、自分が所有する別のコンピューター、またはプライベートリポジトリ)もnasというリモートとして追加され、コピーはそこだけに保存されます。install --set-backup offを指定すると、バックアップを停止します。doctorを実行すると、最後のコピーの保存先と時刻、またはバックアップに失敗している場合はその理由が表示されます。復元は1つのコマンドでできます。
  • 持ち運びのコストはほとんどかかりません。 ノートは300文字、ブロックはノート4件、1200文字までに制限されるため、会話に入るのは数百トークンほどです。毎ターン、ルールファイル全体を読み直す必要はありません。ノートが1万件あっても、ターンごとのコストは50件の場合と同じです。送信内容を決めるためにモデルを呼び出すことはありません。ローカルプログラムがローカルファイルを読み取るため、キー入力の前にネットワークを往復する必要はありません。例外はピン留めされたノートです。会話の開始時に全文が読み込まれます(新しいメモリには最初から22件あり、このブロックは約9,500バイトまでです)。そのため、ピン留めは必要なものだけにしてください。上限がそれを補います。
  • 返信もチェックされます。 新しいメモリには、返信用の6つのルールを記した小さなファイルが付属し、メモリの隣に保存されます。結果のような返信は簡潔な要約から始めること、アシスタント自身で確認できることをあなたに確認させないこと、反射的な免責事項を述べないこと、回答を約1000文字以内にすること、確認したと述べるときは根拠を示すこと、すべて確認したと述べるときは何を確認したのかも必ず伝えること、というルールです。いずれかに違反した返信は、一度だけ書き直しに回されます。あなたが求めた要約や概要は長くてもかまいません。また、初回セッションの一覧には長さのルールは適用されません。ファイルを編集する、項目を1つ削除する、またはファイルを削除することで、ルールを変更または無効化できます。
  • 古くなったノートは放置せず、見つけ出します。 根拠の確認結果が誤りだったノートは、誤ったまま黙って使われ続けるのではなく、報告されます。発動し続けているのに、適切だったかどうかを誰からも確認されていないノートは、確認を求められます。最後に書き直されてから「これは該当しなかった」という判定が2回あると、通常のノートは表示されなくなりますが、検索はできます(本文、確認条件、または関連付けを書き換えると、カウントは再開します。また、確認条件で拒否できるルールがこの方法で非表示になることはありません)。バージョン1では、誤ったノートもそのまま残っていました。
  • 混雑状況が可視化され、受け付けが拒否されます。 1つのブロックに入るノートは限られているため、ノート同士で表示枠を奪い合います。バージョン2では、その競合を数え、保存したばかりのノートが混雑しすぎて表示されない場所に入った場合に知らせ、枠を占めているノートを示します。また、ノートが入り得る場所がすべて、より優先度の高いノートで埋まっている場合は、書き込み自体を拒否します。特定のファイル、フォルダー、またはコマンドに結び付いたノートは、その場所に表示できる上限数がすでにある場合、ただちに拒否されます。優先度の低い競合相手も数に含まれるため、優先度の高いノートが低いノートを押し出して、気付かれないまま見えなくなることはありません。バージョン1では受け付けても何も知らせませんでした。そのため、誰にも読まれないアドバイスでメモリが埋まってしまうのです。場所を空けるのはアシスタント自身の役目です。拒否時には、その場所にあるすべてのノートと、それぞれの優先度、および何かを拒否できるかどうかを示し、正当な解決方法を3つ提示します。同じ内容の2つを統合すること、本当に関係するより限定的なファイルやコマンドに移すこと、理由を添えて古くなったものを削除することです。あなたへの質問にすることはなく、この制限を回避するために正しい確認条件を破棄することもありません。
  • プロジェクトのメンテナンスを担当するアシスタントは、同時に1つだけです。 同じプロジェクトで2つの会話が進行している場合、ノートの評価、ルールの修正、プロジェクト評価の作成のために停止されるのは片方だけです。もう片方には、どちらの会話が作業中かを1行で知らせます。その会話が30分間応答しなくなった場合は、次に依頼された会話が引き継ぎます。
  • あなたの「実行して」はアシスタントが入力できません。 ルールで、コマンドの実行にはあなたの明示的な許可が必要だと指定できます(たとえば、メールの送信や稼働中のサーバーへの操作など)。その場合に認められるのは、あなた自身のメッセージだけです。このターンか、その直前のターンであなたが自分で入力した内容です。アシスタントが自分のコマンドにその言葉を入れても、ヘルパーの報告に含まれていても、あなたが引用として貼り付けたテキストに含まれていても、許可とは見なされません。THORが会話を読み取って確認できない場合は、推測せずに拒否します。

コード以外のすべてのための、もう一つのメモリ

上記のメモリは作業用に作られています。ゲートがあり、作業を中断するメモがあり、会話に届く量には厳しい上限があります。レシピには、どれもまったく向いていません。

そこで2.1ではライブラリが追加されます。これは本当に独立した機能です。専用のファイルと、専用の2つのコマンドがあり、最初のメモリにアクセスする方法はありません。ここに入れたものが作業を中断したり、メモと競合したり、ブロックの容量を使ったりすることは決してありません。目にするのは、自分で頼んだときだけです。

本棚のように機能します。

  • すべてのものは棚に収まり、棚が入れ子になることはありません。本、レシピ、トレーニング記録、支出などです。棚の名前を指定せずに何かを登録しようとすると拒否され、登録済みの棚が一覧表示されます。そのため、アシスタントは名前を作り出すのではなく、実在する棚から選びます。
  • 棚を作れるのはあなただけです。 該当する棚がなければ、アシスタントは新しい棚の名前をどうするか、あなたに尋ねる必要があります。あなたが答えると、アシスタントはその言葉をそのまま繰り返し、同じ返信の中で棚を作成して項目を登録します。名前を勝手に作ったり、質問を省略したりすることはできません。これが、整然とした8つの棚が雑然とした60個に増えるのを防ぐルールです。
  • 棚が増えても、分割せずラベルを付けます。 1つの棚にレシピが200件あっても、「bbq」や「デザート」で絞り込むだけで、棚は1つのままです。これにより、棚の一覧を短く保ち、頭の中で把握しやすくなります。
  • 表示されるのは、長文ではなく索引です。 棚を開くと、項目ごとに1行で表示されます。番号を指定すれば、その項目を全文読めます。
  • 同じものを2回登録しようとすると拒否され、すでに登録済みの項目が示されます。
  • 削除されることはありません。 アシスタントは、もう該当しない項目を引退扱いにできます。項目は一覧と検索結果から外れますが、ライブラリが存在する限り、番号を指定すればいつでも全文を読めます。
  • 検索で「何も見つからない」と答えることはありません。 検索語が一致しない場合(尋ねるときの言葉は、書いたときの言葉と異なることがよくあるので、そうなることもあります)、代わりに該当する棚を案内します。「ribben」と書いたときに「ribbetjes」と尋ねても、見つけられます。

はじめに

最も簡単な方法は、アシスタントに任せることです。 このリポジトリへのリンクをアシスタントに送り、「THORをインストールして」と頼んでください。アシスタントは、自分向けに書かれたAGENTS.mdを読み、下記のコマンドを代わりに実行して、動作を確認します。そして、求めるのはたった1つです。アシスタントを一度再起動してください。ダウンロードも、パスの入力も、Rustのインストールも、質問への回答も必要ありません。再起動後の最初の会話でセットアップが自動的に完了します。設定は、希望を伝えるだけで変更できます。

最初の会話では、インストール時に設定されたすべての項目が、1行ずつ番号付きで表示されます。選択するまでオフのままなのは2つだけで、それ以外はすでに有効です。1つはヘルパーエージェントモードです(メインのアシスタントが判断し、ヘルパーの安価なモデルが作業を行います。install --set-helpers onで有効になります)。もう1つはバックアップです(localまたは保存先を選ぶまで、バックアップは作成されません)。変更履歴の項目は、プロジェクトにCHANGELOG.mdが存在せず、作成しないと言わなかった場合にのみ、そのファイルを作成します。番号で答える(「1 はい、3 いいえ、10 local」)か、「defaults」と伝えてください。言及しなかった項目は、すべてデフォルトのままです。

かんたんな方法:プログラミングツール不要の5つの手順

Claude Codeをインストールし、少なくとも一度起動しておく必要があります。それ以外に準備するものはありません。アカウントもキーも不要です。以下の1行を貼り付ける方法では、gitもPythonも必要ありません。代わりにアシスタントにTHORをインストールしてもらう場合は、アシスタントがコンピューターにgitとPython(アシスタント自身のツールが使用します)があるか確認し、ないものはシステムのパッケージマネージャーでインストールして、必要な許可を求めるのは最大1回だけです。

  1. ターミナルを開きます。 WindowsではWindowsキーを押し、「PowerShell」と入力してEnterキーを押します。Linuxではターミナルを開きます。

  2. 1行だけ貼り付けてEnterキーを押します。 このプロジェクトのGitHubページから最新リリースをダウンロードし、ダウンロードしたファイルをその隣に公開されているチェックサムと照合し、ホームフォルダー内のthor2フォルダーに展開して、すべてをセットアップします。実行した内容は平易な言葉で表示されます。管理者権限は不要で、ユーザーフォルダーの外には何もインストールされません。

    Windowsの場合、PowerShellで実行します。

    irm https://raw.githubusercontent.com/nworks3d/THOR-for-claude-code/main/install.ps1 | iex
    

    Linuxの場合:

    curl -fsSL https://raw.githubusercontent.com/nworks3d/THOR-for-claude-code/main/install.sh | sh
    

    (WindowsでTHORのプログラムが起動しない場合は、Microsoftの「Visual C++ Redistributable」をインストールして、もう一度この行を貼り付けてください。再度貼り付けても問題ありません。)

  3. Claude Codeを完全に終了して、もう一度起動します。 Claude CodeがTHORを認識するのは起動時だけなので、再起動するまでは何も有効になりません。

  4. トピック用のフォルダーを作成し、そのフォルダーでClaude Codeを開きます。 たとえば、DocumentsにKitchen renovationというフォルダーを作成し、メモ、見積書、PDFを入れておきます。プログラミングプロジェクトである必要はありません。そのうえで、アシスタントに「このフォルダーにトピックとして独自のTHORメモリーを作って」と伝えます。

  5. あとは普段どおり作業するだけです。 「タイルはTilehouseのもの」「オーク材のワークトップに決めた」といったことを一度アシスタントに伝えれば、そのフォルダーでの後の会話ではすでに把握しています。トピックフォルダーごとに独自のメモリーがあるため、あるトピックの情報が別のトピックに漏れることはありません。問題なく動作しているか確認するには、アシスタントに「THORは動作している?」と尋ねてください。回答の最初の行に、平易な要約が表示されます。

セットアップでは、Claude Codeのファイルである設定ファイルと、使用が許可されているツールの一覧を変更します。変更前には両方のバックアップを作成します。実行前にスクリプトを読みたいですか?このリポジトリのinstall.ps1またはinstall.shをブラウザーで開いてください。macOS向けのビルドはまだないため、Macでは以下の方法を利用してください。別のアシスタントを使っていますか?以下の別のアシスタントから使うをご覧ください。

トラブルシューティング:「THORプログラムが見つかりません」(ウイルス対策ソフトがファイルを削除した場合)

ウイルス対策ソフトは、THORのsync.exeのような署名のない小さなプログラムを誤って削除することがあります(「誤検知」です。Windows Defenderは2026-10-11に実際にこれを行いました)。その場合、THORは会話の開始時とdoctorで、PROBLEM: THOR program missingで始まり、対象ファイル名を示すメッセージを表示します。以後、ほかの問題が何も通知されないまま発生することはありません。1時間ごとの同期処理は失敗を記録し、doctorは、処理が一度も実行されていないのか、実行されて失敗したのか、プログラムがなくなったのかを知らせます。元に戻すには、次の手順に従います。

  1. Windows セキュリティを開きます(Windowsキーを押して、「Windows Security」と入力します)。
  2. ウイルスと脅威の防止を選択し、次に保護の履歴を選択します。
  3. THORのファイル名が記載された項目を探して開き、操作 > 復元を選択します。
  4. 該当する項目がない場合は、THORをもう一度インストールします(上記のかんたんな方法と同じコマンドです)。プログラムが再度配置されます。

繰り返し発生する場合、アシスタントはTHORのプログラムフォルダーをWindows Defenderの除外対象に追加することを提案する場合があります。これは、あなたが許可した後にのみ実行します。除外すると、そのフォルダー内のファイルはDefenderによるスキャンの対象外になるため、そこに不正なファイルが置かれても検出されません。Windowsでは管理者への確認が1回表示されます。許可しなくても問題ありません。また、THORがWindowsのセキュリティ設定を勝手に変更することはありません。除外はいつでも、Windows セキュリティ > ウイルスと脅威の防止 > 設定の管理 > 除外から削除できます。

開発者向け:自分でビルドする

Rust ツールチェーンが必要です。それ以外は何も必要ありません。取得するキーも、事前にダウンロードするモデルも、アカウントも不要です。

cd thor2 && cargo build --release --features semantic

--features semantic は必須です。指定しないと、エラーもなく機能しなくなります。 これを指定しなくても、ビルドも実行もできますし、単語どおりの検索には正しく応答します。機能しなくなるのは意味による検索です。エラーがどこにも出ないまま、何も返ってきません。両者を確実に見分ける方法はサイズです。thor2/target/release/serve.exe を確認してください。20 MB を超えていれば正しいビルドで、数 MB なら間違ったビルドです。フラグを付けて、もう一度ビルドしてください。

次に、セットアップを自分で実行します。これは、ワンコマンドインストールの最後に行われるのと同じ手順です。通常はパスを入力する必要はありません。

thor2/target/release/install.exe

アシスタント自身の設定ファイルを2つ自動で見つけ、まだメモリがなければ作成し、THOR をアシスタントに接続して、アシスタントが書き込む部分を登録します。また、このマシン上のすべてのリポジトリで実行される共有の git フック一式もインストールします(別のツールがすでに git のグローバルフックフォルダーを設定している場合は、THOR はその設定を変更せず、その旨を伝えます)。これにより、コミットのたびにコードの読み取り内容が最新に保たれます。各フックはリポジトリ独自のフックに制御を戻すため、既存の機能が止まることはありません。ファイルに手を加える前に両方をバックアップし、自分が追加していないものを削除することはありません。また、2回実行しても2回目には何も変更されません。

新しいメモリは空の状態ではありません。短いピン留めメモが22個追加されます。後で思い出せるメモの書き方や、誠実さと衛生管理の習慣についてのメモです。それらは以降、すべての会話の開始時にアシスタントに渡されます。これは思う以上に重要です。目の前に手がかりが何もないアシスタントは、二度と呼び出されない形式でメモを書いてしまいますが、それに何週間も気づかないことがあります。これらは普通のメモです。ピン留めを解除したり、自分の言葉で書き直したり、削除したりできます。既存のメモリには何も追加されないため、アップグレードによって自分のメモに何かが書き込まれることはありません。

また、アシスタントを使ったコーディングに関する一般的な作業ルールの初期セットも追加されます。これは作者が苦労して学んだ習慣です。ユーザーから見える変更ごとに変更履歴を1行追加する(プロジェクトに変更履歴がある場合)、完了と言う前にテストを実行して実際の結果を引用する、秘密情報をコミットしない、共有ブランチを強制プッシュしない、プッシュ先を確認する、公開前にスキャンする、破壊的な手順はコピー上で予行演習する、などです(全部で13個)。それぞれのルールは、コミット、プッシュ、削除など、対象の手順を実行する直前に表示されます。また、情報を伝えるだけなので、別の人のプロジェクト向けに書かれたルールが自分の作業を妨げることはありません。例外は Windows での2つのルールです。コンソールウィンドウが一瞬表示される呼び出し(非表示にしない Start-Process と、/it を使って作成したスケジュールタスク)を拒否します。不要なルールがあれば、アシスタントに削除を依頼してください。ヘルパーエージェントモードに関する2つのメモは、このルールセットには含まれません。そのモードは新しいメモリではオフになっています。

セットアップが特殊な場合にだけ、フラグを指定してください。--settings と --mcp-json で対象のファイルを変更し、--db と --serve-exe で参照先を上書きします。また、意図的に --no-mcp を指定すると、アシスタントが読み取ることはできても書き込むことはできないメモリを設定できます。必要なプログラムが見つからない場合は、黙って動作しなくなるものをインストールするのではなく、停止してその旨を伝えます。

その後、アシスタントを再起動してください。 アシスタントが書き込む部分は、再起動後に初めて動作します。それまではメモリを読み取ることはできますが、追加することはできません。

ステップ3 - 確認します。

thor2/target/release/doctor.exe --db "C:\Users\you\AppData\Local\thor2\thor.db"

各項目について、平易な言葉で1行ずつ表示します。実行中のビルド、メモリが正常かどうか、意味による検索が有効かどうか、内容を裏付けられるメモの数、すでに存在しないファイルを指すメモの数、決して起こり得ないことに結び付いたメモの数を確認できます。何も変更されません。 ビルド番号だけを確認するには — 問題を報告する際に、使用しているバージョンを正確に伝える必要がある場合に便利です。上記のように doctor を実行して最初の行を確認するか、thor2/target/release/ にあるプログラムを --version 付きで実行します。たとえば、thor2/target/release/serve.exe --version です。

ある行は、報告する内容がある場合にだけ表示されます。メモリのログファイルがメモリ自体より大きくなったと表示された場合、保存の完了を妨げているものがあります。同じメモリを開いている可能性のある他のプログラムを閉じてから、もう一度チェックしてください。新しいビルドではログファイルの上限サイズも設定されているため、この問題はまれなはずです。

ステップ 4 — プロジェクトごとに専用のメモリを用意します。 そのプロジェクトのフォルダーから、インストーラーの完全なパスを指定し、ステップ 3 と同じメモリを使って実行します。

"<path to thor2>/target/release/install.exe" --db "C:\Users\you\AppData\Local\thor2\thor.db"

これは、思っている以上に重要です。これを省略すると、使うほど THOR の性能が低下します。検索のたびに、対象としていないプロジェクトとの競合が起きるためです。プロジェクトはフォルダー名で登録されます。別の名前を付ける場合は --project "my-project" を追加してください。名前は .thor-project という小さなファイルに保存されます。THOR はプロジェクトのコードを読み取り、このフォルダーをプロジェクトの作業コピーとして登録します。ルールのファイルチェックを試みるのは、この場所だけです。すでに登録されている名前は変更できません。プロジェクトの範囲の名前を変えると、以前の名前で登録されたメモがすべて取り残されてしまうためです。

コードリポジトリではないフォルダー — git がなく、トピックに関するメモや PDF があるフォルダー — も同じように使えます。そのフォルダー内からインストーラーを実行し、--topic を追加します。フォルダー名がプロジェクト名になり、小さな隠しファイル(.thor-project)がフォルダーに追加されます。それ以外の内容は変更されません。読み取るコードがないため、ファイル内検索は利用できませんが、アシスタントがファイルを読み取り、THOR はあなたから伝えられた内容を記憶します。ホームフォルダーやドライブ全体は範囲が広すぎるため、トピックとして指定できません。

"<path to thor2>/target/release/install.exe" --topic --db "C:\Users\you\AppData\Local\thor2\thor.db"

以前のリリースでプロジェクトをセットアップした場合は、代わりにそのフォルダーから一度だけこれを実行してください。作業コピーを登録し、それ以外は何も変更しません。

"<path to thor2>/target/release/install.exe" --register-root --db "C:\Users\you\AppData\Local\thor2\thor.db"

セットアップを行うアシスタント向けの手順については、AGENTS.md をご覧ください。

2 台目のマシンで THOR を使う

同じメモリをノートパソコンなどの 2 台目のコンピューターでも使い、そのコンピューターにどの範囲の内容を渡すかを選べます。2 台目のコンピューターに渡されるのは読み取り専用のコピーです。そこのアシスタントはあなたのルールを参照でき、ルールによって誤った手順を拒否することもでき、検索も使えますが、コピーに書き込みが行われることはありません。残しておきたいメモはメインのコンピューターに保存され、コピーを更新すると次回からノートパソコンにも表示されます。コピーは自動的に更新されます。

コピーに含める内容は自分で選べます。 ノートパソコンに必要なプロジェクト名を指定し、一般的な作業ルール(どのプロジェクトにも属さないメモ)も含めるかどうかを選びます。それ以外のプロジェクトや個人用ライブラリはコピーされません。隠されるのではなく、コピーのファイル自体に含まれません。そのため、会社のノートパソコンでも安心して使えます。何も選ばなければ、メモリ全体がコピーされます。

ノートパソコンに保存されるのは、独自のチェックの連鎖を持つフィルター済みのコピーです。そのため、doctor で他のメモリと同じように検証できます。正直に言うと、制限が 2 つあります。コピーしたメモに、コピーしていないプロジェクト名が記載されている場合があります(そこにあるのは単なる文字列なので、何も問題は起きません)。また、選ばなかったプロジェクトの下に一度でも登録されたメモは、後から一般的なメモに変更されていても、完全に除外されます。

最初に必要なこと(メインコンピューターで)

コピーはバックアップから作成されるため、ノート PC からバックアップを読み取れる必要があります。この作業だけは THOR ではできません。

  1. バックアップを確認します。 メインコンピューターで THOR のヘルスチェックを実行します(アシスタントに「THOR は動いていますか?」と尋ねます)。backup: で始まる行を探してください。最後のコピー先が、たとえば backup: last copy went to backup-repo (remote nas: //nas/backups/thor), 3h ago のように表示されます。remote nas: の後にある場所が、バックアップのアドレスです。そのような行がない場合は、まだバックアップを選択していません。アシスタントに「次の場所へのバックアップを設定して」と伝え、その後に NAS 上のフォルダーかプライベートリポジトリのアドレスを指定してから、もう一度ヘルスチェックを実行してください。
  2. ノート PC からその場所を開けることを確認します。
    • NAS 上のフォルダーの場合:ノート PC でエクスプローラー(Windows)またはファイルマネージャー(Linux)を開き、アドレスバーにフォルダーのパスを入力して Enter キーを押します。ユーザー名とパスワードを求められたら入力し、「資格情報を記憶する」にチェックを入れてください。フォルダーが開き、その中に thor2 という名前のフォルダー(またはバックアップのリポジトリファイル)が表示されたら完了です。
    • ウェブサイト上のプライベートリポジトリの場合:ノート PC でターミナルを開き、git ls-remote "<the address>" HEAD を実行します。長いコードで始まる行が表示されたら完了です。サインインを求められたら、サインインしてください。「見つかりません」または「アクセスが拒否されました」と表示される場合、ノート PC のアカウントにはまだアクセス権がありません。ウェブサイトで追加する(Settings、次に Collaborators)か、そのリポジトリの管理者に依頼してください。
    • 会社のノート PC の場合:ネットワークまたはセキュリティソフトウェアによって、NAS やウェブサイトへのアクセスがブロックされることがあります。上記の確認に失敗した場合は、会社の IT 担当者に、そのアドレスをノート PC から読み取れるよう許可してもらってください。読み取り専用であることを伝えてください。
  3. バックアップがリポジトリアドレスの場合に限り、ノート PC に git をインストールします。共有フォルダー上の通常のフォルダーであれば、git は必要ありません。
1 つのコマンド

ノート PC で、プロジェクトのフォルダー内からターミナルを開きます(Windows の場合:エクスプローラーでフォルダーを開き、アドレスバーをクリックして powershell と入力し、Enter キーを押します)。次に、大文字の 3 つの部分を置き換えて、以下のいずれかを 1 つ貼り付けてください。YOUR-PROJECT は、メインコンピューターで認識されているプロジェクト名です(フォルダー名を変更していない場合は、その名前です)。

Windows、PowerShell の場合:

$env:THOR_COPY_FROM = "THE-BACKUP-ADDRESS"; $env:THOR_COPY_SCOPES = "YOUR-PROJECT"; $env:THOR_COPY_GLOBAL = "1"; irm https://raw.githubusercontent.com/nworks3d/THOR-for-claude-code/main/install.ps1 | iex

Linux の場合:

curl -fsSL https://raw.githubusercontent.com/nworks3d/THOR-for-claude-code/main/install.sh | THOR_COPY_FROM="THE-BACKUP-ADDRESS" THOR_COPY_SCOPES="YOUR-PROJECT" THOR_COPY_GLOBAL=1 sh
  • THE-BACKUP-ADDRESS は、上記の手順 1 で確認した場所です。たとえば、\\nas\backups\thor や /mnt/nas/thor です。
  • 複数のプロジェクトを指定する場合は、カンマで区切ります("project-one,project-two")。
  • THOR_COPY_SCOPES を省略すると、現在のフォルダーのプロジェクトが使われます。
  • THOR_COPY_GLOBAL を省略すると、一般的な作業ルールはコピーされません。
  • Windows では、$env: の値はこのウィンドウを開いている間だけ有効です。作業が終わったらウィンドウを閉じてください。

このノート PC に THOR がすでに展開済み(以前のインストールによるもの)ですか?その場合は、代わりにインストーラーを直接実行し、同じ選択肢をオプションとして指定してください。

& "$HOME\thor2\install.exe" --copy-from "THE-BACKUP-ADDRESS" --scope YOUR-PROJECT --include-global
~/.thor2/install --copy-from "THE-BACKUP-ADDRESS" --scope YOUR-PROJECT --include-global

(複数のプロジェクトを指定するには --scope を繰り返します。すべてをコピーする場合は、選択肢の代わりに --whole-memory を追加します。)

またはメモリ全体をコピーする

自分の2台目のノートパソコンなど、信頼できるコンピューターでのみ実行してください。全体のコピーには、個人的な内容を含め、メモリ内のすべてが含まれます。そのため、仕事用または会社支給のノートパソコンにはコピーしないでください(その場合は上記のプロジェクト選択を使用してください)。

プロジェクト名を指定する必要はありません。ノートパソコンでターミナルを開き(Windows の場合:Windows キーを押し、「powershell」と入力して Enter キーを押します)、上記のように THE-BACKUP-ADDRESS を置き換えて、次のいずれか1つを貼り付けます。

Windows、PowerShell の場合:

$env:THOR_COPY_FROM = "THE-BACKUP-ADDRESS"; $env:THOR_COPY_WHOLE = "1"; irm https://raw.githubusercontent.com/nworks3d/THOR-for-claude-code/main/install.ps1 | iex

Linux:

curl -fsSL https://raw.githubusercontent.com/nworks3d/THOR-for-claude-code/main/install.sh | THOR_COPY_FROM="THE-BACKUP-ADDRESS" THOR_COPY_WHOLE=1 sh

THOR_COPY_WHOLE は --whole-memory と同じ動作をします。THOR_COPY_SCOPES または THOR_COPY_GLOBAL も指定した場合は、全体のコピーが優先されます。何も除外されず、それら2つが不要だったことがコマンドで通知されます。コピーは引き続き読み取り専用で、ほかのコピーと同じように自動で更新されます。

THOR をダウンロードしてダウンロード内容を確認し、THOR を Claude Code に接続してコピーを作成し、作成された内容を通知します。最後に次のように表示されます(フォルダー名と数値はお使いの環境によって異なります)。

Setting THOR up as a read-only copy of another machine's memory.

= you did not name a project, so this copy holds the project of the folder you ran this in: 'acme-shop' (add --scope <name> to choose another)
+ made the copy from the backup: 3 notes in it, 3 records written (15 ms)
  what it holds: project acme-shop, general rules (no project)
  project 'acme-shop': 2 notes
  general work rules: 1 notes
  every other project, and your personal library, were left out of the copy file on purpose
+ connected THOR to Claude Code (4 of 4 connections), so the memory speaks up by itself
+ the small file that keeps your assistant's replies tidy is in place

What you have now
  the copy:       C:\Users\you\AppData\Local\thor2\thor.db
  refreshed:      by itself, in the background, at the start of a Claude Code session (at most once an hour)
What is read-only here
  - nothing in this copy can be changed from this machine: your assistant reads it, and rules still fire and still refuse
  - notes are saved on the main machine, and show up here after the next refresh
  - the weekly check runs on the main machine only

Done. ONE THING LEFT FOR YOU: close Claude Code completely and open it again.
Claude Code only learns about THOR when it starts, so until you do this nothing above is active.

(最初の行にある「Downloading THOR」、「Checksum matches.」、「Unpacked into ...」は、ダウンロード処理によって表示されます。)! the project 'x' has no notes in the backup という行は、メインのコンピューターでのプロジェクト名の表記が異なることを意味します。正しい名前を指定して、コマンドをもう一度実行してください。コマンドはいつでも安全に再実行できます。2回目以降は、必要のない変更は行いません。

停止した場合

コマンドは正常に完了するか、何も設定されなかったことと、その理由を明確に表示します。

  • The copy could not be made, so nothing was set up. Reason: the backup at ... could not be reached — ノートパソコンからバックアップを読み取れません。「最初に必要なもの」の手順2に戻ってください。何も残されていないので、問題が解決したら同じコマンドを再実行してください。
  • This machine already has a memory of its own ... and it is not a copy, so I will not replace it — 先に通常の方法で THOR がインストールされ、このコンピューター専用の空のメモリが作成されています。ここにメモを書いたことがなければ、メッセージに記載された名前のファイルを削除せずに名前を変更してから、コマンドを再実行してください。自分で書いたメモが含まれている場合は、そのまま残し、続行する前にサポートを依頼してください。
コマンドの実行後
  1. Claude Code を完全に終了してから、もう一度開きます(会話を開き直すだけではありません)。最初のセッション開始時に、次のように表示されます。「このコンピューターではメモリのコピーを実行しています……含まれているのは次の項目だけです:プロジェクト acme-shop、一般ルール(プロジェクトなし)。ほかのプロジェクトのメモは、意図的にこのコンピューターにはありません。」
  2. 確認します。 アシスタントに「THOR は動作していますか?」と尋ねるか、次のコマンドを自分で実行します(Windows:& "$HOME\thor2\doctor.exe" --db "$env:LOCALAPPDATA\thor2\thor.db"、Linux:~/.thor2/doctor --db ~/.local/share/thor2/thor.db)。最上部の概要には、次の行などが表示されます。OK: this is a copy, selection: project acme-shop, general rules (no project), last pull: 5 minutes ago, 3 items 選択しなかったプロジェクトのメモは、誤って欠落しているわけではありません。確認処理で、それらが問題として数えられることもありません。コピーが3日間更新されていない場合は警告が表示されます。
  3. 任意:メインのコンピューターに、プロジェクトがノートパソコンのどこにあるかを知らせます。 これにより、ファイルを参照するルールをこのノートパソコンで確認できるようになります。プロジェクトのフォルダー内で、--register-root --per-machine とコピーを指定する --db を付けてインストーラーを実行します。ノートパソコンには何も書き込まれず、1行が表示されます。その行をメインのコンピューターで実行してください。
コピーに含める内容を変更するか、手動で更新する
& "$HOME\thor2\sync.exe" pull --db "$env:LOCALAPPDATA\thor2\thor.db" --scope project-one --scope project-two --include-global
~/.thor2/sync pull --db ~/.local/share/thor2/thor.db --scope project-one --scope project-two --include-global

選択内容は記憶されるため、後でオプションを指定せずに sync pull --db ... を実行すると、その選択が繰り返されます(自動更新もこの動作をします)。選択範囲を狭めると、次回のプル時に対象外になった内容がコピーから削除されます。--whole を指定すると、メモリ全体に戻ります。更新では、古いコピーの隣に新しいコピーを作成し、完成して検証に合格した場合にのみ差し替えます。ネットワークがない、NAS の電源が入っていないなど、問題が発生した場合も古いコピーは引き続き使用でき、次回のセッション開始時にその旨が一行で表示されます。

会社支給のノートパソコンについて、知っておいてほしいことがあります。コマンドの対象として、すでにノートパソコン上にあるリポジトリフォルダー(「クローン」)を指定すると、そのフォルダーにはメモリの全体が保存され、ヘルスチェックにもその旨が表示されます。代わりにバックアップのアドレス、または NAS 上の通常のフォルダーを指定してください。そうすれば、メモリ全体は必要なときに読み取られるだけで、ノートパソコンには何も残りません。

ここでは扱わない内容:ノートパソコンからメモを書き込む方法(メモはメインのコンピューターに保存されます。thor2/README.md の「Second machine (laptop)」にある、より詳しいセットアップでは、メモをキューに入れてくれますが、この方法はメモリ全体を対象とします)、および意味による検索。また、実際の別のコンピューターでの実行もまだ行っていません。上記の手順はテストと、1 台のマシンでの完全な実行で確認済みです。

別のアシスタントから使用する

上記の自動セットアップは、Claude Code 専用です。外部ツールサーバーを指定できる他のアシスタントでも、ローカルでビルドする代わりに、各リリースに付属するコンテナを使って THOR を利用できます。

汎用クライアント設定。ツール呼び出しに対応するアシスタントの多くが期待する形式です:

{
  "mcpServers": {
    "thor": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-v", "thor-data:/data",
        "ghcr.io/nworks3d/thor-mcp:2.6.0"
      ]
    }
  }
}
コンテナとして実行する
docker run -i --rm -v thor-data:/data ghcr.io/nworks3d/thor-mcp:2.6.0

空のボリュームでは、コンテナはメモリを作成し、THOR 独自の初期メモ一式を読み込んでから応答を開始します。これは、上記のセットアップで行う最初の手順と同じです。代わりに、すでに thor.db が保存されているフォルダーまたは名前付きボリュームを -v に指定すると(たとえば、独自のビルドで作成したもののコピー)、そのデータベースは変更せずに開かれます。標準入出力でやり取りするには入力を開いたままにする必要があるため、-i を指定します。停止後のコンテナを自動削除せずに残しておきたい場合は、--rm を省略してください。

1 つの会話を続ける

以前は、長い会話は質が落ち、いずれにせよすべて失われるため、頻繁に新しいチャットを始めるよう勧められていました。THOR を使う場合、そのアドバイスはもう古くなっています。1 つの会話を長く続けるほうが、今ではよい習慣です。

会話が長くなると、アシスタントのツールは新しい内容を入れる余地を作るために、古い部分を押し出します。THOR はそのタイミングをカバーします。常時適用されるルールがすぐに戻り、まだ保存されていない重要な内容を書き留めるよう、アシスタントに促します。新しいチャットを始める場合も対応しています。ルールとプロジェクトの背景情報は、最初から読み込まれます。

そのため、1 つの作業に取り組んでいる間は、1 つの会話を続けてください。新しいチャットを始めるのは、別の作業に移ったときや、この会話が行き詰まったときなど、意図的に切り替える場合にしましょう。会話が長くなったからという理由で始める必要はありません。

最初の1週間に実際に起こること

使い始める前に知っておくとよいことです。最初のうちは最も目立った効果がなく、何も起きていないと早合点しやすいためです。

初日は、ほとんど何も止めません。 新しいメモリには、固定された初期メモが22件(再び表示されるメモの書き方に加え、どのプロジェクトでも役立つ誠実さ、エージェント、衛生面の習慣)と、関連する手順の直前に表示される一般的な作業ルールが13件あります。誤った変更を拒否できるTHORの機能が働くのは、証明を伴うメモだけですが、まだひとつも書いていません。そのため初日に得られるのは、会話の開始時に表示されるこれらのメモと、「はじめに」で説明した初回セッション用リストだけで、拒否はありません。ただし例外がひとつあります。Windowsでは、作業ルールのうち2件が、コンソールウィンドウを一瞬表示する呼び出しを拒否します。これは不具合ではありません。まだ拒否に使えるものがないだけです。

最初のメモは、おそらく却下されます。 ほとんどの人が書き漏らす2つの情報、つまり、いつそのメモを再び表示すべきか、そして、何が起きたらそのメモが誤りだとわかるかを求められるためです。メモにコマンド名やファイル名が含まれている場合、THORはあなた自身の言葉からチェックの作成も試みます。適切なチェックが作れない場合は、拒否はできないものの参考にはなる通常のメモとして保存されます。それで問題ありません。拒否時には不足しているものがすべて一度に示され、代わりに何を書けばよいかも説明されるため、たいてい2回目でうまくいきます。これは意図的に厳しくしています。誤りを証明できないメモは、いつの間にか真実ではなくなってしまうからです。

本当の場所に関するメモができてから、価値が生まれます。 ファイル、フォルダー、コマンドにひも付いたメモは、それに触れたときにちょうど表示されます。そうしたメモが数件あれば、一般的なメモが50件あるより役立ちます。1、2週間、作業しながらメモを書き留めていけば、アシスタントに同じ質問を何度もされなくなります。

その後、doctor で作成したものを確認してください。メモリのうち、実際に誤った変更を止められるものの割合、これまでに止めた回数、そして一度も再び読み込まれていない部分を率直に教えてくれます。

すでにメモリをお持ちの場合

ここまでの説明は、空の状態から始めるメモリを想定しています。バージョン1から移行する場合や、証明の仕組みができる前に書かれたメモが大量にある場合は状況が異なります。ありがちな対処法はうまくいかないため、率直に説明しておきます。

THORの週次レビューで一度に処理できる古いメモの数には限りがあります。これは増加を抑えるためのブレーキであり、掃除用のほうきではありません。作業中にメモが増え続けないようにするものであって、メモの山を一掃するためのものではありません。そのペースでは、何千件もの未処理メモはいつまでも片付きません。

掃除に使うのは、実際にプロジェクトを置いているフォルダーを指定して実行するヘルスチェックです。

doctor --db <your thor.db> --checkouts <the folder holding your projects> --full

これにより、アンカーの参照先が存在しなくなったメモ、証明の結果が現在は誤りになっているメモ、そして、表示するには混み合いすぎた場所に保存されているメモがすべて示されます。コーヒーを飲む間ではなく、午後のひとときを確保して、一度に確認してください。リストが長いのは、メモリが古いためであって、何かが壊れているからではありません。

その午後に迷わず判断しても安心できる理由が2つあります。メモを修正しても古いバージョンは残るため、書いた内容が失われることはなく、以前の記述をいつでも読み返せます。また、メモを削除しても消去はされません。誰かに渡されなくなるだけで、引き続き検索でき、削除した理由もメモに付いたままです。

効果はありますか?

1週間使って、アシスタントに同じ質問を何度もされなくなるか確かめてください。それが、あなたの知りたいことに答えてくれる唯一のテストです。

THORは数か月にわたり、別のメモリツールと直接比較して測定されていましたが、その数値はもうここには載せていません。結果が悪かったからではなく、良かったからこそ載せていないのです。他人のメモで測ったスコアが示すのはその人についてであり、あなたについてではありません。ツールはここにあります。判断はあなた次第です。

16 個のツール

アシスタントが実際に呼び出すツールを、メモリ自体が二つに分かれているのと同じ方法で分類しています。

コードレーン - プロジェクト、ルール、作業方法:

  • remember - 新しいルール、メモ、報告、または検索用エントリを保存します
  • revise - 既存の項目を修正し、重複に近い項目を作らないようにします。すでに誤りを防げるルールの効力を弱める場合、つまりチェックを外す、重大度を下げる、または適用範囲を狭める場合にも、理由が必要です。その理由は履歴に記録されます
  • retract - 誤りだと判明した項目を取り下げます(理由が必要です。削除はされません)
  • resolve - 食い違った同じ事実の二つのバージョンを決着させます
  • pin - 既存のメモを常設ルールにし、各セッションの開始時に提示されるようにします
  • unpin - 常設ルールではなくします
  • get - ID を指定して、項目全体を表示します
  • lookup - すべてを検索します。すべてのプロジェクトを、スコープ、キー、またはフリーテキストで検索できます
  • history - 1 つの項目の全履歴を古い順にたどります
  • mark - 提示された内容が実際に役立ったかどうかを評価します
  • status - メモリのうち、実際に誤りを防げる部分と、古くなっている部分を確認します
  • search_code - プロジェクト独自のインデックス化されたソースコードを検索します
  • where_used - ある関数、構造体、または変数が定義・使用されているすべての箇所を検索します
  • outline - 1 つのファイルで宣言されているすべての項目を、行順に確認します

ライブラリレーン - コードレーンとは分けて管理する、レシピ、書籍、トレーニング、経費:

  • library - 棚の索引、個別のエントリを閲覧するか、棚を横断して検索します
  • shelve - 新しいエントリを登録する、既存のエントリを修正する、またはエントリを引退させます

THOR を完全に削除する

インストールによってコンピューターに追加されたものはすべて、削除方法とともにここに記載されています。それ以外に隠されたものはありません。手順 9 の小さなファイルを除き、お客様のプロジェクトやコードが変更されることはありません。依頼すれば、アシスタントがこの作業をすべて代行できます。以下に手順を平易な言葉で説明します。

  1. Claude Code を完全に終了します。 起動時に一度だけ設定を読み込みます。
  2. メモをまた使う可能性がある場合は、まずコピーを保存します。 手順 7 のメモリフォルダーを安全な場所にコピーしてください。手順 7 で削除すると、元には戻せません。
  3. Claude Code の設定から THOR の 4 行を削除します。 ホームフォルダー内の .claude フォルダーにある settings.json を開きます。hooks の下にある SessionStart、PreToolUse、UserPromptSubmit、Stop の各エントリーのうち、コマンド名に THOR の serve プログラムが含まれ、末尾が hook のものを削除してください。バックアップを選んだ場合は、SessionStart のエントリーがもう 1 つあります。メモリの場所を指定する --db と、backup-repo フォルダー(または選択したフォルダー)の場所を指定する --repo を付けて backup プログラム(Windows では backup.exe)を実行するコマンドのエントリーです。これも削除してください。それ以外のエントリーには触れないでください。
  4. ツール一覧から THOR を削除します。 ホームフォルダーにある .claude.json を開き、mcpServers の下にある thor というエントリーを削除してください。
  5. /thor-eval コマンドを削除します。 ホームフォルダー内の .claude フォルダーにある commands フォルダー内の thor-eval.md ファイルです。
  6. THOR の git 設定だけを元に戻します。 git config --global --get core.hooksPath を実行してください。表示されたフォルダーの末尾が thor2/githooks(または thor2\githooks)の場合は、git config --global --unset core.hooksPath を実行してください。別のフォルダーが表示された場合や、何も表示されない場合は、そのままにしてください。THOR の設定ではありません。
  7. メモリフォルダーを削除します。 Windows では %LOCALAPPDATA%\thor2、Linux では ~/.local/share/thor2 です(インストール時に memory: の行に表示されます)。ここには、メモ、メモのそばにある小さなファイル(返信ルール、モード、週次チェックの時計、thor-mode.json に保存される記録スイッチ)、実際の呼び出しの記録(real-calls.jsonl と real-replies.jsonl)、THOR によるコードの読み取り結果、git のヘルパー、ローカルバックアップを選んだ場合は backup-repo フォルダーが含まれています。
  8. プログラムを削除します。 Windows ではホームフォルダー内の thor2、Linux では ~/.thor2 です。
  9. --topic または --project を指定してインストールを実行した各フォルダーにある、非表示の .thor-project ファイルを削除します。これは、THOR がご自身のフォルダー内に置いた唯一のファイルです。
  10. Claude Code を再び起動します。 新しい会話に THOR のブロックが表示されず、/thor-eval もなくなっているはずです。settings.json.bak と .claude.json.bak のコピーには、THOR が最初に変更する直前の 2 つのファイルが保存されています(その後の実行で置き換えられることはありません)。これらのコピーは削除できますが、現在のファイルに上書きして復元しないでください。これらのコピーは、変更前のものです。

ドキュメント

ページ説明
AGENTS.mdAI アシスタント向け:THOR のセットアップ方法
thor2/README.mdバージョン 2 のプログラム:ビルド方法と各部分の役割
thor2/CONTRACT.mdバージョン 2 が準拠すべき標準と、各ルールを検証するテスト
thor2/SPEC-ENFORCEMENT.mdメモがどのように自らの正当性を証明するかを詳しく説明
CONTRIBUTING.mdTHOR の変更:プルリクエストに求められる基準
CHANGELOG.md各リリースでの変更:各リリースの冒頭にあるセクション

謝辞

  • MakerViking - 着想を与えてくれたこと、そして素晴らしい競争相手でいてくれたことに感謝します。この火種がなければ、このプロジェクトは存在しませんでした。また、切磋琢磨する相手がいなければ、ここまで良いものにはならなかったでしょう。Skål!
  • mimir(MakerViking/mimir)- THOR が生まれた理由です。古代ノルドの物語では、Mimir は知識の泉を守っています。ここでは、THOR が超えるべき基準を示し、長い間、自らもその基準を十分に満たしていました。このプロジェクトの初期に行った比較はすべて mimir を相手にしたもので、勝ち負けのどちらも正直に記録していました。それほど優れたライバルには、正直な数字を示す価値があるからです(現在、ここでは公開していません。「動作しますか?」をご覧ください)。
  • アイデアを相互に取り入れました。 THOR の機能のうち2つは、mimir の成果から着想を得て、THOR 独自の方法で作り直したものです。一方、mimir も、コードをメモリに読み込む機能と、すべてのメッセージでメモリを確認する機能について THOR の貢献を認めています。まさにオープンソースならではの交流です。MakerViking、ありがとうございます。

このプロジェクトを支援する

THOR は N-Works 3D が開発しています。説明の手間を省けた、失敗を未然に防げた、あるいはゼロから始めずに済んだなど、THOR が役に立ったと感じたら、プロジェクトを続けるために、簡単な方法でご支援いただけます。

強制ではありませんし、ペイウォールもありません。どちらを選んでも、すべてオープンなままです。Skål、そして最後まで読んでいただき、ありがとうございます。

貢献

バグ報告やプルリクエストを歓迎します。THOR はアシスタントが信頼して使うことを想定したメモリです。そのため、機能の多さよりも正確さを重視しています。チェックリストは CONTRIBUTING.md にあります。

ライセンス

GPLv3。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。