Files
zclaw_openfang/docs/analysis/CODE-LEVEL-TODO.md
iven 0d4fa96b82
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: 统一项目名称从OpenFang到ZCLAW
重构所有代码和文档中的项目名称,将OpenFang统一更新为ZCLAW。包括:
- 配置文件中的项目名称
- 代码注释和文档引用
- 环境变量和路径
- 类型定义和接口名称
- 测试用例和模拟数据

同时优化部分代码结构,移除未使用的模块,并更新相关依赖项。
2026-03-27 07:36:03 +08:00

278 lines
8.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ZCLAW 代码层面未完成工作分析
> 分析日期2026-03-20
> 基于 git diff 和代码审查
## 一、当前重构状态
### 1.1 已完成的重构
| 模块 | 原始状态 | 当前状态 | 说明 |
|------|----------|----------|------|
| gatewayStore.ts | 1800+ 行巨型文件 | ~100 行 facade | 已拆分为 7 个 domain stores |
| gateway-client.ts | 65KB 单文件 | 模块化 | 拆分为 5 个文件 |
| viking-*.ts | 5 个文件 | 已删除 | 移至 docs/archive/ |
| vector-memory.ts | 385 行 | 已删除 | 功能移至 Rust 后端 |
| context-builder.ts | 409 行 | 已删除 | 功能移至 Rust 后端 |
| session-persistence.ts | 655 行 | 已删除 | 功能移至 Rust 后端 |
### 1.2 新增文件(未提交)
```
desktop/src/lib/gateway-api.ts - REST API 方法实现
desktop/src/lib/gateway-auth.ts - Ed25519 设备认证
desktop/src/lib/gateway-storage.ts - URL/token 持久化
desktop/src/lib/gateway-types.ts - 协议类型定义
desktop/src/store/securityStore.ts - 安全状态管理
desktop/src/store/sessionStore.ts - 会话状态管理
```
---
## 二、代码层面待完成工作
### 2.1 🔴 高优先级Store 迁移
**问题**App.tsx 和 34+ 个组件仍使用 `useGatewayStore` (兼容层),而非新的 domain-specific stores。
**待迁移组件清单**
```bash
# 查找所有使用 useGatewayStore 的文件
desktop/src/App.tsx # 核心入口
desktop/src/components/ChatArea.tsx
desktop/src/components/Sidebar.tsx
desktop/src/components/RightPanel.tsx
desktop/src/components/HandsPanel.tsx
desktop/src/components/HandApprovalModal.tsx
# ... 更多组件
```
**迁移策略**
```typescript
// 旧方式(兼容层,不推荐)
const { hands, triggers, approvals } = useGatewayStore();
// 新方式(推荐,按需导入)
import { useHandStore } from './store/handStore';
const { hands, triggers, approvals } = useHandStore();
```
**收益**
- 减少 re-render当前 useCompositeStore 订阅 40+ 状态)
- 更清晰的依赖关系
- 更好的代码分割
---
### 2.2 🔴 高优先级useCompositeStore 性能优化
**问题**`store/index.ts` 中的 `useCompositeStore` 订阅了所有 store 的几乎所有状态。
```typescript
// 当前实现(有问题)
export function useCompositeStore() {
// 订阅了 40+ 个状态
const connectionState = useConnectionStore((s) => s.connectionState);
const gatewayVersion = useConnectionStore((s) => s.gatewayVersion);
// ... 40+ 个订阅
}
```
**建议**
1. 废弃 `useCompositeStore`
2. 组件直接使用 domain-specific stores
3. 仅在确实需要跨域状态的场景使用 selector 模式
---
### 2.3 🟡 中优先级:测试文件更新
**已删除测试文件**
```
tests/desktop/session-persistence.test.ts (424 行)
tests/desktop/vector-memory.test.ts (299 行)
tests/desktop/viking-adapter.test.ts (446 行)
```
**需更新测试文件**
```
tests/desktop/gatewayStore.test.ts (190 行需更新)
tests/desktop/swarm-skills.test.ts (6 行需更新)
```
**缺失测试**
- `securityStore.test.ts` - 新 store 无测试
- `sessionStore.test.ts` - 新 store 无测试
- `gateway-api.test.ts` - 新模块无测试
- `gateway-auth.test.ts` - 新模块无测试
---
### 2.4 🟡 中优先级:类型定义清理
**问题**`gatewayStore.ts` 仍定义了一些类型,这些应该移到各自的 store 或 types 文件。
```typescript
// gatewayStore.ts 中定义的类型(应迁移)
export interface HandRunStore { ... }
export interface ScheduledJob { ... }
export interface EventTrigger { ... }
export interface RunHistoryEntry { ... }
```
**建议**
1. `HandRunStore``handStore.ts`
2. `ScheduledJob`, `EventTrigger`, `RunHistoryEntry` → 新建 `types/automation.ts`
---
### 2.5 🟢 低优先级:组件集成度提升
**存在但集成度低的组件**
| 组件 | 文件 | 问题 |
|------|------|------|
| HeartbeatConfig | `components/Settings/HeartbeatConfig.tsx` | 未在 Settings 页面使用 |
| CreateTriggerModal | `components/Automation/CreateTriggerModal.tsx` | 未在 Automation 面板集成 |
| PersonalitySelector | `components/Agent/PersonalitySelector.tsx` | 未在 Agent 创建流程使用 |
| ScenarioTags | `components/Agent/ScenarioTags.tsx` | 未在 Agent 编辑使用 |
| DevQALoop | `components/Dev/DevQALoop.tsx` | 开发调试组件,未集成 |
---
### 2.6 🟢 低优先级:文档与代码同步
**文档声称完成但代码未验证**
| 功能 | 文档状态 | 代码状态 |
|------|----------|----------|
| 身份演化 | ✅ 完成 | ❓ 未验证与后端集成 |
| 上下文压缩 | ✅ 完成 | ❓ 未验证触发条件 |
| 心跳巡检 | ✅ 完成 | ❓ 未验证实际执行 |
| 记忆持久化 | ✅ 完成 | ❓ 依赖 localStorage |
---
## 三、Tauri Rust 后端状态
### 3.1 已实现的 Rust 模块
| 模块 | 文件 | 功能 | 状态 |
|------|------|------|------|
| ZCLAW 集成 | `lib.rs` | Gateway 生命周期管理 | ✅ 完整 |
| Viking Server | `viking_server.rs` | 本地向量数据库 | ✅ 完整 |
| Viking Commands | `viking_commands.rs` | Viking CLI 封装 | ✅ 完整 |
| Browser Automation | `browser/*.rs` | Fantoccini 浏览器控制 | ✅ 完整 |
| Memory Extraction | `memory/*.rs` | 记忆提取、上下文构建 | ✅ 完整 |
| LLM Integration | `llm/mod.rs` | LLM 调用封装 | ✅ 完整 |
| Secure Storage | `secure_storage.rs` | OS keyring/keychain | ✅ 完整 |
### 3.2 Rust 后端与前端对齐问题
**问题**:前端 `lib/` 下有大量智能逻辑(记忆、反思、心跳),与 Rust 后端功能重叠。
| 前端文件 | Rust 对应 | 建议 |
|----------|-----------|------|
| `agent-memory.ts` | `memory/extractor.rs` | 统一到 Rust 端 |
| `context-compactor.ts` | `memory/context_builder.rs` | 统一到 Rust 端 |
| `heartbeat-engine.ts` | 无 | 迁移到 Rust 端 |
| `reflection-engine.ts` | 无 | 迁移到 Rust 端 |
| `agent-identity.ts` | 无 | 迁移到 Rust 端 |
**收益**
- 后端持久运行(关闭浏览器不中断)
- 多端共享 Agent 状态
- 更可靠的数据持久化
---
## 四、技术债务清单
### 4.1 代码质量
| 问题 | 位置 | 严重度 |
|------|------|--------|
| 使用 `any` 类型 | 多处 | 中 |
| 空 catch 块 | `sessionStore.ts:119` | 低 |
| 硬编码字符串 | 多处 | 低 |
| 重复的类型定义 | `gatewayStore.ts` vs 各 store | 中 |
### 4.2 架构问题
| 问题 | 说明 | 建议 |
|------|------|------|
| 前端承担后端职责 | 记忆/反思/心跳在前端 | 迁移到 Rust |
| Store 过度订阅 | useCompositeStore 订阅 40+ 状态 | 按需订阅 |
| 兼容层膨胀 | gatewayStore.ts 作为 facade | 逐步移除 |
---
## 五、行动建议
### 本周必做
1. **提交当前重构** - gateway-client 模块化、store 拆分已完成
2. **更新测试** - 为新 store 和 gateway 模块添加测试
3. **迁移 App.tsx** - 从 useGatewayStore 迁移到 domain stores
### 两周内
1. **移除 useCompositeStore** - 组件直接使用 domain stores
2. **清理类型定义** - 统一到各自的 store 或 types 文件
3. **集成低使用率组件** - HeartbeatConfig, CreateTriggerModal 等
### 一个月内
1. **前端智能层迁移** - 将记忆/反思/心跳迁移到 Rust 后端
2. **端到端测试** - Playwright + Tauri driver 验证核心流程
3. **性能优化** - 减少不必要的 re-render
---
## 六、代码变更统计
```
当前未提交变更:
21 files changed, 578 insertions(+), 7324 deletions(-)
删除的文件(已归档):
- desktop/src/lib/context-builder.ts (409 行)
- desktop/src/lib/session-persistence.ts (655 行)
- desktop/src/lib/vector-memory.ts (385 行)
- desktop/src/lib/viking-adapter.ts (734 行)
- desktop/src/lib/viking-client.ts (353 行)
- desktop/src/lib/viking-local.ts (144 行)
- desktop/src/lib/viking-memory-adapter.ts (408 行)
- desktop/src/lib/viking-server-manager.ts (231 行)
新增的文件:
+ desktop/src/lib/gateway-api.ts (新建)
+ desktop/src/lib/gateway-auth.ts (新建)
+ desktop/src/lib/gateway-storage.ts (新建)
+ desktop/src/lib/gateway-types.ts (新建)
+ desktop/src/store/securityStore.ts (新建)
+ desktop/src/store/sessionStore.ts (新建)
```
---
## 七、总结
**重构进度**:约 70% 完成
- ✅ Store 拆分完成
- ✅ Gateway Client 模块化完成
- ✅ Viking 相关代码清理完成
- ⏳ 组件迁移进行中(仍使用兼容层)
- ⏳ 测试更新待完成
- ❌ 前端智能层迁移未开始
**最大风险**
1. useCompositeStore 性能问题40+ 状态订阅)
2. 前端智能逻辑(记忆/反思)依赖 localStorage不可靠
3. 缺少端到端测试验证
**建议策略**
先完成当前重构(提交、测试、组件迁移),再启动前端智能层向 Rust 迁移。