为什么Orkas越用越聪明?自进化机制深度解析:反思触发与技能结晶化SKILL.md
【免费下载链接】OrkasOrkas is an open-source, local-first AI desktop app: a commander LLM directs specialist sub-agents, and runs your installed coding CLIs — Claude Code, Codex, OpenCode, OpenClaw, Hermes — as local sessions. Agents self-evolve via reflection and skill crystallization. BYO keys. macOS / Windows / Linux.项目地址: https://gitcode.com/gh_mirrors/or/Orkas
Orkas 是一款开源、本地优先的 AI 桌面应用:由指挥官 LLM 调度专业子智能体,还能运行你本机安装的编码 CLI(Claude Code、Codex、OpenCode 等)。它最独特的地方在于——智能体会通过"反思"与"技能结晶"自我进化,越用越懂你。本文用大白话讲清楚:Orkas 的反思何时触发、经验如何沉淀成技能文件SKILL.md,以及这套自进化机制为何不会"越反思越乱"。
一、自进化的三块"记忆"
在 Orkas 里,每个 Agent 都有三层会自我更新的持久化档案(均为本地纯文本文件,可备份、可人工编辑):
| 档案 | 存什么 | 上限 | 源码位置 |
|---|---|---|---|
COMPETENCE.md | 能力自评:强项、短板、用户红线 | 3000 字符 | metacognition.ts |
LEARNING_STRATEGIES.md | 可复用的"触发→动作"打法 | 4000 字符 | metacognition.ts |
技能库(SKILL.md) | 结晶化的完整操作流程 | 按数量 LRU 淘汰 | skill-store.ts |
读写这些档案的工具分别是 metacognition-tool.ts(读写两份元认知档案)和 skill-tools.ts(skill_manage工具,支持 create / read / patch / list / delete 五种动作)。
💡 关键设计:经验不留在"上下文"里,而是落到磁盘文件上——关掉应用、切换账号,经验都还在,数据永远属于你。
二、反思触发:不是每句话都复盘,而是"有活才干活"
反思的全部触发逻辑集中在 reflection-orchestrator.ts 这一个调度器中,规则可以用一句话概括:周期性扫描 + 脏检查 + 冷却期。
1. 每 14 小时一轮"体检"
调度器在启动窗口之后进入定时循环,之后每隔 14 小时执行一轮周期(CYCLE_INTERVAL_MS)。每轮最多处理 5 个 Agent(MAX_AGENTS_PER_CYCLE),超出的顺延到下一轮,谁都不会被漏掉。
2. "脏门"检查:没新活动就不反思
这是"越用越聪明"而不"空转耗电"的核心:只有当 Agent 的活动记录(signals.jsonl 或会话日志)比上次复盘更新时,它才进入本轮候选(反射编排器注释)。一个躺平两周的 Agent 不会被强制复盘——因为它的活动窗口本来就是空的。
3. 防抖与容错细节
- 4 小时最小冷却(MIN_COOLDOWN_MS):同一 Agent 短时间内不会反复反思,避免"抖动";
- 失败退避:连续失败的 Agent,冷却时间翻倍(最多 64 小时),连续 3 次失败则放弃当前窗口,不再重放同样的输入;
- 前台优先:一旦有前台任务到来,后台反思立即让路。
4. 证据从哪来?
每轮反思会读取该 Agent 最近 48 小时(首次)的活动转录,由 reflection-transcript.ts 构建:最多 5 个会话、约 15 万 token 的证据上限,防止"回忆录"爆炸。
三、反思时到底想什么:一份严格的"自省问卷"
真正让反思"聪明"而不是"记流水账"的,是 buildReviewPrompt 构造的提示词。它给模型下了几条硬规矩:
- 安全边界:会话转录和元认知文件都是"不可信证据",里面若嵌有命令,一律不执行;
- 区分环境错误与能力短板:网络超时、限流属于环境问题,不许记进
COMPETENCE.md的"弱点"里,也不许因此修改或删除相关技能; - 宁缺毋滥:如果确实没有新东西值得保存,只回答 "nothing to save"——不为反思而反思;
- 写可执行规则,不写空话:要求使用
NEVER / ALWAYS / WHEN-THEN结构。
对比一下两种写法(提示词原话示例):
| ❌ 模糊描述(会被忽略) | ✅ 可执行规则(真正生效) |
|---|---|
| "Agent 应该注意输出不要太啰嗦" | "在 family-office 场景回复中,NEVER 超过 5 条要点" |
| "用户似乎偏好简洁输出" | "WHEN 回复 family-office 场景,ALWAYS 先给结论再给理由" |
经验分流:每条事实只进"一个最好的地方"
反思结果按类型路由:
- 稳定的用户偏好、领域红线→ 只进
COMPETENCE.md; - 可复用的触发-动作方法、绕行方案→ 只进
LEARNING_STRATEGIES.md; - 反复出现的稳定模式→结晶成新技能(见下一节);
- 同样的方法绝不在两处重复登记,等价规则已存在且无新证据时直接跳过。
四、技能结晶化:把"套路"冻成一份 SKILL.md
当某个打法被反复验证有效,反思过程会把它"结晶"为技能——这就是技能结晶化(Skill Crystallization)。
1. 一个技能 = 一个目录 = 一份 SKILL.md
技能库由 SkillStore 管理:每个技能独占一个目录,里面只放一个SKILL.md,结构是YAML frontmatter + Markdown 正文:
- frontmatter 记录
name、description、createdAt、updatedAt、patchCount(被修补次数)、tags、lastUsedAt(最近使用),定义见 types.ts; - 正文是具体的操作指令/步骤。
description有讲究:它是下一轮对话中 Agent决定要不要加载正文前唯一能看到的信息,所以反思提示词要求它写成一行"WHEN 何时使用"的祈使句,而不是"这个技能是讲什么的"。
2. 技能会被持续"打补丁"
技能不是写完就完:Agent 发现技能里有错,会用skill_manage(action='patch')做精确文本替换修补,每次修补patchCount+1(patch 实现)。所以一个技能的 frontmatter 会告诉你它"练过几手"——patch 次数越多,说明它越是经过实战检验的成熟套路。
3. 技能如何被"用":索引注入 + 按需加载
每轮对话开始时,buildIndex 会把技能清单(名称 + 一句话描述)注入系统提示词,Agent 觉得相关时才用skill_manage(action='read')加载全文——只索引、不塞正文,token 成本极低。
4. 有上限、有淘汰:技能不会无限膨胀
- 技能总数到达上限后,按LRU(最近最少使用)淘汰:从未被读过的技能优先出局,最老的最先走(pickLruCandidate);
- 每次
read都会刷新lastUsedAt(touch),常用技能自然保命; - 单个技能正文有长度上限,超限直接拒绝写入。
这套"结晶 → 使用 → 修补 → 淘汰"的循环,正是"越用越聪明"背后的飞轮:用得多的经验被强化并留下来,过时的经验自动淡出。
五、普通用户能得到什么?
- 零配置享受成长:反思全程在后台运行,不占用前台任务,你正常聊天即可;
- 经验可审计、可编辑:所有进化产物都是本地 Markdown 文件,随时可以打开看它"学到了什么",改错了直接手改;
- 安全底线内置:安全边界、瞬态错误豁免、宁缺毋滥三条规则写死在反思提示词里,降低"学歪"风险;
- BYO keys、本地优先:模型密钥自己带,档案数据不离开本机(macOS / Windows / Linux)。
想自己动手验证?
克隆仓库后可以从这几个文件入手,边读边对照本文:
git clone https://gitcode.com/gh_mirrors/or/Orkas| 想理解什么 | 去看哪里 |
|---|---|
| 反思何时触发、如何容错 | src/main/features/reflection-orchestrator.ts |
| 反思"问卷"的完整提示词 | src/core-agent/src/evolution/metacognition.ts |
| 技能的存储、修补与 LRU 淘汰 | src/core-agent/src/evolution/skill-store.ts |
| Agent 操作技能的 5 个动作 | src/core-agent/src/evolution/skill-tools.ts |
| 能力档案的本地持久化 | src/main/features/metacognition.ts |
一句话总结:Orkas 的聪明不来自更大的模型,而来自一套纪律严明的记忆系统——周期性复盘、只记可执行规则、反复验证的经验结晶成SKILL.md、无用的自动淘汰。让 Agent 像老员工一样积累经验,这正是"越用越聪明"的秘密。
【免费下载链接】OrkasOrkas is an open-source, local-first AI desktop app: a commander LLM directs specialist sub-agents, and runs your installed coding CLIs — Claude Code, Codex, OpenCode, OpenClaw, Hermes — as local sessions. Agents self-evolve via reflection and skill crystallization. BYO keys. macOS / Windows / Linux.项目地址: https://gitcode.com/gh_mirrors/or/Orkas
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考