HN 日本語サマリー

← 一覧へ戻る
プログラミング

Lore – コーディングエージェントにチームが下した決定を与える

Lore – give your coding agent the decisions your team made (github.com)

30 pointsby tcballard34 コメント

要約

Loreは、チームが過去に下した決定(要件、設計、ロードマップなど)をリポジトリ内の型付きMarkdownとして管理し、コーディングエージェント(Claude Code、Cursorなど)に読み取り専用で提供するツールです。これにより、エージェントはチームの決定に違反することなくコードを生成し、決定の根拠を引用できるようになります。RAGや埋め込みを使用せず、決定論的かつ再現可能な方法で知識を検索し、CI/CDパイプラインでの検証もサポートしています。

全文翻訳

Lore クイックスタート · 比較 · 仕組み · ドキュメント · CLI · Changelog コーディングエージェントに、チームがすでに下した決定を与えましょう。そうすれば、エージェントはあなたが却下したことをやり直すのをやめます。Loreは、チームの記録された知識(要件、決定、設計、ロードマップ、プロンプト)をリポジトリ内の型付きMarkdownとして保持し、それをMCPを介してClaude Code、Cursor、Claude Desktopに読み取り専用で提供します。これにより、エージェントはあなたの決定に違反する代わりに、それを引用するようになります。RAG、埋め込み、関連性を判断するためのモデル呼び出しは不要です。検索は決定論的で再現可能です。これは、基盤となるオープンソースエンジンであるRAC(Requirements as Code)の上に構築されており、パッケージ、CLI、およびMCPサーバーはracという名前で出荷されます。 比較: Loreは検索インデックスやメモリツールではありません。エージェントが根拠とする、決定論的な記録システムです。あいまいな検索(RAG、エージェントメモリ)は、あいまいな質問に近いものを見つけるのに優れていますが、Loreは、正確で現在の決定を返し、廃止されたものを拒否するのに優れています。これらはうまく組み合わされます。あいまいに検索し、その後Loreで検証します。 | | Lore | あいまいな検索(RAG / エージェントメモリ) | |---|---|---| | 得意なこと | 正確で現在の決定 | 質問に近いものを見つけること | | 検索 | 決定論的、再現可能 | 類似性に基づいてランク付けされ、実行ごとに異なる | | 役割 | 信頼できる情報源、読み取り専用 | 高速なインデックスまたは作業コピー | | CIでの強制 | 強制される(`rac validate` / `rac gate`) | その仕事ではない | クイックスタート: エンジンをインストールします:`pip install rac-core` IDと最初の成果物をスキャフォールドします:`rac quickstart` エージェントを接続します(リポジトリのルートからClaude Codeを使用):`claude mcp add lore -- rac mcp` 不正な知識が適用されないようにCIで強制します:`rac validate rac/ && rac gate rac/` インストールコマンド: | コマンド | 得られるもの | |---|---| | `pip install rac-core` | `rac` CLI + `lore` MCPサーバー | | `pip install 'rac-core[ingest]'` | + DOCX / HTML インポート | | `pip install 'rac-core[ingest-all]'` | + PDF / PPTX / XLSX インポート | | `pip install 'rac-core[explorer]'` | + ターミナルエクスプローラー(`rac explorer`) | Python 3.11+が必要です。`uv tool install rac-core`も機能します。 仕組み: リポジトリ内の型付きMarkdown。すべての成果物は、小さなフロントマターエンベロープを持つプレーンなMarkdownであり、エンジンはそれを決定論的に分類し、タイプごとのスキーマに対して検証します。提供時には読み取り専用です。MCPサーバーは常に読み取りのみを行います。信頼境界は人間のPRレビューであり、エージェントがストアを変更することはありません。書き込み時に強制されます。`rac validate`および`rac gate`は、不正な形式の成果物、破損したまたはあいまいなリンク、および廃止された決定への参照をCIで、知識が適用される前に拒否します。設計上、エアギャップされています。エンジンはLLM呼び出しもネットワーク呼び出しも行いません。唯一の外部への送信は、同意によってゲートされたコンテンツのない使用状況pingであり、デフォルトではオフになっています。規制されたインストールでは、`rac telemetry off --enterprise`でそれがオフに保たれていることを証明できます(セキュリティ体制、ADR-086)。 エージェントを接続する: Claude Code(リポジトリのルートから): `claude mcp add lore -- rac mcp` Claude Desktop / Cursor(クライアント設定の`mcpServers`): ```json { "mcpServers": { "lore": { "command": "rac", "args": ["mcp", "--root", "/absolute/path/to/your/repo"] } } } ``` 成果物の作成と強制: `rac quickstart` # IDの設定 + 最初の成果物のスキャフォールド `rac new decision adr.md` # 型付き成果物のスキャフォールド(IDを付与) `rac validate rac/` # ディレクトリ内のすべての成果物をチェック `rac inspect requirement.md` # そのタイプと完全性を確認 `rac review rac/` # 全リポジトリレビュー、最悪の問題から優先 `rac gate rac/` # マージゲート:検証 + 関係性 + レビュー 既存の決定をインポート: Confluence、Notion、またはばらばらのMarkdownにすでに決定がありますか?`rac-import`エージェントスキルは、既存のドキュメントを有効な成果物1つに変換し、書き込み前に人間によるレビューのステップを挟みます。 `rac skill install rac-import` その後、エージェントに自然言語で尋ねます:「この決定ドキュメントをLoreにインポートしてください」。それは、ドキュメントに書かれていることのみから下書きを作成し、提案されるタイプ、タイトル、関係性を確認のために表示し、`rac new`でスキャフォールドし、`rac validate`で完了します。複数フォーマットまたは一括変換には、`rac-ingest`スキルを使用します。 コーパスをエクスポート: `rac export rac/ --html --out lore.html` # ポータル:全グラフ、1ファイル `rac export rac/ --okf` # 準拠したOpen Knowledge Formatバンドル `rac export rac/ --documents` # メモリ/RAGバックエンド用のJSONL `rac export rac/ --graph` # グラフバックエンド用の型付き決定グラフ `--documents`および`--graph`モードは、エージェントがあいまいに検索し、その後Loreで検証できるように、外部メモリ、RAG、グラフツールに供給します。CLIリファレンスを参照してください。コネクタ自体は、別の`lore-connectors`コンパニオンに存在します。 Python API: エンジンはライブラリでもあります。その公開インターフェースは`rac.__all__`です。 ```python from rac import parse_file, classify, find_artifacts art = parse_file("rac/decisions/adr-001-markdown-first.md") print(classify(art).type) # -> "decision" result = find_artifacts("rac/", "caching") for hit in result.matches: print(hit.id, hit.title) ``` OKFとの関連性: GoogleのOpen Knowledge Format(OKF)は、キャリア(YAMLフロントマター付きのMarkdownのGitツリー)を標準化し、意図的に緩やかなものです。RACは同じキャリアを書き込み、OKFが消費者に任せるもの、つまりCIでの書き込み時強制を追加します。`rac validate`と`rac relationships --validate`は、不正な形式の成果物、破損したリンク、および廃止された決定への参照を、知識が適用される前に決定論的に拒否します。`rac export --okf`は、任意のRACリポジトリを準拠したOKFバンドルに変換します。つまり、両者は競合するのではなく、相互に補完します。 対象ユーザー: コーディングエージェント(Claude Code、Cursor)を多用しているチームで、エージェントがチームがすでに下した決定を無視することにうんざりしている人々。 すでにADR(Architecture Decision Records)を記述しており、それらの決定を実際にエージェントの行動に反映させたいチーム。 ソフトウェアの「なぜ」をコードとともにバージョン管理したいすべての人。 ドキュメント: 完全なドキュメント:https://itsthelore.github.io/rac-core/ クイックスタート — インストールと最初の成果物の作成 MCPサーバー — ツール、クライアント設定、例 CLIリファレンス — すべてのコマンド、フラグ、終了コード 起源: LoreはRAC(Requirements as Code)の製品表面であり、基盤となるオープンソースエンジンです。パッケージ、CLI、およびMCPサーバーはracという名前で出荷され、loreはサーバーIDおよびブランドです。決定論的プロンプト複雑性ルーターであるWayfinderは、RAC内のルート実験として始まり、独自のツールとして分割されました。ルーティングは知識の問題ではなく、ランタイムの懸念事項です。 リポジトリのレイアウト: `rac-core/` `src/rac/` エンジン:CLI、コア、サービス、出力、インプロセスMCPサーバー(`rac mcp`)、バンドルされたスキル、テンプレート、gitフック `rac/` ドッグフードコーパス — プロジェクト自体を管理する要件、決定、設計、ロードマップ、プロンプト `tests/` サービスごとのバッテリーテストとコア / CLI / 成果物のカバレッジ(ADR-027) `docs/` ドキュメントサイト(MkDocs) `examples/` グラウンディングデモ、コーパスとテストフィクスチャに織り込まれています `rac-localview/` ポータル / グラフビューア、エンジンにベンダーされています テスト: `pip install -e .[dev]` `python -m pytest` `ruff check`, `ruff format --check`, および`mypy src/`は、サービスごとのバッテリーテスト(ADR-027)とともにCIで実行されます。 プロジェクトのステータス: Loreは初期段階で急速に進化しています。MCPサーバーは今日出荷されます。貢献、アイデア、実験を歓迎します — `CONTRIBUTING.md`を参照してください。 ライセンス: Apache License 2.0。