docs: add CLI system docs

This commit is contained in:
zhayujie
2026-03-29 17:57:12 +08:00
parent e06925ab85
commit 3cb5a0fbd6
62 changed files with 2995 additions and 750 deletions

View File

@@ -0,0 +1,80 @@
---
title: 短期記憶
description: 会話コンテキスト — メッセージ管理、圧縮戦略、コンテキスト操作
---
会話コンテキストは Agent の短期記憶であり、現在のセッション内のすべてのメッセージユーザー入力、Agent の返信、ツール呼び出しと結果を含みます。適切なコンテキスト管理は、Agent の推論品質とコスト制御にとって重要です。
## コンテキストの構造
各会話ターンは以下で構成されます:
```
ユーザーメッセージ → Agent の思考 → ツール呼び出し → ツール結果 → ... → Agent の最終返信
```
1 つのターンには複数のツール呼び出しが含まれる場合があります(`agent_max_steps` で制御)。すべてのツール呼び出しと結果は、圧縮またはトリミングされるまでコンテキストに保持されます。
## 主要な設定
| パラメータ | 説明 | デフォルト値 |
| --- | --- | --- |
| `agent_max_context_tokens` | コンテキストの最大トークン予算 | `50000` |
| `agent_max_context_turns` | コンテキストの最大会話ターン数 | `20` |
| `agent_max_steps` | ターンあたりの最大判断ステップ数(ツール呼び出し回数) | `15` |
`config.json` またはチャットの `/config` コマンドで設定できます。
## 圧縮戦略
コンテキストが制限を超えた場合、システムは自動的に圧縮を実行してスペースを解放します。このプロセスには複数の段階があります:
### 1. ツール結果の切り詰め
各判断ループの開始前に、過去のターンのツール呼び出し結果を確認します。**20,000 文字** を超えるツール結果は切り詰められ、先頭と末尾のみが保持されます。現在のターンの結果は影響を受けません。
### 2. ターンのトリミング
会話ターン数が `agent_max_context_turns` を超えた場合:
- **最も古い半分** の完全なターンがトリミングされます(ツール呼び出しチェーンの完全性を保証)
- トリミングされたメッセージは LLM によって要約され、**日次記憶ファイルに書き込まれます**
- 残りのターンはそのまま保持されます
### 3. トークン予算のトリミング
ターンのトリミング後、トークン数がまだ予算を超えている場合:
- **5 ターン未満の場合**:すべてのターンで**テキスト圧縮**を実行 — 各ターンは最初のユーザーテキストと最後の Agent 返信のみを保持し、中間のツール呼び出しチェーンを削除
- **5 ターン以上の場合****前半のターン**を再度トリミングし、破棄されたコンテンツも記憶に書き込まれます
### 4. オーバーフロー緊急処理
モデル API がコンテキストオーバーフローエラーを返した場合:
1. 現在のすべてのメッセージを要約して記憶に書き込み
2. 積極的なトリミングを適用(ツール結果は 10K 文字に制限、ユーザーテキストは 10K、最大 5 ターン)
3. それでもオーバーフローする場合は、会話コンテキスト全体をクリア
## セッションの永続化
会話メッセージはローカルデータベースに永続化され、サービス再起動後に自動的に復元されます。復元戦略:
- 最近の **`max(3, max_context_turns / 6)`** ターンを復元
- 各ターンの**ユーザーテキストと Agent の最終返信のみ**を保持し、中間のツール呼び出しチェーンは復元しません
- **30 日** を超える過去のセッションは自動的にクリーンアップされます
## 操作コマンド
チャットで以下のコマンドを使用してコンテキストを管理できます:
| コマンド | 説明 |
| --- | --- |
| `/context` | 現在のコンテキスト統計を表示(メッセージ数、ロール分布、合計文字数) |
| `/context clear` | 現在のセッションコンテキストをクリア |
| `/config agent_max_context_tokens 80000` | コンテキストトークン予算を調整 |
| `/config agent_max_context_turns 30` | コンテキストターン上限を調整 |
<Tip>
コンテキストをクリアすると、Agent は以前の会話内容を「忘れます」。すでに長期記憶に書き込まれたコンテンツは、記憶検索を通じて引き続き取得できます。
</Tip>

49
docs/ja/memory/index.mdx Normal file
View File

@@ -0,0 +1,49 @@
---
title: 長期記憶
description: CowAgent の長期記憶システム — ファイル永続化、自動書き込み、ハイブリッド検索
---
長期記憶はワークスペースのファイルに保存され、セッション間で永続化されます。Agent は会話中に検索ツールを通じて過去の記憶をオンデマンドで読み込み、コンテキストのトリミング時に会話の要約を自動的に長期記憶に書き込みます。
## 記憶の種類
### コア記憶MEMORY.md
`~/cow/MEMORY.md` に保存され、長期的なユーザーの好み、重要な決定、主要な事実など、時間が経っても薄れない情報を含みます。Agent はツールを通じてこのファイルを読み書きし、長期的な知識を維持します。
### 日次記憶memory/YYYY-MM-DD.md
`~/cow/memory/` ディレクトリに保存され、日付で命名されます(例:`2026-03-08.md`)。日々の会話の要約と主要なイベントを記録します。空ファイルの生成を避けるため、最初の書き込み時にのみファイルが作成されます。
## 自動書き込み
Agent は以下のメカニズムにより、会話内容を長期記憶に自動的に永続化します:
- **コンテキストトリミング時** — 会話ターン数またはトークン数が設定上限を超えた場合、最も古い半分のコンテキストがトリミングされ、LLM によって要約されて日次記憶ファイルに書き込まれます
- **毎日のスケジュール要約** — 毎日 23:55 に自動的にフル要約がトリガーされ、アクティビティが少ない日でも記憶が保存されます(内容が変更されていない場合はスキップ)
- **API コンテキストオーバーフロー時** — モデル API がコンテキストオーバーフローエラーを返した場合、緊急措置として現在の会話要約が保存されます
すべての記憶書き込みはバックグラウンドスレッドで非同期に実行されLLM の要約 + ファイル書き込み)、通常の会話応答をブロックしません。
## 初回起動
初回起動時に、Agent はユーザーに主要な情報を積極的に尋ね、ワークスペース(デフォルト `~/cow`)に保存します:
| ファイル | 説明 |
| --- | --- |
| `system.md` | Agent のシステムプロンプトと動作設定 |
| `user.md` | ユーザーの身元情報と好み |
| `MEMORY.md` | コア記憶(長期) |
| `memory/YYYY-MM-DD.md` | 日次記憶(オンデマンドで作成) |
<Frame>
<img src="https://cdn.link-ai.tech/doc/20260203000455.png" width="800" />
</Frame>
## 設定
| パラメータ | 説明 | デフォルト |
| --- | --- | --- |
| `agent_workspace` | ワークスペースパス、記憶ファイルはこのディレクトリ配下に保存されます | `~/cow` |
| `agent_max_context_tokens` | 最大コンテキストトークン数。超過時にトリミングされ、記憶として要約されます | `50000` |
| `agent_max_context_turns` | 最大コンテキストターン数。超過時にトリミングされ、記憶として要約されます | `20` |