ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

oh-my-pi learn 工具:开启 autolearn 让 agent 沉淀可复用经验并生成托管技能

oh-my-pi learn 工具:开启 autolearn 让 agent 沉淀可复用经验并生成托管技能 oh-my-pi learn 工具开启 autolearn 让 agent 沉淀可复用经验并生成托管技能【免费下载链接】oh-my-pi⌥ Coding agent with the IDE wired in项目地址: https://gitcode.com/GitHub_Trending/oh/oh-my-pi在 oh-my-piomp里learn工具负责把一条可复用的经验写进长期记忆并可选地在同一次调用中创建或更新一个托管技能managed skill。这两个能力默认都是关闭的autolearn.enabled和memory.backend的默认值分别是false和off不配置时learn工具根本不会注册到会话里。本文的任务是在配置中启用 autolearn 和一个受支持的 memory backend让 agent 在工作结束后把「非显而易见的修复、项目约定、可复用流程」沉淀下来并验证落盘的learned.md与SKILL.md产物。前提与配置位置learn工具的注册条件是见 docs/tools/learn.mdautolearn.enabled true默认falsememory.backend为hindsight、mnemopi或local三者之一。manage_skill工具只要求autolearn.enabled true与 memory backend 无关见 docs/tools/manage_skill.md。omp 的设置存放在 plain YAML 中见 docs/settings.md作用域路径全局~/.omp/agent/config.yml若已存在config.yaml也会就地加载更新项目级cwd/.omp/config.yml全局文件还受PI_CODING_AGENT_DIR环境变量影响——设置它之后config.yml、auth store 以及 agent 目录下的所有内容都会跟着迁移。可以用omp config path打印当前生效的 agent 目录。开启 autolearn 与本地记忆后端最短主路径是使用文档推荐的localbackend见 docs/memory.md。在~/.omp/agent/config.yml或项目级cwd/.omp/config.yml中加入memory: backend: local autolearn: enabled: true也可以在 shell 里用omp config set写入全局配置omp config set memory.backend local omp config set autolearn.enabled true两个可选行为开关见 docs/settings.md键默认作用autolearn.autoContinuefalse为true时agent 停止后自动跑一轮 capture turn消耗额外 token为false时只会在你下一轮输入时附带一条被动提醒autolearn.minToolCalls5只有单轮使用了不少于该数量的工具时停止后才触发 nudge启用后顶层会话的工具列表中会自动包含learn和manage_skill子代理subagent不会自动获得它们只有在其 requested-tools/frontmatter 列表显式包含时才能使用。验证配置是否生效用omp config get确认生效值omp config get autolearn.enabled omp config get memory.backend omp config path # 打印当前 agent 目录后续验证产物路径要用如果autolearn.enabled为true但memory.backend仍是offlearn不会注册会话里只有manage_skill可用。agent 如何调用 learnlearn由模型在会话中调用不是用户直接敲的命令。它的触发路径见 docs/tools/learn.md 与 controller 源码一轮实质性对话结束后工具调用数达到autolearn.minToolCalls且该轮不是 aborted、不在 plan 模式审查中、不处于 goal 循环controller 触发 captureautoContinue: true时自动跑一个合成 capture turnautoContinue: false时是一条被动提醒附着在你的下一轮输入上。capture 轮里 agent 自行判断可重复流程 →manage_skill持久事实/约定/非显而易见的修复 →learn两者兼有 → 同一次learn调用里带上skill字段没有值得保留的就什么都不做。learn的入参字段类型必填说明memorystring是要记住的持久教训what / when / whycontextstring否教训的来源上下文skill{ action: create \| update; name; description; body }否教训写入成功后创建或增强的托管技能body是不含 frontmatter 的 Markdown执行顺序是先落记忆、再动技能local backend 下调用localBackend.save(...)写项目级learned.mdstored 0视为失败Hindsight 入队 retentionMnemopi 以source: coding-agent-learn、importance: 0.8、scope: bank调用rememberScoped(...)未返回 id 视为失败。技能写入失败时由于教训已经落盘结果会报告为部分成功。返回文本文档定义的字面输出可直接用于判断调用是否成功仅教训Lesson stored.或Lesson queued for retention.details { skill: null }教训 技能lesson result. Created managed skill \name\.或... Updated ...details { skill: name }。验证落盘产物按 backend 不同验证位置不同。以localbackend 为例教训文件写入agent-dir/memories/encoded-cwd/learned.mdagent-dir默认为~/.omp/agent。lesson 按新到旧排列、按规范化行去重、上限 100 条单条 content 上限 2,000 字符context 上限 400 字符写入前会做 secret redaction。托管技能文件写入agent-dir/managed-skills/sanitized-name/SKILL.md。frontmatter 由name和description生成body里不要自己写 frontmatter。会话内读取agent 可以用read工具直接读memory://root/learned.mdlearn 捕获的教训和memory://root/skills/name/SKILL.md技能 playbook/memory view可查看当前 backend 的注入负载见 docs/memory.md。注入时机要注意两条local lesson 从下一个会话开始注入到 system prompt 的 Memory Guidance 块learn调用本身不会修改当前会话的 prompt-cache 前缀通过learn写的托管技能不会立刻注入当前技能列表而是在后续 skill refresh / 新会话中被发现。这与manage_skill不同——后者在写入成功后会立即刷新活跃技能列表所以「当前会话必须立刻可用」的变更应改用manage_skill。托管技能在发现流水线中走omp-managedproviderpriority 5最低同名时 authored skill 永远优先托管技能只做兜底见 docs/skills.md。限制与已知边界来自 docs/tools/learn.md 的硬性限制托管技能名会被 trim、lowercase 后必须匹配[a-z0-9][a-z0-9-]{0,63}最终SKILL.md含生成的 frontmatter 和 description上限 64,000 UTF-8 字节create在技能文件已存在时失败update在文件不存在时失败local backend 不提供结构化记忆检索recall、retain、reflect、memory_edit均不可用Hindsight 的 retain 队列会稍后 flush 到配置的服务器Mnemopi 可能在同步写入后继续跑配置的 embedding / fact-extraction 任务。常见报错对照报错原因Mnemopi backend is not initialised for this session.会话缺少 Mnemopi 状态Mnemopi did not store the lesson (no memory id returned).本地 Mnemopi 写入未返回 id可选技能不会尝试Lesson was empty after sanitization; nothing stored.local backend 规范化后教训为空可选技能不会尝试Hindsight backend is not initialised for this session.会话缺少 Hindsight 状态isError: truedetails { skill: null, shadowed: true }skill.action create时与活跃 authored skill 重名教训已写入/入队技能未写lesson result, but the managed skill could not be written: reason技能校验、创建/更新、安全检查或体积失败如果create报 shadowed说明该名字已被你自己编写的技能占用——托管技能永远不会覆盖 authored skill换名或改用update已有的托管技能即可。下一步想让当前会话立即发现技能变更改用manage_skill的create/update/delete输出形如Created managed skill name (managed-skills/name/SKILL.md).想调整记忆流水线的扫描、去重与注入 token 上限参考 docs/memory.md 中的memories.*配置表想清空当前 backend 的记忆数据/产物使用/memory clear注意Hindsight 下它只清本地会话状态与 recall 缓存不删服务器端 bank。【免费下载链接】oh-my-pi⌥ Coding agent with the IDE wired in项目地址: https://gitcode.com/GitHub_Trending/oh/oh-my-pi创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表