codev / docs /server /overview.md
chenbhao's picture
chore: rename VersperClaw to Codev, update org to chenbhao
96f34e3
|
Raw
History Blame Contribute Delete
6.91 kB

桌面 HTTP/WebSocket 服务器

概述

Codev 桌面服务器是一个同进程 HTTP + WebSocket 服务器,基于 Bun.serve() 运行,为 Tauri 桌面应用提供全套 API 接口。服务器与 CLI 子进程通过 SDK WebSocket Bridge 通信,桌面 UI 通过客户端 WebSocket 与服务器交互。

  • 入口文件: src/server/server.ts
  • 运行时: Bun (JavaScript/TypeScript 运行时)
  • 默认端口: 3456
  • 架构: 单进程,HTTP + WebSocket 共存

路由系统

路由定义在 src/server/router.ts。所有 API 请求统一由 handleApiRequest() 函数处理,根据 URL 路径第二段(resource)分发到对应的 API handler。

当前支持约 28 个 API 资源路径,每个 handler 部署在 src/server/api/ 目录下独立的文件中。

API 端点

会话管理

路径 描述
/api/sessions 会话 CRUD — 创建、读取、更新、删除会话
/api/sessions/:id/chat/* 会话内的对话操作(由 conversations handler 处理)

对应文件: api/sessions.ts

对话管理

路径 描述
/api/conversations 对话 CRUD — 会话消息的读写管理

对应文件: api/conversations.ts

模型配置

路径 描述
/api/models 获取可用模型列表
/api/models/current 获取/切换当前选中的模型
/api/effort 获取/设置 Effort 等级(low / medium / high / max)

对应文件: api/models.ts

设置与权限

路径 描述
/api/settings 应用设置读写
/api/permissions 权限配置(由 settings handler 处理)

对应文件: api/settings.ts

MCP

路径 描述
/api/mcp MCP 服务器管理 — 连接配置与状态

对应文件: api/mcp.ts

插件与技能

路径 描述
/api/plugins 插件管理 — 安装、卸载、更新、启用/禁用
/api/skills 技能管理

对应文件: api/plugins.ts, api/skills.ts

诊断

路径 描述
/api/doctor 环境诊断 — 检查系统配置是否正常
/api/diagnostics 诊断事件记录与查询

对应文件: api/doctor.ts, api/diagnostics.ts

好友系统

路径 描述
/api/friend VRM 虚拟形象前端路由(由 Tauri 桌面应用调用),包含 TTS/STT、SSE、偏好设置等

路由定义在单独模块中(非 router.ts 直接管理),对应文件: api/friend.ts

文件与工作区

路径 描述
/api/filesystem 文件系统访问操作
/api/workspaces Git 工作区管理(会话工作区创建、差异查看等)

对应文件: api/filesystem.ts(filesystem 由专用路由函数处理)

其他端点

路径 描述
/api/scheduled-tasks 定时任务管理
/api/search 搜索
/api/agents / /api/tasks Agent 任务管理
/api/status 服务器状态查询
/api/teams 团队配置
/api/providers Provider 提供商配置
/api/adapters 适配器管理
/api/computer-use Computer Use 功能控制 — 环境检测、Python venv 安装、桌面控制
/api/haha-oauth haha 自定义 OAuth 认证
/api/haha-openai-oauth haha OpenAI OAuth 认证
/api/h5-access H5 访问策略
/api/activity-stats 活动统计
/api/open-targets OpenTarget 管理
/api/memory 记忆管理
/api/desktop-ui 桌面 UI 偏好
/api/cli-auth CLI 认证
/api/cli-proxy CLI 代理

WebSocket

文件: ws/handler.ts (约 68KB)

WebSocket 连接处理器管理完整的连接生命周期:

  • 会话管理: 创建、启动、停止、清理会话
  • 消息路由: 将用户消息通过 CLI 子进程(stream-json 模式)处理
  • 命令处理: 解析和处理斜杠命令(slash command)
  • 权限控制: Computer Use 审批、运行时覆盖
  • 自动标题: 追踪用户消息计数,自动生成对话标题
  • 会话预热: 预启动空闲会话以加快响应
  • 断线重连: 客户端断线后保持会话 5 分钟,支持重连
  • 消息转换: CLI stdout 消息转换为 ServerMessage 并转发到 WebSocket

消息协议定义在 ws/events.ts,包含 ClientMessageServerMessage 类型。

服务层

所有后端服务部署在 src/server/services/ 目录下:

conversationService.ts

CLI 子进程管理器。每个桌面会话拥有一个 CLI 子进程,子进程通过 SDK WebSocket Bridge 与桌面服务器通信。

sessionService.ts

会话 CRUD 操作封装。读写 CLI 持久化在 ~/.claude/projects/{path}/{sessionId}.jsonl 的会话数据,确保桌面应用与 CLI 数据完全互通。使用 SQLite 间接管理会话索引。

providerService.ts

多 Provider 配置管理。基于预设(Preset)系统,支持 OpenCode 兼容配置。存储位置: ~/.claude/cc-haha/providers.json,活跃 Provider 的环境变量写入 ~/.claude/cc-haha/settings.json(与原始 Claude Code 的 ~/.claude/settings.json 隔离)。

workspaceService.ts

Git 工作区管理。支持差异查看、文件历史快照、会话工作区初始化等功能。

pluginService.ts

插件管理系统。支持安装、卸载、更新、启用/禁用插件,管理 MCP 服务器集成与 LSP 服务器集成。

cronScheduler.ts

Cron 任务调度引擎。定期检查所有定时任务,在匹配 cron 表达式时通过 CLI 子进程执行任务,执行历史持久化到 ~/.claude/scheduled_tasks_log.json

desktopCliLauncherService.ts

桌面 CLI 启动器。负责安装和管理 claude-haha CLI 命令,维护 PATH 环境变量。

其他服务

  • diagnosticsService.ts / doctorService.ts: 系统诊断
  • searchService.ts: 搜索服务
  • titleService.ts: 对话标题自动生成
  • taskService.ts: 任务管理
  • teamService.ts / teamWatcher.ts: 团队协作
  • notificationService.ts: 桌面通知
  • networkSettings.ts: 网络代理设置
  • managedSettingsService.ts: 托管设置
  • h5AccessService.ts: H5 访问策略
  • computerUseApprovalService.ts: Computer Use 审批
  • mcpHostPreflight.ts: MCP 预检
  • attributionHeaderPolicy.ts: 归因头策略
  • agentService.ts: Agent 服务
  • adapterService.ts: 适配器服务
  • openaiOfficialProvider.ts: OpenAI 官方提供商
  • hahaOAuthService.ts / hahaOpenAIOAuthService.ts: OAuth 认证
  • repositoryLaunchService.ts: 仓库启动(Git worktree 集成)
  • filesystemAccessRoots.ts: 文件系统访问根目录
  • recoverableJsonFile.ts: 可恢复 JSON 文件读写
  • persistentStorageMigrations.ts: 持久化存储迁移
  • providerRuntimeEnv.ts: Provider 运行时环境