開発者
ai-memoryにコントリビュートする
これまでに101人のコードが取り込まれています。このページは、アイデアから適切なIssue、適切なクレート、一度でレビューを通るプルリクエストまでを案内します。
数字で見る、活発なプロジェクト
件数は、このサイトのビルド時にGitHub APIから取得しています。
上位のコントリビューター
akitaonrails
djalmajr
samirhvbr
lucasliet
wblech
rthiago
matheus-rodrigues00
lhzapata
gabrielscharb
pablowinck
aguirreSL
evanmaranzano
kevin9327
gb
mrpaiva
rafaelkenedy
lihuiyang1024
rodrigopalhares
felipe-NR
abhisheksharma2411
Cardosaum
vitorvilas
mobnix
Murillofilho86
viniciusdsandrade
atirna
pedrofjr
enrell
zanlucathiago
davividal
alanhoff
alvadorn
milesibastos
klebervirgilio
iagogfe
dk96-creator
juniorgaudencio00-code
PedroPCardoso
marcelomogami
lucazz
jpramos123
cateim
Gaalbu
bcosta19
BobDylans
victorcesc
Wprosdocimo
XiaoHuo888-hue
adrianogomes-NE
azevedo-luis
cristianodewes
luisfnicolau
omartelo
wslcb
holocaster
rpaggi
murilojrpereiras
LuizFernando991
jaysonsantos
参加方法を選ぶ
どれも、GitHubの該当ページに直接つながります。
バグを報告する
テンプレートでは、バージョン、OS、エージェント、トランスポート、関連するサーバーログの行を尋ねます。
バグ報告を作成機能を提案する
提案はIssueで行います。このリポジトリにDiscussionsはありません。テンプレートでは、どんな問題を解決するのか、既存のインストールを壊すかどうかを尋ねます。
機能リクエストを作成最初のIssueを見つける
good first issueラベルは、初めての人に向いた作業に付いています。それ以外にはhelp wantedが付いています。
good first issueを見るハーネスを追加または修正する
マネージドハーネスの対応には、文書化されたプロトコルがあります。ネイティブのセッション契約を証明すること、ストアは読み取り専用で読むこと、コンテキストは受領を確定する前に届けること、必須のテストを同梱することです。
ハーネスのプロトコルを読むドキュメントを改善する
ガイドはdocs/にmarkdownで置かれています。ドキュメントの修正は通常のプルリクエストで、ユーザーに見える変更がなければ変更履歴への追記は不要です。
docs/を見る周辺ツールを作る
インポーター、よりリッチなUI、チャットのフロントエンドは、公開されているHTTPとMCPのインターフェースを使うコンパニオンプロジェクトとして作ります。
コンパニオンのルールを読む
ビルドできる状態にする
ビルドは自己完結しています。以下のコマンドに環境変数が必要なものはありません。
クローンしてビルドする
Rust 1.95が必須で、rustfmtとclippyとともに
rust-toolchain.tomlで固定されているので、初回ビルド時にrustupが正しいツールチェーンをインストールします。SQLiteは同梱、libgit2はベンダリング済みです。必要なのは標準的なCツールチェーンだけです。開発環境のセットアップ git clone https://github.com/akitaonrails/ai-memory cd ai-memory cargo build --workspace cargo test --workspace --all-targets日常のループを回す
cargo tにはnextestが必要です:cargo install cargo-nextest --locked。slowやstressという名前のモジュールはスキップされますが、pre-pushフックとCIでは実行されます。作業中に cargo t # slow層以外すべて、ウォーム状態で約20秒 cargo t -p ai-memory-store # クレート1つ:そのテストバイナリだけをビルド cargo t -E 'test(/purge/)' # トピック1つ(すべてビルドし、一部を実行)pre-pushフックをインストールする
クローンごとに1回です。
.git/hooks/pre-pushの中の自分のブロックにしか触れません。作業途中のブランチでは、git push --no-verifyでスキップできます。クローンごとに1回 scripts/install-git-hooks.shpushする前にチェックを通す
CIは5つすべてを強制します。nextestがない場合、
cargo test --workspace --all-targetsがcargo tfに相当します。最後のチェック用のツールがなければ:cargo install cargo-deny cargo-audit。必須チェック cargo fmt --all -- --check git diff --check cargo clippy --workspace --all-targets -- -D warnings cargo tf # 全テスト(エイリアス:cargo nextest run -P full) cargo deny check # 依存関係のポリシーコミットの作者情報を確認する
GitHubアカウントで検証済みのメールアドレスか、noreplyアドレスを使ってください。作者情報を直すためにmainの履歴を書き換えることはありません。
コミットの作者情報 git log --format='%h %an <%ae>' "$(git merge-base HEAD origin/main)"..HEAD
基本ルールと受け入れ基準
AGENTS.mdは、人にもコーディングエージェントにも適用される正式なルールファイルです。CONTRIBUTING.mdはそれを次のように要約しています。
作業を取り込むための前提
変更履歴はマージの条件
ユーザーに見える変更はすべて、同じプルリクエストの中で[Unreleased]にエントリを追加します。レビュアーは、エントリがなければマージをブロックします。リファクタリングとテストだけの変更は対象外です。
「完了」の前にテスト
作業はテストが付いて初めて完了と見なされます。特にパーサー、IDの導出、保持期間の計算が対象です。
デッドコードも作りかけの機能も入れない
スタブは、それを完成させるマイルストーンとともにモジュールコメントに記載します。
変更の範囲を守る
現在のマイルストーンに必要のないコードはリファクタリングしないでください。
コメントは理由を説明する
直前の行を言い直すだけのコメントは削除されます。
プルリクエストが破ってはならない不変条件
- SQLiteへの書き込みはすべて、単一のライターアクター
WriterHandleを通します。 - 設定は起動時に1回だけ読み込みます。
Config::loadの外でstd::env::varを使ってはいけません。 - ファイルの書き込みはアトミックです。tmp、rename、fsyncの順で行い、その場での上書きはしません。
- wikiページはすべて
(workspace_id, project_id)で名前空間が分かれています。 - CLIは薄いHTTPクライアントです。SQLiteファイルやwikiディレクトリを開くことはありません。
コードベースの地図
バイナリには10個のクレートが入っています。それぞれが1つの責務と型付きのAPIを持ち、循環依存はありません。

