记忆提炼Skills

更新时间:
复制 MD 格式

程序性记忆提炼(Agent Skills)把Agent已经完成的任务过程整理成可复用的技能,下次遇到类似任务时Agent可以直接调用该技能。

主要作用

作用

说明

复用成功经验

把一次任务的执行过程整理成通用步骤,减少重复探索。

持续完善方法

同类任务产生新的有效经验时,可以补充并更新已有Skill。

从失败中学习

失败记录可以沉淀为pitfalls,提醒Agent避开已经发生过的问题。

按任务检索

Agent收到新任务时,可以根据任务描述找到最相关的Skill。

便于共享和审查

Skill可以查看完整内容,也可以导出为Markdown,供团队复用。

Skill包含什么

内容

作用

name

Skill名称。

when_to_use

适合在什么任务中使用。

inputs

执行前需要提供的信息。

outputs

执行完成后应得到的结果。

steps

可直接执行的操作步骤。

caveats

使用时需要注意的事项。

pitfalls

从失败记录中提炼出的避坑提示。

version

Skill当前版本;经验更新后版本会递增。

适用场景

  • 客服Agent:退款、改签、账号恢复和工单升级流程。

  • 企业Agent:报表生成、数据核对、审批提交和系统巡检。

  • Coding Agent:发布、排障、代码审查和测试修复流程。

  • 运营Agent:内容发布、活动配置和数据复盘流程。

  • 浏览器Agent:网页采集、表单填写和后台配置流程。

示例

下面以"导出指定月份和地区的销售报表"为例,演示如何写入一次程序性记忆、查看生成的Skill,并在新任务中检索它。

步骤一:配置服务地址和认证信息

export MEMORY_BASE_URL="https://api-longmemory-cn-beijing.opentrust.net"
export MEMORY_API_KEY="<YOUR_API_KEY>"
export AGENT_ID="demo-report-agent-001"

步骤二:写入程序性记忆

程序性记忆应包含完整的任务目标、关键步骤和执行结果。memory_type 必须设置为 procedural_memory,并提供稳定的 agent_id

curl -sS -X POST "$MEMORY_BASE_URL/memories" \
  -H "Authorization: Token $MEMORY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "agent_id": "demo-report-agent-001",
    "memory_type": "procedural_memory",
    "messages": [
      {"role": "user", "content": "任务:导出指定月份和地区的销售报表为 CSV。"},
      {"role": "assistant", "content": "步骤 1:打开报表页面,确认月度销售报表可见。"},
      {"role": "assistant", "content": "步骤 2:选择月度销售报表,设置目标月份。"},
      {"role": "assistant", "content": "步骤 3:设置地区筛选条件,等待报表完成刷新。"},
      {"role": "assistant", "content": "步骤 4:选择导出为 CSV,并等待文件下载完成。"},
      {"role": "assistant", "content": "步骤 5:核对下载文件的行数与页面汇总数量一致,任务完成。"}
    ]
  }'

线上写入采用异步处理,接口会先返回:

{
  "results": [
    {
      "message": "Memory processing has been queued for background execution",
      "status": "PENDING",
      "event_id": "<event_id>",
      "id": null
    }
  ]
}

PENDING 表示程序性记忆已经进入处理队列。Skill会在记忆处理和质量检查完成后生成;内容过少或缺少明确步骤的记录可能不会生成Skill。

步骤三:查看生成的Skill

稍等片刻后,查询该AgentSkill列表:

curl -sS "$MEMORY_BASE_URL/skills?agent_id=$AGENT_ID&brief=true" \
  -H "Authorization: Token $MEMORY_API_KEY"

返回结果示例:

{
  "results": [
    {
      "id": "<skill_id>",
      "name": "export_report_to_file",
      "when_to_use": "Use when the user requests to download or export a specific report in a particular file format.",
      "version": 1
    }
  ]
}

brief=true 只返回轻量目录,适合Agent先判断应该使用哪项Skill。获取完整内容时,将 <skill_id> 替换为列表返回的ID:

