首页/新闻资讯/正文详情

oh-my-opencode-slim 内置 Skills 体系与 Codemap 仓库地图技能:从元数据注册到运行时落地的完整指南

发布时间:2026/9/25 3:33:41 来源:云帆数科 栏目:资讯中心
oh-my-opencode-slim 内置 Skills 体系与 Codemap 仓库地图技能:从元数据注册到运行时落地的完整指南
人工智能AI AgentAgent 编排AI 技能【免费下载链接】oh-my-opencode-slimLean, fine tuned Opencode multi agent suite · Mix any models · Auto delegate tasks项目地址https://gitcode.com/gh_mirrors/oh/oh-my-opencode-slim点击查看免费下载导读本文以oh-my-opencode-slimOpenCode 的轻量级多 Agent 编排插件中 src/skills/codemap.md 记载的内置技能体系为核心深入讲解技能如何以「元数据驱动」的方式完成注册、安装、权限授予与运行时消费并完整拆解其中最重要的通用技能Codemap仓库地图生成从SKILL.md契约、codemap.mjs命令行工具、.slim/codemap.json状态文件的格式到变更检测、Fixer 委派写作、根级 Atlas 汇总与AGENTS.md自动加载的完整工作流。读完本文你将能够亲手为任意陌生仓库初始化分层 Codemap、维护其增量更新并理解插件内技能从打包到生效的全链路原理。技能体系的定位与边界在oh-my-opencode-slim中src/skills/目录承载的是随包分发的 OpenCode 自定义技能custom skills它的职责边界在 src/skills/codemap.md 中被明确为四点拥有元数据驱动的 OpenCode 自定义技能技能不是硬编码的插件逻辑而是以「元数据 静态文件」的形式存在维护技能契约工件即SKILL.md、README.md及技能专属辅助文件它们会在安装时被原样复制到${configDir}/skills即 OpenCode 配置目录下的skills/守住注册表边界运行时代码把技能定义当作数据消费而不是当作可执行的插件依赖技能按用途分区分为「仅 Orchestrator 工作流」与「通用技能」两大类前者专供编排者使用后者供更广泛的复用。这一设计使得技能与插件代码解耦插件发布后即使升级版本技能文件也只是一份可替换、可比较、可保留用户改动的静态负载。技能注册表CUSTOM_SKILLS 权威清单注册表结构CUSTOM_SKILLS定义于 src/cli/custom-skills-registry.ts是内置技能的权威清单authoritative manifest。每一条目由四个字段构成字段含义name技能名即技能文件夹名description人类可读的描述用于权限面板与文档allowedAgents应自动放行该技能的 Agent 名单sourcePath仓库内技能源码目录相对项目根从源码结构看注册表同时承担两类消费方安装器src/cli/install.ts与skill-sync.ts依据它决定复制哪些目录权限辅助src/cli/skills.ts依据它推导各 Agent 的技能权限。当前内置技能一览src/skills/codemap.md给出了完整的技能分类表结合注册表源码现役 8 个内置技能如下技能类型用途默认放行 Agentcodemap/通用仓库地图与代码库文档生成orchestratorclonedeps/通用依赖源码镜像与检视的工作流技能orchestratorsimplify/通用可读性与可维护性改进指引oracledeepwork/仅 Orchestrator重型编码会话、多阶段实现与高风险重构orchestratorverification-planning/仅 Orchestrator非平凡实现前的证据规划与验证手段orchestratorreflect/仅 Orchestrator从重复工作中学习并沉淀可复用改进orchestratorworktrees/仅 Orchestrator用 Git worktree 作为安全隔离编码通道orchestratoroh-my-opencode-slim/仅 Orchestrator插件配置与自我改进指引orchestrator注意两点细节其一simplify的allowedAgents是[oracle]其余全部是[orchestrator]说明技能权限并非一刀切其二注册表中CUSTOM_SKILLS数组的书写顺序simplify → codemap → clonedeps → deepwork → verification-planning → reflect → oh-my-opencode-slim → worktrees即getDefaultGrantedSkillNames()遍历并授予默认权限的顺序这一点在 src/cli/skills.ts 的注释中明确。安装流水线从仓库目录到 OpenCode skills 目录src/skills/codemap.md定义了五步 Flow下面结合源码逐段展开。技能发现src/cli/custom-skills-registry.ts定义CUSTOM_SKILLS数组并携带技能元数据。安装触发bun run install委托给 src/cli/install.ts。其中install()依据 CLI 参数把installCustomSkills置位--skillsyes或--skillsforce时执行技能同步--skillsforce还会强制覆盖本地已存在的技能目录forceSkillSync。值得强调的是当前安装路径已不是文档早期版本的installCustomSkill()而是通过syncBundledSkillsFromPackage(packageRoot, { force })完成——后者位于 src/hooks/auto-update-checker/skill-sync.ts旧的installCustomSkill()在 src/cli/custom-skills.ts 中被标记为deprecated提示改用syncBundledSkillsFromPackage。校验与复制同步器计算packageRoot校验源目录真实存在且非符号链接、SKILL.md存在且为普通文件然后执行原子目录替换atomicReplaceDir先复制到带时间戳随机后缀的.staging-skill-suffix暂存目录再把旧目录改名为.backup-skill-suffix随后把暂存目录改名为正式目录并清理备份任一步失败都会回滚。该实现位于 skill-sync.ts。发布分发package.json的files白名单包含src/skills见 package.json确保npm pack时src/skills/**全部进入发布包否则安装器在用户端将无源可拷。运行时发现OpenCode 插件启动时扫描已安装的技能目录把每个SKILL.md当作 prompt 级契约即技能的对外接口定义加载。同步器的状态机与防冲突设计skill-sync.ts是一个值得深入阅读的实现它用skills-manifest.jsonschemaVersion: 1逐技能记录状态状态取值包括managed与包内版本一致的受管技能升级时自动原子替换更新customized用户改过内容同步器不会覆盖而是把新版技能复制到skill-updates/packageVersion/skill暂存目录等待用户审阅合并实现「升级不丢本地改动」deleted用户删除过的技能同步器在同版本内尊重删除tombstone但新版本包会重新提供issue #1266 的处理逻辑conflict目标位置被文件或符号链接占用跳过并标记冲突。所有技能内容均通过computeDirectoryHash()计算确定性 SHA-256 目录哈希含相对路径、文件类型与权限位来比较是否变化同步过程还使用skills.lock目录锁 owner.json记录 pid/host/time/token做跨进程、跨主机的锁协商超时同主机死 pid 立即回收、跨主机 5 分钟才允许接管避免多个安装进程互相踩踏.backup-*/.staging-*残留目录会在下次同步时被自动恢复或清理recoverOrphanArtifacts。权限系统技能作为数据负载的权限边界技能在运行时被当作数据负载权限边界由 src/cli/skills.ts 统一推导getDefaultGrantedSkillNames(agentName)当 Agent 未显式配置skills列表时按其规范名经AGENT_ALIASES归一化在CUSTOM_SKILLS与PERMISSION_ONLY_SKILLS中匹配allowedAgents返回默认授予的技能名集合getSkillPermissionsForAgent(agentName, skillList?, disabledSkillNames?)返回Recordstring, allow | ask | deny。核心策略是 orchestrator 默认对*放行、其他 Agent 默认拒绝若用户显式给出技能列表则完全以用户列表为准并支持*通配放行与!name显式排除以及disabledSkillNames强制拒绝resolveEffectiveSkills()折叠skills_add/skills_remove指令处理「先移除继承的排除、再评估新增」「排除优先于新增」「*与!name互转显式化」等组合语义最终结果仍交给getSkillPermissionsForAgent解析。值得一提的还有PERMISSION_ONLY_SKILLS像requesting-code-review这类由外部管理非本插件安装的技能只在此登记权限放行不参与安装。由此「安装什么」由CUSTOM_SKILLS决定「谁能用」由allowedAgents与权限解析器共同决定二者解耦。src/hooks/filter-available-skills/则会依据 Agent 权限策略在运行时过滤可见技能形成闭环。发布校验verify-release-artifact 的完整性断言为保证发布包不缺技能scripts/verify-release-artifact.ts 会断言 tarball 中必须存在以下关键技能负载src/skills/simplify/SKILL.mdsrc/skills/codemap/SKILL.mdsrc/skills/clonedeps/SKILL.mdsrc/skills/deepwork/SKILL.mdsrc/skills/verification-planning/SKILL.mdsrc/skills/reflect/SKILL.mdsrc/skills/worktrees/SKILL.mdsrc/skills/oh-my-opencode-slim/SKILL.md对应package.json脚本verify:release即bun run scripts/verify-release-artifact.ts与build共同保证安装期技能可用性。技能契约工件SKILL.md 与 README.md每个技能目录统一包含见 src/skills/codemap.mdSKILL.md技能契约定义名称、描述与使用契约frontmatter 中的name/description是 OpenCode 读取的关键字段README.md技能文档与示例可选辅助文件与子目录例如 codemap 的scripts/codemap.mjs。这些工件在安装时逐字复制到 OpenCode 技能目录成为技能对外唯一的接口定义——这也是「运行时把技能当数据」的落点。Codemap 技能实战为陌生仓库生成分层地图Codemap 是通用技能中的重头戏其契约文件 src/skills/codemap/SKILL.md 定义了一条「先查状态 → 初始化 → 变更检测 → 根级 Atlas → 注册到 AGENTS.md」的完整工作流配套工具是 src/skills/codemap/scripts/codemap.mjs。Step 1检查已有状态首先检查仓库根目录是否存在.slim/codemap.json若不存在检查遗留状态.slim/cartography.json存在则先迁移migrateLegacyState会把它改名为codemap.json见 codemap.mjs若codemap.json已存在直接跳到 Step 3 做增量变更检测无需重新初始化若两者都不存在进入 Step 2 初始化。Step 2初始化分析仓库结构列文件、理解目录职责推断 include/exclude 模式——只针对核心代码与配置文件包含src/**/*.ts、package.json等强制排除测试**/*.test.ts、**/*.spec.ts、tests/**、__tests__/**、文档docs/**、*.md根README.md按需保留、LICENSE、构建产物与依赖node_modules/**、dist/**、build/**、*.min.js.gitignore会被自动加载并遵守loadGitignore读取根.gitignore逐行转为匹配模式。运行 init 命令node ~/.config/opencode/skills/codemap/scripts/codemap.mjs init \ --root ./ \ --include src/**/*.ts \ --exclude **/*.test.ts --exclude dist/** --exclude node_modules/**执行后产生两类输出.slim/codemap.json文件级与文件夹级哈希用于后续变更检测所有相关子目录下的空codemap.md模板模板固定为# folder/加## Responsibility、## Design、## Flow、## Integration四个待填板块见 codemap.mjs 的createEmptyCodemap并预留!-- Fixer: Fill in this section with architectural understanding --注释提示填充者。委派 Fixer 写作为每个文件夹派生一个 Fixer 子代理读取代码并创建/更新该文件夹自己的codemap.md——这正是插件「自动委派任务」的体现。从实现细节看cmdInit的默认 include 是[**/*]PatternMatcher会把 glob 转译为正则**/匹配零或多个路径段、*匹配单段内的任意字符、以/结尾的模式表示目录整树见 codemap.mjs并以selectFiles依次应用 gitignore → exclude--exception可豁免→ include 的过滤顺序codemap.mjs。Step 3增量变更检测状态文件存在后用changes子命令查看变化node ~/.config/opencode/skills/codemap/scripts/codemap.mjs changes \ --root ./输出会列出新增文件、删除文件-、修改文件~以及受影响文件夹清单。cmdChanges基于metadata中保存的 include/exclude/exception 与 gitignore 重新选文件、重新计算哈希并与file_hashes比对只有真正变动的文件夹才需要更新 Codemapcodemap.mjs。随后只为受影响文件夹派生 Fixer 更新对应codemap.md执行update保存新状态node ~/.config/opencode/skills/codemap/scripts/codemap.mjs update \ --root ./cmdUpdate用相同规则重建file_hashes/folder_hashes并覆写状态文件codemap.mjs。Step 4汇总根级 Atlas所有子目录完成映射后Orchestrator 必须创建或更新根codemap.md它是任何 Agent 或人类进入仓库的主入口映射根资产记录根级文件如package.json、src/index.ts、plugin.json与项目整体用途聚合子地图构建## Repository Directory Map表格对每个拥有codemap.md的目录提取其 Responsibility 摘要交叉引用根地图中包含各子地图的相对路径方便 Agent 直接跳转。仓库自身就是范例——根 codemap.md 展示了「Project Responsibility → System Entry Points → Repository Directory Map → Runtime Control Flow → Key Cross-Module Integration Points」的完整 Atlas 结构其中src/skills/一行即链接到本文主题的 src/skills/codemap.md。Step 5注册到 AGENTS.mdOpenCode 会在每次会话自动把根AGENTS.md载入 Agent 上下文。为了让 Agent 自动发现 Codemap需要把如下段落写进根AGENTS.md已存在## Repository Map节则跳过幂等## Repository Map A full codemap is available at codemap.md in the project root. Before working on any task, read codemap.md to understand: - Project architecture and entry points - Directory responsibilities and design patterns - Data flow and integration points between modules For deep work on a specific folder, also read that folders codemap.md.由于该步骤是幂等的重复运行 Codemap 工作流不会产生重复段落。Codemap 内容规范与示例Fixer 写作codemap.md时契约要求使用精确的技术术语记录四类信息Responsibility用标准软件工程术语定义目录职责如 Service Layer、Data Access Object、MiddlewareDesign Patterns指名具体模式Observer、Singleton、Factory、Strategy 等详述抽象与接口Data Control Flow显式追踪数据进出模块的路径给出函数调用序列与状态迁移Integration Points列出依赖与消费方模块使用钩子、事件或 API 端点的技术名称。SKILL.md中给出的目录级示例与根级 Atlas 示例含 System Entry Points 与 Directory Map 聚合表可直接套用为写作模板。技能包的状态文件格式.slim/codemap.json的完整结构如下README.md与cmdInit/buildState实现一致{ metadata: { version: 1.0.0, last_run: 2026-01-25T19:00:00Z, root: ., include_patterns: [src/**/*.ts], exclude_patterns: [node_modules/**], exceptions: [] }, file_hashes: { src/index.ts: abc123... }, folder_hashes: { src: def456... } }其中file_hashes使用 MD5 逐文件哈希folder_hashes由该目录下文件路径与哈希拼接后再次 MD5 得到codemap.mjs从而支持 O(受影响目录) 的增量更新。安装与启用方式Codemap 技能随oh-my-opencode-slim一起分发运行插件安装器并在技能同步选项置位时--skillsyes自动复制到${configDir}/skills/codemap/随后 OpenCode 启动即可读取其SKILL.md。若需手动验证安装结果可直接查看~/.config/opencode/skills/codemap/实际路径以getConfigDir()在 src/cli/paths.ts 中的实现为准下的SKILL.md、README.md与scripts/codemap.mjs。注意技能被当作受管数据负载升级插件时本地未改动的技能会被自动原子更新用户改动过的技能则会被暂存待审不会静默覆盖。小结src/skills/codemap.md勾勒了 oh-my-opencode-slim 内置技能的完整生命周期CUSTOM_SKILLS注册表是单一事实来源skill-sync负责带状态机与冲突防护的原子安装skills.ts把技能映射为 Agent 权限边界verify-release-artifact兜底发布完整性而 Codemap 技能则以「哈希状态 Fixer 委派 Atlas 汇总 AGENTS.md 挂载」的方式让每个仓库获得可持续维护的分层知识地图。对希望让 Agent 高效理解陌生代码库的开发者而言这套「数据化技能」设计既保证了升级安全又提供了开箱即用的地图生成流程——下一次面对全新仓库时直接照搬 Step 1–5 即可。赞分享人工智能AI AgentAgent 编排AI 技能【免费下载链接】oh-my-opencode-slimLean, fine tuned Opencode multi agent suite · Mix any models · Auto delegate tasks项目地址https://gitcode.com/gh_mirrors/oh/oh-my-opencode-slim点击查看免费下载相关推荐阴阳师自动化脚本基于AI视觉识别的百鬼夜行全栈解决方案阴阳师自动化脚本基于AI视觉识别的百鬼夜行全栈解决方案 问题诊断与价值主张 在阴阳师手游的长期运营中百鬼夜行活动作为核心碎片获取渠道传统手动操作面临三大效人工智能AI AgentAgent 编排AI 技能从重写候选到执行路线图Plate 仓库中 Slate v2 基座层扩展注册运行时、更新元数据与输入内核的取舍地图从重写候选到执行路线图Plate 仓库中 Slate v2 基座层扩展注册运行时、更新元数据与输入内核的取舍地图 导读 本文基于 docs/plans/2前端富文本UI组件oh-my-openagent 内置 MCP 功能落地验证策略从 CI 门禁到多 Agent 评审的完整实战指南oh my openagent 内置 MCP 功能落地验证策略从 CI 门禁到多 Agent 评审的完整实战指南 本文以 oh my openagent 仓库人工智能AI Agent代码智能体多智能体MCP ClientsAgent 编排上一篇Rust高性能磁盘清理工具Czkawka3种智能算法的实战优化指南下一篇洛雪音乐助手完整指南一个搜索框打通 7 大音乐源的免费跨平台播放器创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

