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

后端服务

Codev 提供一系列后台服务,涵盖 MCP 集成、上下文压缩、自主记忆整合、即时通讯集成、OAuth 认证、分析监控及工具执行引擎。


MCP (Model Context Protocol)

目录: src/services/mcp/

MCP 客户端实现,基于 @modelcontextprotocol/sdk,支持多种传输层协议和 OAuth 认证。

核心文件

文件 描述
client.ts MCP 客户端 — 支持 Stdio、SSE、Streamable HTTP 三种传输协议;管理工具/资源/命令的发现与调用
auth.ts MCP OAuth 认证 — 基于 Authorization Server Metadata 发现流程,支持 PKCE、令牌刷新、本地 HTTP 服务器捕获授权码
config.ts MCP Server 配置解析
types.ts MCP 相关类型定义
InProcessTransport.ts 同进程传输层实现
SdkControlTransport.ts SDK Control 传输层
normalization.ts MCP 结果规范化
envExpansion.ts 环境变量展开
headersHelper.ts HTTP 头部辅助
elicitationHandler.ts MCP Elicit 请求处理
mcpStringUtils.ts MCP 字符串工具
claudeai.ts Claude AI 集成
officialRegistry.ts 官方 MCP 注册表
useManageMCPConnections.ts MCP 连接管理 Hook
vscodeSdkMcp.ts VSCode SDK 兼容层
channelAllowlist.ts / channelPermissions.ts / channelNotification.ts 频道权限与通知
MCPConnectionManager.tsx MCP 连接管理器 UI 组件
xaa.ts / xaaIdpLogin.ts XAA 身份提供方登录
oauthPort.ts OAuth 回调端口管理

支持的传输协议

  1. StdioClientTransport — 子进程标准输入/输出
  2. SSEClientTransport — Server-Sent Events
  3. StreamableHTTPClientTransport — 可流式 HTTP

发现能力

工具(Tools)、资源(Resources)、提示(Prompts)的自动发现与调用。


上下文压缩

目录: src/services/compact/

上下文压缩引擎,在对话历史超出上下文窗口时自动触发压缩,将冗长的历史会话压缩为精炼的摘要。

核心文件

文件 大小 描述
compact.ts 61 KB 核心压缩引擎 — 将对话历史压缩为摘要,包含完整的压缩策略与边界消息管理
autoCompact.ts 自动压缩 — 当上下文窗口使用量超过阈值时自动触发压缩,管理 maxTokens、重试逻辑、token 估算
microCompact.ts 微压缩 — 细粒度工具结果压缩,仅压缩特定工具(FileRead、FileEdit、FileWrite、Glob、Grep、WebFetch、WebSearch 等)的输出
sessionMemoryCompact.ts 会话记忆压缩 — 实验性功能,将会话记忆压缩整合到会话恢复流程中
cachedMicrocompact.ts 缓存式微压缩,提升重复压缩效率
cachedMCConfig.ts 缓存微压缩配置
snipCompact.ts / snipProjection.ts 截断式压缩与投影
grouping.ts 消息分组策略
reactiveCompact.ts 响应式压缩
timeBasedMCConfig.ts 基于时间的微压缩配置
postCompactCleanup.ts 压缩后清理
prompt.ts 压缩提示词模板
apiMicrocompact.ts API 微压缩接口
compactWarningHook.ts / compactWarningState.ts 压缩警告 UI 状态管理

压缩流程

  1. autoCompact 监控上下文窗口使用率
  2. 当超过阈值时,调用 compactConversation()(在 compact.ts 中)
  3. 压缩引擎提取历史消息,调用 AI 生成摘要
  4. 摘要替换原始历史消息,压缩边界消息标记范围
  5. sessionMemoryCompact 可选地将会话记忆额外压缩
  6. microCompact 对工具结果进行细粒度压缩以进一步节省 token
  7. postCompactCleanup 执行压缩后清理

Auto Dream (自主记忆整合)

目录: src/services/autoDream/

Auto Dream 是一个后台记忆整合系统,在对话间期自动运行,将学习到的信息整理为持久化的记忆文件。

核心文件

文件 描述
autoDream.ts 主模块 — 后台记忆中整合,使用 runForkedAgent 执行 /dream 提示词。使用三道门控(Gate)按成本递增顺序判断是否执行:时间(距上次整合 >= minHours)、会话数(新会话 >= minSessions)、锁(无其他进程正在整合)
config.ts 配置 — 是否启用 Auto Dream
consolidationLock.ts 整合锁 — 基于 PID 和 mtime 的文件锁,防止多个进程同时整合。锁文件位于记忆目录,mtime 作为 lastConsolidatedAt 时间戳
consolidationPrompt.ts 整合提示词 — 构建 /dream 的系统提示词,指导 AI 反思记忆文件并整理为持久化知识

