docs(claude): restructure documentation management and add feedback system

- Restructure §8 from "文档沉淀规则" to "文档管理规则" with 4 subsections
  - Add docs/ structure with features/ and knowledge-base/ directories
  - Add feature documentation template with 7 sections (概述/设计初衷/技术设计/预期作用/实际效果/演化路线/头脑风暴)
  - Add feature update trigger matrix (新增/修改/完成/问题/反馈)
  - Add documentation quality checklist
- Add §16
This commit is contained in:
iven
2026-03-16 13:54:03 +08:00
parent 8e630882c7
commit adfd7024df
44 changed files with 10491 additions and 248 deletions

View File

@@ -1,178 +1,171 @@
# ZCLAW Gateway 连接稳定性与 API 修复计划
# ZCLAW L4 自我演化能力实现计划
## Context
**问题背景**: 用户报告"Gateway 连接不稳定",通过 Chrome DevTools 诊断发现:
- WebSocket 连接和聊天功能**实际正常工作**
- 真正的问题是 **6 个 API 端点返回 404**,大量错误日志被误认为是连接问题
**背景**: ZCLAW 已完成 Agent 智能演化 Phase 1-4317 测试通过),当前成熟度达到 L3+(主动智能)。
**诊断结果**:
| 项目 | 状态 |
|------|------|
| WebSocket 连接 | ✅ 正常 |
| 消息发送/流式响应 | ✅ 正常 |
| 核心 API (agents, hands, workflows) | ✅ 正常 |
| 6 个 API 端点 | ❌ 404 错误 |
**L4 目标**: 实现"完整自主行为优化循环" - Agent 能够自我修改行为和知识,无需人工干预即可持续进化。
**目标**:
1. P0: 修复 6 个 404 API 端点(通过前端 fallback 降级)
2. P1: 增强连接稳定性(心跳机制 + 改进重连策略)
**当前状态**:
| 成熟度级别 | 状态 |
|-----------|------|
| L0 - 无状态响应 | ✅ 已超越 |
| L1 - 会话感知 | ✅ 已超越 |
| L2 - 持久记忆 | ✅ 已达成 |
| L3 - 主动智能 | ✅ 已达成 |
| L4 - 自我演化 | ⏳ 部分实现 |
**L4 缺口**:
1. 4 个 UI 组件未实现SwarmDashboard、SkillMarket、HeartbeatConfig、ReflectionLog
2. 3 个引擎仍是规则驱动,需升级为 LLM 驱动
3. 身份文件变更仍需用户审批(非自主)
---
## Phase 1: P0 - API Fallback 降级处理
## Phase 1: 缺失 UI 组件补全优先级P0
### 1.1 创建 API Fallback 模块
### 1.1 SwarmDashboard - 多 Agent 协作面板
**新建文件**: `desktop/src/lib/api-fallbacks.ts`
**新建文件**: `desktop/src/components/SwarmDashboard.tsx`
功能:
- 显示当前协作任务列表
- 实时展示子任务分配和状态
- 支持手动触发协作任务
- 查看协作结果汇总
### 1.2 SkillMarket - 技能市场 UI
**新建文件**: `desktop/src/components/SkillMarket.tsx`
功能:
- 浏览可用技能12 个内置 + 自定义)
- 按关键词/能力标签搜索
- 一键安装/启用技能
- 查看技能详情和使用统计
### 1.3 HeartbeatConfig - 心跳配置 UI
**新建文件**: `desktop/src/components/HeartbeatConfig.tsx`
功能:
- 配置心跳间隔(默认 30 分钟)
- 启用/禁用内置检查项
- 设置免打扰时段
- 选择主动性级别(静默/轻度/标准/自主)
### 1.4 ReflectionLog - 反思日志 UI
**新建文件**: `desktop/src/components/ReflectionLog.tsx`
功能:
- 查看反思历史(模式分析、改进建议)
- 审批身份文件变更提议
- 回滚到历史人格版本
- 手动触发反思
---
## Phase 2: LLM 驱动升级优先级P1
### 2.1 ReflectionEngine 升级
**修改文件**: `desktop/src/lib/reflection-engine.ts`
当前:规则模式检测(关键词匹配)
目标LLM 语义分析 + 深度反思
```typescript
// 提供 6 个 404 API 的降级数据
export interface QuickConfigFallback { ... }
export interface WorkspaceInfoFallback { ... }
export interface UsageStatsFallback { ... }
export interface PluginStatusFallback { ... }
export interface ScheduledTaskFallback { ... }
export function getQuickConfigFallback(): QuickConfigFallback { ... }
export function getWorkspaceInfoFallback(): WorkspaceInfoFallback { ... }
export function getUsageStatsFallback(sessions: Session[]): UsageStatsFallback { ... }
export function getPluginStatusFallback(skills: SkillInfo[]): PluginStatusFallback { ... }
export function getScheduledTasksFallback(triggers: Trigger[]): ScheduledTaskFallback[] { ... }
```
### 1.2 更新 gateway-client.ts
为每个 404 API 添加结构化 fallback
```typescript
async getQuickConfig(): Promise<any> {
try {
return await this.restGet('/api/config/quick');
} catch (error) {
if ((error as any).status === 404) {
return { quickConfig: getQuickConfigFallback() };
}
throw error;
// 升级后的 reflect 方法
async reflect(agentId: string, options?: { useLLM?: boolean }): Promise<ReflectionResult> {
if (options?.useLLM && this.llmAvailable) {
return this.llmReflect(agentId);
}
return this.ruleBasedReflect(agentId); // fallback
}
```
### 1.3 更新 gatewayStore.ts
### 2.2 ContextCompactor 升级
在数据加载时使用 fallback
**修改文件**: `desktop/src/lib/context-compactor.ts`
```typescript
loadUsageStats: async () => {
try {
const stats = await get().client.getUsageStats();
set({ usageStats: stats });
} catch {
const fallback = getUsageStatsFallback(get().sessions);
set({ usageStats: fallback });
}
},
```
当前:规则摘要(截断 + 格式化)
目标LLM 高质量摘要 + 关键信息保留
### 2.3 MemoryExtractor 升级
**修改文件**: `desktop/src/lib/memory-extractor.ts`
当前:正则匹配 + 关键词检测
目标LLM 语义重要性评分 + 智能分类
---
## Phase 2: P1 - 心跳机制
## Phase 3: 自主行为授权优先级P2
### 2.1 添加心跳字段
### 3.1 分级授权系统
**修改文件**: `desktop/src/lib/gateway-client.ts`
**新建文件**: `desktop/src/lib/autonomy-manager.ts`
```typescript
// 新增私有字段
private heartbeatInterval: number | null = null;
private heartbeatTimeout: number | null = null;
private missedHeartbeats: number = 0;
private static readonly HEARTBEAT_INTERVAL = 30000; // 30秒
private static readonly HEARTBEAT_TIMEOUT = 10000; // 10秒
private static readonly MAX_MISSED_HEARTBEATS = 3;
```
### 2.2 心跳方法
```typescript
private startHeartbeat(): void { ... }
private stopHeartbeat(): void { ... }
private sendHeartbeat(): void { ... }
private handlePong(): void { ... }
```
### 2.3 集成到连接流程
- `connect()` 成功后调用 `startHeartbeat()`
- `cleanup()` 时调用 `stopHeartbeat()`
- `handleFrame()` 处理 `pong` 响应
---
## Phase 3: P1 - 改进重连策略
### 3.1 新增配置选项
```typescript
interface GatewayClientOptions {
maxReconnectAttempts?: number; // -1=无限, 0=禁用, 默认10
reconnectBackoff?: 'linear' | 'exponential' | 'fixed';
}
```
### 3.2 更新 scheduleReconnect
- 支持无限重连模式 (`maxReconnectAttempts: -1`)
- 添加重连事件通知 (`reconnecting`, `reconnect_failed`)
- 改进退避算法
### 3.3 流式 WebSocket 重连
`openfangWs` 添加重连逻辑:
```typescript
private streamState = { agentId: null, sessionId: null, lastMessage: null };
private scheduleStreamReconnect(runId: string): void { ... }
```
---
## Phase 4: UI 集成
### 4.1 创建 ConnectionStatus 组件
**新建文件**: `desktop/src/components/ConnectionStatus.tsx`
```typescript
export function ConnectionStatus() {
const { connectionState } = useGatewayStore();
const statusConfig = {
disconnected: { color: 'red', label: '已断开', icon: WifiOff },
connecting: { color: 'yellow', label: '连接中...', icon: Loader2 },
connected: { color: 'green', label: '已连接', icon: Wifi },
reconnecting: { color: 'orange', label: '重连中...', icon: RefreshCw },
interface AutonomyConfig {
level: 'supervised' | 'assisted' | 'autonomous';
allowedActions: {
memoryAutoSave: boolean; // 自动保存记忆
identityAutoUpdate: boolean; // 自动更新身份文件
skillAutoInstall: boolean; // 自动安装技能
selfModification: boolean; // 自我修改行为
};
approvalThreshold: {
importance: number; // 重要性低于此值自动执行
risk: 'low' | 'medium' | 'high'; // 风险等级
};
// ...
}
```
### 4.2 集成到 ChatArea
### 3.2 安全边界
在聊天区域顶部显示连接状态指示器。
- 高风险操作(删除记忆、修改 SOUL.md始终需确认
- 所有自主操作记录审计日志
- 支持一键回滚到任意历史状态
---
## Phase 4: OpenViking 深度集成优先级P2
### 4.1 记忆后端迁移
**修改文件**: `desktop/src/lib/agent-memory.ts`
从 localStorage → SQLite + OpenViking API
### 4.2 语义搜索
**新建文件**: `desktop/src/lib/vector-memory.ts`
```typescript
interface VectorMemorySearch {
embed(text: string): Promise<Float32Array>;
semanticSearch(query: string, topK: number): Promise<MemoryEntry[]>;
}
```
---
## 关键文件
| 文件 | 修改类型 | 说明 |
|------|----------|------|
| `desktop/src/lib/api-fallbacks.ts` | 新建 | API 降级数据 |
| `desktop/src/lib/gateway-client.ts` | 修改 | 心跳 + 重连 + fallback |
| `desktop/src/store/gatewayStore.ts` | 修改 | 使用 fallback |
| `desktop/src/components/ConnectionStatus.tsx` | 新建 | 连接状态 UI |
| `desktop/src/components/ChatArea.tsx` | 修改 | 集成状态指示器 |
| `tests/desktop/gatewayStore.test.ts` | 修改 | 测试覆盖 |
| 文件 | 类型 | 说明 |
|------|------|------|
| `desktop/src/components/SwarmDashboard.tsx` | 新建 | 协作任务面板 |
| `desktop/src/components/SkillMarket.tsx` | 新建 | 技能市场 |
| `desktop/src/components/HeartbeatConfig.tsx` | 新建 | 心跳配置 |
| `desktop/src/components/ReflectionLog.tsx` | 新建 | 反思日志 |
| `desktop/src/lib/autonomy-manager.ts` | 新建 | 自主授权管理 |
| `desktop/src/lib/vector-memory.ts` | 新建 | 向量记忆搜索 |
| `desktop/src/lib/reflection-engine.ts` | 修改 | LLM 升级 |
| `desktop/src/lib/context-compactor.ts` | 修改 | LLM 升级 |
| `desktop/src/lib/memory-extractor.ts` | 修改 | LLM 升级 |
| `desktop/src/lib/agent-memory.ts` | 修改 | SQLite 迁移 |
---
@@ -180,30 +173,33 @@ export function ConnectionStatus() {
### 测试清单
**P0 - API Fallback**:
- [ ] 启动应用,检查控制台无 404 错误
- [ ] 用量统计面板显示数据(即使 API 404
- [ ] 设置页面显示配置(即使 API 404
**Phase 1 - UI 组件**:
- [ ] SwarmDashboard 显示协作任务
- [ ] SkillMarket 搜索和安装技能
- [ ] HeartbeatConfig 保存配置
- [ ] ReflectionLog 审批变更
**P1 - 心跳**:
- [ ] 连接后空闲 5 分钟,连接保持
- [ ] 检查 WebSocket 流量有 ping/pong 帧
**Phase 2 - LLM 升级**:
- [ ] ReflectionEngine 使用 LLM 分析
- [ ] ContextCompactor 生成高质量摘要
- [ ] MemoryExtractor 语义重要性评分
**P1 - 重连**:
- [ ] 关闭 OpenFang显示"重连中"
- [ ] 重启 OpenFang自动重连成功
- [ ] 聊天中断开后自动恢复
**Phase 3 - 自主授权**:
- [ ] 低风险操作自动执行
- [ ] 高风险操作需确认
- [ ] 审计日志完整
### 运行测试
```bash
pnpm vitest run tests/desktop/gatewayStore.test.ts
pnpm vitest run tests/desktop/
```
---
## Implementation Sequence
1. **Day 1**: Phase 1 - API Fallbacks
2. **Day 2**: Phase 2 - Heartbeat + Phase 3 - Reconnection
3. **Day 3**: Phase 4 - UI Integration + Testing
1. **Week 1**: Phase 1 - UI 组件4 个组件)
2. **Week 2**: Phase 2 - LLM 升级3 个引擎)
3. **Week 3**: Phase 3 - 自主授权 + Phase 4 - OpenViking
4. **Week 4**: 集成测试 + 文档更新