| クレート | 中身 |
|---|---|
ai-memory-core | ドメイン型、エラー、ID。IOなし。 |
ai-memory-store | SQLite、ライターアクター、リーダープール、減衰の計算。 |
ai-memory-wiki | markdownのアトミックな書き込み、ファイルウォッチャー、git。 |
ai-memory-mcp | MCPトランスポート、ツールルーター、管理用ルート。 |
ai-memory-hooks | フックペイロードのスキーマ、サニタイザー、/hookエンドポイント。 |
ai-memory-llm | プロバイダー認証の境界と、LLMおよびembedderのトレイト。 |
ai-memory-consolidate | 取り込み、lint、スイープ、自動改善のパイプライン。 |
ai-memory-web | 読み取り専用の/webブラウザと、/api/v1のJSONルート。 |
ai-memory-workstream | 読み取り専用のネイティブトランスクリプトリーダーと、ai-memory runの裏にある起動アダプター。 |
ai-memory-cli | ai-memoryバイナリと、その薄いHTTPサブコマンド。 |
crates/の外
| ディレクトリ | 中身 |
|---|---|
companions/ | ai-memory-importer。ルートのワークスペース外にあるスタンドアロンのパッケージです。--manifest-pathを付けてビルドします。 |
hooks/ | ライフサイクルフックのバンドル。エージェントごとに1フォルダで、シェル版とネイティブ版があります。 |
evals/ | ベンチマークのハーネス。ワークスペースのメンバーですが、出荷はされません。 |
docs/ | アーキテクチャ、設計上の決定、インストール、デプロイ、利用のガイド。 |
tests/ | エンドツーエンドのスモークテスト、フックのシェルテスト、フィクスチャ。 |
統合テストは各クレート内のtests/suite/にあります。クレート間で共有するヘルパーはcrates/ai-memory-test-supportに置き、これは出荷されません。
プルリクエストのレビューの進み方
レビューはプルリクエストのテンプレートに沿って行われるので、テンプレートを正直に埋めることが作業の大半です。
テンプレートがチェックリスト
何を変えたか、なぜ変えたか、チェック項目に印を付けたテスト計画、コミットの作者情報、リリースへの影響、変更履歴のエントリを尋ねます。
リリースの種類を明記する
パッチ、マイナー、メジャーのいずれかに印を付けます。修正を「Added」に入れると誤ったバージョンが上がることがあるので、変更履歴のエントリは正しい見出しの下に置いてください。
破壊的変更はメジャーを待つ
説明文で明示してください。breaking-changeラベルが付いてスケジュールに組み込まれるので、パッチやマイナーのリリースを止めることはありません。
マージごとのCIは速い
マージの条件になるのは、速いLinuxのジョブです。macOSとWindowsのジョブは、ラベル指定、夜間、または手動で実行され、リリース前には必ず実行されます。
修正が先に出荷される
バグ修正は次のパッチリリースで出荷され、機能開発のために保留されることはありません。新しいハーネスやプロバイダーは次のマイナーで出荷されます。
ハーネスのプルリクエストでは、この短縮版のチェックを実行し、テスト対象にしたCLIのバージョンを記録し、実際のハーネスに対する手動の確認を含めます。
cargo fmt --check
git diff --check
cargo test --workspace
cargo clippy --workspace --all-targets -- -D warnings