门控顺序

  1. 时间门控: 距上次整合 >= 最小小时数(一个 stat 调用,最便宜)
  2. 会话门控: 新产生的会话记录数 >= 最小会话数
  3. 锁门控: 无其他进程正在进行整合(最昂贵)

整合内容

  • 回顾记忆目录中的 .md 文件
  • 分析近期会话记录(transcript)
  • 合成新的记忆,整理现有知识
  • 确保记忆文件对后续会话具有良好可读性

飞书集成

目录: src/services/feishu/

飞书(Feishu/Lark)机器人集成,基于 @larksuite/channel SDK 的 WebSocket 长连接机器人。

详见 飞书集成文档

功能速览

  • 应用注册(支持 QR 码一键创建)
  • DM 私聊 / Group 群聊模式
  • 访问控制(白名单 / 管理员 / 拥有者)
  • 引用上下文回复
  • Markdown 格式化输出
  • 语音回复(Edge TTS / VoxCPM 语音克隆)
  • Keepalive 自动保活

Telegram 集成

文件: src/services/telegram/TelegramService.ts

Telegram 机器人服务,基于 Telegram Bot API 实现消息收发、指令处理、行内键盘等功能。

功能

  • getMe — 获取机器人信息
  • sendMessage — 发送消息(支持 Markdown / HTML 格式)
  • editMessageText — 编辑已发送消息
  • answerCallbackQuery — 响应回调查询
  • sendChatAction — 发送聊天动作指示器
  • setMyCommands — 设置机器人命令列表
  • getUpdates — 轮询获取更新

配置管理: telegramConfig.ts / telegramTypes.ts


OAuth

目录: src/services/oauth/

通用 OAuth 2.0 认证服务,支持授权码流程(Authorization Code Flow with PKCE)。

核心文件

文件 描述
index.ts OAuthService — 主类,管理完整 OAuth 流程:生成 code_verifier、启动本地 HTTP 服务器监听回调、令牌交换
auth-code-listener.ts 授权码监听器 — 启动本地 HTTP 服务器捕获回调中的授权码
client.ts OAuth 客户端 HTTP 请求封装
crypto.ts PKCE 加密工具 — code_verifier / code_challenge 生成
getOauthProfile.ts 获取 OAuth 用户档案
types.ts OAuth 类型定义(令牌、速率限制、订阅类型等)

流程

  1. 生成 PKCE code_verifier 和 code_challenge
  2. 构建授权 URL 并打开浏览器
  3. 本地 HTTP 服务器监听回调 / 用户手动粘贴授权码
  4. 用授权码换取令牌(access_token + refresh_token)
  5. 支持令牌刷新和持久化

分析 (Analytics)

目录: src/services/analytics/

核心组件

文件 描述
index.ts 分析日志入口 — 标准化事件日志接口
growthbook.ts GrowthBook 特性标记集成 — 远程配置和 A/B 测试功能开关
config.ts Analytics 配置
metadata.ts 分析元数据提取 — 工具名称脱敏、MCP 工具详情、文件扩展名
datadog.ts Datadog 集成
firstPartyEventLogger.ts / firstPartyEventLoggingExporter.ts 第一方事件日志与导出
sink.ts / sinkKillswitch.ts 事件接收器与终止开关

功能

  • 工具使用统计与耗时追踪
  • 模型调用分析
  • GrowthBook 远程特性配置
  • Datadog APM 集成

工具执行引擎

目录: src/services/tools/

核心文件

文件 大小 描述
toolExecution.ts 60 KB 工具执行引擎 — 核心工具运行逻辑,管理工具调用生命周期、权限检查、进度报告、结果处理
toolHooks.ts 工具钩子系统 — 执行 Pre-Tool 和 Post-Tool 挂钩,支持基于规则和基于审批的权限决策
StreamingToolExecutor.ts 流式工具执行器 — 管理并发工具执行队列,支持工具状态追踪(queued / executing / completed / yielded),支持进度消息即时推流
toolOrchestration.ts 工具编排 — 高级工具调度与编排逻辑

工具执行流程

  1. Pre-Tool Hooks: 权限检查、规则匹配、审批流程
  2. 工具调用: 查找工具定义 -> 执行 -> 收集结果
  3. Post-Tool Hooks: 结果处理、日志记录、统计更新
  4. Streaming: 支持并发工具执行,进度实时推送