OpenJarvis Skills 完全指南:可复用工具编排、导入、优化与安全共享

发布时间:2026/9/24 17:09:46
OpenJarvis Skills 完全指南:可复用工具编排、导入、优化与安全共享 【免费下载链接】OpenJarvisPersonal AI, On Personal Devices项目地址https://gitcode.com/gh_mirrors/op/OpenJarvis点击查看免费下载Skills 是 OpenJarvis 中教 Agent如何更好地使用工具、改进推理方式的模块化组件——它们是工具、子技能与 Agent 指令的可复用组合可通过公共注册表共享。本篇指南以官方用户文档为主体结合仓库源码系统讲解 Skill 的定义格式skill.toml管道与SKILL.md指令、三类来源的导入方式、Agent 调用机制、从 Trace 自动发现、DSPy/GEPA 优化、PinchBench 基准评测以及四层信任与能力门控机制。读完你既能用 CLI 与配置快速落地一个 Skill 工作流也能理解其底层加载、执行与安全实现原理。核心概念一览在深入细节之前先建立全局认知。OpenJarvis 的 Skills 体系由五个关键概念组成概念说明Skill一个目录包含skill.toml结构化管道、SKILL.mdMarkdown 指令或两者皆有SkillManager集中协调发现discovery、解析resolution、目录生成catalog与工具包装tool wrappingSkillTool适配器把任意 Skill 包装成BaseTool让 Agent 可以直接调用Overlay存放在~/.openjarvis/learning/skills/的旁车文件保存优化后的描述与 few-shot 示例Source从 Hermes Agent、OpenClaw 或任意 GitHub 仓库导入 Skill 的解析器两个设计要点值得注意每个 Skill 都是一个工具。Skill 以轻量目录的形式出现在 Agent 的系统提示中当 Agent 调用某个 Skill 时其内容管道结果、Markdown 指令或两者兼有会被注入到对话上下文。Skill 体系是发现优先、就近优先的SkillManager.discover()按传入路径顺序扫描并注册 Skill先出现的名称获胜workspace 路径排最前 优先级最高随后校验整个依赖图并应用 sidecar overlays详见 manager.py。快速开始五条命令上手# 列出已安装的技能 jarvis skill list # 从 Hermes Agent 安装一个技能 jarvis skill install hermes:apple-notes # 按分类批量安装 jarvis skill sync hermes --category research # 直接运行一个技能 jarvis skill run math-solver -a expression41 82 # 查看技能详情 jarvis skill info research-and-summarizejarvis skill run的执行语义可以从源码中得到印证它只加载管道所需的工具非空的tools.enabled列表会限制该选择对应 skill_cmd.py 中的_skill_tool_names收集逻辑。能力检查、速率限制与审计事件统一使用skill:cli身份敏感工具会请求确认。纯指令型instruction-onlySkill 没有可执行管道执行时输出说明并以非成功状态退出而不是伪装成功。任一步骤失败都会产生非零退出码。Skill 定义格式一个 Skill 就是一个目录包含skill.toml、SKILL.md或两者都有。目录结构research-and-summarize/ ├── SKILL.md # Markdown 指令调用时加载 ├── skill.toml # 结构化管道步骤 ├── templates/ # 可选 Jinja2 模板 ├── scripts/ # 可选可执行辅助脚本 ├── references/ # 可选详细文档 ├── assets/ # 可选静态资源 └── examples/ # 可选使用示例加载器loader.py对目录的三种布局给出确定性处理规则只有skill.toml从 TOML 加载 manifest只有SKILL.md从 Markdown 加载 manifest两者都有TOML manifest 在结构化字段上优先SKILL.md的内容作为markdown_content合并进来即混合型 Skill。discover_skills()还支持三种目录布局目录内平铺的*.toml文件、directory/name/{skill.toml,SKILL.md}技能包、以及directory/source/name/...带来源的布局见 loader.py。skill.toml结构化管道管道型 Skill 定义一串确定性执行的工具调用序列[skill] name research-and-summarize version 0.1.0 description Search the web and produce a structured summary author openjarvis tags [research, summarization] required_capabilities [network:fetch] depends [summarize] [[skill.steps]] tool_name web_search arguments_template {query: {query}} output_key search_results [[skill.steps]] skill_name summarize arguments_template {text: {search_results}} output_key summary关键语法步骤可以调用工具tool_name或调用其他 Skillskill_name模板占位符{query}会成为 Skill 的输入参数output_key把上一步结果写入上下文供后续步骤引用形成步骤间串联。仓库自带的 topic-research.toml 是一个完整的四步真实示例——memory_search检索既往知识、web_search搜索新信息、think综合成文、memory_store回写记忆——完美演示了占位符与output_key的链式用法。执行引擎的工作原理底层执行由 executor.py 的SkillExecutor.run()驱动其流程与实现细节如下能力预检若设置了allowed_capabilities先校验required_capabilities是否为其子集否则整个管道被阻止执行并返回失败结果模板渲染每个步骤的arguments_template通过正则\{(\w)\}从上下文渲染字符串值直接替换非字符串值会被 JSON 序列化见_render_templateexecutor.py步骤分发skill_name步骤通过注册的 resolver 回调委托给子 Skill并把渲染后的参数并入父上下文快照tool_name步骤则构造ToolCall交给ToolExecutor执行短路与串联任一步骤失败立即中断成功后按output_key把结果存入上下文事件发布执行开始与结束分别发布SKILL_EXECUTE_START/SKILL_EXECUTE_END事件供审计与追踪。SKILL.md指令型内容指令型 Skill 提供 Agent 借助其他工具遵循的 Markdown 指导--- name: code-explainer description: Explain code in plain language with examples license: MIT metadata: openjarvis: version: 0.1.0 author: openjarvis tags: [coding, explanation] --- When asked to explain code, follow this approach: 1. Identify the programming language 2. Break the code into logical sections 3. Explain each section in plain language 4. Highlight any patterns, idioms, or potential issues 5. Provide a one-sentence summary at the endYAML frontmatter 遵循 agentskills.io 开放标准必填字段为name、description可选字段为license、compatibility、metadata、allowed-tools。解析路径在 loader.py先提取---之间的 YAML 块再交由SkillParser做严格校验与容错字段映射若缺失name或description会回退为文件名/技能名保证向后兼容。调用时的行为矩阵Skill 拥有调用时发生什么仅skill.toml步骤执行管道返回结果仅SKILL.md返回 Markdown 指令——Agent 在后续轮次中遵循两者皆有既执行管道步骤又把 Markdown 指导与结果一并返回从 tool_adapter.py 可以看到SkillTool.execute()先收集管道最后一步的输出作为主内容再追加markdown_content最终合并为一个ToolResult返回同时_build_result_metadata()会在元数据中标注skill、skill_source、skill_kindexecutable / instructional与steps供 TraceCollector 与 SkillOptimizer 按技能分桶统计。安装 Skills从 Hermes Agent 安装# 安装单个技能 jarvis skill install hermes:apple-notes # 按分类批量安装 jarvis skill sync hermes --category research jarvis skill sync hermes --category coding jarvis skill sync hermes # 全部约 150 个技能HermesResolversources/hermes.py克隆 NousResearch/hermes-agent 仓库到~/.openjarvis/skill-cache/hermes/按skills/category/skill-name/SKILL.md布局枚举技能。从 OpenClaw 安装# 安装单个技能owner/slug 格式 jarvis skill install openclaw:0xv4l3nt1n3/etherscan # 带搜索过滤的批量安装 jarvis skill sync openclaw --search web3|crypto从任意 GitHub 仓库安装jarvis skill install github:user/repo/path/to/skill --url https://github.com/user/repo例如想让 Agent 具备搜索 Twitter/X、读取推文回复、监控推文、导出粉丝并执行受门控的发布/回复/DM 工作流时可安装 Hermes Tweet 技能jarvis skill install github:Xquik-dev/hermes-tweet/skills/hermes-tweet --url https://github.com/Xquik-dev/hermes-tweet导入流程中的安全细节导入由 importer.py 的SkillImporter.import_skill()执行其步骤包括解析源SKILL.md→拒绝安装目录中的符号链接→ 通过ToolTranslator翻译 Markdown 正文中的工具引用 → 决定脚本处理默认跳过→ 写入target_root/source/name/references/、assets/、templates/始终复制scripts/仅经批准后复制并写入.source元数据文件。导入后加载器会把.source中的来源名提升到manifest.metadata.openjarvis.source用于溯源展示loader.py。配置驱动的自动导入在~/.openjarvis/config.toml中添加来源以实现自动同步[skills] enabled true auto_sync true [[skills.sources]] source hermes filter { category [research, coding, productivity] } auto_update true [[skills.sources]] source openclaw filter { search web3|crypto }当auto_sync true时SkillManager 会在每次会话启动时检查来源新鲜度并在后台拉取更新。管理来源# 列出已配置的来源 jarvis skill sources # 更新所有已配置的来源 jarvis skill update更新失败的容错策略同样有源码依据SourceResolver._sync_git_cache()sources/base.py在缓存存在时执行git pull --ff-only若刷新失败但缓存仍有技能则沿用该副本并设置refresh_warning——安装可使用旧副本但会打印可能过期的警告。初始克隆失败与请求的技能缺失仍然会失败skill update会如实报告 stale-cache 警告而不是谎称刷新成功。Agent 如何使用 Skills系统提示中的 Skill 目录所有可用 Skill 以轻量 XML 目录形式出现在 Agent 的系统提示中available_skills skill nameresearch-and-summarize descriptionSearch the web and produce a structured summary / skill namecode-explainer descriptionExplain code in plain language with examples / skill namemath-solver descriptionSolve a math problem step by step using the calculator / /available_skills该目录由SkillManager.get_catalog_xml()生成manager.pydisable_model_invocationTrue的技能会被排除且名称与描述都经过 HTML 转义。Agent 阅读目录后根据用户请求决定何时调用某个 Skill。调用控制每个 Skill 都有两个控制可见性的开关[skill] user_invocable true # 暴露为 CLI 命令默认: true disable_model_invocation false # 从 Agent 目录隐藏默认: falseuser_invocabledisable_model_invocationCLI 命令?Agent 可发现?true (默认)false (默认)是是truetrue是否falsefalse否是falsetrue否否休眠管道型 vs 指令型Agent 能正确处理两类 Skill管道型含skill.toml步骤确定性执行并返回计算结果Agent 直接使用结果作答指令型仅SKILL.md返回描述如何完成任务的 Markdown 文本Agent 阅读后用它的其他工具web_search、shell_exec、calculator 等遵循执行。SkillTool 的参数自动提取值得注意的实现细节是SkillTool._build_parameters()tool_adapter.py会自动扫描各步骤arguments_template中的{placeholder}占位符生成 JSON Schema 参数定义并扣除前面步骤output_key产生的内部变量只暴露外部输入参数指令型技能则暴露一个可选的task参数。这意味着编写skill.toml时无需手动声明参数 schema。从 Trace 中发现 SkillOpenJarvis 可以自动挖掘你的 Trace 历史中反复出现的工具序列并将其提炼为候选 Skill# 预览发现的模式而不写入 jarvis skill discover --dry-run --min-frequency 3 # 写入 ~/.openjarvis/skills/discovered/ jarvis skill discover发现的 Skill 落在~/.openjarvis/skills/discovered/下次会话会自动出现在jarvis skill list中。其实现位于SkillManager.discover_from_traces()manager.py读取最多 10000 条 trace交由SkillDiscoverymin_frequency、min_outcome两个阈值分析再序列化写入 TOML。序列化时会做规范化名称转为符合规范的 kebab-case小写、下划线/空白替换为连字符、折叠连字符、去首尾连字符描述截断到 1024 字符。Skill 优化使用 DSPy 或 GEPA 优化Skills 学习循环利用 Trace 历史优化技能描述并提取 few-shot 示例# 预览将要优化的内容 jarvis optimize skills --dry-run # 运行 DSPy 优化 jarvis optimize skills --policy dspy --min-traces 3 # 运行 GEPA 进化优化 jarvis optimize skills --policy gepa --min-traces 3 # 查看优化产物 jarvis skill show-overlay research-and-summarize优化结果以旁车 overlay 形式存储在~/.openjarvis/learning/skills/skill-name/optimized.toml会覆盖技能描述并向 Agent 系统提示追加 few-shot 示例。原始技能文件永远不会被修改。overlay 的生效机制在SkillManager._load_overlays()manager.py中每个技能查找overlay_dir/skill-name/optimized.toml若存在则覆盖 manifest 描述并把 few-shot 示例存入manifest.metadata.openjarvis.few_shot坏 overlay 会被静默忽略绝不破坏发现流程。get_few_shot_examples()manager.py再把这些示例格式化为### skill\nInput: ...\nOutput: ...供系统提示使用。自动优化在配置中启用自动优化[learning.skills] auto_optimize false # 设为 true 启用 optimizer dspy # dspy 或 gepa min_traces_per_skill 20启用后LearningOrchestrator会在每个学习周期之后运行技能优化。基准评测 Skills衡量 Skill 是否真的提升了 Agent 性能# 全量扫描4 种条件 × 3 个种子 jarvis bench skills # 冒烟测试4 种条件 × 1 个种子 × 5 个任务 jarvis bench skills --max-samples 5 --seeds 42 # 只跑单一条件 jarvis bench skills --condition skills_optimized_dspy四种基准条件条件测试内容no_skills禁用 Skills对照组skills_on启用 Skills未优化skills_optimized_dspyDSPy 优化后的 overlaysskills_optimized_gepaGEPA 优化后的 overlays结果写入docs/superpowers/results/pinchbench-skills-eval-{date}.md包含汇总表、按任务细分、增量数据与技能调用计数。安全与信任信任层级层级来源验证方式运行时Bundled随 OpenJarvis 发布隐式信任声明的能力范围内完全访问Indexed官方技能索引、已签名SHA256 Ed25519能力门控Unreviewed任意 GitHub URL仅 SHA256能力门控 沙箱警告Workspace本地./skills/目录无用户代码信任信任层级的判定逻辑见 security.py 的classify_trust_tier()优先级为 bundled workspace indexed unreviewed。此外load_skill()支持按需签名验证verify_b64校验 Ed25519 签名与提示注入扫描SecretScanner逐步骤扫描参数模板见 loader.py。能力强制Skill 声明所需能力。运行时SkillExecutor检查每次工具调用是否落在技能声明的能力范围内network:fetch— 出站 HTTP 请求filesystem:read/filesystem:write— 文件访问shell:execute— 运行 shell 命令危险memory:read/memory:write— 记忆后端访问engine:inference— LLM 调用声明危险能力shell:execute、network:listen、filesystem:write的 Skill 会触发安装时警告与沙箱建议DANGEROUS_CAPABILITIES常量与has_dangerous_capabilities()判断均定义于 security.py。子技能的能力集由compute_capability_union()通过 DFS 做传递闭包合并dependency.py保证父技能声明的能力覆盖其全部子技能所需。脚本处理导入的 Skill 可能包含带可执行代码的scripts/目录。出于安全默认跳过。使用--with-scripts显式加入jarvis skill install hermes:arxiv --with-scriptsSkill 组合Skill 可以把其他 Skill 作为子步骤调用[[skill.steps]] skill_name summarize arguments_template {text: {search_results}} output_key summarySkillManager 在发现阶段构建依赖图并校验dependency.py无环——A → B → C → A会被拒绝并给出清晰错误。实现采用 Kahn 算法做拓扑排序检测环validate_dependencies()抛出携带涉环技能集合的DependencyCycleError最大深度—— 默认 5 层可配置超出则抛DepthExceededError能力并集—— 父技能必须声明其所有子技能需要的能力。值得一提的健壮性设计SkillManager._prune_dependency_cycles()manager.py会在发现阶段迭代式地只剔除涉环技能而非让一个环摧毁全部发现结果——既避免 CLI 崩溃也避免SystemBuilder因异常处理器把整个技能集静默丢弃。配置参考[skills]段[skills] enabled true # 启用/禁用技能系统 skills_dir ~/.openjarvis/skills/ # 技能安装位置 active * # 激活哪些技能* 全部 auto_discover true # 启动时扫描 skills_dir auto_sync false # 启动时从配置来源拉取 max_depth 5 # 子技能最大嵌套深度 sandbox_dangerous true # 危险能力告警[[skills.sources]]段[[skills.sources]] source hermes # hermes、openclaw 或 github url # source github 时必填 filter { category [research, coding] } auto_update true # 同步时拉取最新[learning.skills]段[learning.skills] auto_optimize false # 选入式自动优化 optimizer dspy # dspy 或 gepa min_traces_per_skill 20 # 优化前的最少 trace 数 optimization_interval_seconds 86400 # 最多每天一次 overlay_dir ~/.openjarvis/learning/skills/overlay 目录的解析在SkillManager.__init__中完成优先读取cfg.learning.skills.overlay_dir读不到配置时回退到默认的~/.openjarvis/learning/skills/manager.py。名称优先级当同一技能名存在于多个位置时就近作用域胜出Workspace./skills/最高优先级User~/.openjarvis/skills/Bundled随 OpenJarvis 发布CLI 参考命令说明jarvis skill list列出已安装技能jarvis skill info name显示技能详细信息jarvis skill run name [-a keyvalue]直接执行技能jarvis skill install source:name从 Hermes、OpenClaw 或 GitHub 安装jarvis skill sync [source] [--category C]批量安装 从来源更新jarvis skill sources列出已配置的技能来源jarvis skill update从配置来源拉取最新jarvis skill remove name移除已安装技能jarvis skill search query搜索技能索引jarvis skill discover [--dry-run]挖掘 Trace 中的重复工具模式jarvis skill show-overlay name查看某技能的优化产物jarvis optimize skills [--policy dspy\|gepa]优化技能描述 few-shot 示例jarvis bench skills [--condition C]运行 PinchBench 技能基准CLI 入口注册于 cli/init.py子命令实现在 cli/skill_cmd.pylist以 Rich 表格展示名称/描述/版本/标签info输出完整的 manifest 字段作者、能力、依赖、步骤数、是否可被模型调用等。结语OpenJarvis 的 Skills 体系是一条完整的闭环编写/导入 → 目录发现 → Agent 调用 → Trace 记录 → 自动发现与优化 → 基准评测每一环都有明确的配置项、CLI 命令与源码实现支撑。对开发者而言核心收益在于确定性管道 指令注入的双模型设计需要精确结果的任务交给skill.toml的确定性步骤链需要灵活推理的任务交给SKILL.md的指令遵循而信任层级与能力门控则让从任意来源导入技能时风险始终可控。赞分享【免费下载链接】OpenJarvisPersonal AI, On Personal Devices项目地址https://gitcode.com/gh_mirrors/op/OpenJarvis点击查看免费下载相关推荐OpenJarvis Skills系统完全指南13000社区技能如何教会AI用工具OpenJarvis Skills系统完全指南13000社区技能如何教会AI用工具 OpenJarvis 是一个运行在个人设备上的开源个人 AI 智能体框架Ollama项目模型导入与共享完全指南Ollama项目模型导入与共享完全指南 前言 在人工智能模型应用领域Ollama作为一个强大的模型管理工具为用户提供了便捷的模型导入、量化和共享功能。本文将人工智能大模型模型推理服务本地部署Munder Difflin Agent Gallery 与 Hire Manifest 完全指南从共享角色模板到安全导入Munder Difflin Agent Gallery 与 Hire Manifest 完全指南从共享角色模板到安全导入 Agent Gallery 是 M人工智能AI Agent多智能体Agent 编排代码智能体桌面应用上一篇3分钟搞定PotPlayer字幕翻译插件免费实时双语字幕告别外语生肉烦恼下一篇TranslucentTB免费任务栏透明完整指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询