0Pricing
AI Agents · 课时

程序记忆(技能库)

保存成功的提示词/工具调用序列,供智能体在重复任务中重放。

程序记忆(技能库) 是 CoddyKit 上的免费 AI Agents 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 AI Agents 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 AI Agents 课程共包含 4 节课。

本课时的部分内容尚未翻译,以英文显示。

什么是程序记忆

程序记忆存储“如何做事”——可复用的成功操作序列。您可以将它理解为代理能够重放的一系列迷你操作配方。

示例:

  • “要提交费用报销,请先执行 A,再执行 B,最后执行 C。”
  • “要部署预发布版本,请运行 X,等待 Y,然后执行 Z。”

为什么需要程序记忆

没有程序记忆时,代理每次都会从头推导相同的计划——速度慢、成本高且不一致。有了技能库,重复性任务可以立即解决。

Storage Format

CREATE TABLE skills (
    id UUID PRIMARY KEY,
    name TEXT NOT NULL,
    description TEXT NOT NULL,
    embedding vector(1536),
    steps JSONB NOT NULL,           -- list of tool calls
    success_rate REAL DEFAULT 1.0,
    use_count INT DEFAULT 0,
    created_at TIMESTAMPTZ
);

捕获新技能

成功运行后,请让 LLM 提取操作配方:

extract_prompt = '''
The agent successfully completed: {user_request}

The trace was:
{trace}

Write this as a reusable skill with name, description, and step list.
Return JSON: {name, description, steps: [{tool, args_template}]}
'''
print(extract_prompt.strip())

Storing the Skill

skill = json.loads(llm.invoke(extract_prompt).content)
vec = embed(skill['description'])
conn.execute('''
    INSERT INTO skills (id, name, description, embedding, steps)
    VALUES (%s, %s, %s, %s, %s::jsonb)
''', (str(uuid.uuid4()), skill['name'], skill['description'], vec, json.dumps(skill['steps'])))

检索相关技能

当新的用户请求到来时,请搜索技能库:

def find_skill(query):
    qvec = embed(query)
    rows = conn.execute('''
        SELECT name, steps FROM skills
        ORDER BY embedding <=> %s LIMIT 3
    ''', (qvec,))
    return rows

技能模板

技能是带有参数槽位的模板。智能体会在每次运行时填入实际值:

skill = {
    'name': 'file_expense_report',
    'steps': [
        {'tool': 'open_form', 'args': {'form_id': 'expense'}},
        {'tool': 'fill_field', 'args': {'field': 'amount', 'value': '{amount}'}},
        {'tool': 'fill_field', 'args': {'field': 'category', 'value': '{category}'}},
        {'tool': 'submit'}
    ]
}
import json
print(json.dumps(skill, indent=2))

向 LLM 推荐技能

将候选技能注入系统提示,让 LLM 决定使用哪一个:

candidates = find_skill(user_request)
prompt = f'''
You can use these existing skills if applicable:
{json.dumps(candidates, indent=2)}

Or you can plan a new sequence.
'''

跟踪技能成功率

每次使用后,请更新技能统计数据:

UPDATE skills
SET use_count = use_count + 1,
    success_rate = (success_rate * use_count + (CASE WHEN %s THEN 1 ELSE 0 END)) / (use_count + 1)
WHERE id = %s;

清理低质量技能

成功率低或使用次数少的技能应当被移除:

DELETE FROM skills
WHERE (success_rate < 0.5 AND use_count >= 5)
   OR (use_count = 0 AND created_at < NOW() - INTERVAL '30 days');

Voyager:著名示例

Voyager(Wang 等,2023 年)是一个用于操作 Minecraft 的智能体,它会构建一个“技能库”,其中保存代码片段——这是程序性记忆领域的里程碑式论文。

技能组合

技能可以调用其他技能。智能体会逐渐学会更加抽象的过程:

low_level_skill = {'name': 'open_email', 'steps': [...]}
high_level_skill = {'name': 'process_inbox', 'steps': [
    {'skill': 'open_email'},
    {'skill': 'reply_or_archive'}
]}
print(low_level_skill)
print(high_level_skill)

技能隐私

技能通常足够通用,可以在不同用户之间共享。但请注意:某些“技能”会泄露特定用户的详细信息(例如具体的账号)。将其存储到共享库之前,请先进行匿名化处理。

程序性记忆的定义

程序性记忆存储什么内容?

回顾

程序性记忆 = 技能库。从成功运行中提取操作方案,为新请求检索相关方案,跟踪成功率,并清理已失效的方案。

常见问题解答

「程序记忆(技能库)」课时是免费的吗?

是的 — 「程序记忆(技能库)」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 AI Agents 课程的其余内容,请升级到 CoddyKit PRO。 AI Agents 课程共包含 4 节课。

「程序记忆(技能库)」这节课中我会学到什么?

保存成功的提示词/工具调用序列,供智能体在重复任务中重放。 你通过在浏览器中直接运行的动手代码来练习 AI Agents,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 AI Agents 需要有经验吗?

无需任何先前经验。CoddyKit 上的 AI Agents 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。

「程序记忆(技能库)」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 AI Agents 课中编写并运行代码吗?

能。每节 AI Agents 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 情节记忆(按会话记录)
  2. 语义记忆(向量化事实)
  3. 程序记忆(技能库)
  4. 记忆衰减与垃圾回收
← 返回 AI Agents