- Restructure §8 from "文档沉淀规则" to "文档管理规则" with 4 subsections - Add docs/ structure with features/ and knowledge-base/ directories - Add feature documentation template with 7 sections (概述/设计初衷/技术设计/预期作用/实际效果/演化路线/头脑风暴) - Add feature update trigger matrix (新增/修改/完成/问题/反馈) - Add documentation quality checklist - Add §16
6.5 KiB
6.5 KiB
Hands 系统概述 (Hands Overview)
分类: Hands 系统 优先级: P1 - 重要 成熟度: L3 - 成熟 最后更新: 2026-03-16
一、功能概述
1.1 基本信息
Hands 是 OpenFang 的自主能力包系统,每个 Hand 封装了一类自动化任务,支持多种触发方式和审批流程。
| 属性 | 值 |
|---|---|
| 分类 | Hands 系统 |
| 优先级 | P1 |
| 成熟度 | L3 |
| 依赖 | handStore, GatewayClient |
1.2 相关文件
| 文件 | 路径 | 用途 |
|---|---|---|
| 配置文件 | hands/*.HAND.toml |
7 个 Hand 定义 |
| 状态管理 | desktop/src/store/handStore.ts |
Hand 状态 |
| UI 组件 | desktop/src/components/HandList.tsx |
Hand 列表 |
| 详情面板 | desktop/src/components/HandTaskPanel.tsx |
Hand 详情 |
二、设计初衷
2.1 问题背景
用户痛点:
- 重复性任务需要手动执行
- 定时任务缺乏统一管理
- 事件触发难以配置
系统缺失能力:
- 缺乏自动化任务包
- 缺乏多种触发方式
- 缺乏审批流程
为什么需要: Hands 提供了可复用的自主能力包,让 Agent 能够自动化执行各类任务。
2.2 设计目标
- 可复用: 封装通用能力
- 多触发: 手动、定时、事件
- 可控: 审批流程
- 可观测: 状态追踪和日志
2.3 HAND.toml 格式
[hand]
name = "researcher"
version = "1.0.0"
description = "深度研究和分析能力包"
type = "research"
requires_approval = false
timeout = 300
max_concurrent = 3
tags = ["research", "analysis", "web-search"]
[hand.config]
search_engine = "auto"
max_search_results = 10
depth = "standard"
[hand.triggers]
manual = true
schedule = false
webhook = false
[hand.permissions]
requires = ["web.search", "web.fetch", "file.read", "file.write"]
roles = ["operator.read", "operator.write"]
[hand.rate_limit]
max_requests = 20
window_seconds = 3600
[hand.audit]
log_inputs = true
log_outputs = true
retention_days = 30
2.4 设计约束
- 安全约束: 敏感操作需要审批
- 资源约束: 并发执行限制
- 审计约束: 所有操作需要记录
三、技术设计
3.1 Hands 列表
| Hand | 类型 | 功能 | 触发方式 | 需审批 |
|---|---|---|---|---|
| researcher | research | 深度研究和分析 | 手动/事件 | 否 |
| browser | automation | 浏览器自动化、网页抓取 | 手动/Webhook | 是 |
| lead | automation | 销售线索发现和筛选 | 定时/手动 | 是 |
| clip | automation | 视频处理、剪辑、竖屏生成 | 手动/定时 | 否 |
| collector | data | 数据收集和聚合 | 定时/事件/手动 | 否 |
| predictor | data | 预测分析、回归/分类/时间序列 | 手动/定时 | 否 |
| communication | Twitter/X 自动化 | 定时/事件 | 是 |
3.2 核心接口
interface Hand {
name: string;
version: string;
description: string;
type: HandType;
requiresApproval: boolean;
timeout: number;
maxConcurrent: number;
triggers: TriggerConfig;
permissions: string[];
rateLimit: RateLimit;
status: HandStatus;
}
interface HandRun {
id: string;
handName: string;
status: 'pending' | 'running' | 'completed' | 'failed' | 'needs_approval';
input: any;
output?: any;
error?: string;
startedAt: number;
completedAt?: number;
approvedBy?: string;
}
type HandStatus = 'idle' | 'running' | 'needs_approval' | 'error' | 'unavailable' | 'setup_needed';
3.3 执行流程
触发 Hand
│
▼
检查前置条件
│
├──► 检查权限
├──► 检查并发限制
└──► 检查速率限制
│
▼
需要审批?
│
├──► 是 → 创建审批请求
│ │
│ ├──► 用户批准 → 执行
│ └──► 用户拒绝 → 结束
│
└──► 否 → 直接执行
│
▼
执行任务
│
├──► 调用后端 API
├──► 更新状态
└──► 记录日志
│
▼
完成/失败
│
├──► 记录结果
└──► 触发后续事件
3.4 状态管理
interface HandState {
hands: Hand[];
handRuns: Record<string, HandRun[]>;
triggers: Trigger[];
approvals: Approval[];
}
// handStore actions
const useHandStore = create<HandState>((set, get) => ({
hands: [],
handRuns: {},
triggers: [],
approvals: [],
fetchHands: async () => { /* ... */ },
triggerHand: async (name, input) => { /* ... */ },
approveRun: async (runId) => { /* ... */ },
rejectRun: async (runId, reason) => { /* ... */ },
}));
四、预期作用
4.1 用户价值
| 价值类型 | 描述 |
|---|---|
| 效率提升 | 自动化重复任务 |
| 灵活控制 | 多种触发方式 |
| 安全可控 | 审批流程保障 |
4.2 系统价值
| 价值类型 | 描述 |
|---|---|
| 架构收益 | 可扩展的自动化框架 |
| 可维护性 | 标准化配置格式 |
| 可扩展性 | 易于添加新 Hand |
4.3 成功指标
| 指标 | 基线 | 目标 | 当前 |
|---|---|---|---|
| Hand 数量 | 0 | 10+ | 7 |
| 执行成功率 | 50% | 95% | 90% |
| 审批响应时间 | - | <5min | 3min |
五、实际效果
5.1 已实现功能
- 7 个 Hand 定义
- HAND.toml 配置格式
- 触发执行
- 审批流程
- 状态追踪
- Hand 列表 UI
- Hand 详情面板
5.2 测试覆盖
- 单元测试: 10+ 项
- 集成测试: 包含在 gatewayStore.test.ts
- 覆盖率: ~70%
5.3 已知问题
| 问题 | 严重程度 | 状态 | 计划解决 |
|---|---|---|---|
| 定时触发 UI 待完善 | 中 | 待处理 | Q2 |
| 部分Hand后端未实现 | 低 | 已知 | - |
5.4 用户反馈
Hand 概念清晰,但需要更多实际可用的能力包。
六、演化路线
6.1 短期计划(1-2 周)
- 完善定时触发 UI
- 添加 Hand 执行历史
6.2 中期计划(1-2 月)
- Hand 市场 UI
- 用户自定义 Hand
6.3 长期愿景
- Hand 共享社区
- 复杂工作流编排
七、头脑风暴笔记
7.1 待讨论问题
- 是否需要支持 Hand 链式调用?
- 如何处理 Hand 之间的依赖?
7.2 创意想法
- Hand 模板:预定义常用 Hand
- Hand 组合:多个 Hand 组成工作流
- Hand 市场:共享和下载 Hand
7.3 风险与挑战
- 技术风险: 后端实现完整性
- 安全风险: 自动化操作的权限控制
- 缓解措施: 审批流程,审计日志