export SKILL_ID="<skill_id>"

curl -sS "$MEMORY_BASE_URL/skills/$SKILL_ID" \
  -H "Authorization: Token $MEMORY_API_KEY"

一次端到端验证中生成的完整Skill经精简后如下。具体名称和文字可能随模型与输入内容变化:

{
  "id": "<skill_id>",
  "name": "export_report_to_file",
  "version": 1,
  "inputs": [
    {"name": "report_name", "desc": "需要选择的报表名称"},
    {"name": "report_parameters", "desc": "月份、地区等筛选条件"},
    {"name": "export_format", "desc": "需要导出的文件格式"}
  ],
  "outputs": [
    {"name": "downloaded_file", "desc": "下载到本地的报表文件"}
  ],
  "steps": [
    "打开报表页面并确认报表列表可见",
    "选择目标报表并设置月份、地区等参数",
    "等待报表根据筛选条件完成刷新",
    "选择导出格式并完成文件下载",
    "核对下载文件与页面汇总数据是否一致"
  ],
  "caveats": [
    "报表未完成刷新前不要开始导出",
    "下载完成后应校验文件完整性"
  ]
}

步骤四:在新任务中检索Skill

Agent收到相似任务时,可以直接用任务描述检索相关Skill:

一次端到端验证中的精简返回如下。score 会随输入、模型和数据变化:

{
  "results": [
    {
      "id": "<skill_id>",
      "name": "export_report_to_file",
      "version": 1,
      "score": 0.6626
    }
  ],
  "selection": null
}

如果设置 smart_select: true,系统还可以从候选结果中选择与当前任务最相关的Skill,并给出使用顺序。该模式适合一个任务可能需要组合多项Skill的场景。

Skill如何持续完善

补充新的成功经验

同一个Agent再次完成相似任务时,继续以 procedural_memory 写入新的执行过程。系统会判断它是否属于已有Skill,并在新信息确实有价值时更新原Skill。

例如,第二次执行增加了"地区筛选"和"导出后核对行数"两个步骤,结果是同一个Skillversion 1更新到version 2,来源记忆从1条增加到2条。

记录失败经验

如果一次执行失败,可以在写入时增加以下字段:

"metadata": {
  "task_outcome": "failure"
}

例如,Agent在报表尚未完成刷新时就开始导出,导致文件为空。系统可以把这类失败原因整理到Skillpitfalls 中,后续执行相似任务时用于避坑。

其他使用方式

查看完整Skill列表

curl -sS "$MEMORY_BASE_URL/skills?agent_id=$AGENT_ID&brief=false" \
  -H "Authorization: Token $MEMORY_API_KEY"

导出Skill

导出单个SkillMarkdown:

curl -sS "$MEMORY_BASE_URL/skills/$SKILL_ID/export" \
  -H "Authorization: Token $MEMORY_API_KEY"

导出某个Agent的全部Skills:

curl -sS "$MEMORY_BASE_URL/skills/export?agent_id=$AGENT_ID" \
  -H "Authorization: Token $MEMORY_API_KEY" \
  -o skills.zip

服务控制台 WEBUI 操作

也可在控制台的数据 > 技能页面查看、搜索和导出 Skills。

使用建议

  • 记录完整任务过程:至少包含任务目标、多个关键步骤和最终结果。

  • 保持Agent ID稳定:Skillsagent_id 隔离,同一个Agent应持续使用同一标识。

  • 一次只记录一个任务:不要把多个无关任务混在同一条程序性记忆中。

  • 步骤要包含结果:只记录"点击按钮"价值有限,最好同时记录页面变化、返回结果或校验结论。

  • 优先沉淀重复任务:报表生成、发布、巡检、客服流程等重复任务最容易产生持续价值。

  • 允许系统跳过低价值记录:信息过少、只有一步或无法复用的执行过程,可能只保存程序性记忆而不生成Skill。

  • 先检索目录,再取完整内容:使用 brief=true 减少传给Agent的上下文,只在需要时读取完整步骤。