智能代理记忆模式
永続エージェント向けメモリアーキテクチャパターン
作者:Byron-McKeeby · 最新版本:1.0.0
收藏:0 · 下载:1.3k
说明文档
# エージェント・メモリパターン
永続AIエージェントのための効率的なメモリ管理システム。日次ファイル、長期記憶、検索最適化、外部コンテンツ段階的処理の実装ガイドです。
## アーキテクチャ概要
### メモリ階層
```
workspace/
├── MEMORY.md # 長期記憶(手動キュレーション)
├── memory/
│ ├── YYYY-MM-DD.md # 日次ログ
│ ├── pending-memories.md # 外部コンテンツ段階処理
│ ├── heartbeat-state.json # ハートビート状態
│ └── queued-messages.json # メッセージキュー
└── skills/
└── memory-tools/ # メモリ管理ツール群
```
## 日次ファイル管理
### 自動日次ファイル作成
```bash
#!/bin/bash
# daily-memory-init.sh
create_daily_memory() {
local date="$(date -I)"
local memory_dir="/home/bot/.openclaw/workspace/memory"
local daily_file="$memory_dir/$date.md"
mkdir -p "$memory_dir"
if [[ ! -f "$daily_file" ]]; then
cat > "$daily_file" << EOF
# Daily Memory: $date
## セッション開始
$(date): メモリシステム初期化
## 主要な出来事
## 学習したこと
## 次回への引き継ぎ
## 外部リンク・参考資料
EOF
echo "日次メモリファイル作成: $daily_file"
fi
}
create_daily_memory
```
### 日次ログ構造化
```bash
#!/bin/bash
# memory-logger.sh
log_memory() {
local event_type="$1"
local description="$2"
local importance="${3:-normal}"
local date="$(date -I)"
local time="$(date '+%H:%M')"
local memory_file="/home/bot/.openclaw/workspace/memory/$date.md"
# ファイル存在確認・作成
if [[ ! -f "$memory_file" ]]; then
create_daily_memory
fi
# 重要度マーカー
local marker=""
case "$importance" in
"high") marker="🔴 " ;;
"medium") marker="🟡 " ;;
"low") marker="⚪ " ;;
*) marker="📝 " ;;
esac
# ログエントリ追加
echo "" >> "$memory_file"
echo "### $time - $event_type" >> "$memory_file"
echo "$marker$description" >> "$memory_file"
echo "メモリログ追加: $event_type [$importance]"
}
# 使用例
log_memory "ユーザーとの対話" "新しいプロジェクト要件を確認" "high"
log_memory "システム更新" "スキル パッケージを5個作成" "medium"
```
## 長期記憶管理 (MEMORY.md)
### キュレーション戦略
```bash
#!/bin/bash
# memory-curation.sh
curate_weekly_memories() {
local workspace="/home/bot/.openclaw/workspace"
local memory_file="$workspace/MEMORY.md"
local week_start="$(date -d '7 days ago' -I)"
local today="$(date -I)"
echo "## 週次メモリキュレーション ($week_start to $today)" >> "$memory_file"
# 過去7日間の重要な出来事を抽出
for i in {0..6}; do
local check_date="$(date -d "$i days ago" -I)"
local daily_file="$workspace/memory/$check_date.md"
if [[ -f "$daily_file" ]]; then
# 高重要度の出来事を抽出
grep -E "🔴|高重要|重要な" "$daily_file" >> /tmp/important-events.txt
fi
done
# 重要な出来事をMEMORY.mdに統合
if [[ -s /tmp/important-events.txt ]]; then
echo "### 重要な出来事" >> "$memory_file"
cat /tmp/important-events.txt >> "$memory_file"
echo "" >> "$memory_file"
fi
# 学習したパターンを記録
echo "### 学習したパターン" >> "$memory_file"
grep -h "学習" "$workspace/memory"/*.md | tail -10 >> "$memory_file"
# クリーンアップ
rm -f /tmp/important-events.txt
echo "週次キュレーション完了"
}
```
## grep-based スマート検索
### メモリ検索システム
```bash
#!/bin/bash
# memory-search.sh
smart_memory_search() {
local query="$1"
local context_lines="${2:-3}"
local workspace="/home/bot/.openclaw/workspace"
echo "=== メモリ検索結果: '$query' ==="
# MEMORY.md検索(長期記憶)
echo "## 長期記憶 (MEMORY.md)"
if [[ -f "$workspace/MEMORY.md" ]]; then
grep -n -i -C "$context_lines" "$query" "$workspace/MEMORY.md" | head -20
fi
echo ""
echo "## 最近の記憶 (過去7日)"
# 過去7日間の日次ファイルを検索
for i in {0..6}; do
local check_date="$(date -d "$i days ago" -I)"
local daily_file="$workspace/memory/$check_date.md"
if [[ -f "$daily_file" ]]; then
local matches="$(grep -l -i "$query" "$daily_file" 2>/dev/null)"
if [[ -n "$matches" ]]; then
echo "### $check_date"
grep -n -i -C 2 "$query" "$daily_file" | head -10
echo ""
fi
fi
done
# 関連キーワード提案
echo "## 関連キーワード候補"
grep -h -i "$query" "$workspace/MEMORY.md" "$workspace/memory"/*.md 2>/dev/null \
| tr ' ' '\n' | grep -v '^