27B大模型塞进手机:三值量化与端侧部署实战
27B大模型塞进手机:三值量化与端侧部署实战

1. 一个27B模型塞进手机,这件事到底有多离谱第一次看到“Bonsai 27B”这个项目名的时候,我正蹲在工位上啃三明治,差点没被噎住。27B,也就是270亿参数,这个体量的模型放在两年前,得用一张A100 80G的卡才能勉… · 2026/9/25 3:33:35

Fly-Buck拓扑详解:耦合电感实现隔离辅助电源的布局与调试要点
Fly-Buck拓扑详解:耦合电感实现隔离辅助电源的布局与调试要点

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 3:33:35

CTF-Agent蜂群系统:解题直觉的原子化与分布式调度
CTF-Agent蜂群系统:解题直觉的原子化与分布式调度

1. 这不是“AI解题”,而是把CTF选手的肌肉记忆编译成可调度的分布式执行单元“CTF选手狂喜!这个开源CTF-Agent蜂群能自动解题几秒钟拿一道Flag”——标题里那个“几秒钟”不是修辞,是实测数据:在2024年DEF CON Quals某道Web题上&a… · 2026/9/25 3:33:35

用ps ax读懂Linux进程状态与调度器核心逻辑
用ps ax读懂Linux进程状态与调度器核心逻辑

