# プロジェクトガイド

個人用プロジェクトワークスペースを作成し、メモリの関連付けを管理し、TODO や決定を追跡して、エージェントのコンテキストをスコープ設定します。

- Canonical: https://docs.xmemo.dev/ja/docs/guides/projects
- Locale: ja-JP
- Content-Locale: ja-JP
- Canonical-Content-Digest: 7f95ace70e5137cfc69dccdd21827d3a6a830c65f25f2cff83b344d35824c8ef
- Edition-Digest: 236e34f5c04ee69b54328fbb285cba461a249e37ed3c872ba7fa045a0d387922
- Source-Revision: sha256:192851794c728ed3868a5be3be886563c1566aa6aec82e2a9d21109e443f6368

## ユーザーの目標

専用のプロジェクトワークスペースを確立して、コンテキストメモリを整理し、運用上の決定とアクティブなタスクを追跡し、接続されたエージェントで焦点を絞ったプロジェクトコンテキストを取得し、プロジェクトの関連付けを削除してもコアの個人メモリが無傷のまま残ることを確認します。

## 利用資格と前提条件

プロジェクトワークスペースは、Memory Console (https://xmemo.dev/me#projects) およびサポートされている MCP クライアントプロファイルを通じて、すべての個人アカウントで利用できます:

- 個人の境界: 現在、プロジェクトは厳密に個人専用です。team_id を指定してプロジェクトを作成しようとすると、サーバーによって拒否されます (HTTP 400)。ドキュメントにはチームプロジェクトの保証はありません。
- 上限なしのクォータ: ワークスペースの作成は、数値プランのクォータや人為的なプロジェクト制限によって制約されません。アカウントは必要に応じてワークスペースをプロビジョニングします。
- パーティション化されたビュー: "対応が必要" (Attention Needed) ビューおよび Knowledge メモリ対 Working メモリのパーティションは、アカウントで有効化されている場合に動作します (収束評価モードはデフォルトでオフです)。
- エージェントの接続性: 接続されたエージェントは、config/mcp-documentation-contract.json で契約されているクライアントプロファイルに一致するプロジェクトツールにアクセスします。

## 1. Memory Console のプロジェクトに移動する

個人ダッシュボードにログインし、https://xmemo.dev/me#projects を開きます。左側のナビゲーションで Workspace セクションを選択し、Projects をクリックします。パネルヘッダーには "Browse project workspaces, context, and project memories." と表示され、Total Projects、Active、Attention Needed、および Archived のトップレベル指標が表示されます。

```text
https://xmemo.dev/me#projects
Workspace -> Projects -> Total Projects (0) | Active (0) | Attention Needed (—) | Archived (0)
```

## 2. 新しい個人プロジェクトワークスペースをプロビジョニングする

上部のアクションエリアで Create New Project をクリックして、ワークスペースモーダルを開きます:

- プロジェクト名: 説明的なプロジェクト名を入力します (例: "Incident Response Automation")。フィールドには "Required, 1-128 characters." と表示され、制御文字およびパス区切り文字 (/ または \) に対して検証されます。
- プロジェクト識別子のプレビュー: プレビュー識別子 (#incident-response-automation) を確認します。ヘルパーには次のように表示されます: "Non-authoritative preview. The backend server assigns the authoritative project key."
- 説明: 必要に応じて、最大 2000 文字のスコープ憲章を入力します (例: "Operational runbooks, triage checklists, and automated incident response workflows.")。
- 送信: Create Project をクリックします。サーバーは正規の識別子を割り当て、プロジェクト詳細ビューを開きます。

## 3. メモリ、TODO、および決定を関連付ける

ワークスペースがプロビジョニングされたら、スコープ設定されたコンテキスト、保留中のタスク、およびアーキテクチャの決定を設定します:

- メモリを関連付ける: プロジェクトにスコープ設定された合成運用ランブックメモリを作成します (scope: "incident-response-automation"): "Runbook policy: P0 production outages trigger immediate secondary on-call escalation after 15 minutes of unacknowledged alerts."
- TODO を記録する: プロジェクト詳細ビューまたはエージェントを介してタスクを追加します: "Draft post-incident review template for payment gateway timeouts."
- 決定を記録する: アーキテクチャの決定を記録します: "Use PagerDuty webhook adapter for primary incident ingestion."
- ヒーロー指標を検査する: ヒーローバーにはライブ集計が反映されます: Memories: 1, Open TODOs: 1, Decisions: 1。

```ts
await client.remember(
  "Runbook policy: P0 production outages trigger immediate secondary on-call escalation after 15 minutes of unacknowledged alerts.",
  {
    path: "projects/incident-response-automation/runbooks/p0-escalation",
    scope: "incident-response-automation",
  },
);
```

## 4. エージェントのコンテキスト取得を検証する

認可されたエージェントクライアントを接続して、プロジェクトの取得によってプロジェクト間のノイズなしにスコープ設定されたレコードが返されることを検証します:

- Cursor または Ordinary Full: エージェントは get_project_context(project_id="incident-response-automation") を呼び出して、アクティブなメモリ、保留中の TODO、および記録された決定を取得します。
- ChatGPT または Generic Public: エージェントは get_project_summary(project_id="incident-response-automation") または open_project_workspace を呼び出して、サマリーステータスを検査します。
- ChatGPT チャット内ウィジェット: open_project_workspace によって開かれるチャット内インタラクティブウィジェットは、会話内でインラインタスクカードを直接提供します。これは https://xmemo.dev/me#projects の完全な Web Memory Console とは異なります。

```json
{
  "project_id": "incident-response-automation",
  "status": "active",
  "memories_count": 1,
  "open_todos": 1,
  "decisions": 1,
  "summary": "Operational runbooks, triage checklists, and automated incident response workflows."
}
```

## 5. メモリの関連付けを解除し、非破壊的な削除を検証する

プロジェクトメモリを削除すると、基盤となる個人メモリレコードを保持したままワークスペースの関連付けのみが解除されることを確認します:

- メモリードロワーを開く: プロジェクトメモリリストで運用ランブック項目を選択して、詳細ドロワーを表示します。
- 削除を開始する: ドロワーのアクションで Remove from Project をクリックします。
- 関連付けの解除を確認する: モーダルが開き、ヘッダーに "Remove from Project"、サブタイトルに "This memory will be disassociated from this project workspace." と表示されます。警告に注意してください: "The memory content remains in your personal memory archive, but will no longer appear in this project context."
- 確認を実行する: Remove をクリックします。プロジェクトのメモリカウントが 0 に減ります。
- グローバルな永続性を検証する: 個人メモリアーカイブ (/me#memory) に移動し、ランブックメモリが無傷で取得可能であることを確認します。

## 観察可能な結果

このワークフローを完了すると、ワークスペースは完全な運用上の分離を示します:

- ワークスペースステータス: プロジェクトはアクティブなプロジェクト (Active) の下に正規のスラッグ #incident-response-automation で一覧表示されます。
- コンテキストの分離: 接続されたエージェントはプロジェクトコンテキストを照会し、無関係なプロジェクトからの混入なしにスコープ設定された事実を受け取ります。
- データ安全性: ワークスペースからメモリレコードのリンクを解除すると、個人メモリレコードをアーカイブに永続的に保持しながら、プロジェクトの集計のみが正常に減少します。

## エージェントがアクセスできるもの

エージェントツールの可用性は、config/mcp-documentation-contract.json で構成されたクライアントプロファイルに厳密に依存します:

- chatgpt-public、generic-public、および public-only プロファイル: project、get_project_summary、および open_project_workspace を公開します。
- claude-plugin プロファイル: project および get_project_context を公開します。
- cursor-plugin および ordinary-full プロファイル: get_project_context、update_project_todo、および update_project_decision を公開します。
- プロファイルの境界: その他のクライアントプロファイルはプロジェクトツールを公開しません。契約外のツールを呼び出そうとすると、ツール検出拒否が発生します。

## 共有とライフサイクルの境界

プロジェクトワークスペースは、明示的な運用およびデータ境界を強制します:

- 個人の境界: 現在、すべてのワークスペースは個人専用です。チームワークスペースはサポートされておらず、team_id を指定したリクエストは検証に失敗します。
- ライフサイクル状態: メモリエクスプローラーは、レコードを Active、Superseded、Expired、および Archived のステータスに分類します。
- キュレーションパーティション: アカウントで有効化されている場合、ワークスペースは Knowledge (知識) および Working (作業) メモリパーティションを提供します。Knowledge パーティションには永続的な規約が保持され、Working パーティションには一時的なセッション状態が保存されます。
- ナレッジベースとの違い: プロジェクトパーティションは会話型エピソードメモリを分類します。対照的に、ナレッジベースは複数リビジョンのスナップショットを備えた正式でバージョン管理されたドキュメント管理を提供します。キュレーションされたドキュメントについては /docs/concepts/knowledge-bases を参照してください。
- クォータの境界: 個人プロジェクトワークスペースには数値クォータはありません。

## 障害回復

一般的なエッジケースと回復アクション:

- 重複するプロジェクト名 (HTTP 409): サーバーは重複するプロジェクト名を "A project with this name or identifier already exists in your workspace." で拒否します。別のプロジェクト名を指定してください。
- 無効なプロジェクト名 (HTTP 400): プロジェクト名にスラッシュ (/ または \) を含めたり、128 文字を超えたり、予約されたトークン (_project、.、..) を使用したりすることはできません。作成ダイアログで名前を修正してください。
- クライアントプロファイルのツールの不一致: エージェントが get_project_context を見つけられない場合は、アクティブなクライアントプロファイルを確認してください。chatgpt-public プロファイルは get_project_summary を公開し、get_project_context は cursor-plugin および ordinary-full で公開されます。
- バージョンの競合 (HTTP 409): 別のセッションがプロジェクトまたはメモリを同時に変更した場合、ドロワーに Reload ボタンとともに "Modified elsewhere, please reload" が表示されます。Reload をクリックして状態を更新してください。

## 関連リファレンス

補完的な機能と技術リファレンスについては、以下を参照してください:

- プロジェクトの概念リファレンス: /docs/concepts/projects のアーキテクチャ詳細とスコープ規則。
- Memory Console ガイド: /docs/guides/memory-console の完全なコンソールウォークスルー。
- ナレッジベースガイド: /docs/concepts/knowledge-bases のキュレーションされた参照ドキュメント管理。
- プロジェクト REST API: /docs/api/projects の認証済みプログラムエンドポイント。

## ChatGPT ユーザー

bearer token をチャットに貼り付けずに、ChatGPT が XMemo の設定、プロジェクト事実、意思決定、TODO に永続的にアクセスできるようにします。

ChatGPT/OpenAI app の OAuth フローで hosted XMemo MCP server に接続し、XMemo アカウントに memory:read と memory:write の許可を承認します。

合成の設定またはプロジェクトメモを保存し、新しいチャットを開始してから、作業を続ける前に ChatGPT に XMemo 経由でそれを呼び出させます。

OAuth が失敗する、またはツールが表示されない場合は、direct token を作成する前に、ホストアプリで MCP server からサインアウトし、XMemo server URL を再接続して再試行します。

## Copilot / Codex 開発者

リポジトリの判断、コーディング規約、バグ修正メモ、タスク履歴を IDE と CLI エージェント間で持ち運べます。

利用可能な場合は、VS Code / GitHub Copilot および Gemini CLI に OAuth を使用してください。Copilot CLI、Codex、Cursor、またはその他の直接 MCP クライアントの場合は、XMEMO_KEY をローカル環境またはシークレットストアに保持し、安定した XMEMO_AGENT_INSTANCE_ID を設定してください。

コードベースの判断またはバグ修正を記録し、次の IDE または CLI エージェントに、編集前に関連する XMemo コンテキストを呼び出させます。

呼び出し結果が空の場合は、選択した MCP 設定パス、direct client 用の XMEMO_KEY 環境変数、ホストアプリ内の古い OAuth 認証情報を確認します。

## チーム / エンタープライズ pilot owner

アカウント制御、ソース attribution、エクスポート/削除ワークフロー、レビュー担当者向けに安全な設定証跡で共有メモリを評価します。

保護された XMemo workspace を作成または開き、承認済みユーザーを招待してから、readiness badges に従って OAuth またはスコープ付き direct credential で各クライアントを接続します。

pilot メンバーに合成のチームメモリを保存してもらい、XMemo でソース attribution を確認し、削除/エクスポートとサポート経路をレビューします。

メンバーが接続できない場合は、新しい token を発行する前に、ロール権限、OAuth 承認、クライアント readiness 状態、サポートガイダンスを確認します。

## 自律エージェント operator

headless またはスケジュール済みエージェントが進捗を記録し、過去の判断を取得し、安定した非秘密のインスタンス ID を保持できるようにします。

/api/v1/mcp/config/autonomous-agent を取得します。runner が OAuth + custom headers をサポートする場合は auth_modes.oauth を優先し、完全 headless runner の場合のみ secret store の XMEMO_KEY で auth_modes.xmemo_key を使います。

XMemo に進捗を書き込む合成タスクを 1 つ実行し、runner を再起動して、同じ XMEMO_AGENT_INSTANCE_ID でその進捗を呼び出せることを確認します。

attribution が変わる、または呼び出し結果がインスタンス間で分かれる場合は、XMEMO_AGENT_INSTANCE_ID を git の外に永続化し、runner が起動ごとに再生成していないことを確認します。
