## Major Features ### Streaming Response System - Implement LlmDriver trait with `stream()` method returning async Stream - Add SSE parsing for Anthropic and OpenAI API streaming - Integrate Tauri event system for frontend streaming (`stream:chunk` events) - Add StreamChunk types: Delta, ToolStart, ToolEnd, Complete, Error ### MCP Protocol Implementation - Add MCP JSON-RPC 2.0 types (mcp_types.rs) - Implement stdio-based MCP transport (mcp_transport.rs) - Support tool discovery, execution, and resource operations ### Browser Hand Implementation - Complete browser automation with Playwright-style actions - Support Navigate, Click, Type, Scrape, Screenshot, Wait actions - Add educational Hands: Whiteboard, Slideshow, Speech, Quiz ### Security Enhancements - Implement command whitelist/blacklist for shell_exec tool - Add SSRF protection with private IP blocking - Create security.toml configuration file ## Test Improvements - Fix test import paths (security-utils, setup) - Fix vi.mock hoisting issues with vi.hoisted() - Update test expectations for validateUrl and sanitizeFilename - Add getUnsupportedLocalGatewayStatus mock ## Documentation Updates - Update architecture documentation - Improve configuration reference - Add quick-start guide updates Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
277 lines
11 KiB
Markdown
277 lines
11 KiB
Markdown
# ZCLAW 自我进化功能实现计划
|
||
|
||
> **目标**: 让 ZCLAW 具备 OpenClaw 式的"自我进化"能力,让用户感受到 Agent 能够自我设置人格、持续学习改进。
|
||
|
||
---
|
||
|
||
## Context(背景)
|
||
|
||
### 用户反馈
|
||
> "没有 OpenClaw 那样懂得如何对自己进行人格设置,没有那种自我进化的感觉"
|
||
|
||
### 当前状态分析
|
||
|
||
**已实现(代码存在但体验不连贯)**:
|
||
| 功能 | 文件 | 状态 |
|
||
|------|------|------|
|
||
| 记忆系统 | `intelligence-client.ts` | ✅ L4 完成 |
|
||
| 反思引擎 | `intelligence-backend.ts:312-339` | ✅ L4 完成 |
|
||
| 自主授权 | `intelligence-backend.ts:352-433` | ✅ L4 完成 |
|
||
| 人格预设 | `personality-presets.ts` | ✅ 4种预设 |
|
||
| 引导向导 | `AgentOnboardingWizard.tsx` | ✅ 5步向导 |
|
||
| SOUL.md 生成 | `generateSoulContent()` | ⚠️ 只返回字符串,不写入文件 |
|
||
|
||
**核心问题** ~~(已全部解决 2025-03-24)~~:
|
||
1. ~~SOUL.md 生成后**不会写入文件系统**~~ ✅ 已解决
|
||
2. ~~反思结果**不会触发人格更新**~~ ✅ 已解决
|
||
3. ~~用户**无法审批/回滚人格变更**~~ ✅ 已解决
|
||
4. ~~缺少**人格演化历史可视化**~~ ✅ 已解决
|
||
5. ~~身份数据重启后丢失~~ ✅ 已解决(添加文件系统持久化)
|
||
|
||
---
|
||
|
||
## Part 1: 文档更新
|
||
|
||
### 1.1 需要创建的文档
|
||
|
||
| 优先级 | 文档路径 | 内容 |
|
||
|--------|----------|------|
|
||
| P0 | `docs/features/02-intelligence-layer/01-identity-evolution.md` | 身份演化系统设计 |
|
||
| P0 | `docs/features/02-intelligence-layer/04-heartbeat-engine.md` | 心跳巡检机制 |
|
||
| P0 | `docs/features/02-intelligence-layer/06-context-compaction.md` | 上下文压缩 |
|
||
|
||
### 1.2 需要更新的文档
|
||
|
||
| 优先级 | 文档路径 | 更新内容 |
|
||
|--------|----------|----------|
|
||
| P0 | `docs/ZCLAW_AGENT_INTELLIGENCE_EVOLUTION.md` | Phase 3-4 状态改为"已完成",添加自我进化 UX 章节 |
|
||
| P1 | `docs/features/roadmap.md` | 添加自我进化功能到路线图 |
|
||
|
||
---
|
||
|
||
## Part 2: 自我进化功能架构
|
||
|
||
```
|
||
┌─────────────────────────────────────────────────────────────┐
|
||
│ Self-Evolution Flow │
|
||
├─────────────────────────────────────────────────────────────┤
|
||
│ │
|
||
│ ┌──────────┐ ┌───────────┐ ┌──────────────────┐ │
|
||
│ │ 对话历史 │───▶│ 反思引擎 │───▶│ 人格变更提案 │ │
|
||
│ │ │ │ │ │ (SOUL.md delta) │ │
|
||
│ └──────────┘ └───────────┘ └────────┬─────────┘ │
|
||
│ │ │
|
||
│ ▼ │
|
||
│ ┌──────────┐ ┌───────────┐ ┌──────────────────┐ │
|
||
│ │ 更新后的 │◀───│ 用户审批 │◀───│ 审批 UI │ │
|
||
│ │ SOUL.md │ │ │ │ (变更对比) │ │
|
||
│ └──────────┘ └───────────┘ └──────────────────┘ │
|
||
│ │ │
|
||
│ ▼ │
|
||
│ ┌──────────────────────────────────────────────────┐ │
|
||
│ │ 演化历史 │ │
|
||
│ │ - 时间戳快照 │ │
|
||
│ │ - 差异可视化 │ │
|
||
│ │ - 回滚能力 │ │
|
||
│ └──────────────────────────────────────────────────┘ │
|
||
│ │
|
||
└─────────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
---
|
||
|
||
## Part 3: 实现计划
|
||
|
||
### P0: 立即实现(快速见效) ✅ 已完成
|
||
|
||
#### P0.1: 连接 Onboarding 到 SOUL.md 持久化 ✅ 已完成
|
||
|
||
**目标**: 让人格选择真正写入文件
|
||
|
||
**修改文件**: `desktop/src/components/AgentOnboardingWizard.tsx`
|
||
|
||
**实现步骤**:
|
||
```typescript
|
||
// 在 handleSubmit() 中,创建 clone 后:
|
||
const soulContent = generateSoulContent({
|
||
agentName: formData.agentName,
|
||
emoji: formData.emoji,
|
||
personality: formData.personality,
|
||
scenarios: formData.scenarios,
|
||
});
|
||
await intelligenceClient.identity.updateFile(clone.id, 'soul', soulContent);
|
||
```
|
||
|
||
**验证**: 完成引导后检查 `~/.zclaw/agents/{agentId}/SOUL.md` 是否存在
|
||
|
||
---
|
||
|
||
#### P0.2: 创建缺失的智能层文档
|
||
|
||
**目标**: 文档化已实现的功能
|
||
|
||
**创建文件**:
|
||
1. `docs/features/02-intelligence-layer/01-identity-evolution.md`
|
||
2. `docs/features/02-intelligence-layer/04-heartbeat-engine.md`
|
||
3. `docs/features/02-intelligence-layer/06-context-compaction.md`
|
||
|
||
---
|
||
|
||
### P1: 核心自我进化功能 ✅ 已完成
|
||
|
||
#### P1.1: 人格变更提案 UI ✅ 已完成
|
||
|
||
**目标**: 展示人格变更供用户审批
|
||
|
||
**新建文件**:
|
||
- `desktop/src/components/IdentityChangeProposal.tsx` - 差异视图 + 接受/拒绝按钮
|
||
- `desktop/src/components/EvolutionHistory.tsx` - 变更时间线
|
||
|
||
**修改文件**:
|
||
- `desktop/src/components/RightPanel.tsx` - 添加 'evolution' tab
|
||
|
||
---
|
||
|
||
#### P1.2: 连接反思引擎到人格提案 ✅ 已完成
|
||
|
||
**目标**: 自动生成人格变更建议
|
||
|
||
**修改文件**:
|
||
- `desktop/src/lib/intelligence-backend.ts` - 增强 `reflection.reflect()` 生成提案
|
||
- `desktop/src/domains/intelligence/store.ts` - 添加提案状态管理
|
||
|
||
**实现逻辑**:
|
||
1. 反思运行后分析模式
|
||
2. 如果模式表明需要人格变更(如"用户偏好简洁回复"):
|
||
- 生成 SOUL.md 修改建议
|
||
- 调用 `identity.proposeChange()`
|
||
3. 通知用户有待审批的提案
|
||
|
||
---
|
||
|
||
#### P1.3: 演化历史与回滚 ✅ 已完成
|
||
|
||
**目标**: 让用户查看和回滚人格变更
|
||
|
||
**新建文件**:
|
||
- `desktop/src/components/PersonalityVersionControl.tsx`
|
||
|
||
**实现**:
|
||
1. 每次 `identity.updateFile()` 前创建快照
|
||
2. 存储快照(时间戳 + 原因)
|
||
3. UI 显示变更时间线
|
||
4. 用户点击"恢复"可回滚
|
||
|
||
---
|
||
|
||
### P2: 增强体验 ✅ 已完成
|
||
|
||
#### P2.1: 主动人格建议 ✅ 已完成
|
||
|
||
**目标**: Agent 主动建议人格改进
|
||
|
||
**触发条件**:
|
||
- 用户重复纠正("不要那么啰嗦")
|
||
- 发现新偏好
|
||
- 上下文变化(新项目、不同角色)
|
||
|
||
**实现**: 心跳巡检时检测,达到阈值后排队提案
|
||
|
||
---
|
||
|
||
## Part 4: 关键文件清单
|
||
|
||
| 文件 | 修改类型 | 说明 |
|
||
|------|----------|------|
|
||
| `desktop/src/components/AgentOnboardingWizard.tsx` | 修改 | 添加 SOUL.md 持久化 |
|
||
| `desktop/src/lib/intelligence-client.ts` | 修改 | 确保 identity.updateFile() 正常工作 |
|
||
| `desktop/src/lib/intelligence-backend.ts` | 修改 | 反思→人格提案连接 |
|
||
| `desktop/src/components/RightPanel.tsx` | 修改 | 添加 evolution tab |
|
||
| `desktop/src/components/IdentityChangeProposal.tsx` | 新建 | 人格变更审批 UI |
|
||
| `desktop/src/components/EvolutionHistory.tsx` | 新建 | 演化历史时间线 |
|
||
| `docs/features/02-intelligence-layer/01-identity-evolution.md` | 新建 | 身份演化文档 |
|
||
|
||
---
|
||
|
||
## Part 5: 验证计划
|
||
|
||
### 用户体验验证
|
||
|
||
| 场景 | 预期结果 |
|
||
|------|----------|
|
||
| 完成引导向导 | SOUL.md 创建,包含选定人格 |
|
||
| Agent 反思对话 | 生成人格变更提案 |
|
||
| 用户批准提案 | SOUL.md 更新,创建快照 |
|
||
| 用户查看演化历史 | 显示时间线和差异 |
|
||
| 用户点击回滚 | 人格恢复到之前版本 |
|
||
|
||
### 技术验证
|
||
|
||
| 测试 | 命令 |
|
||
|------|------|
|
||
| 类型检查 | `pnpm tsc --noEmit` |
|
||
| 单元测试 | `pnpm vitest run` |
|
||
| E2E 测试 | `pnpm playwright test --project=tauri` |
|
||
|
||
---
|
||
|
||
## 实现优先级总结
|
||
|
||
| 优先级 | 任务 | 状态 |
|
||
|--------|------|------|
|
||
| P0.1 | SOUL.md 持久化 | ✅ 已完成 |
|
||
| P0.2 | 创建文档 | ✅ 已完成 |
|
||
| P1.1 | 人格变更 UI | ✅ 已完成 |
|
||
| P1.2 | 反思→人格连接 | ✅ 已完成 |
|
||
| P1.3 | 演化历史回滚 | ✅ 已完成 |
|
||
| P2.1 | 主动建议 | ✅ 已完成 |
|
||
| 额外 | 身份数据持久化 | ✅ 已完成 |
|
||
| 额外 | 错误反馈 UI | ✅ 已完成 |
|
||
| 额外 | 配置 localStorage 持久化 | ✅ 已完成 |
|
||
| 深度分析 | Fallback 反思引擎实现 | ✅ 已完成 |
|
||
| 深度分析 | 心跳人格改进检查实现 | ✅ 已完成 |
|
||
| 深度分析 | 心跳引擎自动启动 | ✅ 已完成 |
|
||
| 深度分析 | Fallback identity localStorage | ✅ 已完成 |
|
||
| 深度分析 | 配置默认值统一 | ✅ 已完成 |
|
||
|
||
**计划状态**: ✅ 全部完成 (2025-03-24)
|
||
|
||
---
|
||
|
||
## 深度分析修复记录 (2025-03-24)
|
||
|
||
### 发现的问题
|
||
|
||
| 优先级 | 问题 | 描述 |
|
||
|--------|------|------|
|
||
| CRITICAL | Fallback 反思引擎不产生提案 | `fallbackReflection.reflect()` 返回空数组 |
|
||
| HIGH | 心跳人格改进检查是占位符 | `check_personality_improvement()` 返回 None |
|
||
| HIGH | 心跳引擎未自动启动 | 需要手动调用 `heartbeat.start()` |
|
||
| MEDIUM | Fallback identity 不持久化 | 内存中的 Map,页面刷新后丢失 |
|
||
| LOW | 配置默认值不一致 | Rust: `allow_soul_modification: false`, TS: `true` |
|
||
|
||
### 修复内容
|
||
|
||
1. **Fallback 反思引擎** (`intelligence-client.ts:403-555`)
|
||
- 实现完整的模式分析逻辑
|
||
- 基于记忆类型、重要性、访问频率生成模式观察
|
||
- 自动生成改进建议和人格变更提案
|
||
|
||
2. **心跳人格改进检查** (`heartbeat.rs:330-460`)
|
||
- 添加 `CORRECTION_COUNTERS` 全局状态
|
||
- 实现 `record_user_correction()` 公共 API
|
||
- 基于用户纠正阈值触发人格改进建议
|
||
|
||
3. **心跳引擎自动启动** (`App.tsx:160-170`)
|
||
- 在应用 bootstrap 阶段自动初始化心跳引擎
|
||
- 使用默认配置启动 `zclaw-main` agent
|
||
|
||
4. **Fallback identity localStorage** (`intelligence-client.ts:558-680`)
|
||
- 添加 `IDENTITY_STORAGE_KEY` 和 `PROPOSALS_STORAGE_KEY`
|
||
- 所有修改操作后自动保存到 localStorage
|
||
- 启动时从 localStorage 加载已保存数据
|
||
|
||
5. **配置默认值统一** (`reflection.rs:41-51`)
|
||
- Rust `allow_soul_modification` 默认值改为 `true`
|
||
- 与 TypeScript 保持一致
|