feat: 新增技能编排引擎和工作流构建器组件
Some checks failed
CI / Lint & TypeCheck (push) Has been cancelled
CI / Unit Tests (push) Has been cancelled
CI / Build Frontend (push) Has been cancelled
CI / Rust Check (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
CI / E2E Tests (push) Has been cancelled
Some checks failed
CI / Lint & TypeCheck (push) Has been cancelled
CI / Unit Tests (push) Has been cancelled
CI / Build Frontend (push) Has been cancelled
CI / Rust Check (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
CI / E2E Tests (push) Has been cancelled
refactor: 统一Hands系统常量到单个源文件 refactor: 更新Hands中文名称和描述 fix: 修复技能市场在连接状态变化时重新加载 fix: 修复身份变更提案的错误处理逻辑 docs: 更新多个功能文档的验证状态和实现位置 docs: 更新Hands系统文档 test: 添加测试文件验证工作区路径
This commit is contained in:
@@ -3,7 +3,9 @@
|
||||
> **分类**: Tauri 后端
|
||||
> **优先级**: P0 - 决定性
|
||||
> **成熟度**: L4 - 生产
|
||||
> **最后更新**: 2026-03-22
|
||||
> **最后更新**: 2026-03-24
|
||||
> **验证状态**: ✅ 代码已验证
|
||||
> **架构**: 内部 Kernel,无需外部进程
|
||||
|
||||
---
|
||||
|
||||
@@ -11,7 +13,7 @@
|
||||
|
||||
### 1.1 基本信息
|
||||
|
||||
ZCLAW Kernel 集成模块是 Tauri 后端的核心,负责与内部 ZCLAW Kernel 的集成,包括 Agent 生命周期管理、消息处理、模型配置等。
|
||||
ZCLAW Kernel 集成模块是 Tauri 后端的核心,负责与内部 ZCLAW Kernel 的集成,包括 Agent 生命周期管理、消息处理、模型配置、流式响应等。
|
||||
|
||||
| 属性 | 值 |
|
||||
|------|-----|
|
||||
@@ -19,13 +21,19 @@ ZCLAW Kernel 集成模块是 Tauri 后端的核心,负责与内部 ZCLAW Kerne
|
||||
| 优先级 | P0 |
|
||||
| 成熟度 | L4 |
|
||||
| 依赖 | Tauri Runtime, zclaw-kernel crate |
|
||||
| Tauri 命令数 | 100+ |
|
||||
|
||||
### 1.2 相关文件
|
||||
|
||||
| 文件 | 路径 | 用途 |
|
||||
|------|------|------|
|
||||
| Kernel 命令 | `desktop/src-tauri/src/kernel_commands.rs` | Tauri 命令封装 |
|
||||
| Kernel 状态 | `desktop/src-tauri/src/lib.rs` | Kernel 初始化 |
|
||||
| 主入口 | `desktop/src-tauri/src/lib.rs` | 命令注册、状态初始化 |
|
||||
| Kernel 命令 | `desktop/src-tauri/src/kernel_commands.rs` | Kernel 命令封装 |
|
||||
| 智能层命令 | `desktop/src-tauri/src/intelligence/` | 智能层 Tauri 命令 |
|
||||
| Memory 命令 | `desktop/src-tauri/src/memory_commands.rs` | 内存管理命令 |
|
||||
| Browser 命令 | `desktop/src-tauri/src/browser/` | Browser Hand 实现 |
|
||||
| MCP 协议 | `desktop/src-tauri/src/mcp/` | MCP JSON-RPC 实现 |
|
||||
| LLM 模块 | `desktop/src-tauri/src/llm/` | LLM Driver 实现 |
|
||||
| Kernel 配置 | `crates/zclaw-kernel/src/config.rs` | 配置结构定义 |
|
||||
| Kernel 实现 | `crates/zclaw-kernel/src/lib.rs` | Kernel 核心实现 |
|
||||
|
||||
@@ -111,21 +119,224 @@ ZCLAW Kernel 集成模块是 Tauri 后端的核心,负责与内部 ZCLAW Kerne
|
||||
|
||||
### 2.3 Crate 依赖
|
||||
|
||||
ZCLAW Rust Workspace 包含 8 个 crate,采用分层架构:
|
||||
|
||||
```
|
||||
zclaw-types
|
||||
↑
|
||||
zclaw-memory
|
||||
↑
|
||||
zclaw-runtime
|
||||
↑
|
||||
zclaw-kernel
|
||||
↑
|
||||
desktop/src-tauri
|
||||
┌─────────────┐
|
||||
│ zclaw-types │ (L1 - 基础类型)
|
||||
└──────┬──────┘
|
||||
│
|
||||
┌────────────────┼────────────────┐
|
||||
│ │ │
|
||||
▼ ▼ ▼
|
||||
┌─────────────┐ ┌──────────────┐ ┌────────────────┐
|
||||
│zclaw-memory │ │zclaw-runtime │ │zclaw-protocols │
|
||||
│(L2-存储层) │ │(L3-LLM运行时)│ │(MCP/A2A协议) │
|
||||
└──────┬──────┘ └──────┬───────┘ └───────┬────────┘
|
||||
│ │ │
|
||||
└────────────────┼──────────────────┘
|
||||
│
|
||||
▼
|
||||
┌─────────────┐
|
||||
│zclaw-kernel │ (L4 - 核心协调器)
|
||||
└──────┬──────┘
|
||||
│
|
||||
┌──────────────────┼──────────────────┐
|
||||
│ │ │
|
||||
▼ ▼ ▼
|
||||
┌─────────────┐ ┌─────────────┐ ┌───────────────┐
|
||||
│zclaw-skills │ │ zclaw-hands │ │zclaw-channels │
|
||||
│(技能系统) │ │(自主能力) │ │(通道适配器) │
|
||||
└─────────────┘ └─────────────┘ └───────────────┘
|
||||
```
|
||||
|
||||
### 2.4 各 Crate 职责
|
||||
|
||||
| Crate | 层级 | 职责 | 主要模块 |
|
||||
|-------|------|------|---------|
|
||||
| zclaw-types | L1 | 基础类型 | AgentId, Message, Error, Capability, Event |
|
||||
| zclaw-memory | L2 | SQLite 存储层 | Session 持久化, KV Store, Schema |
|
||||
| zclaw-runtime | L3 | LLM 运行时 | Driver 抽象, Tool Registry, AgentLoop, LoopGuard |
|
||||
| zclaw-protocols | L3 | 协议支持 | MCP JSON-RPC, A2A Agent-to-Agent |
|
||||
| zclaw-kernel | L4 | 核心协调 | Agent 注册/调度, EventBus, Director, SkillRegistry |
|
||||
| zclaw-skills | L5 | 技能系统 | SKILL.md 解析, SkillRunner, execute_skill |
|
||||
| zclaw-hands | L5 | 自主能力 | Hand trait, Trigger 系统, 9 个 Hand 实现 |
|
||||
| zclaw-channels | L5 | 通道适配器 | Telegram, Discord, Slack, Console |
|
||||
|
||||
### 2.5 核心工具实现
|
||||
|
||||
| 工具 | 路径 | 功能 | 状态 |
|
||||
|------|------|------|------|
|
||||
| execute_skill | `crates/zclaw-runtime/src/tool/builtin/execute_skill.rs` | 动态执行 SKILL.md 技能 | ✅ 已实现 |
|
||||
| file_read | `crates/zclaw-runtime/src/tool/builtin/file_read.rs` | 文件读取 | ✅ 已实现 |
|
||||
| file_write | `crates/zclaw-runtime/src/tool/builtin/file_write.rs` | 文件写入 | ✅ 已实现 |
|
||||
| shell_exec | `crates/zclaw-runtime/src/tool/builtin/shell_exec.rs` | Shell 命令执行 | ✅ 已实现 |
|
||||
| web_fetch | `crates/zclaw-runtime/src/tool/builtin/web_fetch.rs` | 网页抓取 | ✅ 已实现 |
|
||||
|
||||
---
|
||||
|
||||
## 六、Tauri 命令分类
|
||||
|
||||
### 6.1 内部 Kernel 命令 (推荐)
|
||||
|
||||
| 命令 | 说明 | 状态 |
|
||||
|------|------|------|
|
||||
| `kernel_init` | 初始化内部 Kernel | ✅ |
|
||||
| `kernel_status` | 获取 Kernel 状态 | ✅ |
|
||||
| `kernel_shutdown` | 关闭 Kernel | ✅ |
|
||||
| `agent_create` | 创建 Agent | ✅ |
|
||||
| `agent_list` | 列出所有 Agent | ✅ |
|
||||
| `agent_get` | 获取 Agent 详情 | ✅ |
|
||||
| `agent_delete` | 删除 Agent | ✅ |
|
||||
| `agent_chat` | 发送消息 (同步) | ✅ |
|
||||
| `agent_chat_stream` | 发送消息 (流式) | ✅ |
|
||||
| `skill_list` | 列出技能 | ✅ |
|
||||
| `skill_refresh` | 刷新技能目录 | ✅ |
|
||||
| `skill_execute` | 执行技能 | ✅ |
|
||||
| `hand_list` | 列出 Hands | ✅ |
|
||||
| `hand_execute` | 执行 Hand | ✅ |
|
||||
|
||||
### 6.2 记忆系统命令
|
||||
|
||||
| 命令 | 说明 | 状态 |
|
||||
|------|------|------|
|
||||
| `memory_init` | 初始化记忆存储 | ✅ |
|
||||
| `memory_store` | 存储记忆 | ✅ |
|
||||
| `memory_get` | 获取记忆 | ✅ |
|
||||
| `memory_search` | 搜索记忆 | ✅ |
|
||||
| `memory_delete` | 删除记忆 | ✅ |
|
||||
| `memory_stats` | 记忆统计 | ✅ |
|
||||
| `memory_export` | 导出记忆 | ✅ |
|
||||
| `memory_import` | 导入记忆 | ✅ |
|
||||
|
||||
### 6.3 智能层命令
|
||||
|
||||
**心跳引擎:**
|
||||
| 命令 | 说明 |
|
||||
|------|------|
|
||||
| `heartbeat_init` | 初始化心跳 |
|
||||
| `heartbeat_start` | 启动心跳 |
|
||||
| `heartbeat_stop` | 停止心跳 |
|
||||
| `heartbeat_tick` | 手动触发 |
|
||||
| `heartbeat_get_config` | 获取配置 |
|
||||
|
||||
**上下文压缩:**
|
||||
| 命令 | 说明 |
|
||||
|------|------|
|
||||
| `compactor_estimate_tokens` | 估算 Token |
|
||||
| `compactor_check_threshold` | 检查阈值 |
|
||||
| `compactor_compact` | 执行压缩 |
|
||||
|
||||
**反思引擎:**
|
||||
| 命令 | 说明 |
|
||||
|------|------|
|
||||
| `reflection_init` | 初始化反思 |
|
||||
| `reflection_should_reflect` | 检查是否需要反思 |
|
||||
| `reflection_reflect` | 执行反思 |
|
||||
| `reflection_get_history` | 获取历史 |
|
||||
|
||||
**身份管理:**
|
||||
| 命令 | 说明 |
|
||||
|------|------|
|
||||
| `identity_get` | 获取身份文件 |
|
||||
| `identity_build_prompt` | 构建系统提示 |
|
||||
| `identity_propose_change` | 提出变更提案 |
|
||||
| `identity_approve_proposal` | 批准提案 |
|
||||
|
||||
### 6.4 浏览器自动化命令
|
||||
|
||||
| 命令 | 说明 | 状态 |
|
||||
|------|------|------|
|
||||
| `browser_create_session` | 创建会话 | ✅ |
|
||||
| `browser_navigate` | 导航 | ✅ |
|
||||
| `browser_click` | 点击 | ✅ |
|
||||
| `browser_type` | 输入 | ✅ |
|
||||
| `browser_screenshot` | 截图 | ✅ |
|
||||
| `browser_execute_script` | 执行 JS | ✅ |
|
||||
| `browser_scrape_page` | 抓取页面 | ✅ |
|
||||
|
||||
### 6.5 安全存储命令
|
||||
|
||||
| 命令 | 说明 | 状态 |
|
||||
|------|------|------|
|
||||
| `secure_store_set` | 存储密钥到 OS Keyring | ✅ |
|
||||
| `secure_store_get` | 从 Keyring 获取密钥 | ✅ |
|
||||
| `secure_store_delete` | 删除密钥 | ✅ |
|
||||
| `secure_store_is_available` | 检查 Keyring 可用性 | ✅ |
|
||||
|
||||
---
|
||||
|
||||
## 三、核心类型设计
|
||||
|
||||
### 3.1 消息类型 (Message)
|
||||
|
||||
```rust
|
||||
pub enum Message {
|
||||
User { content: String },
|
||||
Assistant { content: String, thinking: Option<String> },
|
||||
ToolUse { id: String, tool: ToolId, input: Value },
|
||||
ToolResult { tool_call_id: String, tool: ToolId, output: Value, is_error: bool },
|
||||
System { content: String },
|
||||
}
|
||||
```
|
||||
|
||||
### 3.2 能力系统 (Capability)
|
||||
|
||||
```rust
|
||||
pub enum Capability {
|
||||
ToolInvoke { name: String },
|
||||
ToolAll,
|
||||
MemoryRead { scope: String },
|
||||
MemoryWrite { scope: String },
|
||||
NetConnect { host: String },
|
||||
ShellExec { pattern: String },
|
||||
AgentSpawn,
|
||||
AgentMessage { pattern: String },
|
||||
AgentKill { pattern: String },
|
||||
OfpDiscover,
|
||||
OfpConnect { peer: String },
|
||||
OfpAdvertise,
|
||||
}
|
||||
```
|
||||
|
||||
### 3.3 流式响应 (StreamChunk)
|
||||
|
||||
```rust
|
||||
pub enum StreamChunk {
|
||||
TextDelta { delta: String },
|
||||
ThinkingDelta { delta: String },
|
||||
ToolUseStart { id: String, name: String },
|
||||
ToolUseDelta { id: String, delta: String },
|
||||
ToolUseEnd { id: String, input: Value },
|
||||
Complete { input_tokens: u32, output_tokens: u32, stop_reason: String },
|
||||
Error { message: String },
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 三、Tauri 命令
|
||||
## 四、关键设计模式
|
||||
|
||||
### 4.1 能力安全模型
|
||||
- 基于细粒度权限控制
|
||||
- `CapabilitySet` 检查工具调用、内存读写权限
|
||||
|
||||
### 4.2 异步 Trait 抽象
|
||||
- `LlmDriver` trait 支持多 Provider
|
||||
- `McpClient` trait 支持 MCP 协议
|
||||
- `A2aClient` trait 支持 Agent 间通信
|
||||
|
||||
### 4.3 并发数据结构
|
||||
- `DashMap` 用于无锁并发访问
|
||||
- `EventBus` 使用 broadcast channel
|
||||
|
||||
### 4.4 循环保护 (LoopGuard)
|
||||
- SHA256 检测重复工具调用
|
||||
- 防止 Agent 陷入无限循环
|
||||
|
||||
---
|
||||
|
||||
## 五、Tauri 命令
|
||||
|
||||
### 3.1 Kernel 命令
|
||||
|
||||
@@ -197,6 +408,7 @@ pub struct KernelConfigRequest {
|
||||
pub model: String, // 模型 ID
|
||||
pub api_key: Option<String>,
|
||||
pub base_url: Option<String>,
|
||||
pub api_protocol: String, // openai | anthropic
|
||||
}
|
||||
|
||||
/// Kernel 状态响应
|
||||
@@ -219,11 +431,13 @@ pub struct CreateAgentRequest {
|
||||
pub temperature: f32,
|
||||
}
|
||||
|
||||
/// Agent 创建响应
|
||||
pub struct CreateAgentResponse {
|
||||
pub id: String,
|
||||
pub name: String,
|
||||
pub state: String,
|
||||
/// 流式聊天事件 (通过 Tauri 事件发送)
|
||||
pub enum StreamChatEvent {
|
||||
Delta { delta: String },
|
||||
ToolStart { name: String, input: serde_json::Value },
|
||||
ToolEnd { name: String, output: serde_json::Value },
|
||||
Complete { input_tokens: u32, output_tokens: u32 },
|
||||
Error { message: String },
|
||||
}
|
||||
|
||||
/// 聊天请求
|
||||
@@ -404,7 +618,33 @@ impl KernelConfig {
|
||||
|
||||
## 六、前端集成
|
||||
|
||||
### 6.1 KernelClient
|
||||
### 6.1 双模式架构
|
||||
|
||||
前端支持两种通信模式:
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────┐
|
||||
│ 前端 (React + TypeScript) │
|
||||
├─────────────────────────────────────────────────────────────┤
|
||||
│ connectionStore.ts │
|
||||
│ ┌─────────────────┐ ┌─────────────────┐ │
|
||||
│ │ KernelClient │ │ GatewayClient │ │
|
||||
│ │ (Tauri invoke) │ │ (WebSocket) │ │
|
||||
│ └────────┬────────┘ └────────┬────────┘ │
|
||||
│ │ │ │
|
||||
└───────────┼──────────────────────┼────────────────────────────┘
|
||||
│ │
|
||||
┌───────▼───────┐ ┌──────▼──────┐
|
||||
│ Tauri IPC │ │ WebSocket │
|
||||
│ Commands │ │ / REST API │
|
||||
└───────┬───────┘ └──────┬──────┘
|
||||
│ │
|
||||
┌───────────▼─────────────────────▼───────────────────────────┐
|
||||
│ 后端 (Rust) │
|
||||
└─────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### 6.2 KernelClient
|
||||
|
||||
```typescript
|
||||
// desktop/src/lib/kernel-client.ts
|
||||
@@ -508,12 +748,17 @@ connect: async (url?: string, token?: string) => {
|
||||
### 8.1 已实现功能
|
||||
|
||||
- [x] 内部 Kernel 集成
|
||||
- [x] 多 LLM Provider 支持
|
||||
- [x] 多 LLM Provider 支持 (7+)
|
||||
- [x] UI 模型配置
|
||||
- [x] Agent 生命周期管理
|
||||
- [x] 消息发送和响应
|
||||
- [x] **流式响应 (Streaming)** - 通过 Tauri 事件 `stream:chunk`
|
||||
- [x] **MCP 协议支持** - JSON-RPC 传输层
|
||||
- [x] **Browser Hand** - Fantoccini WebDriver 集成
|
||||
- [x] **智能层后端** - Memory, Heartbeat, Reflection, Identity
|
||||
- [x] 连接状态管理
|
||||
- [x] 错误处理
|
||||
- [x] 安全存储 (OS Keyring)
|
||||
|
||||
### 8.2 测试覆盖
|
||||
|
||||
@@ -523,14 +768,48 @@ connect: async (url?: string, token?: string) => {
|
||||
|
||||
---
|
||||
|
||||
## 九、演化路线
|
||||
---
|
||||
|
||||
### 9.1 短期计划(1-2 周)
|
||||
- [ ] 添加真正的流式响应支持
|
||||
## 十、演化路线
|
||||
|
||||
### 10.1 発能层后端完成度
|
||||
|
||||
| 模块 | Phase | 状态 |
|
||||
|------|-------|------|
|
||||
| Memory System | Phase 1 | ✅ 完成 |
|
||||
| Heartbeat Engine | Phase 2 | ✅ 完成 |
|
||||
| Context Compactor | Phase 2 | ✅ 完成 |
|
||||
| Reflection Engine | Phase 3 | ✅ 完成 |
|
||||
| Agent Identity | Phase 3 | ✅ 完成 |
|
||||
|
||||
### 10.2 短期计划(1-2 周)
|
||||
- [x] ~~添加真正的流式响应支持~~ ✅ 已完成
|
||||
- [ ] 完善 MCP 协议工具验证
|
||||
- [ ] Browser Hand 稳定性增强
|
||||
|
||||
### 10.3 中期计划(1-2 月)
|
||||
- [ ] Agent 持久化存储优化
|
||||
- [ ] 会话历史管理增强
|
||||
- [ ] 更多 Hand 能力实现
|
||||
|
||||
- [ ] 多 Agent 并发支持
|
||||
|
||||
### 10.4 长期愿景
|
||||
- [ ] 多 Agent 并发支持
|
||||
- [ ] Agent 间通信
|
||||
- [ ] 工作流引擎集成
|
||||
- [ ] 分布式 Kernel 支持
|
||||
|
||||
---
|
||||
|
||||
**最后更新**: 2026-03-24### 9.1 短期计划(1-2 周)
|
||||
- [x] ~~添加真正的流式响应支持~~ ✅ 已完成
|
||||
- [ ] 完善 MCP 协议工具验证
|
||||
|
||||
### 9.2 中期计划(1-2 月)
|
||||
- [ ] Agent 持久化存储
|
||||
- [ ] 会话历史管理
|
||||
- [ ] 更多 Hand 能力实现
|
||||
|
||||
### 9.3 长期愿景
|
||||
- [ ] 多 Agent 并发支持
|
||||
@@ -539,4 +818,4 @@ connect: async (url?: string, token?: string) => {
|
||||
|
||||
---
|
||||
|
||||
**最后更新**: 2026-03-22
|
||||
**最后更新**: 2026-03-24
|
||||
|
||||
Reference in New Issue
Block a user