Cursor10x メモリシステム
モデル コンテキスト プロトコル (MCP) を使用したカーソル用の包括的なメモリ システム。
🚀 CURSOR10X システムのお知らせ🚀
AIを活用した自律システムで開発プロセスを変革
🔥 Cursor10x メモリ システムが完全な Cursor10x プラットフォームの一部になりました! 🔥
GitHubの完全な自律開発エコシステムをご紹介します。
📋 タスク管理システム- ステップバイステップのタスクによるガイド付き実装🔄 自律メモリ- プロジェクト全体を記憶するコンテキスト認識型 AI 📊 プロジェクト ブループリント- 仕様に合わせて作成された完全な技術アーキテクチャ📁 ファイル/フォルダー アーキテクチャ- ベスト プラクティスに基づいた最適化されたプロジェクト構造📘 実装ガイド- すべてのファイルとコンポーネントの包括的なドキュメント📝 詳細なタスク- プロジェクトの開始から完了までの完全なワークフロー🔍 ベクターベースの検索- コードベースと会話全体のセマンティック検索🧩 コード インデックス作成- コード構造の自動検出とインデックス作成🔎 セマンティック コード検索- 完全一致ではなく意味によって関連コードを検索🤖 自動コード分析- コンテキストに基づいて関数、クラス、変数を抽出
すでに実装されている Cursor10x システム全体とともに、ファイル アーキテクチャ、実装ガイド、完全なタスク シーケンスを含む完全なプロジェクト ブループリントを生成します。
概要
Cursor10x メモリ システムは、AI アシスタント (具体的には Claude) 用の永続的なメモリ レイヤーを作成し、次の情報を保持および呼び出すことを可能にします。
最近のメッセージと会話履歴
現在作業中のアクティブなファイル
重要なプロジェクトのマイルストーンと決定
技術要件と仕様
行動と出来事の時系列(エピソード)
コードベースからのコードスニペットと構造
ベクトル埋め込みに基づく意味的に類似したコンテンツ
意味的類似性による関連コードフラグメント
関数と変数の関係を持つファイル構造
このメモリ システムは、ステートレス AI インタラクションと継続的な開発ワークフロー間のギャップを埋め、より生産的でコンテキストを認識した支援を可能にします。
Related MCP server: Knowledge Graph Memory Server
システムアーキテクチャ
メモリ システムは、次の 4 つのコア コンポーネントに基づいて構築されます。
MCP サーバー: ツールを登録し、リクエストを処理するためのモデルコンテキストプロトコルを実装します。
メモリデータベース:セッション間の永続ストレージとしてTursoデータベースを使用します
メモリサブシステム:メモリを異なる目的を持つ特殊なシステムに編成します
ベクトル埋め込み: テキストとコードを意味検索のための数値表現に変換します
メモリの種類
システムは 4 つの補完的なメモリ タイプを実装します。
短期記憶(STM)
最近のメッセージとアクティブなファイルを保存します
現在のやり取りの即時的なコンテキストを提供する
最新性と重要度に応じて自動的に優先順位を付ける
長期記憶(LTM)
マイルストーンや決定事項などの永続的なプロジェクト情報を保存します
建築とデザインのコンテキストを維持する
重要度の高い情報を無期限に保存します
エピソード記憶
時系列の出来事を記録する
行動間の因果関係を維持する
プロジェクト履歴の時間的コンテキストを提供する
意味記憶
メッセージ、ファイル、コードスニペットのベクトル埋め込みを保存します
意味的類似性に基づいてコンテンツを検索できるようにする
コンテキスト検索のためにコード構造を自動的にインデックスします
コードコンポーネント間の関係を追跡します
コードベース全体で類似性に基づく検索を提供します
特徴
永続的なコンテキスト: 複数のセッションにわたって会話とプロジェクトのコンテキストを維持します
重要度ベースのストレージ: 設定可能な重要度レベルに基づいて情報を優先順位付けします
多次元記憶:短期記憶、長期記憶、エピソード記憶、意味記憶のシステムを組み合わせたもの
包括的な検索: すべてのメモリサブシステムから統一されたコンテキストを提供します
ヘルスモニタリング: 診断機能とステータスレポート機能が組み込まれています
バナー生成: 会話の始まりに役立つコンテキストバナーを作成します
データベースの永続性: 自動スキーマ作成によりすべてのメモリデータをTursoデータベースに保存します。
ベクトル埋め込み: 類似性検索のためにテキストとコードの数値表現を作成します
高度なベクトルストレージ: Turso の F32_BLOB とベクトル関数を利用して効率的な埋め込みストレージを実現します。
ANN 検索: 近似最近傍検索をサポートし、高速な類似性マッチングを実現します。
コードインデックス作成: コード構造 (関数、クラス、変数) を自動的に検出してインデックスを作成します。
セマンティック検索: 正確なテキスト一致ではなく意味に基づいて関連コンテンツを検索します
関連性スコアリング: 現在のクエリとの関連性に基づいてコンテキスト項目をランク付けします
コード構造検出: 複数の言語にわたるコードコンポーネントを識別して抽出します
自動埋め込み生成: インデックスされたコンテンツのベクトル埋め込みを自動的に作成します
相互参照検索: 異なるファイルやコンポーネント間で関連するコードを検索します
インストール
前提条件
Node.js 18以上
npm または yarn パッケージマネージャー
Tursoデータベースアカウント
セットアップ手順
Turso データベースを構成します。
# Install Turso CLI
curl -sSfL https://get.turso.tech/install.sh | bash
# Login to Turso
turso auth login
# Create a database
turso db create cursor10x-mcp
# Get database URL and token
turso db show cursor10x-mcp --url
turso db tokens create cursor10x-mcpまたは、 Tursoにアクセスしてサインアップし、データベースの作成と適切な認証情報を取得することもできます。無料プランでも、プロジェクトのメモリ容量は十分にカバーできます。
カーソル MCP を設定します。
プロジェクト ディレクトリ内の.cursor/mcp.jsonデータベース URL と turso 認証トークンで更新します。
{
"mcpServers": {
"cursor10x-mcp": {
"command": "npx",
"args": ["cursor10x-mcp"],
"enabled": true,
"env": {
"TURSO_DATABASE_URL": "your-turso-database-url",
"TURSO_AUTH_TOKEN": "your-turso-auth-token"
}
}
}
}ツールドキュメント
システムツール
mcp_cursor10x_initConversation
ユーザーメッセージの保存、バナーの生成、コンテキストの取得を1つの操作で実行し、会話を初期化します。この統合ツールにより、各会話の開始時にgenerateBanner、getComprehensiveContext、storeUserMessageを個別に呼び出す必要がなくなります。
パラメータ:
content(文字列、必須): ユーザーメッセージの内容importance(文字列、オプション):重要度レベル(「低」、「中」、「高」、「重大」)、デフォルトは「低」metadata(オブジェクト、オプション): メッセージの追加メタデータ
戻り値:
2 つのセクションを持つオブジェクト:
display: ユーザーに表示されるバナーが含まれますinternal: エージェントの使用に関する包括的なコンテキストが含まれています
例:
// Initialize a conversation
const result = await mcp_cursor10x_initConversation({
content: "I need to implement a login system for my app",
importance: "medium"
});
// Result: {
// "status": "ok",
// "display": {
// "banner": {
// "status": "ok",
// "memory_system": "active",
// "mode": "turso",
// "message_count": 42,
// "active_files_count": 3,
// "last_accessed": "4/15/2023, 2:30:45 PM"
// }
// },
// "internal": {
// "context": { ... comprehensive context data ... },
// "messageStored": true,
// "timestamp": 1681567845123
// }
// }mcp_cursor10x_endConversation
複数の操作を1回の呼び出しに統合することで会話を終了します。具体的には、アシスタントの最終メッセージの保存、達成した内容のマイルストーンの記録、エピソードメモリへのエピソードの記録などです。この統合ツールにより、各会話の終了時に storeAssistantMessage、storeMilestone、recordEpisode を個別に呼び出す必要がなくなります。
パラメータ:
content(文字列、必須): アシスタントの最終メッセージの内容milestone_title(文字列、必須): 記録するマイルストーンのタイトルmilestone_description(文字列、必須): 達成された内容の説明importance(文字列、オプション):重要度レベル(「低」、「中」、「高」、「重大」)、デフォルトは「中」metadata(オブジェクト、オプション): すべてのレコードの追加メタデータ
戻り値:
各操作のステータスと結果を含むオブジェクト
例:
// End a conversation with finalization steps
const result = await mcp_cursor10x_endConversation({
content: "I've implemented the authentication system with JWT tokens as requested",
milestone_title: "Authentication Implementation",
milestone_description: "Implemented secure JWT-based authentication with refresh tokens",
importance: "high"
});
// Result: {
// "status": "ok",
// "results": {
// "assistantMessage": {
// "stored": true,
// "timestamp": 1681568500123
// },
// "milestone": {
// "title": "Authentication Implementation",
// "stored": true,
// "timestamp": 1681568500123
// },
// "episode": {
// "action": "completion",
// "stored": true,
// "timestamp": 1681568500123
// }
// }
// }mcp_cursor10x_checkHealth
メモリ システムとそのデータベース接続の健全性をチェックします。
パラメータ:
不要
戻り値:
健康状態と診断情報を持つオブジェクト
例:
// Check memory system health
const health = await mcp_cursor10x_checkHealth({});
// Result: {
// "status": "ok",
// "mode": "turso",
// "message_count": 42,
// "active_files_count": 3,
// "current_directory": "/users/project",
// "timestamp": "2023-04-15T14:30:45.123Z"
// }mcp_cursor10x_getMemoryStats
メモリ システムに関する詳細な統計を取得します。
パラメータ:
不要
戻り値:
包括的なメモリ統計を持つオブジェクト
例:
// Get memory statistics
const stats = await mcp_cursor10x_getMemoryStats({});
// Result: {
// "status": "ok",
// "stats": {
// "message_count": 42,
// "active_file_count": 3,
// "milestone_count": 7,
// "decision_count": 12,
// "requirement_count": 15,
// "episode_count": 87,
// "oldest_memory": "2023-03-10T09:15:30.284Z",
// "newest_memory": "2023-04-15T14:30:45.123Z"
// }
// }mcp_cursor10x_getComprehensiveContext
短期記憶、長期記憶、エピソード記憶を組み合わせて、すべてのメモリ サブシステムから統一されたコンテキストを取得します。
パラメータ:
不要
戻り値:
すべてのメモリシステムから統合されたコンテキストを持つオブジェクト
例:
// Get comprehensive context
const context = await mcp_cursor10x_getComprehensiveContext({});
// Result: {
// "status": "ok",
// "context": {
// "shortTerm": {
// "recentMessages": [...],
// "activeFiles": [...]
// },
// "longTerm": {
// "milestones": [...],
// "decisions": [...],
// "requirements": [...]
// },
// "episodic": {
// "recentEpisodes": [...]
// },
// "system": {
// "healthy": true,
// "timestamp": "2023-04-15T14:30:45.123Z"
// }
// }
// }短期記憶ツール
mcp_cursor10x_storeUserMessage
ユーザーメッセージを短期記憶システムに保存します。
パラメータ:
content(文字列、必須): メッセージの内容importance(文字列、オプション):重要度レベル(「低」、「中」、「高」、「重大」)、デフォルトは「低」metadata(オブジェクト、オプション): メッセージの追加メタデータ
戻り値:
ステータスとタイムスタンプを持つオブジェクト
例:
// Store a user message
const result = await mcp_cursor10x_storeUserMessage({
content: "We need to implement authentication for our API",
importance: "high",
metadata: {
topic: "authentication",
priority: 1
}
});
// Result: {
// "status": "ok",
// "timestamp": 1681567845123
// }mcp_cursor10x_storeAssistantMessage
アシスタントメッセージを短期記憶システムに保存します。
パラメータ:
content(文字列、必須): メッセージの内容importance(文字列、オプション):重要度レベル(「低」、「中」、「高」、「重大」)、デフォルトは「低」metadata(オブジェクト、オプション): メッセージの追加メタデータ
戻り値:
ステータスとタイムスタンプを持つオブジェクト
例:
// Store an assistant message
const result = await mcp_cursor10x_storeAssistantMessage({
content: "I recommend implementing JWT authentication with refresh tokens",
importance: "medium",
metadata: {
topic: "authentication",
contains_recommendation: true
}
});
// Result: {
// "status": "ok",
// "timestamp": 1681567870456
// }mcp_cursor10x_trackActiveFile
ユーザーがアクセスまたは変更しているアクティブなファイルを追跡します。
パラメータ:
filename(文字列、必須): 追跡対象のファイルへのパスaction(文字列、必須): ファイルに対して実行されたアクション (開く、編集、閉じるなど)metadata(オブジェクト、オプション): 追跡イベントの追加メタデータ
戻り値:
ステータス、ファイル名、アクション、タイムスタンプを持つオブジェクト
例:
// Track an active file
const result = await mcp_cursor10x_trackActiveFile({
filename: "src/auth/jwt.js",
action: "edit",
metadata: {
changes: "Added refresh token functionality"
}
});
// Result: {
// "status": "ok",
// "filename": "src/auth/jwt.js",
// "action": "edit",
// "timestamp": 1681567900789
// }mcp_cursor10x_getRecentMessages
短期メモリから最近のメッセージを取得します。
パラメータ:
limit(数値、オプション): 取得するメッセージの最大数。デフォルトは10importance(文字列、オプション):重要度レベルでフィルタリング
戻り値:
ステータスとメッセージの配列を持つオブジェクト
例:
// Get recent high importance messages
const messages = await mcp_cursor10x_getRecentMessages({
limit: 5,
importance: "high"
});
// Result: {
// "status": "ok",
// "messages": [
// {
// "id": 42,
// "role": "user",
// "content": "We need to implement authentication for our API",
// "created_at": "2023-04-15T14:30:45.123Z",
// "importance": "high",
// "metadata": {"topic": "authentication", "priority": 1}
// },
// ...
// ]
// }mcp_cursor10x_getActiveFiles
短期メモリからアクティブなファイルを取得します。
パラメータ:
limit(数値、オプション): 取得するファイルの最大数。デフォルトは10
戻り値:
アクティブファイルのステータスと配列を持つオブジェクト
例:
// Get recent active files
const files = await mcp_cursor10x_getActiveFiles({
limit: 3
});
// Result: {
// "status": "ok",
// "files": [
// {
// "id": 15,
// "filename": "src/auth/jwt.js",
// "last_accessed": "2023-04-15T14:30:45.123Z",
// "metadata": {"changes": "Added refresh token functionality"}
// },
// ...
// ]
// }長期記憶ツール
mcp_cursor10x_storeMilestone
プロジェクトのマイルストーンを長期メモリに保存します。
パラメータ:
title(文字列、必須): マイルストーンのタイトルdescription(文字列、必須): マイルストーンの説明importance(文字列、オプション):重要度レベル。デフォルトは「中」metadata(オブジェクト、オプション): マイルストーンの追加メタデータ
戻り値:
ステータス、タイトル、タイムスタンプを持つオブジェクト
例:
// Store a project milestone
const result = await mcp_cursor10x_storeMilestone({
title: "Authentication System Implementation",
description: "Implemented JWT authentication with refresh tokens and proper error handling",
importance: "high",
metadata: {
version: "1.0.0",
files_affected: ["src/auth/jwt.js", "src/middleware/auth.js"]
}
});
// Result: {
// "status": "ok",
// "title": "Authentication System Implementation",
// "timestamp": 1681568000123
// }mcp_cursor10x_storeDecision
プロジェクトの決定を長期メモリに保存します。
パラメータ:
title(文字列、必須): 決定のタイトルcontent(文字列、必須): 決定の内容reasoning(文字列、オプション):決定の理由importance(文字列、オプション):重要度レベル。デフォルトは「中」metadata(オブジェクト、オプション):決定に関する追加のメタデータ
戻り値:
ステータス、タイトル、タイムスタンプを持つオブジェクト
例:
// Store a project decision
const result = await mcp_cursor10x_storeDecision({
title: "JWT for Authentication",
content: "Use JWT tokens for API authentication with refresh token rotation",
reasoning: "JWTs provide stateless authentication with good security and performance characteristics",
importance: "high",
metadata: {
alternatives_considered: ["Session-based auth", "OAuth2"],
decision_date: "2023-04-15"
}
});
// Result: {
// "status": "ok",
// "title": "JWT for Authentication",
// "timestamp": 1681568100456
// }mcp_cursor10x_storeRequirement
プロジェクト要件を長期メモリに保存します。
パラメータ:
title(文字列、必須): 要件のタイトルcontent(文字列、必須): 要件の内容importance(文字列、オプション):重要度レベル。デフォルトは「中」metadata(オブジェクト、オプション): 要件の追加メタデータ
戻り値:
ステータス、タイトル、タイムスタンプを持つオブジェクト
例:
// Store a project requirement
const result = await mcp_cursor10x_storeRequirement({
title: "Secure Authentication",
content: "System must implement secure authentication with password hashing, rate limiting, and token rotation",
importance: "critical",
metadata: {
source: "security audit",
compliance: ["OWASP Top 10", "GDPR"]
}
});
// Result: {
// "status": "ok",
// "title": "Secure Authentication",
// "timestamp": 1681568200789
// }エピソード記憶ツール
mcp_cursor10x_recordEpisode
エピソード(行動)をエピソード記憶に記録します。
パラメータ:
actor(文字列、必須): アクションを実行するアクター(ユーザー、アシスタント、システム)action(文字列、必須): 実行されたアクションの種類content(文字列、必須): アクションの内容または詳細importance(文字列、オプション):重要度レベル。デフォルトは「低」context(文字列、オプション): エピソードのコンテキスト
戻り値:
ステータス、アクター、アクション、タイムスタンプを持つオブジェクト
例:
// Record an episode
const result = await mcp_cursor10x_recordEpisode({
actor: "assistant",
action: "implementation",
content: "Created JWT authentication middleware with token verification",
importance: "medium",
context: "authentication"
});
// Result: {
// "status": "ok",
// "actor": "assistant",
// "action": "implementation",
// "timestamp": 1681568300123
// }mcp_cursor10x_getRecentEpisodes
エピソード記憶から最近のエピソードを取得します。
パラメータ:
limit(数値、オプション): 取得するエピソードの最大数。デフォルトは10context(文字列、オプション): コンテキストでフィルタリング
戻り値:
ステータスとエピソードの配列を持つオブジェクト
例:
// Get recent episodes in the authentication context
const episodes = await mcp_cursor10x_getRecentEpisodes({
limit: 5,
context: "authentication"
});
// Result: {
// "status": "ok",
// "episodes": [
// {
// "id": 87,
// "actor": "assistant",
// "action": "implementation",
// "content": "Created JWT authentication middleware with token verification",
// "timestamp": "2023-04-15T14:45:00.123Z",
// "importance": "medium",
// "context": "authentication"
// },
// ...
// ]
// }ベクトルベースのメモリツール
mcp_cursor10x_manageVector
保存、検索、更新、削除の操作を含むベクトル埋め込みを管理するための統合ツール。
パラメータ:
operation(文字列、必須): 実行する操作(「保存」、「検索」、「更新」、「削除」)contentId(数値、オプション): このベクターが表すコンテンツのID(保存、更新、削除用)contentType(文字列、オプション): コンテンツの種類 (「メッセージ」、「ファイル」、「スニペット」など)vector(配列、オプション):数値の配列としてのベクトルデータ(保存、更新用)またはクエリベクトル(検索用)vectorId(数値、オプション): 更新または削除するベクトルのIDlimit(数値、オプション): 検索操作の最大結果数。デフォルトは10threshold(数値、オプション):検索操作の類似度の閾値。デフォルトは0.7metadata(オブジェクト、オプション): ベクターに関する追加情報
戻り値:
ステータスと操作結果を持つオブジェクト
例:
// Store a vector embedding
const result = await mcp_cursor10x_manageVector({
operation: "store",
contentId: 42,
contentType: "message",
vector: [0.1, 0.2, 0.3, ...], // 128-dimensional vector
metadata: {
topic: "authentication",
language: "en"
}
});
// Result: {
// "status": "ok",
// "operation": "store",
// "vectorId": 15,
// "timestamp": 1681570000123
// }
// Search for similar vectors
const searchResult = await mcp_cursor10x_manageVector({
operation: "search",
vector: [0.1, 0.2, 0.3, ...], // query vector
contentType: "snippet", // optional filter
limit: 5,
threshold: 0.8
});
// Result: {
// "status": "ok",
// "operation": "search",
// "results": [
// {
// "vectorId": 10,
// "contentId": 30,
// "contentType": "snippet",
// "similarity": 0.92,
// "metadata": { ... }
// },
// ...
// ]
// }データベーススキーマ
メモリ システムは、次のデータベース テーブルを自動的に作成して管理します。
messages: ユーザーとアシスタントのメッセージを保存しますid: 一意の識別子timestamp: 作成タイムスタンプrole: メッセージの役割(ユーザー/アシスタント)content: メッセージの内容importance: 重要度レベルarchived: メッセージがアーカイブされているかどうか
active_files: ファイルアクティビティを追跡するid: 一意の識別子filename: ファイルへのパスaction: 最後に実行されたアクションlast_accessed: 最終アクセスのタイムスタンプ
milestones: プロジェクトのマイルストーンを記録しますid: 一意の識別子title: マイルストーンタイトルdescription:詳細な説明timestamp: 作成タイムスタンプimportance: 重要度レベル
decisions:プロジェクトの決定を保存しますid: 一意の識別子title: 決定タイトルcontent:決定内容reasoning:意思決定推論timestamp: 作成タイムスタンプimportance: 重要度レベル
requirements: プロジェクト要件を維持するid: 一意の識別子title: 要件のタイトルcontent: 要件コンテンツtimestamp: 作成タイムスタンプimportance: 重要度レベル
episodes:クロニクルのアクションとイベントid: 一意の識別子timestamp: 作成タイムスタンプactor: アクションを実行する俳優action: アクションの種類content: アクションの詳細importance: 重要度レベルcontext: アクションコンテキスト
vectors: セマンティック検索用のベクトル埋め込みを保存しますid: 一意の識別子content_id: 参照されるコンテンツのIDcontent_type: コンテンツの種類(メッセージ、ファイル、スニペット)vector: 埋め込みベクトルのバイナリ表現metadata:ベクターの追加メタデータ
code_files: インデックスされたコードファイルを追跡しますid: 一意の識別子file_path: ファイルへのパスlanguage: プログラミング言語last_indexed: 最後にインデックスを作成した時のタイムスタンプmetadata: 追加のファイルメタデータ
code_snippets: 抽出されたコード構造を保存しますid: 一意の識別子file_id: 親ファイルへの参照start_line: 開始行番号end_line: 終了行番号symbol_type: コード構造の種類(関数、クラス、変数)content: コードスニペットのコンテンツ
ワークフローの例
最適化された会話の開始
// Initialize conversation with a single tool call
// This replaces the need for three separate calls at the start of the conversation
const result = await mcp_cursor10x_initConversation({
content: "I need help implementing authentication in my React app",
importance: "high"
});
// Display the banner to the user
console.log("Memory System Status:", result.display.banner);
// Use the context internally (do not show to user)
const context = result.internal.context;
// Use context for more informed assistance新しいセッションの開始(代替方法)
// Generate a memory banner at the start
mcp_cursor10x_generateBanner({})
// Get comprehensive context
mcp_cursor10x_getComprehensiveContext({})
// Store the user message
mcp_cursor10x_storeUserMessage({
content: "I need help with authentication",
importance: "high"
})ユーザーアクティビティの追跡
// Track an active file
await mcp_cursor10x_trackActiveFile({
filename: "src/auth/jwt.js",
action: "edit"
});トラブルシューティング
よくある問題
データベース接続の問題
TursoデータベースのURLと認証トークンが正しいことを確認してください
Tursoサービスへのネットワーク接続を確認する
ファイアウォール設定が接続を許可していることを確認する
欠損データ
データが適切な重要度レベルで保存されていることを確認する
検索クエリパラメータ(制限、フィルター)を確認する
mcp_cursor10x_checkHealth()でデータベースの健全性をチェックする
パフォーマンスの問題
mcp_cursor10x_getMemoryStats()でメモリ統計を監視するデータベースが大きくなりすぎた場合は古いデータをアーカイブすることを検討してください
より具体的なフィルターを使用して検索を最適化します
診断手順
システムの健全性を確認します:
const health = await mcp_cursor10x_checkHealth({}); console.log("System Health:", health);メモリ統計を確認します。
const stats = await mcp_cursor10x_getMemoryStats({}); console.log("Memory Stats:", stats);ステータスバナーを生成します:
const banner = await mcp_cursor10x_generateBanner({}); console.log("Memory Banner:", banner);
重要度レベル
アイテムをメモリに保存するときは、適切な重要度レベルを使用します。
低:一般情報、日常業務、日常会話
中程度: 有用なコンテキスト、標準的な作業項目、定期的な機能
高:重要な決定、主要な機能、重要なアーキテクチャ要素
重要:コアアーキテクチャ、セキュリティ上の懸念、データ整合性の問題
ライセンス
マサチューセッツ工科大学