AgentSkillsCN

Memory

Memory

SKILL.md

双轨记忆系统

架构

code
┌─────────────────────────────────────────┐
│            双轨记忆系统                   │
├──────────────────┬──────────────────────┤
│   Memory MCP     │    .ai_state/        │
│   (云端持久)      │    (本地文件)         │
├──────────────────┼──────────────────────┤
│ • 跨项目知识      │ • 项目状态            │
│ • 长期经验        │ • 会话上下文          │
│ • 技术决策        │ • TODO/kanban        │
│ • 用户偏好        │ • 错误记录            │
└──────────────────┴──────────────────────┘

Memory MCP 使用

存储知识

javascript
memory_store({
  category: "技术决策",
  title: "认证系统设计",
  content: `
    选择 JWT + Redis 方案
    原因: 支持分布式、可快速撤销
    注意: token 过期时间设置...
  `,
  tags: ["auth", "jwt", "architecture"]
})

查询知识

javascript
memory_search({
  query: "认证相关的设计决策",
  category: "技术决策",  // 可选
  limit: 5
})

更新知识

javascript
memory_update({
  id: "knowledge_id",
  content: "更新后的内容..."
})

.ai_state/ 文件系统

目录结构

code
.ai_state/
├── session.lock        # 会话锁
├── active_context.md   # 当前上下文
├── TODO.md             # 任务列表
├── kanban.md           # 看板状态
├── errors.md           # 错误记录
├── knowledge.md        # 本地知识 (降级存储)
└── handoff.md          # AI 交接文档

session.lock

json
{
  "session_id": "uuid",
  "started_at": "2025-01-01T00:00:00Z",
  "ai_engine": "claude",
  "current_phase": "Execute",
  "current_task": "task_id"
}

active_context.md

markdown
# 当前上下文

## 任务
[当前任务描述]

## 进度
- 阶段: Execute
- 完成: 3/5

## 关键信息
- [重要上下文1]
- [重要上下文2]

## 最近决策
- [决策1]
- [决策2]

errors.md

markdown
# 错误记录

## 2025-01-01 10:30
**任务**: 修改 auth.ts
**错误**: TypeError: undefined is not a function
**根因**: 未检查返回值
**解决**: 添加空值检查
**教训**: 总是检查异步函数返回值

knowledge.md (Memory MCP 降级)

markdown
# 本地知识库

## 技术决策
### 认证系统
- 方案: JWT + Redis
- 原因: ...

## 经验教训
### 错误处理
- 总是检查异步返回值
- ...

同步策略

优先级

yaml
读取:
  1. Memory MCP (优先,最新)
  2. .ai_state/ (降级,本地)

写入:
  1. 同时写入两处 (若可能)
  2. 仅 Memory MCP (跨项目知识)
  3. 仅 .ai_state/ (项目特定)

场景判断

yaml
跨项目通用:
  存储: Memory MCP
  示例: 技术最佳实践、通用设计模式

项目特定:
  存储: .ai_state/
  示例: TODO、kanban、当前任务状态

两者都需要:
  存储: 都写
  示例: 重要决策(Memory持久化 + 本地快速访问)

会话恢复

onSessionStart 流程

yaml
1. 检查 session.lock
   - 存在 → 恢复会话
   - 不存在 → 新建会话

2. 读取 active_context.md
   - 获取上次状态
   - 识别待续任务

3. 查询 Memory MCP
   - 获取相关知识
   - 加载历史决策

4. 加载 kanban.md
   - 识别 DOING 任务
   - 继续执行

恢复示例

javascript
async function restoreSession() {
  // 检查 session.lock
  const lock = await readFile('.ai_state/session.lock');
  if (lock) {
    console.log('恢复会话:', lock.session_id);
    
    // 读取上下文
    const context = await readFile('.ai_state/active_context.md');
    
    // 查询相关知识
    const knowledge = await memory_search({
      query: context.task,
      limit: 3
    });
    
    // 继续任务
    return { context, knowledge, resumeFrom: lock.current_task };
  }
  
  return null;
}

清理策略

任务完成后

yaml
保留:
  - Memory MCP 中的知识
  - errors.md 中的教训
  
清理:
  - session.lock
  - 可选: 归档 TODO.md 和 kanban.md

会话中断

yaml
保留所有文件,等待恢复:
  - session.lock 标记未完成
  - active_context.md 保留最新状态
  - kanban.md 保留 DOING 状态