--- title: Hands + Skills updated: 2026-04-11 status: active tags: [module, hands, skills] --- # Hands + Skills > 从 [[index]] 导航。关联模块: [[chat]] [[middleware]] ## 设计思想 **Hands = 自主能力 (行动层), Skills = 知识技能 (认知层)** - Hands: 浏览器自动化、数据收集、Twitter 操作等 — **执行动作** - Skills: 75 个 SKILL.md 文件 — **语义路由匹配**,增强 LLM 的领域知识 - 触发: 用户请求 → LLM 判断需要执行 → 选择 Hand/Skill → 执行 ## 代码逻辑 ### Hands (9 启用 + 2 禁用) | Hand | 功能 | 依赖 | 配置 | |------|------|------|------| | Browser | 浏览器自动化 | WebDriver | `hands/Browser/HAND.toml` | | Collector | 数据收集聚合 | — | `hands/Collector/HAND.toml` | | Researcher | 深度研究 | LLM | `hands/Researcher/HAND.toml` | | Clip | 视频处理 | FFmpeg | `hands/Clip/HAND.toml` | | Twitter | Twitter 自动化 | OAuth 1.0a | `hands/Twitter/HAND.toml` | | Whiteboard | 白板演示 | — | `hands/Whiteboard/HAND.toml` | | Slideshow | 幻灯片生成 | — | `hands/Slideshow/HAND.toml` | | Speech | 语音合成 | Browser TTS | `hands/Speech/HAND.toml` | | Quiz | 测验生成 | — | `hands/Quiz/HAND.toml` | | Predictor | 预测分析 | **禁用** | 无 TOML/无 Rust 实现 | | Lead | 销售线索 | **禁用** | 无 TOML/无 Rust 实现 | ### 触发流 ``` UI 触发 → handStore.trigger(handName, params) → Tauri invoke('hand_trigger', { handName, params }) → Kernel → Hand 执行 → needs_approval? → 等待 approvalStore 确认 → 执行结果 → Tauri Event emit → handStore 更新状态 + 记录日志 ``` ### Skills (75 个) ``` skills/ ├── SKILL_001_数据分析.md ├── SKILL_002_报告生成.md ├── ... (75 个 SKILL.md 文件) ``` 每个 SKILL.md 定义: - 技能名称和描述 - 触发条件 - 执行步骤 - 输入/输出格式 ### 语义路由 `crates/zclaw-skills/src/semantic_router.rs` ``` 用户消息 → SemanticSkillRouter → TF-IDF 计算消息与 75 个技能的相似度 → 返回最匹配的技能 → ButlerRouter 使用此结果增强 system prompt ``` ## 关联模块 - [[chat]] — 消息流中可能触发 Hand/Skill - [[butler]] — ButlerRouter 使用语义路由匹配技能 - [[middleware]] — 技能注入通过中间件实现 ## 关键文件 | 文件 | 职责 | |------|------| | `crates/zclaw-hands/src/` | 9 个 Hand 实现 | | `crates/zclaw-skills/src/semantic_router.rs` | TF-IDF 语义路由 | | `skills/*.md` | 75 个技能定义 | | `hands/*/HAND.toml` | Hand 配置 | | `desktop/src/store/handStore.ts` | 前端 Hand 状态 | | `desktop/src/store/approvalStore.ts` | 审批状态 |