Agent Skill - 执行上下文记忆机制

Agent Skill - 执行上下文记忆机制

  • [1. 关于 Agent Skill 执行上下文](#1. 关于 Agent Skill 执行上下文)
  • [2. 为什么需要上下文记忆](#2. 为什么需要上下文记忆)
  • [3. 如何实现上下文记忆](#3. 如何实现上下文记忆)
    • [3.1. Skill Registry(最轻量,立即可做)](#3.1. Skill Registry(最轻量,立即可做))
    • [3.2. Hook 系统(需要内核支持)](#3.2. Hook 系统(需要内核支持))
  • [4. 相关资料](#4. 相关资料)

1. 关于 Agent Skill 执行上下文

Agent Skill 执行上下文即技能在执行过程中必须感知的信息,如当前执行的状态、步骤等,一旦突然停止,下次执行可以知道上一次执行状态和步骤,确保重试不会造成脏数据等。

2. 为什么需要上下文记忆

Skill 本身是"怎么做",记忆是"做过什么"------两者配合才能完成真正的 Agent 行为。Skill 本质上是指令文件(SKILL.md),告诉 Agent 某类任务的标准化操作流程。但它本身是无状态的------就像一个空壳工具说明书。

记忆对 Skill 的三个价值

上下文延续 --- 同一个 skill 多次使用时,能引用之前的结论、数据、决策

个性化适配 --- 不同用户偏好不同(比如你习惯飞书报告格式,记忆了就不需要每次都指定)

状态追踪 --- 一个完整任务可能分多轮完成(先查日志 → 再分析 → 再写报告),记忆串联这些步骤。

3. 如何实现上下文记忆

3.1. Skill Registry(最轻量,立即可做)

在 workspace 中维护一个 skill 状态文件,每次 skill 执行前后自动读写:

复制代码
{
  "my-skill-name": {
    "last_run": "2026-07-01T19:00:00+08:00",
    "total_runs": 6,
    "last_result": {
      "records": 2011,
      "users": 24,
      "violations": 1632,
      "top_risk_users": ["you.wang@msxf.com", "ke.peng01"],
      "feishu_doc": "https://feishu.cn/docx/IXfcdCGczoz1ZyxnRG4cTJbEnE3"
    },
    "active_context": {
      "pending_issues": ["sudo -i not in whitelist", "password plaintext"],
      "whitelist_count": 272
    }
  }
}

SKILL.md 中增加一个步骤

复制代码
# 执行前
### 1. 加载技能上下文
读取 `skills/registry.json` 中对应技能的 `active_context`,了解上次遗留的问题和状态。

## 执行后
### 8. 保存技能上下文
将本次运行结果摘要更新到 `skills/registry.json`,保留 `pending_issues` 供下次引用。

3.2. Hook 系统(需要内核支持)

借鉴 Claude Code 的 onActivate / onDeactivate,在 Skill.md 中声明钩子:

复制代码
----
name: my-skill-name
context: fork
hooks:
  onActivate: "scripts/pre-flight.sh"
  onDeactivate: "scripts/post-flight.sh"
  onActivateSubagent: true
---

内核实现思路:

解析 SKILL.md frontmatter,发现 hooks 字段

onActivate:skill 激活时,自动执行预置脚本(校验环境、准备数据、记录 trace)

onDeactivate:skill 完成后,执行清理(写入结果、释放临时资源、更新 registry)

context: fork + onActivateSubagent:在隔离子 agent 中执行,不污染主会话

OpenClaw 中已有基础设施:

sessions_spawn → 对应 context: fork

exec → 对应 onActivate/onDeactivate 脚本执行

cron → 对应定时触发的 skill 执行

需要在 skill 匹配层 加一个中间件,解析 frontmatter 钩子并触发对应动作。

4. 相关资料

https://agentskills.io/home