后端服务
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 回调端口管理 |
支持的传输协议
- StdioClientTransport — 子进程标准输入/输出
- SSEClientTransport — Server-Sent Events
- 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 状态管理 |
压缩流程
autoCompact监控上下文窗口使用率- 当超过阈值时,调用
compactConversation()(在compact.ts中) - 压缩引擎提取历史消息,调用 AI 生成摘要
- 摘要替换原始历史消息,压缩边界消息标记范围
sessionMemoryCompact可选地将会话记忆额外压缩microCompact对工具结果进行细粒度压缩以进一步节省 tokenpostCompactCleanup执行压缩后清理
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 反思记忆文件并整理为持久化知识 |
门控顺序
- 时间门控: 距上次整合 >= 最小小时数(一个 stat 调用,最便宜)
- 会话门控: 新产生的会话记录数 >= 最小会话数
- 锁门控: 无其他进程正在进行整合(最昂贵)
整合内容
- 回顾记忆目录中的
.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 类型定义(令牌、速率限制、订阅类型等) |
流程
- 生成 PKCE code_verifier 和 code_challenge
- 构建授权 URL 并打开浏览器
- 本地 HTTP 服务器监听回调 / 用户手动粘贴授权码
- 用授权码换取令牌(access_token + refresh_token)
- 支持令牌刷新和持久化
分析 (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 |
— | 工具编排 — 高级工具调度与编排逻辑 |
工具执行流程
- Pre-Tool Hooks: 权限检查、规则匹配、审批流程
- 工具调用: 查找工具定义 -> 执行 -> 收集结果
- Post-Tool Hooks: 结果处理、日志记录、统计更新
- Streaming: 支持并发工具执行,进度实时推送