ARTICLE DETAIL

资讯详情

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

holaOS 内嵌 LinkedIn Ghostwriter 能力:SKILL.md 驱动的“以你之声“发帖技能实战指南

holaOS 内嵌 LinkedIn Ghostwriter 能力:SKILL.md 驱动的“以你之声“发帖技能实战指南 人工智能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 仓库中 linkedin-ghostwriter 内嵌能力 及其核心技能文档 SKILL.md 为主体讲清它如何把给一个话题、还你一篇像你本人写出来的 LinkedIn 帖子这一需求落实为一条可被 Agent 加载、调用并最终经linkedin_*工具发布的技能流水线。读完你会掌握SKILL.md 的 frontmatter 契约与正文指令结构、技能如何从内嵌目录被解析、注入会话并被 Agent 执行以及capability.yaml中集成依赖与安装/卸载的生命周期机制。一、能力定位LinkedIn Ghostwriter 是什么在 holaOS 的 runtimeAPI 服务端中LinkedIn Ghostwriter 是一个内嵌能力embedded capability其完整定义位于 capability.yamlid: linkedin-ghostwriter name: LinkedIn Ghostwriter description: Draft LinkedIn posts in your voice from a topic or rough notes category: content icon: ph:pen-nib-fill skills: - path: ./skills/linkedin-post/SKILL.md integrations: - provider: linkedin required: true reason: Publishes the drafted posts从这份清单可以读出四个关键信息id / name / description能力唯一标识、展示名与能力说明会被写入工作区的能力记录workspace capability record供后续查询与状态管理使用category: content能力归类为内容生产类与inbox-triageproductivity、competitor-watch等并列于 embedded-capabilities 目录skills声明该能力携带的技能清单这里通过path指向本技能文档./skills/linkedin-post/SKILL.mdintegrations声明该能力对 LinkedIn 集成的硬依赖required: true理由是发布已起草的帖子Publishes the drafted posts。这与同目录下 competitor-watch竞品周报、content-repurposer内容多平台改写、inbox-triage收件箱优先级处理形成了 holaOS 的内嵌内容/效率能力体系。LinkedIn Ghostwriter 的职责非常聚焦从话题、笔记或粗略想法出发以用户本人的口吻起草 LinkedIn 帖子并把发布环节交给linkedin_*工具完成。二、技能文档主体SKILL.md 的逐条拆解技能的核心指令位于 SKILL.md全文分为 frontmatter 与正文两大部分。2.1 frontmatter技能被发现与被校验的身份证--- name: linkedin-post description: Draft a LinkedIn post in the users voice from a topic, note, or rough idea. ---这两行不是可有可无的注释而是技能能够被系统识别的硬性契约。从 workspace-skills.ts 的解析逻辑可以看到skillFrontmatter()第 99–111 行用正则^---\r?\n([\s\S]*?)\r?\n---解析出 frontmatter再用yaml.load反序列化hasValidSkillFormat()第 272–292 行要求 frontmatter 必须存在且name与目录名skill id完全一致frontmatterName ! params.skillId即判为非法description也不能为空——缺 frontmatter、名字对不上、描述为空技能都会被直接过滤掉不会进入会话readSkillMetadata()第 294–326 行进一步把name、description提取为ResolvedWorkspaceSkill的skill_id/skill_name/description字段。此外workspace-skills-catalog.ts 中的materializeSkill()与 workspace-capabilities.ts 中的frontmatterName()第 332–352 行也都在解析同一格式当能力被安装时技能正文会被写入工作区的skills/skillId/SKILL.mdfrontmatter 的name会作为技能 id 兜底缺失时用目录名。这意味着如果你想新增一个同类技能SKILL.md 的 frontmatter 必须严格遵循name等于目录名description非空的结构否则技能静默不可见。2.2 正文六步以用户之声起草法正文是真正会被注入到 Agent 提示词中的指令原文逐条如下Draft a LinkedIn post from a topic or rough notes, in the users voice.Clarify the angle: the one idea, and who its for.Open with a concrete, specific first line — never Im excited to share.Body: a short story, a lesson, or a contrarian take; keep paragraphs to 1-2 lines.End with a light prompt for discussion, not a hard CTA.Match the users past posts for tone and length; avoid hashtag stuffing.Return the draft ready to review and publish via linkedin_*.逐条解释其设计意图与执行要点明确角度先确定唯一的核心观点以及目标读者是谁。这是防止发散、保证帖子聚焦的第一步——一帖一事。第一行必须具体指令用否定式强调了反例——永远不要以 Im excited to share 这类空泛开场白。要求以具体的事实、场景或矛盾开局让读者在首行就获得信息增量。正文结构短故事、经验教训或反常识观点contrarian take三选一段落控制在 1–2 行符合 LinkedIn 信息流里短段易读的排版习惯。结尾轻互动以轻量的讨论引导收尾而不是强硬的 CTAcall to action——这是内容社区互动率的常见做法。模仿用户既往风格语气与篇幅对齐用户过往帖子并避免标签堆砌hashtag stuffing。交付形态返回可直接审阅、可直接发布的草稿交由linkedin_*工具发布。这条指令的设计特点是规则少而可执行它没有规定字数上限而是用与用户过往帖子对齐来做动态校准没有堆砌写作模板而是用一个观点 具体开头 1–2 行短段 轻收尾给出稳定的结构骨架。这与 content-repurposer 中为每个平台各写一版而不是一篇文本到处粘贴的思路一脉相承——同为 LinkedIn 写作但前者是从零起草后者是从单一源素材改写。三、从 SKILL.md 到会话技能如何被加载与调用SKILL.md 不是静态的说明文档它会经历解析 → 注入提示词 → 被 Agent 调用的完整生命周期。3.1 技能发现embedded 与 workspace 双来源合并workspace-skills.ts 的resolveWorkspaceSkills()第 417–454 行把两类技能合并为一个列表embedded内嵌技能从embeddedSkillsRoot()第 72–88 行扫描。默认路径按HOLABOSS_RUNTIME_ROOT解析到harnesses/src/embedded-skills或runtime/harnesses/src/embedded-skills也支持用环境变量HOLABOSS_EMBEDDED_SKILLS_DIR覆盖每个子目录对应一个技能含SKILL.md即有效。workspace工作区技能从工作区目录下的skills目录WORKSPACE_SKILLS_RELATIVE_PATH skills扫描且会通过realpath校验技能目录必须落在工作区真实根目录之内resolveWorkspaceScopedSkills第 374–405 行防止路径逃逸。合并时以技能 id 为 key工作区技能优先覆盖内嵌技能第 427–433 行顺序上内嵌技能在前第 435–446 行最终按 id 字典序输出。3.2 引用与调用quoted skill block当用户在会话中提到某个技能或以/skill-id形式引用时系统通过quotedSkillBlock()第 260–270 行把 SKILL.md 的正文剥离 frontmatter包装成skill namelinkedin-post location.../SKILL.md References are relative to .../skills/linkedin-post. SKILL.md 正文 /skill随后由invokeWorkspaceSkill()第 481–523 行或prepareInstructionWithQuotedWorkspaceSkills()第 525–563 行将该 block 拼接进指令文本注入 Agent 的上下文。若请求的技能不存在会抛出带可用技能列表的错误第 498–502 行帮助调用方自查。3.3 能力安装SKILL.md 的落地在 workspace-capabilities.ts 的installCapability()第 378–431 行中对每个path型技能引用先经skillIdForPathRef()第 354–360 行读取 SKILL.md 原文并解析 frontmatter 得到skillIdfrontmattername优先否则取path的父目录名然后写入工作区skills/skillId/SKILL.md幂等覆盖见 materializeSkill 的注释使 harness 能拾取同时把capabilityId、技能列表、集成状态等落库为工作区能力记录第 418–428 行集成状态由computeIntegrationStatus()第 363–376 行通过listConnectionsMerged()按 provider 查询得到connected或needs_connection。uninstallCapability()第 433–466 行则负责反向清理仅删除不再被其他能力引用的技能目录避免误删共享技能。3.4 集成依赖为什么linkedin是requiredcapability.yaml声明了integrations: [{ provider: linkedin, required: true, reason: Publishes the drafted posts }]。结合computeIntegrationStatus的实现可以确认安装时按providerId: linkedin查询合并后的连接列表只要存在status active的连接即视为connected否则为needs_connectionrequired: true表示该能力没有 LinkedIn 连接就无法完整工作草稿无法发布reason 字段把为什么需要这一决策依据固化在清单里供 UI 或 Agent 展示。另外从 integration-store-catalog.ts 可以看到linkedin属于tier: hero、category: social的头部集成另有linkedin_ads属于supported层——发布路径与广告路径在集成目录中被区分管理。四、实操参考如何安装、使用与自查以下步骤均围绕 holaOS runtime 的能力/技能机制展开仓库只读仅说明查看与运行方式查看能力清单capability.yaml是能力的单一事实来源。目录 embedded-capabilities 下每个子目录一份loadCapabilityCatalog()workspace-capabilities.ts会扫描该目录并按 id 排序加载。安装能力通过installCapability内部由工作区/API 层触发将技能物化到工作区skills/linkedin-post/SKILL.md并在状态库登记linkedin-ghostwriter记录安装前请确认 LinkedIn 集成已连接status: active否则集成状态为needs_connection。在会话中使用给 Agent 一个话题、一段笔记或一个粗略想法Agent 读取linkedin-post技能后按六步起草草稿可直接审阅最终经linkedin_*工具发布。验证技能格式若技能未被识别请对照hasValidSkillFormat的三条硬性要求自查——① SKILL.md 顶部必须有---frontmatter② frontmattername必须与技能目录名完全一致③description必须非空。运行测试仓库在 workspace-capabilities.test.ts 与 workspace-skills.test.ts 中提供了对清单解析、技能发现与格式校验的测试覆盖可作为行为基准。五、小结一条轻规则、重执行的技能实践样板LinkedIn Ghostwriter 的 SKILL.md 是 holaOS 内嵌技能体系的一个典型样本它展示了三点可复用的工程实践frontmatter 是机器契约name与目录强绑定、description驱动发现决定了技能能否被解析、收录与调用正文是可执行指令六步规则覆盖角度 → 开头 → 正文 → 收尾 → 风格对齐 → 交付既是写作方法论也是提示词工程能力清单是生命周期枢纽capability.yaml 把技能引用、集成依赖、分类与图标统一管理安装/卸载/状态跟踪全部围绕它展开。无论你是要在 holaOS 上直接使用以你之声发帖还是要仿照该模式为自己的工作区编写新技能这条从 SKILL.md 到linkedin_*发布的链路都是可以直接参照的完整闭环。赞分享人工智能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 提案撰写技能proposal-writer SKILL.md实战指南用 Agent 产出能签单的客户提案holaOS 提案撰写技能proposal writer SKILL.md实战指南用 Agent 产出能签单的客户提案 导读 本文围绕 holaOS 桌面人工智能AI AgentAI 应用前端后端即时通讯交互助手工具调用MCP ClientsDeepAgents 社媒技能实战用 SKILL.md 编写“研究先行”的 LinkedIn 与 Twitter 内容工作流DeepAgents 社媒技能实战用 SKILL.md 编写“研究先行”的 LinkedIn 与 Twitter 内容工作流 deepagents 的 Con人工智能大模型AI AgentAgent 框架自主智能体工具调用代码智能体MCP ClientsAI 技能FinRobot Financial Plan 技能实战指南用 SKILL.md 驱动自动化财富规划工作流FinRobot Financial Plan 技能实战指南用 SKILL.md 驱动自动化财富规划工作流 导读 本文围绕 FinRobot 开源 AI Ag人工智能AI Agent金融科技AI 应用大模型RAG上一篇winget-cli 中的 WinGetYamlFuzzing基于 libFuzzer 的 YAML 清单解析模糊测试实战指南下一篇API网关设计MCP服务器统一接口管理方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表