feat(skill-execution): implement execute_skill tool with full execution chain
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
- Add ExecuteSkillTool for LLM to call skills during conversation - Implement SkillExecutor trait in Kernel for skill execution - Update AgentLoop to support tool execution with skill_executor - Add default skills_dir configuration in KernelConfig - Connect frontend skillMarketStore to backend skill_list command - Update technical documentation with Skill system architecture Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
# ZCLAW Kernel 技术参考文档
|
||||
|
||||
> **文档版本**: v2.0
|
||||
> **更新日期**: 2026-03-22
|
||||
> **文档版本**: v2.1
|
||||
> **更新日期**: 2026-03-24
|
||||
> **目标**: 为 ZCLAW 内部 Kernel 架构提供技术参考
|
||||
|
||||
---
|
||||
@@ -507,6 +507,66 @@ impl KernelConfig {
|
||||
}
|
||||
```
|
||||
|
||||
### 6.5 自我进化系统
|
||||
|
||||
ZCLAW 内置自我进化能力,通过四个核心组件实现:
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────┐
|
||||
│ 自我进化数据流 │
|
||||
├─────────────────────────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ 对话 ──► 记忆存储 ──► 反思引擎 ──► 提案生成 ──► 用户审批 │
|
||||
│ │ │
|
||||
│ ▼ │
|
||||
│ 心跳引擎 (定期检查) │
|
||||
│ │ │
|
||||
│ ▼ │
|
||||
│ 人格改进 / 学习机会 / 任务积压 │
|
||||
│ │
|
||||
└─────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
**核心文件**:
|
||||
|
||||
| 组件 | 后端文件 | 前端文件 |
|
||||
|------|----------|----------|
|
||||
| 心跳引擎 | `intelligence/heartbeat.rs` | `intelligence-client.ts` |
|
||||
| 反思引擎 | `intelligence/reflection.rs` | `intelligence-client.ts` |
|
||||
| 身份管理 | `intelligence/identity.rs` | `intelligence-client.ts` |
|
||||
| 记忆存储 | `memory/persistent.rs` | `intelligence-client.ts` |
|
||||
|
||||
**心跳检查函数**:
|
||||
|
||||
```rust
|
||||
// heartbeat.rs
|
||||
fn check_pending_tasks(agent_id: &str) -> Option<HeartbeatAlert>; // 任务积压
|
||||
fn check_memory_health(agent_id: &str) -> Option<HeartbeatAlert>; // 存储健康
|
||||
fn check_correction_patterns(agent_id: &str) -> Vec<HeartbeatAlert>; // 纠正模式
|
||||
fn check_learning_opportunities(agent_id: &str) -> Option<HeartbeatAlert>; // 学习机会
|
||||
fn check_idle_greeting(agent_id: &str) -> Option<HeartbeatAlert>; // 空闲问候
|
||||
```
|
||||
|
||||
**关键注意事项**:
|
||||
|
||||
1. **DateTime 类型转换**: `chrono::DateTime::parse_from_rfc3339()` 返回 `DateTime<FixedOffset>`,需要转换为 `DateTime<Utc>` 才能与 `chrono::Utc::now()` 计算时间差:
|
||||
```rust
|
||||
let last_time = chrono::DateTime::parse_from_rfc3339(×tamp)
|
||||
.ok()?
|
||||
.with_timezone(&chrono::Utc); // 必须转换时区
|
||||
```
|
||||
|
||||
2. **API 参数命名**: 前端调用 Tauri 命令时使用 snake_case 参数名:
|
||||
```typescript
|
||||
await invoke('heartbeat_update_memory_stats', {
|
||||
agent_id: agentId, // 不是 agentId
|
||||
task_count: taskCount, // 不是 taskCount
|
||||
// ...
|
||||
});
|
||||
```
|
||||
|
||||
3. **MemoryStats 类型**: 后端使用 `total_entries`,前端转换为 `totalEntries`
|
||||
|
||||
---
|
||||
|
||||
## 七、Tauri 集成
|
||||
@@ -734,22 +794,113 @@ pnpm test:e2e
|
||||
|
||||
---
|
||||
|
||||
## 十一、参考资料
|
||||
## 十一、Skill 系统架构
|
||||
|
||||
### 11.1 相关文档
|
||||
### 11.1 概述
|
||||
|
||||
Skill 系统是 ZCLAW 的可扩展技能框架,允许通过 `SKILL.md` 或 `skill.toml` 文件定义和加载技能。
|
||||
|
||||
### 11.2 核心组件
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────┐
|
||||
│ Skill 系统架构 │
|
||||
├─────────────────────────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ zclaw-skills/ │
|
||||
│ ├── SkillManifest # 技能元数据 │
|
||||
│ ├── SkillContext # 执行上下文 (agent_id, session_id) │
|
||||
│ ├── SkillResult # 执行结果 │
|
||||
│ ├── SkillRegistry # 技能注册表 │
|
||||
│ ├── SkillLoader # SKILL.md/skill.toml 解析 │
|
||||
│ └── SkillRunner # 执行器 (PromptOnly/Shell) │
|
||||
│ │
|
||||
│ zclaw-runtime/ │
|
||||
│ ├── ExecuteSkillTool # execute_skill 工具 │
|
||||
│ ├── SkillExecutor # 技能执行 trait │
|
||||
│ └── ToolContext # 包含 skill_executor │
|
||||
│ │
|
||||
│ zclaw-kernel/ │
|
||||
│ ├── KernelSkillExecutor # SkillExecutor 实现 │
|
||||
│ └── default_skills_dir # 默认 ./skills 目录 │
|
||||
│ │
|
||||
└─────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### 11.3 数据流
|
||||
|
||||
```
|
||||
LLM 调用 execute_skill 工具
|
||||
↓
|
||||
AgentLoop.execute_tool()
|
||||
↓
|
||||
ExecuteSkillTool.execute()
|
||||
↓
|
||||
ToolContext.skill_executor.execute_skill()
|
||||
↓
|
||||
KernelSkillExecutor.execute_skill()
|
||||
↓
|
||||
SkillRegistry.execute()
|
||||
↓
|
||||
返回结果给 LLM
|
||||
```
|
||||
|
||||
### 11.4 Tauri 命令
|
||||
|
||||
| 命令 | 说明 |
|
||||
|------|------|
|
||||
| `skill_list` | 列出所有已加载的技能 |
|
||||
| `skill_execute` | 执行指定技能 |
|
||||
| `skill_refresh` | 刷新技能目录 |
|
||||
|
||||
### 11.5 前端集成
|
||||
|
||||
```typescript
|
||||
// 从后端加载技能列表
|
||||
const skills = await invoke('skill_list');
|
||||
|
||||
// 执行技能
|
||||
const result = await invoke('skill_execute', {
|
||||
id: 'skill-id',
|
||||
context: { agentId: '...', sessionId: '...', workingDir: null },
|
||||
input: { ... }
|
||||
});
|
||||
```
|
||||
|
||||
### 11.6 技能发现
|
||||
|
||||
1. Kernel 启动时扫描 `./skills` 目录
|
||||
2. 查找 `SKILL.md` 或 `skill.toml` 文件
|
||||
3. 解析 frontmatter 元数据
|
||||
4. 注册到 SkillRegistry
|
||||
|
||||
### 11.7 已知限制
|
||||
|
||||
| 限制 | 说明 |
|
||||
|------|------|
|
||||
| Python/WASM 模式 | 未实现,回退到 PromptOnly |
|
||||
| Frontmatter 解析 | 仅支持简单 `key: value` 格式 |
|
||||
| 模式字符串 | `"PromptOnly"` 而非 `"prompt_only"` |
|
||||
|
||||
---
|
||||
|
||||
## 十二、参考资料
|
||||
|
||||
### 12.1 相关文档
|
||||
|
||||
- [快速启动指南](../quick-start.md)
|
||||
- [模型配置指南](./configuration.md)
|
||||
- [通信层文档](../features/00-architecture/01-communication-layer.md)
|
||||
- [后端集成文档](../features/06-tauri-backend/00-backend-integration.md)
|
||||
|
||||
### 11.2 架构演进
|
||||
### 12.2 架构演进
|
||||
|
||||
| 版本 | 架构 | 说明 |
|
||||
|------|------|------|
|
||||
| v1.x | 外部 OpenFang | 需要启动独立后端进程 |
|
||||
| v2.0 | 内部 Kernel | Kernel 集成在 Tauri 中,无需外部进程 |
|
||||
| v2.1 | Skill 工具执行 | 完整的 execute_skill 工具链路 |
|
||||
|
||||
---
|
||||
|
||||
*文档版本: v2.0 | 更新日期: 2026-03-22*
|
||||
*文档版本: v2.1 | 更新日期: 2026-03-24*
|
||||
|
||||
Reference in New Issue
Block a user