- Create docs/README.md as documentation index - Add WORK_SUMMARY_2026-03-16.md for today's work - Move test reports to docs/test-reports/ - Move completed plans to docs/archive/completed-plans/ - Move research reports to docs/archive/research-reports/ - Move technical reference to docs/knowledge-base/ - Move all plans from root plans/ to docs/plans/ New structure: docs/ ├── README.md # Documentation index ├── DEVELOPMENT.md # Development guide ├── OPENVIKING_INTEGRATION.md # OpenViking integration ├── USER_MANUAL.md # User manual ├── ZCLAW_AGENT_INTELLIGENCE_EVOLUTION.md ├── archive/ # Archived documents ├── knowledge-base/ # Technical knowledge ├── plans/ # Execution plans └── test-reports/ # Test reports Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
6.4 KiB
ZClaw 改进方案:从"前端 UI 演示"升级为"真正的 OpenClaw Runtime 控制界面"
日期: 2026-03-12
状态: 规划中
背景分析
当前状态
经过对代码库的深入分析,发现以下关键差距:
1. 分身与 Agent 断层
- 现状: 分身存储在
zclaw-data.json(ZCLAW 自定义格式) - 问题: 不映射到 OpenClaw 原生
agents.list配置 - 影响: 聊天时不所有分身共用
mainAgent - 表现: Bootstrap 文件生成了但可能未被 Agent 运行时使用
关键代码位置:
desktop/src/components/CloneManager.tsx: 分身 CRUD 界面desktop/src/store/chatStore.ts:currentAgent只存前端状态plugins/zclaw-ui/index.ts: 分身存储在zclaw-data.json
2. 设置页是"假状态"
- 现状: 大部分设置只存 localStorage
- 问题: 没有调用 OpenClaw 的
config.get/config.patch/config.apply - 影响: 用户改了设置而 OpenClaw 运行时行为不变
关键代码位置:
desktop/src/components/Settings/*.tsx: 所有设置页面desktop/src/store/chatStore.ts:currentModel只存前端状态desktop/src/lib/gateway-client.ts: 缺少config.*RPC 方法
3. 右侧面板数据不真实
- 现状: 部分数据是硬编码默认值
- 问题: 没有显示真实 Agent 的运行时状态
- 影响: 用户看到的是演示数据,- 表现: Bootstrap 文件生成了但可能未被 Agent 运行时使用
P0: 最小可行改进 - 让分身真正工作
目标
让分身系统真正映射到 OpenClaw Agent 实例,实现分身隔离(独立 Agent 会话)。
关键任务
1. 实现 Agent 同步机制
- 在
plugins/zclaw-ui/index.ts中:- 添加
zclaw.agents.syncRPC 方法 - 同步
zclaw-data.json的分身到agents.list - 为每个分身创建独立
agentDir
- 添加
- 在
desktop/src/lib/gateway-client.ts中:- 添加
agents.listRPC 方法封装 - 添加
agent.setRPC 方法封装
- 添加
2. 修改聊天逻辑
- 在
desktop/src/store/chatStore.ts中:- 添加
currentAgentId字段 - 修改
sendMessage传递agentId
- 添加
- 在
desktop/src/components/ChatArea.tsx中:- 聊天时显示当前分身信息
3. Agent 启动流程
-
创建分身时:
- 生成 Bootstrap 文件
- 同步到
agents.list - 重启 Agent 进程(如果需要)
-
切换分身时:
- 加载对应 Agent 的上下文
- 切换
agentId
技术挑战
-
OpenClaw Agent 进程管理: 隐式依赖 Gateway 的 Agent 启动机制
-
会话隔离: 需要验证 OpenClaw 是否支持
agentId参数 -
配置同步时机: 何时同步分身配置到 OpenClaw
-
错误处理: Agent 启动失败时的回退策略
验收标准
- 创建分身后能在 OpenClaw 的
agents.list中看到 - 切换分身后聊天时传递正确的
agentId - 不同分身的会话完全隔离
- Bootstrap 文件被 Agent 正确加载
- 分身配置修改后 Agent 行为相应变化
P1: 设置页 Runtime 化
目标
让设置页真正修改 OpenClaw Runtime 配置。
关键任务
1. GatewayClient 扩展
在 desktop/src/lib/gateway-client.ts 中添加:
async getConfig(path?: string): Promise<any>
async patchConfig(path: string, value: any): Promise<void>
async applyConfig(): Promise<void>
2. 设置页改造
模型与 API:
- 模型选择调用
patchConfig('agents.defaults.model', model) - 显示当前模型从
getConfig('agents.defaults.model')获取
MCP 服务:
- 读取:
getConfig('mcp') - 修改:
patchConfig('mcp.servers.*')
技能:
- 读取:
getConfig('skills') - 修改:
patchConfig('skills.load.extraDirs')
IM 频道:
- 读取:
getConfig('channels') - 修改:
patchConfig('channels.*')
工作区:
- 读取:
getConfig('agents.defaults.workspace') - 修改:
patchConfig('agents.defaults.workspace')
技术挑战
-
配置路径: OpenClaw 配置是嵌套结构,需要正确处理路径
-
配置验证: 修改前验证配置有效性
-
错误恢复: 配置修改失败时的回滚
-
UI 反馈: 配置修改时的加载状态
-
配置缓存: 避免频繁读取配置
验收标准
-
模型选择后聊天时使用新模型
-
MCP 开关后工具可用性变化
-
技能添加后 Agent 可调用
-
IM 频道配置后能收发消息
-
工作区修改后文件访问范围变化
-
配置修改后重启 Gateway 生效
P2: 完整的 Agent 管理系统
目标
实现完整的 Agent 生命周期管理。
关键任务
1. Agent 状态管理
在 desktop/src/store/chatStore.ts 中添加
interface AgentState {
id: string;
status: 'idle' | 'running' | 'error';
lastActive: Date;
sessionCount: number;
currentModel: string;
}
2. Agent 监控
在 plugins/zclaw-ui/index.ts 中添加
api.registerGatewayMethod('zclaw.agents.status', ({ respond }) => {
// 返回所有 Agent 的运行时状态
});
3. 右侧面板增强
在 desktop/src/components/RightPanel.tsx 中
- 显示真实 Agent 状态
- 显示运行时信息(当前任务、 使用的工具等)
- 显示会话历史
技术挑战
- 状态同步: 客户端状态与 Gateway 状态同步
- 性能: 大量 Agent 时的性能
- 错误处理: Agent 状态异常时的 UI 反馈
- 实时更新: 状态变化时的实时推送
验收标准
- Agent 状态实时显示
- 运行时信息准确
- 会话历史可查
- 错误状态有明确提示
- 性能满足要求(100 个 Agent)
P3: 产品化封装
目标
提供完整的桌面应用体验。
关键任务
1. Tauri Sidecar 管理
在 desktop/src-tauri/src/gateway.rs 中:
- 管理 Gateway 子进程生命周期
- 自动重启和错误恢复
- 配置管理和持久化
2. 首次启动体验
- 欢迎向导
- Gateway 连接配置
- 默认 Agent 创建
- 工作目录选择
3. 错误诊断
- 连接问题诊断
- 配置错误修复建议
- 日志查看工具
技术挑战
-
进程管理: 跨平台进程管理
-
权限: 文件系统访问权限
-
更新: 应用更新时的状态保持
-
用户体验: 错误时的用户引导
-
文档: 用户文档和帮助
验收标准
-
Gateway 自动启动
-
首次启动流程完整
-
错误有明确指引
-
配置持久化
-
应用更新无状态丢失
-
用户文档完整