凌晨两点半,群里突然炸了。一台线上机器CPU跑到800%,监控大屏飘红,值班同事接连被抖醒。我登录服务器后没急着开top,第一件事是敲了一行命令:ps ax。为什么不是top?因为top是动态刷新加瞬时快照&#xff0c… · 2026/9/25 7:21:05

CodeCombat AP CSP Explore 任务教学指南:基于计算创新的影响开展 Performance Task 演练
CodeCombat AP CSP Explore 任务教学指南:基于计算创新的影响开展 Performance Task 演练

游戏开发教育前端后端 【免费下载链接】codecombat Game for learning how to code. 项目地址: https://gitcode.com/gh_mirrors/co/codecombat 点击查看 免费下载 导读 本文围绕 CodeCombat 的 AP 计算机科学原理(AP CS Principles, AP CSP&#xff0… · 2026/9/25 7:21:05

Apache DataFusion 52.4.0 更新深度解读:array_sort 空值语义修复、SMJ 行数缓存与动态过滤下推收紧等 11 项变更
Apache DataFusion 52.4.0 更新深度解读:array_sort 空值语义修复、SMJ 行数缓存与动态过滤下推收紧等 11 项变更

大数据数据分析后端 【免费下载链接】datafusion Apache DataFusion SQL Query Engine 项目地址: https://gitcode.com/gh_mirrors/datafu/datafusion 点击查看 免费下载 本文基于 Apache DataFusion 52.4.0 官方变更日志(dev/changelog/52.4.0.md&… · 2026/9/25 7:21:05

