decisiontrail について
decisiontrailは、コーディングエージェント向けのローカルな意思決定メモリーMCPサーバーです。決定と制約をJSONファイルに保存し、アカウントやネットワーク接続なしで先例検索や関連付けられた改訂記録を扱えます。
主な機能
- 01単一のローカルJSONファイルに決定を保存
- 02制約、根拠、回答を記録
- 03候補や検証済み先例を検索
- 04関連付けられた記録で決定を改訂
- 05コンテキスト、状態、ドメイン別の熟達度を表示
- 06重複候補と古い候補を特定
活用シーン
- 01コーディングセッションをまたいで設計上の決定を保持
- 02新たな選択に関連する検証済み決定を検索
- 03履歴を残したまま決定を改訂
MCP 対応
ローカルでの決定記録、検索、コンテキスト、状態確認、改訂のツールをMCPクライアントに提供します。ホスト型ワークスペースを要する接続モードのツールは含まれません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
10掲載時のツール一覧 · 1 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| text | string | はい | 決定そのもの |
| domain | string | いいえ | 決定が属する任意のドメイン |
| constraints | array | いいえ | 決定を制約する条件(プレーンテキストの項目) |
詳細
decisiontrail
decisiontrail は、コーディングエージェント向けのローカルな意思決定メモリです。エージェントがどのデータベースを選ぶか、どのキャッシュを使うか、リリースの頻度をどうするかといった判断を下すと、その決定がどのような制約のもとで行われたかと併せて decisiontrail に記録されます。これにより、後のセッションで一から判断し直すのではなく、過去の判断を参照できます。また、判断が変わった場合は、明示的に改訂できます。
すべてローカルで完結します。決定はお使いのマシン上の1つの JSON ファイルに保存されます。アカウント登録やログインは不要で、ネットワークにも接続しません。記録はプレーンなコミットとして保存することも、検証済みの決定記録(制約、根拠、回答)として保存することもできます。過去の判断を検索する際に参照されるのは、検証済みの記録です。古い決定がその場で編集されることはありません。改訂すると新しい記録が作成され、古い記録には後継の決定があることが示され、双方がリンクされます。
このパッケージは、「elen」MCP サーバーのローカル機能をクリーンルーム方式で再構築したものです(12個のツールのうち10個)。元のサーバーにある、接続モード向けのベータ版ツール elen_incoming と elen_team_search の2つは、ホスト型ワークスペース、ログイン、API キーが必要なため含まれていません。
インストール
npx @reneturcios/decisiontrail elen_status
または、コンテナイメージを実行します。
docker run -i ghcr.io/cloudcorprecords/decisiontrail
コンテナはデフォルトで MCP サーバーとして起動します(下記参照)。CLI として使う場合は、CLI の引数を渡してください。コンテナを実行する場合、決定を永続化するには、ストアのディレクトリにボリュームをマウントしてください。
決定の保存場所
- ストアのパスは、環境変数
DECISIONTRAIL_DBで指定します。指定がない場合は、デフォルトで~/.decisiontrail/decisions.jsonになります。 - ファイルは単一の JSON ドキュメントです。ファイルが存在しない場合は空の状態から始まります。書き込みはアトミックに行われるため(一時ファイルを作成してからリネーム)、書き込み中にクラッシュしてもストアが切り詰められることはありません。
DECISIONTRAIL_AGENTとDECISIONTRAIL_PROJECTは、elen_statusが報告する名前空間を指定します。どちらもデフォルトはlocalです。
決定 ID は作成順に連番で付与されます:d-1、d-2、…。
CLI
1つの実行ファイルで、どちらの使い方にも対応します。各ツールはサブコマンドとして実行し、単一の JSON 引数を渡します(引数が不要なツールでは省略可能です)。結果は JSON で出力されます。
# Check the namespace before committing
decisiontrail elen_status
# Commit a decision with its limits
decisiontrail elen_commit '{"text":"Use Postgres for sessions","constraints":["must be durable"],"domain":"storage"}'
# Record a validated decision
decisiontrail elen_log_decision '{"constraints":["latency under 100ms"],"evidence":["benchmark run 42"],"answer":"Adopt the in-process cache","domain":"performance"}'
# Before a new decision, ask for pointers; then search validated precedents
decisiontrail elen_suggest '{"query":"session storage"}'
decisiontrail elen_search_precedents '{"query":"session storage"}'
# Read one record in full, revise one, survey the store
decisiontrail elen_expand '{"id":"d-1"}'
decisiontrail elen_supersede '{"id":"d-1","text":"Use Redis for sessions with Postgres fallback"}'
decisiontrail elen_get_context
decisiontrail elen_get_competency
decisiontrail elen_consolidate
decisiontrail --version
終了コード:成功時は 0、ドメインエラー時(例:不明な決定 ID。エラーには ID が含まれます)は 1、使用方法の誤りや無効な引数の場合は 2 です。
MCP サーバー
npx -y @reneturcios/decisiontrail mcp
MCP クライアントの設定:
{
"mcpServers": {
"decisiontrail": {
"command": "npx",
"args": ["-y", "@reneturcios/decisiontrail", "mcp"]
}
}
}
ツール
| ツール | 入力 | 戻り値 |
|---|---|---|
elen_commit | text(必須)、constraints(文字列配列)、domain | 新しい未検証の決定記録。 |
elen_log_decision | constraints、evidence、answer(すべて必須)、text、domain | これらの入力から作成される、検証済みの決定記録。 |
elen_expand | id(必須) | 指定した決定 ID の完全な記録。 |
elen_suggest | query(必須)、limit(デフォルトは5) | クエリに一致する過去の決定への簡潔な参照情報(id、テキストの先頭120文字、domain、validated、status)。一致度の高い順に表示されます。すべての記録が対象です。 |
elen_search_precedents | query(必須)、limit(デフォルトは5) | クエリに一致する完全な記録。検証済みの記録のみが対象です。 |
elen_supersede | id、text(どちらも必須)、constraints、domain | 新しい後継の記録。古い記録は旧決定としてマークされ、2つの記録は双方からリンクされます。 |
elen_get_context | — | ドメインごとにグループ化した有効な決定のスレッド。ドメインごとの件数と最新のテキストに加え、合計も返します。 |
elen_status | — | エージェント、プロジェクト、データベースのパス、件数(合計/有効/旧決定/検証済み)。 |
elen_get_competency | — | ドメインごとの検証済み記録の件数と、すべての記録に占める検証済み記録の割合(網羅率)。検証済みの履歴のみをもとに算出されます。 |
elen_consolidate | — | 重複するペア(同じドメインで、トークンの Jaccard 係数が0.6以上)、それらを形成するクラスター、古い候補(90日を超えて有効な記録)。変更は行いません。 |
マッチングの仕組み
elen_suggest と elen_search_precedents は、クエリとレコードのテキストおよび制約の間で、大文字と小文字を区別しないトークンの重複度に基づいて順位付けします。スコアは、クエリのトークンのうち一致した種類の数です。一致がないレコードは除外され、同点の場合は新しいものが先になります。
elen_log_decision で作成された場合に限り、レコードは検証済みとみなされます。コミット済みの決定が後に置き換えられた場合も、その履歴は保持されます。supersedes / superseded_by が連鎖を示し、古いレコードのステータスは superseded になります。
開発
npm install
npm run build # tsc -> dist/
npm test # node test runner over test/*.test.ts, temp dirs, no network
npm run dev # run the CLI from source via tsx
ライセンス
MIT — LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。