公司动态

WorkBuddy技能开发实战:从设计哲学到“鸭血粉丝汤”案例全解析

📅 2026/8/6 12:56:54
WorkBuddy技能开发实战:从设计哲学到“鸭血粉丝汤”案例全解析
1. 从“工作伙伴”到“技能大师”WorkBuddy的设计哲学与核心定位最近在AI工具圈里WorkBuddy这个名字出现的频率越来越高尤其是在讨论如何让AI真正融入日常工作流时。很多人把它和CodeBuddy搞混或者简单地把它理解成一个“能联网的ChatGPT”。但在我深度使用并尝试为其设计自定义Skill技能后我发现WorkBuddy真正的价值在于它提供了一个高度可塑的“智能工作台”框架。它不是一个单一的工具而是一个允许你将各种AI能力、外部API、内部工作流封装成标准化“技能”的操作系统。这就像给你的团队配备了一位全能型数字助理而你可以根据团队的具体业务为这位助理“安装”不同的专业模块。WorkBuddy的核心是“Skill”。你可以把它想象成智能手机上的App。手机本身WorkBuddy工作台提供了基础的计算、显示和交互能力但具体是用于导航、点外卖还是修图则取决于你安装了哪个AppSkill。Skill的设计就是将复杂的、多步骤的、需要调用特定工具或知识的任务打包成一个简单的、可对话的接口。用户不需要知道背后调用了哪个大模型、访问了哪个数据库、执行了哪个脚本只需要用自然语言说出需求Skill就能理解并执行。例如一个“周报生成Skill”可能背后串联了1从Jira拉取本周任务数据2从GitLab获取代码提交记录3用特定模板和语气生成草稿4允许用户对话式修改。这一切对用户而言只是一句“帮我写一下本周研发进度周报。”那么WorkBuddy和常被并提的CodeBuddy区别在哪简单来说CodeBuddy更偏向于一个专注于代码生成、解释、调试的“开发专家”它的场景相对垂直。而WorkBuddy的野心更大它想成为所有知识工作的“通用工作台”。通过Skill机制它可以被定制成你的“设计大师”design-master、“PPT助手”、“数据分析师”甚至是“中医经方顾问”正如热搜词里的“倪海厦skill”、“经方中医ai”所暗示的。它的“主题工厂”theme-factory和“画布设计-2”canvas-design-2等特性则进一步允许你自定义工作台的界面和交互布局使其完全贴合你的团队工作习惯。因此学习WorkBuddy关键不在于学会使用它的默认功能而在于掌握如何为它设计和装配属于你自己的Skill。接下来我将以一个非常生活化但过程完整的案例——“鸭血粉丝汤实操案例”来拆解一个Skill从构思、设计、编码到部署的全过程。2. Skill的解剖构成要素、设计模式与核心文件解析在动手为“鸭血粉丝汤”设计Skill之前我们必须先搞清楚一个标准的WorkBuddy Skill到底由哪些部分组成以及它们是如何协同工作的。这能帮助我们在后续编码时思路清晰少走弯路。2.1 Skill的核心构成要素一个完整的Skill通常包含以下几个关键部分它们共同定义了这个技能的能力边界和行为方式技能描述文件skill.json / config.yaml这是技能的“身份证”和“说明书”。它定义了技能的基本元信息例如技能的唯一ID如com.example.duckblood_soup、名称、版本、作者、描述。更重要的是它声明了技能的“触发器”Triggers和“能力”Capabilities。触发器定义了用户如何激活这个技能。最常见的是“意图触发”Intent Trigger例如当用户说“我想吃鸭血粉丝汤”或“教我做鸭血粉丝汤”时WorkBuddy会识别出用户的意图Intent并路由到这个技能。描述文件里会定义这个意图的关键词和匹配模式。能力声明了技能能做什么例如“调用外部API”、“读写文件”、“执行系统命令”需谨慎授权等。这相当于向WorkBuddy工作台申请权限。技能逻辑主体主脚本文件这是技能的大脑通常是一个Python或JavaScript文件取决于你的运行时环境。它包含了处理用户请求的核心逻辑。当技能被触发后WorkBuddy会将用户的输入对话上下文、查询参数等传递给这个脚本。脚本需要解析输入理解用户的具体指令。比如用户是说“要辣一点的”还是“不要香菜”。执行任务根据指令执行一系列操作。这可能包括调用一个菜谱API获取步骤、访问本地数据库查询食材库存、调用一个文本生成模型润色做法描述、或者像我们案例中一样按照固定流程输出步骤。生成输出将任务结果格式化成WorkBuddy能理解并展示给用户的响应。通常是结构化的数据可能包含文本、图片、按钮、列表等富媒体内容。依赖管理文件requirements.txt / package.json如果你的技能逻辑需要额外的第三方库例如requests用于网络请求Pillow用于图像处理你需要在这里声明。这确保了技能在被部署到任何WorkBuddy环境时都能自动安装所需的运行环境。资源文件可选如图标、示例图片、预设模板等。例如你的“鸭血粉丝汤”技能可以附带一张精美的成品图在回复时展示出来增强体验。2.2 两种主流的设计模式对话流与工具链根据技能的复杂程度我们可以采用两种主要的设计模式对话流模式适用于需要与用户多轮交互、收集多个参数的技能。例如一个“定制旅行计划”技能需要依次询问目的地、时间、预算、偏好等。这种模式需要技能脚本能够维护对话状态Session根据当前状态决定下一步询问什么。WorkBuddy的SDK通常会提供对话状态管理的工具。工具链模式适用于输入明确、流程固定的任务。我们的“鸭血粉丝汤”案例就属于这种。用户触发后技能按预定顺序执行一系列“工具”调用如获取数据、处理数据、格式化输出然后一次性返回结果。这种模式逻辑清晰易于实现和调试。对于初学者强烈建议从“工具链模式”开始。它帮助你聚焦于技能的核心功能实现而不必过早陷入复杂的对话状态管理。2.3 核心文件skill.json的深度解析让我们以JSON格式为例深入看一下一个技能描述文件可能包含的内容。这是连接用户自然语言和技能逻辑的桥梁。{ id: com.yourname.duckbloodfans, version: 1.0.0, name: 鸭血粉丝汤制作指南, description: 提供经典鸭血粉丝汤的详细图文制作步骤与技巧。, author: Your Name, icon: icon.png, // 技能图标 triggers: [ { type: intent, intent: cook_duck_blood_soup, // 意图名称 patterns: [ // 触发模式支持正则表达式 怎么做鸭血粉丝汤, 鸭血粉丝汤的做法, 我想学做鸭血粉丝汤, 来一份鸭血粉丝汤教程 ], description: 当用户询问鸭血粉丝汤做法时触发 } ], capabilities: { network_access: true, // 声明需要网络权限如需访问在线菜谱 file_storage: false // 声明不需要本地文件存储权限 }, entry_point: main.py, // 技能主逻辑入口文件 runtime: python-3.9 // 所需的运行时环境 }关键字段解读与避坑点id必须全局唯一通常采用反向域名格式。这是技能在系统内的唯一标识如果和已有技能冲突将无法安装。patterns这里是用户意图匹配的关键。不要只写一两个尽量覆盖用户可能的各种问法如“做法”、“教程”、“制作方法”、“怎么煮”。但也要避免过于宽泛的模式如“.汤.”以免误触发。capabilities遵循“最小权限原则”。不需要的权限不要申请比如你的技能只是本地计算就不要申请network_access。这既是安全最佳实践也能增加用户信任度。entry_point务必确保文件名和路径正确。这是WorkBuddy加载技能后第一个执行的脚本。注意在Skill开发中一个常见的“坑”是patterns设计不合理。过于简单的模式会导致技能被频繁误触发干扰用户过于复杂的正则表达式又可能匹配不上。我的经验是先用5-10个核心问法作为基础技能上线后通过WorkBuddy提供的日志分析功能观察用户实际使用的查询语句再持续迭代优化patterns这是一个数据驱动的优化过程。3. “鸭血粉丝汤”技能从零到一的实战开发现在我们进入实战环节。假设我们要开发一个名为“金陵鸭血粉丝汤制作大师”的Skill。它的功能很简单当用户询问时提供一份详尽的、分步骤的鸭血粉丝汤菜谱并附带一些烹饪小贴士。我们将采用“工具链模式”来构建它。3.1 环境准备与项目初始化首先你需要一个WorkBuddy的开发环境。根据热搜词WorkBuddy有Linux、Mac版本你需要先完成workbuddy安装。这里假设你已经安装好WorkBuddy核心服务并且准备在其“技能开发模式”或配套的SDK环境中操作。创建技能项目目录mkdir duckblood-fans-skill cd duckblood-fans-skill初始化技能描述文件创建skill.json内容可以参考上一节的示例将id,name,author等信息替换成你自己的。创建主逻辑文件创建main.py。这是我们将要编写核心代码的地方。创建依赖文件创建requirements.txt。我们这个简单技能暂时不需要额外依赖所以文件可以是空的或者只写# 暂无第三方依赖。但对于复杂技能这是至关重要的一步。3.2 主逻辑 (main.py) 的编写与结构WorkBuddy的技能脚本通常需要定义一个主要的处理函数例如handle_request该函数接收一个包含用户输入和上下文的“请求对象”并返回一个“响应对象”。#!/usr/bin/env python3 # -*- coding: utf-8 -*- 鸭血粉丝汤制作技能主逻辑 def handle_request(request): 处理用户请求的主函数。 Args: request: 包含用户输入、意图等信息的请求对象。 Returns: 一个包含响应内容的字典或特定响应对象。 # 1. 从request中解析用户意图和参数本例中无额外参数 user_query request.get(query, ) # 你可以在这里解析用户是否提出了特殊要求比如“不要辣”、“多加鸭血” # 本例中我们忽略参数直接返回固定菜谱 # 2. 执行核心任务生成菜谱 recipe generate_duck_blood_fans_recipe() # 3. 构建并返回响应 response { type: text, # 响应类型可以是 text, image, card, list 等 content: { text: recipe }, suggestions: [ # 可以提供一些快捷回复建议 需要视频教程吗, 食材在哪里买比较好, 保存为我的菜谱 ] } return response def generate_duck_blood_fans_recipe(): 生成鸭血粉丝汤的详细菜谱。 这里我们硬编码一份精美的菜谱。在实际技能中这部分内容可以来自 1. 本地数据库/文件 2. 外部API如美食网站API 3. 通过LLM实时生成需联网并调用AI模型 recipe_text # 经典金陵鸭血粉丝汤 · 家庭版详解 **特点**汤清味醇鸭血嫩滑粉丝爽口回味无穷。 --- ## 食材清单 (2-3人份) * **主料**鸭血 300g、龙口粉丝 100g、鸭肠/鸭胗 150g可选、油豆腐 50g * **汤底**鸭架或老鸭 半只、生姜 5片、料酒 2汤匙 * **调料**盐 适量、白胡椒粉 2茶匙、香菜/葱花 少许、蒜泥 1茶匙、辣椒油可选 --- ## 制作步骤 (图文详解) ### 步骤一熬制灵魂汤底 (耗时约1.5小时) 1. **处理鸭架**鸭架洗净冷水入锅加姜片、料酒大火煮沸后撇去浮沫。 2. **慢火细熬**转小火盖上锅盖慢炖1.5小时。**关键点**保持汤面微沸即可火太大汤会浑浊。这是汤色清澈的关键。 3. **过滤**将熬好的鸭汤用细纱布过滤只取清汤备用。鸭架肉可撕碎备用。 ### 步骤二处理食材与焯水 1. **鸭血处理**鸭血切厚片约1cm。**冷水**下锅加少许盐水开后煮2分钟捞出。这一步能有效去除腥味让鸭血更紧实。 2. **鸭肠/鸭胗处理**洗净后与鸭血同一锅水焯烫至变色卷曲即可捞出切片。 3. **粉丝浸泡**粉丝用温水泡软约15分钟剪成适口长度。 4. **油豆腐处理**油豆腐对半切开用热水烫一下去除多余油分。 ### 步骤三组合与调味 1. 取一口干净的锅倒入过滤好的清鸭汤煮沸。 2. 按**耐煮顺序**下料先放入油豆腐煮1分钟再放入鸭血、鸭杂煮2分钟。 3. 放入泡软的粉丝煮至粉丝透明约1-2分钟。**注意**粉丝煮久易烂口感变差。 4. **调味**加入盐、白胡椒粉调味。尝一下咸淡汤应比平常喝的口味略咸一点因为粉丝会吸收部分盐分。 ### 步骤四出锅与点睛 1. 将煮好的鸭血粉丝连汤盛入大碗。 2. 撒上**香菜末/葱花**、一小勺**蒜泥**。 3. 淋上几滴**辣椒油**根据个人口味。 4. 最后可以加一小勺之前撕好的**鸭架肉**增加风味层次。 --- ## 大师级技巧与常见问题 * **汤不浓怎么办** 熬汤时加一小块火腿皮或猪骨鲜味倍增。 * **鸭血有孔不好吃** 焯水时加盐是关键并且一定要冷水下锅。 * **粉丝一煮就烂** 品牌很重要推荐龙口粉丝。且必须在汤快好时最后下。 * **想更鲜美** 出锅前滴两滴镇江香醋能瞬间提鲜解腻开胃。 **享用吧一碗地道的鸭血粉丝汤是对忙碌一天最好的慰藉。** return recipe_text # 以下部分通常用于本地测试在正式部署时WorkBuddy会直接调用 handle_request 函数 if __name__ __main__: # 模拟一个请求对象用于本地测试 test_request {query: 怎么做鸭血粉丝汤, intent: cook_duck_blood_soup} result handle_request(test_request) print(result[content][text])代码逻辑解读与实操心得handle_request函数这是技能的“总控中心”。它接收request理论上应该解析里面的参数。例如高级版本可以解析用户说的“微辣”、“不要香菜”并传递给菜谱生成函数。本例做了简化。generate_...函数这里封装了核心业务逻辑。在实际项目中强烈建议将业务逻辑与WorkBuddy的接口逻辑分离。这样便于单独测试业务逻辑也方便未来替换数据源比如从硬编码改为调用API。响应格式我们返回了一个包含type和content的字典。WorkBuddy支持更丰富的响应类型如图片卡片(card)、列表(list)、按钮(buttons)等。例如你可以将步骤图片的URL放在响应里WorkBuddy会渲染成图文并茂的消息。本地测试if __name__ __main__:部分非常有用。它允许你不依赖WorkBuddy环境直接运行python main.py来测试你的菜谱生成逻辑是否正确输出格式是否美观。这是提高开发效率的关键。3.3 技能打包、安装与调试完成编码后我们需要将技能安装到WorkBuddy中。打包在技能根目录包含skill.json,main.py,requirements.txt的目录进行打包。通常WorkBuddy CLI工具提供打包命令如workbuddy skill pack会生成一个.skill或.zip格式的包。安装在WorkBuddy工作台的管理界面找到“技能管理”或“Skill Center”选择“安装本地技能”或“上传技能包”上传你刚刚打包的文件。调试与日志查看安装成功后在WorkBuddy的聊天界面直接输入你定义的触发语句如“怎么做鸭血粉丝汤”。如果技能没有触发首先检查skill.json里的patterns是否匹配你的输入。如果触发了但报错或没反应需要查看WorkBuddy的技能运行日志。日志通常会指出是语法错误、依赖缺失还是逻辑异常。一个必备技巧在handle_request函数的开头和关键步骤加入详细的日志打印使用WorkBuddy SDK提供的logger这是线上调试最有效的手段。踩坑实录在我第一次部署技能时遇到了技能已安装但始终不触发的问题。排查了很久最后发现是skill.json中entry_point的文件路径大小写写错了Main.pyvsmain.py。在Linux服务器上这是致命的。另一个常见问题是requirements.txt中的库版本冲突。建议在干净的虚拟环境中测试技能包并使用pip freeze requirements.txt来精确生成依赖列表而不是手动填写。4. 超越案例Skill设计的进阶思路与生态展望通过“鸭血粉丝汤”这个案例我们完成了一个简单静态技能的全流程。但WorkBuddy Skill的潜力远不止于此。让我们基于热搜词中透露的方向探讨几个进阶的设计思路。4.1 动态化与智能化接入LLM与外部API静态菜谱的局限性很明显无法回答个性化问题“家里没有鸭血能用猪血吗”无法根据现有食材生成菜谱。我们可以改造技能使其智能化。思路一接入大型语言模型LLM。这正是热搜词中claude skill、opencode skill所指向的方向。你可以在handle_request函数中将用户问题如“没有粉丝用什么代替”和你的知识库鸭血粉丝汤的基本做法作为提示词Prompt发送给Claude、GPT或本地部署的Ollamaworkbuddy如何连接本地ollama模型让模型生成动态回复。这样你的技能就从一个“信息播放器”变成了一个“美食顾问”。实现要点需要申请network_access权限并妥善管理API密钥不要硬编码在代码里应使用环境变量或WorkBuddy的密钥管理功能。提示词设计这是效果好坏的关键。例如“你是一位资深金陵菜厨师。这是鸭血粉丝汤的标准做法[插入标准做法]。现在用户问‘[用户问题]’。请基于标准做法和你的专业知识用中文友好地回答。”思路二接入外部数据API。让技能“活”起来。例如接入菜谱API获取成千上万种菜谱你的技能就升级成了“全能菜谱查询器”。接入生鲜电商API在给出菜谱的同时一键生成食材购物清单并显示实时价格。接入天气API推荐适合当下天气的汤品如“今天降温推荐你喝这道暖身的鸭血粉丝汤”。4.2 复杂技能编排工作流与状态管理对于需要多步交互的技能如“帮我策划一个生日派对”就需要用到“对话流模式”和状态管理。定义技能状态创建一个简单的状态机。例如状态可以是等待选择类型-收集人数信息-收集预算信息-生成方案。在handle_request中管理状态每次用户回复时根据当前状态和用户输入决定下一步动作是继续提问还是执行计算。def handle_request(request): session request.get(session, {}) # WorkBuddy会传递会话状态 current_step session.get(current_step, ask_party_type) if current_step ask_party_type: # 如果状态是询问类型且用户回答了类型 party_type extract_party_type(request[query]) if party_type: session[party_type] party_type session[current_step] ask_guest_count # 更新状态 return ask_guest_count_response(session) # 返回下一个问题 else: return ask_again_response() # 没听懂再问一遍 # ... 处理其他状态利用WorkBuddy的SessionWorkBuddy SDK通常提供了会话存储功能可以帮你自动保存和恢复session对象无需自己管理复杂的持久化。4.3 Skill生态与“主题工厂”打造个性化工作台热搜词中提到了theme-factory和canvas-design-2。这指向了WorkBuddy的另一个强大特性界面定制。技能不仅可以提供后端服务还可以定义前端组件。技能与UI组件绑定一个高级的“数据报表Skill”除了能生成数据还可以返回一个自定义的图表组件定义WorkBuddy工作台会将其渲染成交互式图表。主题工厂允许你为整个工作台或某个技能集设计统一的视觉主题包括颜色、字体、布局。这对于企业部署打造品牌一致性的内部工具平台至关重要。画布设计允许用户通过拖拽的方式将不同的技能输出文本、图表、表单、按钮组合在一个页面上形成一张个性化的“工作画布”。例如将“日程Skill”、“邮件摘要Skill”、“项目进度Skill”的输出放在一起形成每日晨报仪表盘。4.4 安全、权限与技能分发最后作为技能开发者必须关注安全与合规。权限最小化如前所述在skill.json中只申请必要的权限。输入验证与清理永远不要信任用户输入。如果技能涉及执行系统命令或数据库查询必须对输入进行严格的验证和转义防止注入攻击。敏感信息处理API密钥、数据库密码等绝不能写在代码里。使用WorkBuddy提供的密钥管理服务或环境变量。技能分发你可以将开发好的技能打包后私下分享给团队成员安装。更正式的做法是向WorkBuddy的官方或社区技能商店提交你的技能经过审核后供所有用户搜索和安装甚至可以获得收益如果平台支持。skill creator和skill推荐这些热词正反映了社区对优质技能的渴求。从一碗“鸭血粉丝汤”出发我们实际上探讨的是如何利用WorkBuddy这样的可扩展AI智能体平台将任何专业知识或工作流程产品化、服务化。这个过程从简单的信息查询到动态的智能交互再到复杂的业务编排其核心思想是一致的封装复杂暴露简单。而作为设计者我们的任务就是找到那个“简单”的对话接口并构建好背后“复杂”而可靠的逻辑链条。这不仅是技术实现更是一种对用户体验和业务理解的深度考验。