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

- 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:
iven
2026-03-24 13:24:23 +08:00
parent 1441f98c5e
commit 504d5746aa
8 changed files with 698 additions and 131 deletions

View File

@@ -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(&timestamp)
.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*