F´ Topology 构建指南:从组件实例化、端口互连到活动组件任务启动的完整流程
F´ Topology 构建指南:从组件实例化、端口互连到活动组件任务启动的完整流程

嵌入式系统编程 【免费下载链接】fprime F - A flight software and embedded systems framework 项目地址: https://gitcode.com/gh_mirrors/fp/fprime 点击查看 免费下载 本文以 F(F Prime)飞控软件与嵌入式系统框架为背景,系统… · 2026/9/25 7:21:05

ctf-wiki 内核利用实战:ret2usr 攻击手法解析——以 2018 强网杯 core 为例
ctf-wiki 内核利用实战:ret2usr 攻击手法解析——以 2018 强网杯 core 为例

文档网络安全教程 【免费下载链接】ctf-wiki Come and join us, we need you! 项目地址: https://gitcode.com/gh_mirrors/ct/ctf-wiki 点击查看 免费下载 导读 ret2usr(return to user space)是 Linux 内核 pwn 中一种经典的控制流劫持提权… · 2026/9/25 7:20:59

Finagle 客户端与服务工厂构建期指标:codec_connection_preparation_latency_ms 与 available 指标详解
Finagle 客户端与服务工厂构建期指标:codec_connection_preparation_latency_ms 与 available 指标详解

后端RPC框架 【免费下载链接】finagle A fault tolerant, protocol-agnostic RPC system 项目地址: https://gitcode.com/gh_mirrors/fi/finagle 点击查看 免费下载 本文围绕 Finagle 文档 Construction.rst 中定义的「构建期(Construction)… · 2026/9/25 7:20:59

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码