程序记忆(技能库)
保存成功的提示词/工具调用序列,供智能体在重复任务中重放。
程序记忆(技能库) 是 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 反馈 — 无需本地设置。
此课程中的所有课时
- 情节记忆(按会话记录)
- 语义记忆(向量化事实)
- 程序记忆(技能库)
- 记忆衰减与垃圾回收