<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Agent Skills on 扎塔-Zata</title><link>https://www.zata.cc/tags/agent-skills/</link><description>Recent content in Agent Skills on 扎塔-Zata</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><copyright>Example Person</copyright><lastBuildDate>Wed, 02 Sep 2026 11:14:23 +0800</lastBuildDate><atom:link href="https://www.zata.cc/tags/agent-skills/index.xml" rel="self" type="application/rss+xml"/><item><title>Agent 用户记忆与 Skill 沉淀：开源项目参考与架构设计</title><link>https://www.zata.cc/p/agent-%E7%94%A8%E6%88%B7%E8%AE%B0%E5%BF%86%E4%B8%8E-skill-%E6%B2%89%E6%B7%80%E5%BC%80%E6%BA%90%E9%A1%B9%E7%9B%AE%E5%8F%82%E8%80%83%E4%B8%8E%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1/</link><pubDate>Mon, 31 Aug 2026 18:00:00 +0800</pubDate><guid>https://www.zata.cc/p/agent-%E7%94%A8%E6%88%B7%E8%AE%B0%E5%BF%86%E4%B8%8E-skill-%E6%B2%89%E6%B7%80%E5%BC%80%E6%BA%90%E9%A1%B9%E7%9B%AE%E5%8F%82%E8%80%83%E4%B8%8E%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1/</guid><description>&lt;img src="https://www.zata.cc/p/agent-%E7%94%A8%E6%88%B7%E8%AE%B0%E5%BF%86%E4%B8%8E-skill-%E6%B2%89%E6%B7%80%E5%BC%80%E6%BA%90%E9%A1%B9%E7%9B%AE%E5%8F%82%E8%80%83%E4%B8%8E%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1/images/index/index.svg" alt="Featured image of post Agent 用户记忆与 Skill 沉淀：开源项目参考与架构设计" />&lt;p>当 Agent 可以替换、模型持续升级时，真正应该长期留在平台中的，不是某个 Agent 的私有会话状态，而是用户拥有的资料、记忆和可复用 Skill。&lt;/p>
&lt;p>目前还没有一个开源项目同时做好跨 Agent 用户记忆、来源追溯、权限、删除、Skill 版本、评测和发布治理。比较现实的路线是组合借鉴：用成熟项目解决提取、检索和加载问题，由平台自己负责资产归属与治理。&lt;/p>
&lt;p>本文回答三个问题：&lt;/p>
&lt;ol>
&lt;li>用户记忆可以参考哪些项目？&lt;/li>
&lt;li>Skill 应该如何沉淀、加载和演进？&lt;/li>
&lt;li>如何把这些机制组合成一个面向生产环境的 Agent Harness？&lt;/li>
&lt;/ol>
&lt;hr>
&lt;h2 id="1-先区分-memoryexperience-和-skill">1. 先区分 Memory、Experience 和 Skill
&lt;/h2>&lt;p>长期数据不应全部塞进一个向量库。更清晰的分类是：&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>类型&lt;/th>
&lt;th>回答的问题&lt;/th>
&lt;th>推荐资产&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Semantic Memory&lt;/td>
&lt;td>用户是谁、偏好什么、有哪些稳定事实？&lt;/td>
&lt;td>&lt;code>MemoryItem&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Episodic Memory&lt;/td>
&lt;td>过去发生了什么、结果如何？&lt;/td>
&lt;td>&lt;code>Run / Event / Outcome / Experience&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Procedural Memory&lt;/td>
&lt;td>怎样做某件事更可靠？&lt;/td>
&lt;td>&lt;code>SkillCandidate / SkillVersion&lt;/code>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>LangGraph 的长期记忆概念也采用 semantic、episodic、procedural 分类，并区分交互热路径写入与后台写入。参考：&lt;a class="link" href="https://docs.langchain.com/oss/python/concepts/memory" target="_blank" rel="noopener"
>LangGraph Memory Overview&lt;/a>。&lt;/p>
&lt;p>这个边界很重要：用户偏好不是 Skill，一次成功运行也不是 Skill。只有经过抽象、验证、去除个案数据并且能够复用的过程，才适合晋升为 Skill。&lt;/p>
&lt;hr>
&lt;h2 id="2-用户记忆项目对比">2. 用户记忆项目对比
&lt;/h2>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>项目&lt;/th>
&lt;th>擅长什么&lt;/th>
&lt;th>值得借鉴&lt;/th>
&lt;th>不宜直接照搬&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Mem0 / OpenMemory&lt;/td>
&lt;td>结构化提取、检索和 Memory CRUD&lt;/td>
&lt;td>scope、变更历史、过滤删除、混合检索&lt;/td>
&lt;td>Agent 可直接修改正式记忆，治理层较弱&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Letta / MemGPT&lt;/td>
&lt;td>分层记忆和后台整理&lt;/td>
&lt;td>Memory Block、共享记忆、sleep-time consolidation&lt;/td>
&lt;td>记忆通常围绕 Agent 组织&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Zep / Graphiti&lt;/td>
&lt;td>时间变化的事实和关系&lt;/td>
&lt;td>Episode、Entity、Relation、valid time&lt;/td>
&lt;td>第一阶段直接引入图数据库成本较高&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>LangGraph / LangMem&lt;/td>
&lt;td>记忆分类和写入时机&lt;/td>
&lt;td>semantic/episodic/procedural、hot/background write&lt;/td>
&lt;td>是组件工具箱，不是完整治理系统&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h3 id="21-mem0参考第一版-api-和检索流水线">2.1 Mem0：参考第一版 API 和检索流水线
&lt;/h3>&lt;p>Mem0 的典型流程是：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">Conversation
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> → 提取事实或偏好
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> → 判断 ADD / UPDATE / DELETE / NOOP
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> → 按 user / agent / run 等 scope 保存
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> → 向量或图检索
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>它已经提供更新、删除、历史和反馈等实际能力。更新操作可以纠正旧事实；删除支持按用户、Agent、Run 和 metadata 过滤，并对无过滤条件的全量删除增加保护。参考：&lt;a class="link" href="https://docs.mem0.ai/core-concepts/memory-operations/update" target="_blank" rel="noopener"
>Mem0 Update Memory&lt;/a>、&lt;a class="link" href="https://docs.mem0.ai/core-concepts/memory-operations/delete" target="_blank" rel="noopener"
>Mem0 Delete Memory&lt;/a>。&lt;/p>
&lt;p>适合借鉴的部分包括：&lt;/p>
&lt;ul>
&lt;li>标准化的 &lt;code>add/search/update/delete/history&lt;/code> 能力；&lt;/li>
&lt;li>用户、应用、Agent 和 Run 等检索 namespace；&lt;/li>
&lt;li>提取、冲突判断与索引更新分离；&lt;/li>
&lt;li>显式批量删除和防误删设计；&lt;/li>
&lt;li>用 feedback 修正后续记忆。&lt;/li>
&lt;/ul>
&lt;p>生产平台应在 Mem0 之上增加治理层。模型不能直接执行正式的 &lt;code>ADD/UPDATE/DELETE&lt;/code>，而应先提交候选：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">MemoryCandidate
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> → policy / user review
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> → MemoryRevision
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> → active MemoryItem projection
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="22-zep--graphiti参考会变化的事实">2.2 Zep / Graphiti：参考会变化的事实
&lt;/h3>&lt;p>Graphiti 使用时间知识图谱保存动态上下文，主要对象包括：&lt;/p>
&lt;ul>
&lt;li>Episode：原始会话、文档或业务事件；&lt;/li>
&lt;li>Entity：用户、组织、项目、地点等实体；&lt;/li>
&lt;li>Relation/Fact：实体之间的关系与事实；&lt;/li>
&lt;li>时间信息：事实何时观察到、何时有效、何时失效。&lt;/li>
&lt;/ul>
&lt;p>Graphiti 支持增量更新，不要求每次重新批处理全部历史。参考：&lt;a class="link" href="https://help.getzep.com/graphiti/getting-started/welcome" target="_blank" rel="noopener"
>Graphiti 官方介绍&lt;/a>、&lt;a class="link" href="https://help.getzep.com/v2/understanding-the-graph" target="_blank" rel="noopener"
>Zep Graph 数据模型&lt;/a>。&lt;/p>
&lt;p>例如，下面两条偏好不应该简单覆盖：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">2026-01：用户优先海运
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">2026-06：用户现在优先空运
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>更合理的表达是：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">Preference(&amp;#34;shipping_mode&amp;#34;, &amp;#34;sea&amp;#34;)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">valid_from = 2026-01
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">valid_to = 2026-06
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Preference(&amp;#34;shipping_mode&amp;#34;, &amp;#34;air&amp;#34;)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">valid_from = 2026-06
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">valid_to = null
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>第一版不一定需要图数据库，但数据模型应预留：&lt;/p>
&lt;ul>
&lt;li>&lt;code>observed_at&lt;/code>&lt;/li>
&lt;li>&lt;code>valid_from / valid_to&lt;/code>&lt;/li>
&lt;li>&lt;code>supersedes_memory_id&lt;/code>&lt;/li>
&lt;li>&lt;code>contradicts_memory_id&lt;/code>&lt;/li>
&lt;li>&lt;code>source_refs&lt;/code>&lt;/li>
&lt;li>&lt;code>status=active/superseded/disputed/retracted&lt;/code>&lt;/li>
&lt;/ul>
&lt;p>否则长期记忆很容易退化成不断被覆盖、无法审计的用户画像 JSON。&lt;/p>
&lt;h3 id="23-letta参考分层上下文和后台整理">2.3 Letta：参考分层上下文和后台整理
&lt;/h3>&lt;p>Letta 将一部分长期状态组织成持续出现在上下文中的 Memory Block，并允许多个 Agent 共享 Block。参考：&lt;a class="link" href="https://docs.letta.com/api/typescript/resources/agents/subresources/blocks" target="_blank" rel="noopener"
>Letta Memory Blocks&lt;/a>。&lt;/p>
&lt;p>它提出的 sleep-time compute 也很有价值：主 Agent 完成交互后，由后台 Agent 整理、压缩和重构记忆，把高延迟的 consolidation 移出用户交互路径。参考：&lt;a class="link" href="https://www.letta.com/blog/sleep-time-compute/" target="_blank" rel="noopener"
>Letta Sleep-time Compute&lt;/a>。&lt;/p>
&lt;p>可以映射成下面的后台流水线：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">Run completed
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> → Candidate extraction
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> → contradiction detection
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> → clustering / deduplication
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> → sensitivity classification
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> → user or policy review
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> → index refresh
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>需要注意的是：Canonical Memory 应属于用户或组织，而不是某个 Agent。Agent 只能通过当前 Run 的授权 ContextPack 获得只读快照。&lt;/p>
&lt;hr>
&lt;h2 id="3-skill-沉淀项目对比">3. Skill 沉淀项目对比
&lt;/h2>&lt;h3 id="31-agent-skills作为可携带交换格式">3.1 Agent Skills：作为可携带交换格式
&lt;/h3>&lt;p>Agent Skills 使用一个简单目录表达可复用能力：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">my-skill/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">├── SKILL.md
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">├── scripts/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">├── references/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">└── assets/
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>它采用 Progressive Disclosure：&lt;/p>
&lt;ol>
&lt;li>启动时只暴露名称和描述；&lt;/li>
&lt;li>任务匹配时加载完整 &lt;code>SKILL.md&lt;/code>；&lt;/li>
&lt;li>执行时才按需读取脚本、参考资料和资源。&lt;/li>
&lt;/ol>
&lt;p>这样可以让大量 Skill 共存，而不必把所有指令一次性塞入上下文。参考：&lt;a class="link" href="https://github.com/Open-Dot-Agents/SKILL.md" target="_blank" rel="noopener"
>Agent Skills 规范&lt;/a>、&lt;a class="link" href="https://platform.claude.com/docs/en/agents-and-tools/agent-skills/overview" target="_blank" rel="noopener"
>Anthropic Agent Skills&lt;/a>。&lt;/p>
&lt;p>推荐把 Agent Skills 当成导入、导出和适配器交付格式，而不是平台事实源：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">SkillVersion（平台事实源）
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ↓ build / export
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Agent Skills bundle（可携带交换格式）
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ↓ adapter
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Codex / Claude / OpenHands / 自有 Agent
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>平台内部继续维护不可变 &lt;code>SkillVersion&lt;/code>，每个版本可以构建成标准 Skill Bundle，并带有 checksum、依赖、权限和兼容性信息。&lt;/p>
&lt;h3 id="32-openhands参考多级作用域和加载优先级">3.2 OpenHands：参考多级作用域和加载优先级
&lt;/h3>&lt;p>OpenHands 支持项目级、用户级、组织级和全局 Skill，并区分 always-on instructions 与按需加载 Skill。参考：&lt;a class="link" href="https://docs.openhands.dev/overview/skills" target="_blank" rel="noopener"
>OpenHands Skills&lt;/a>。&lt;/p>
&lt;p>平台可以采用类似作用域：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">platform baseline
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;lt; organization Skill
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;lt; workspace or project Skill
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;lt; user Skill
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;lt; Run explicitly selected Skill
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>但不能只用“同名文件覆盖”处理冲突。每次 Run 应记录：&lt;/p>
&lt;ul>
&lt;li>实际选择的 SkillVersion；&lt;/li>
&lt;li>选择原因：用户指定、规则匹配或 Agent 请求；&lt;/li>
&lt;li>匹配分数与被排除原因；&lt;/li>
&lt;li>依赖解析结果；&lt;/li>
&lt;li>实际注入的文件和 token 成本；&lt;/li>
&lt;li>执行过的脚本、工具和权限。&lt;/li>
&lt;/ul>
&lt;p>这些信息应成为 ContextPack 和 Run Evidence 的一部分。&lt;/p>
&lt;h3 id="33-voyager参考从成功轨迹生成-skill">3.3 Voyager：参考从成功轨迹生成 Skill
&lt;/h3>&lt;p>Voyager 在任务执行成功并通过验证后，将可复用实现抽象进 Skill Library；新任务再根据描述检索、组合已有 Skill。Skill Library 是它实现跨任务泛化的重要部分。参考：&lt;a class="link" href="https://openreview.net/pdf?id=P8E4Br72j3" target="_blank" rel="noopener"
>Voyager 论文&lt;/a>。&lt;/p>
&lt;p>值得借鉴的机制包括：&lt;/p>
&lt;ul>
&lt;li>只从经过验证的成功轨迹中蒸馏；&lt;/li>
&lt;li>Skill 具有明确描述、前置条件和适用场景；&lt;/li>
&lt;li>新 Skill 与已有 Skill 做相似性和能力重叠检查；&lt;/li>
&lt;li>Skill 可以组合，但依赖必须显式；&lt;/li>
&lt;li>失败用于修复候选，不直接污染正式 Skill 库。&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="4-推荐的双流水线设计">4. 推荐的双流水线设计
&lt;/h2>&lt;p>Memory 和 Skill 可以共享来源追踪、Review 和 Eval 基础设施，但生命周期不能混在一起。&lt;/p>
&lt;h3 id="41-memory-pipeline">4.1 Memory Pipeline
&lt;/h3>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">Run / Event / Artifact
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> → MemoryCandidate
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> → Review or low-risk policy
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> → MemoryRevision
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> → MemoryItem projection
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> → Retrieval evaluation
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>MemoryItem 不应原地覆盖，推荐使用“不可变 Revision + 当前投影”：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">MemoryItem
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- id
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- owner_scope
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- memory_kind
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- active_revision_id
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- status
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">MemoryRevision
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- id
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- memory_id
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- content
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- structured_claim
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- source_refs
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- confidence
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- sensitivity
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- observed_at
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- valid_from / valid_to
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- created_by
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- decision
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- supersedes_revision_id
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>纠正时创建新 Revision，旧版本保留审计但不再进入新的 ContextPack。删除还应区分：&lt;/p>
&lt;ul>
&lt;li>Logical retraction：禁止召回，但保留必要审计记录；&lt;/li>
&lt;li>Physical purge：清除正文、embedding、缓存、图索引和派生副本；&lt;/li>
&lt;li>Tombstone：只保留不能反推出原文的删除证明。&lt;/li>
&lt;/ul>
&lt;h3 id="42-skill-pipeline">4.2 Skill Pipeline
&lt;/h3>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">Successful Run + Outcome + Ground Truth
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> → SkillCandidate
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> → Draft SkillVersion
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> → Sandbox Eval
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> → Review
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> → Published SkillVersion
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> → Canary / rollback
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>一个可运行的 SkillVersion 至少需要：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">SkillVersion
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- instructions
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- description / trigger hints
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- references
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- scripts / assets checksums
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- tool and runtime dependencies
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- required capabilities
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- requested permissions
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- compatibility constraints
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- source run / outcome refs
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- eval suite and version
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- publish status
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- rollback target
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>其中 &lt;code>description&lt;/code> 不只是展示信息，它参与 Skill 召回，因此也必须版本化并接受评测。&lt;/p>
&lt;hr>
&lt;h2 id="5-contextpack-必须说明为什么选中">5. ContextPack 必须说明“为什么选中”
&lt;/h2>&lt;p>只记录“本次用了哪条记忆和哪个 Skill”还不够。为了调试召回错误、权限问题和效果退化，建议记录检索证据：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">ContextPackEntry
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- asset_id / version_id
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- asset_type
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- selection_reason
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- scope_match
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- relevance_score
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- recency_score
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- trust / confidence
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- token_cost
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- policy_decision_id
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- redaction_applied
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>这样才能回答：&lt;/p>
&lt;ul>
&lt;li>为什么选中了这条记忆？&lt;/li>
&lt;li>为什么另一条没有进入上下文？&lt;/li>
&lt;li>是召回、重排、权限过滤还是 token budget 导致遗漏？&lt;/li>
&lt;li>更换 Agent 或模型后，ContextPack 是否仍然一致？&lt;/li>
&lt;/ul>
&lt;p>ContextPack 应是每个 Run 的不可变授权快照，而不是 Agent 对用户资产仓库的一次开放查询权限。&lt;/p>
&lt;hr>
&lt;h2 id="6-skill-的安全晋升路径">6. Skill 的安全晋升路径
&lt;/h2>&lt;p>不要从一次成功运行直接自动发布正式 Skill。更安全的顺序是：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">Observed pattern
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> → Suggested procedure
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> → SkillCandidate
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> → Draft
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> → Sandbox verified
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> → Human approved
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> → Published
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> → Canary
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> → Stable
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>只有同时满足以下条件，才适合创建 SkillCandidate：&lt;/p>
&lt;ul>
&lt;li>至少有一次带明确 Ground Truth 的成功；&lt;/li>
&lt;li>能从业务输入中移除用户个案和敏感数据；&lt;/li>
&lt;li>相对已有 Skill 有新增价值；&lt;/li>
&lt;li>没有扩大工具或数据权限；&lt;/li>
&lt;li>有可重复执行的测试 fixture；&lt;/li>
&lt;li>能明确描述适用条件和失败边界。&lt;/li>
&lt;/ul>
&lt;p>自动提炼可以提高效率，但发布必须由 Eval、权限检查和明确门禁控制。&lt;/p>
&lt;hr>
&lt;h2 id="7-推荐的组合方案">7. 推荐的组合方案
&lt;/h2>&lt;p>没有必要选择一个框架承包全部能力。更实际的组合是：&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>设计领域&lt;/th>
&lt;th>推荐参考&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Memory API 与基础检索流水线&lt;/td>
&lt;td>Mem0&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>时间、冲突和事实失效模型&lt;/td>
&lt;td>Graphiti / Zep&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>后台整理与 consolidation&lt;/td>
&lt;td>Letta&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>记忆类型和写入时机&lt;/td>
&lt;td>LangGraph / LangMem&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Skill Bundle 与渐进加载&lt;/td>
&lt;td>Agent Skills / SKILL.md&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>用户、组织、项目作用域&lt;/td>
&lt;td>OpenHands&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>从成功经验蒸馏 Skill&lt;/td>
&lt;td>Voyager&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>发布、验证与回滚&lt;/td>
&lt;td>平台自己的 Eval、Ground Truth 与 Verifier&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>整体架构可以概括为：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">UserResource / Run / Event / Artifact
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ├──→ Memory Candidate ──→ Review ──→ Memory Revision
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │ ↓
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │ ContextPack Retrieval
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> └──→ Skill Candidate ───→ Eval ────┤
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ↓
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Authorized Agent Run
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Mem0 和 Graphiti 主要解决“怎样记住和找到”，Agent Skills 解决“怎样包装和按需加载”。生产级 Agent Harness 还需要回答：&lt;/p>
&lt;blockquote>
&lt;p>这是谁的资产、来源是什么、为什么可信、谁批准、哪个 Agent 可以使用、运行时用了哪个版本、效果是否真的改善，以及如何纠正、撤回和删除。&lt;/p>
&lt;/blockquote>
&lt;p>这些治理能力，才是用户记忆和 Skill 能够跨 Agent 长期沉淀的关键。&lt;/p></description></item></channel></rss>