
人工智能AI AgentAI 应用前端后端即时通讯交互助手工具调用【免费下载链接】holaOSOpen-source agentic workspace enterprises can make their own. Connect the systems you already run — 100 integrations, MCP, chat tools, apps, browser, local files — with shared memory. Any agent (Claude Code, Codex), any model, or BYOK. Set up in clicks, not months. Local-first: your data never leaves your machines.项目地址https://gitcode.com/GitHub_Trending/ho/holaOS点击查看免费下载本篇技术指南围绕 holaOS 运行时内置的skill-installer技能展开讲解如何把开源SKILL.md技能文件夹导入工作区本地的skills/目录并解释导入后立刻可用、无需重启会话的运行时原理。读完本文你将掌握通过import-github预览与安装技能、理解 frontmatter 自动映射allowed-tools→holaboss_granted_tools、以及用skill({ name: id })在同一轮对话中立即调用新技能的全部实操方法。一、skill-installer 是什么skill-installer是 holaOS 运行时预置在 runtime/harnesses/src/embedded-skills/skill-installer/SKILL.md 中的嵌入式技能embedded skill。它的定位非常明确把技能安装到工作区本地的skills/目录而不是系统全局目录。该技能本体由以下 frontmatter 定义--- name: skill-installer description: Install workspace skills from curated sources or import open-source skills from GitHub. ---它主要承担两类任务从受控来源curated sources安装工作区技能从 GitHub 导入开源技能例如anthropics/skills这类仓库中现成的SKILL.md文件夹。安装即用无需重启会话这是 skill-installer 最关键的行为约定刚安装的技能在当前这一轮运行中就可以立即使用。原因在于 holaOS 的skill({ name: id })工具在每次调用时都会直接读盘——技能内容不是缓存在启动时的快照里而是按需从磁盘上的文件夹读取。从源码看这一机制由 runtime/api-server/src/workspace-skills.ts 落实resolveWorkspaceSkills会把嵌入式技能与工作区技能合并为有序列表workspace-skills.ts而invokeWorkspaceSkill在调用时通过quotedSkillBlock实时fs.readFileSync读取SKILL.mdworkspace-skills.ts并把完整内容包装成skill name... location...块注入到提示上下文中。也就是说唯一要等到下一次运行才生效的只是能力清单capability manifest中的技能列表——技能本身此刻已经躺在磁盘上了。因此 skill-installer 明确告诫 Agent永远不要告诉用户请新开一个对话再使用刚装好的技能如果用户要求安装后立即使用直接加载并继续工作即可。二、从 GitHub 导入开源技能推荐路径开源技能例如github.com/anthropics/skills下的技能本身就是与本仓库相同格式的SKILL.md文件夹因此可以被整包导入。导入由运行时端点完成其处理链路是解析 GitHub URL 为仓库坐标owner / repo / ref / subPath下载该 ref 对应的 tarball解压并定位技能文件夹改写外来 frontmatterallowed-tools→holaboss_granted_toolsname对齐为安装后的 id将整个文件夹SKILL.md 打包的scripts/、references/、assets/写入工作区skills/id/下。2.1 先预览再安装导入分为预览与安装两个端点二者请求体一致预览只读不写入POST /api/v1/workspaces/{workspaceId}/skills/import-github/preview请求体{ url: github folder or SKILL.md URL }预览响应返回解析后的id、name、description、granted_tools授权工具以及文件清单每个文件的路径、大小、是否可执行并附 1500 字符的正文预览body_preview。这一步用于在真正安装前确认内容是否符合预期。安装POST /api/v1/workspaces/{workspaceId}/skills/import-github使用相同的请求体。安装响应额外包含replaced字段——若目标skills/id/已存在再次导入会覆盖并标记replaced: true幂等重装语义见测试 workspace-skill-import.test.ts。这两个端点在 runtime/api-server/src/app.ts 中注册实现位于 runtime/api-server/src/workspace-skill-import.ts。2.2 支持的 URL 形态与 ref 参数导入接受三类 GitHub URL由parseGithubSkillRef解析workspace-skill-import.tsURL 形态示例解析结果文件夹/tree/github.com/anthropics/skills/tree/main/document-skills/pdfowneranthropics, reposkills, refmain, subPathdocument-skills/pdf单文件/blob/github.com/anthropics/skills/blob/main/document-skills/pdf/SKILL.md自动丢弃SKILL.md文件名只保留其所在文件夹document-skills/pdf裸仓库github.com/acme/my-skillref 默认HEADsubPath 为空关键参数ref可选指定分支 / tag / commit。默认使用仓库的默认分支URL 带tree/ref/时取 URL 中的 ref否则为HEAD。当分支名本身含斜杠如release/2026.630时可通过请求体中的ref字段显式覆盖 URL 中的 ref——因为 ref 在 URL 里只是一个路径段workspace-skill-import.test.ts。2.3 裸仓库的自动发现与歧义处理当 URL 是裸仓库根目录没有SKILL.md时导入器会尝试在仓库根目录的直接子目录、以及skills/目录下自动发现持有SKILL.md的技能文件夹——这是社区常见的 plugin / collection 布局.claude-plugin类仓库把技能放在skills/name/恰好找到一个技能直接安装例如skills/pdf会被安装为pdf测试 workspace-skill-import.test.ts找到多个技能无法猜测返回 422 错误提示把 URL 指向某一个技能文件夹测试 workspace-skill-import.test.ts。2.4 外来 frontmatter 的自动映射导入时会改写外来SKILL.md的 frontmatter实现见 mapSkillFrontmatterallowed-tools→holaboss_granted_toolsAnthropic / Claude Code 格式的allowed-tools: bash, python会被折叠为holaboss_granted_tools: [bash, python]并删除原allowed-tools字段name对齐安装 idfrontmatter 中的name会被强制改写为安装后的技能 id由slugifySkillId从技能名派生例如PDF Form Filler→pdf-form-filler未知字段原样保留只有上述内容需要改写时才重写 frontmatter否则正文body逐字保留以保持来源内容的保真度测试 workspace-skill-import.test.ts。此外SKILL.md的 frontmatter 必须包含非空的description否则导入直接失败返回 422。2.5 打包脚本与可执行位导入是整文件夹搬运SKILL.md之外的同目录文件scripts/、references/、assets/会被一并写入并且原文件的可执行位0o111会被保留测试 workspace-skill-import.test.ts 验证了scripts/run.sh的可执行位。这意味着开源技能自带的脚本开箱即可运行。注意如果某技能打包的脚本依赖当前沙箱不具备的工具该技能仍然可以安装并作为纯指引pure guidance使用——安装与否不受底层工具可用性影响。三、安装后该向用户汇报什么skill-installer 对安装完成后的汇报有明确要求向用户传达技能名称与使用方法——即用户调用它所用的 id、一行描述description以及说什么话能让它开始工作。安装响应中携带的文件清单written file list只用于 Agent 自己的核对不应向用户播报。例如InstalledSKILL.md,scripts/render.py这类信息对用户没有可操作价值属于噪音。四、工作区技能的两条边界规则skill-installer 附带了三条必须遵守的纪律目录约定每个工作区技能都应安装在skills/skill-id/下包含SKILL.md及其辅助文件。手工创作的技能可以直接用 Write 工具在skills/skill-id/下创建这些文件——这与 runtime/harnesses/src/embedded-skills/skill-creator/SKILL.md 规定的规范一致frontmatter 必须包含name与目录名完全一致和description一行摘要。嵌入式技能目录只读不要把工作区技能安装进runtime/harnesses/src/embedded-skills/——该目录属于内置嵌入式技能仅作指引用途。这一约束也被运行时解析逻辑强化嵌入式技能根目录通过HOLABOSS_EMBEDDED_SKILLS_DIR环境变量或固定候选路径解析workspace-skills.ts与工作区skills/是两套来源。全局安装需用户明确要求不要向$CODEX_HOME/skills安装除非用户明确要求的是全局安装而非工作区安装。五、运行时如何发现与解析新技能导入成功后技能进入工作区skills/目录运行时按以下链路自动发现它列表解析resolveWorkspaceSkillsworkspace-skills.ts把嵌入式技能与工作区skills/下的技能合并。工作区技能只在skills/真实路径位于工作区根目录之内时才被接受路径穿越防护workspace-skills.ts。格式校验每个技能目录必须持有SKILL.md且 frontmatter 中name与目录名一致、description非空否则该技能被忽略workspace-skills.ts。按别名查找skill工具支持用skill id 或 skill name双别名查找workspace-skills.ts并支持通过args参数追加后续指令二者拼接后注入上下文workspace-skills.ts。值得一提的是skills/的相对路径常量WORKSPACE_SKILLS_RELATIVE_PATH skills直接定义在 workspace-skills.ts技能 id 会被规范化校验——不允许空串、.、..、路径分隔符与空字符workspace-skills.ts从目录命名层面杜绝注入。5.1 技能授权工具的即时放大导入时映射出的holaboss_granted_tools/holaboss_granted_commands不只是元数据运行时通过 runtime/harnesses/src/skill-policy.ts 实现调用技能即授权skill widening机制。被技能声明的工具/命令进入 managed 集合在技能被调用时按需授予applyHarnessSkillWideningGrantsskill-policy.ts未通过技能获得授权的受管工具会被wrapToolWithHarnessSkillWidening拦截并提示permission denied by skill policyruntime/harnesses/src/workspace-skills.ts。这就是开源技能装好即按声明授权的底层保障。5.2 引用式技能调用除skill工具外运行时还支持引用式指令当用户指令以一行/skill-id开头时prepareInstructionWithQuotedWorkspaceSkills会把对应技能块引用进上下文workspace-skills.ts。harness 侧的同名实现见 runtime/harnesses/src/workspace-skills.ts 与parseHarnessQuotedSkillInstruction两者采用相同的解析规则/^\/[A-Za-z0-9_-]$/。六、导入链路的安全防护从 GitHub 导入意味着处理不可信的外部内容workspace-skill-import.ts 对此做了多层防护防护点实现URL 白名单仅接受github.com域名否则 400测试 workspace-skill-import.test.ts路径穿越拒绝含..的 subPath解压后校验技能路径必须位于仓库根目录之内workspace-skill-import.ts目标路径防护安装时目标必须精确落在skills/id/下拒绝越界workspace-skill-import.ts体积与数量上限tarball ≤ 25 MB、技能总大小 ≤ 8 MB、文件数 ≤ 300workspace-skill-import.ts错误分类SkillImportError携带 HTTP 状态码端点将其透出app.ts七、典型使用流程小结用预览端点确认目标技能POST /api/v1/workspaces/{workspaceId}/skills/import-github/preview核对返回的id、description、granted_tools与文件清单用安装端点落地POST /api/v1/workspaces/{workspaceId}/skills/import-github必要时带ref指定分支 / tag / commit在同一轮对话中直接以skill({ name: id })调用新技能——读取自磁盘即刻生效向用户只汇报技能 id、一行描述与使用方式不播报文件清单。对于上传场景运行时还支持.md/.zip/.skill文件上传导入importSkillFromUpload复用同一套 frontmatter 映射与安全护栏见 workspace-skill-import.ts而 marketplace 解析出的技能正文则经materializeSkill幂等写入workspace-skills-catalog.ts。三者最终都汇聚到同一个目标工作区skills/skill-id/SKILL.md——这也是 holaOS 工作区技能生态的单一入口约定。赞分享人工智能AI AgentAI 应用前端后端即时通讯交互助手工具调用【免费下载链接】holaOSOpen-source agentic workspace enterprises can make their own. Connect the systems you already run — 100 integrations, MCP, chat tools, apps, browser, local files — with shared memory. Any agent (Claude Code, Codex), any model, or BYOK. Set up in clicks, not months. Local-first: your data never leaves your machines.项目地址https://gitcode.com/GitHub_Trending/ho/holaOS点击查看免费下载相关推荐Open Interpreter skill-installer 技能实战从 GitHub 仓库检索并安装 Skills 到 $CODEX_HOME/skillsOpen Interpreter skill installer 技能实战从 GitHub 仓库检索并安装 Skills 到 $CODEX_HOME/skil人工智能大模型AI Agent代码智能体AI 应用CLIOpenScreen 免费屏幕录制工具教程从录屏到演示视频的完整流程OpenScreen 免费屏幕录制工具教程从录屏到演示视频的完整流程 用录屏做产品演示难的不是按下录制键而是后面的事付费的演示视频工具按月收费纯录屏软桌面应用音视频视频处理屏幕录制k-skill 在 Manus.ai 中的安装与使用指南GitHub URL 导入与 .skill 捆绑包两条实战路径k skill 在 Manus.ai 中的安装与使用指南GitHub URL 导入与 .skill 捆绑包两条实战路径 本指南面向希望在 Manus.ai 中AI 技能/插件人工智能CLI上一篇如何在symfony/routing中轻松处理复杂查询参数路由完整指南下一篇Qwen3-Embedding-4B GGUF新一代多语言文本嵌入模型引领检索技术革新创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考