# https://github.com/chenhg5/cc-connect 项目说明书

生成时间：2026-05-13 23:32:01 UTC

## 目录

- [项目概述](#overview)
- [系统架构](#architecture)
- [核心接口定义](#core-interfaces)
- [Bridge 协议](#bridge-protocol)
- [Agent 集成概述](#agent-overview)
- [Agent 通信协议](#agent-protocols)
- [Claude Code 集成](#claude-code-integration)
- [Codex 集成](#codex-integration)
- [平台集成概述](#platform-overview)
- [飞书集成详解](#platform-feishu)

<a id='overview'></a>

## 项目概述

### 相关页面

相关主题：[系统架构](#architecture), [Agent 集成概述](#agent-overview), [平台集成概述](#platform-overview)

<details>
<summary>相关源码文件</summary>

以下源码文件用于生成本页说明：

- [AGENTS.md](https://github.com/chenhg5/cc-connect/blob/main/AGENTS.md)
- [core/i18n.go](https://github.com/chenhg5/cc-connect/blob/main/core/i18n.go)
- [platform/wecom/inbound_file_test.go](https://github.com/chenhg5/cc-connect/blob/main/platform/wecom/inbound_file_test.go)
- [web/index.html](https://github.com/chenhg5/cc-connect/blob/main/web/index.html)
- [web/src/pages/Providers/ProviderList.tsx](https://github.com/chenhg5/cc-connect/blob/main/web/src/pages/Providers/ProviderList.tsx)
- [web/src/pages/Skills/SkillList.tsx](https://github.com/chenhg5/cc-connect/blob/main/web/src/pages/Skills/SkillList.tsx)
- [web/src/pages/Sessions/SessionList.tsx](https://github.com/chenhg5/cc-connect/blob/main/web/src/pages/Sessions/SessionList.tsx)
- [web/src/pages/Projects/ProjectList.tsx](https://github.com/chenhg5/cc-connect/blob/main/web/src/pages/Projects/ProjectList.tsx)
- [web/src/pages/Projects/ProjectDetail.tsx](https://github.com/chenhg5/cc-connect/blob/main/web/src/pages/Projects/ProjectDetail.tsx)
- [web/src/pages/Chat/ChatView.tsx](https://github.com/chenhg5/cc-connect/blob/main/web/src/pages/Chat/ChatView.tsx)
</details>

# 项目概述

## 项目简介

cc-connect 是一个多平台 AI 代理连接框架，旨在将不同的 AI 代理服务与多种即时通讯平台进行桥接整合。该项目采用 Go 语言作为后端核心，前端使用 React + TypeScript 构建管理界面，实现了统一配置管理、多平台支持、灵活的代理切换等核心功能。

项目的设计理念是提供一个 **中立的中间层**，使 AI 代理能力能够通过各种通讯平台（如飞书、微信、企业微信、Telegram、Discord 等）与用户进行交互。资料来源：[AGENTS.md:1-15]()

## 系统架构

cc-connect 采用分层架构设计，核心模块与平台模块解耦，便于扩展和维护。

```mermaid
graph TD
    subgraph 前端层["前端层 (React + TypeScript)"]
        A[Web 管理界面]
        B[Provider 管理]
        C[Project 管理]
        D[Session 会话]
        E[Skills 技能]
    end
    
    subgraph 核心层["核心层 (Go)"]
        F[core - 核心接口定义]
        G[agent - 代理实现]
        H[平台注册系统]
        I[i18n - 国际化]
    end
    
    subgraph 平台层["平台适配层"]
        J[飞书]
        K[企业微信]
        L[微信]
        M[Telegram]
        N[Discord]
        O[Slack]
        P[DingTalk]
        Q[更多平台...]
    end
    
    subgraph 外部服务
        R[AI Provider]
        S[LLM API]
    end
    
    A --> F
    B --> H
    C --> H
    D --> H
    E --> H
    F --> G
    F --> H
    H --> J
    H --> K
    H --> L
    H --> M
    H --> N
    H --> O
    H --> P
    J --> R
    K --> R
    L --> R
    M --> R
    R --> S
```

资料来源：[AGENTS.md:9-18]()

## 核心概念

### Provider（提供商）

Provider 是 AI 模型服务提供商的核心抽象，支持配置多个 AI 模型实例。每个 Provider 可以包含以下配置项：

| 配置项 | 说明 | 可选值 |
|--------|------|--------|
| `name` | 提供商名称 | 字符串 |
| `url` | API 端点地址 | URL 字符串 |
| `model` | 默认模型标识 | 字符串 |
| `models` | 模型列表 | 数组 |
| `thinking` | 思考模式 | `enabled` / `disabled` |
| `agent_types` | 支持的代理类型 | 字符串数组 |

资料来源：[web/src/pages/Providers/ProviderList.tsx:1-30]()

### Project（项目）

Project 是工作空间的基本单位，每个项目包含独立的配置和会话管理。项目支持以下关键配置：

| 配置项 | 说明 | 配置选项 |
|--------|------|----------|
| `workDir` | 工作目录路径 | 用户指定 |
| `agentMode` | 权限模式 | `default` / `acceptEdits` / `plan` / `bypassPermissions` / `dontAsk` |
| `showCtxIndicator` | 上下文指示器 | 布尔值 |
| `replyFooter` | 回复元数据 | 布尔值 |

资料来源：[web/src/pages/Projects/ProjectDetail.tsx:1-40]()

### Session（会话）

Session 管理与 AI 代理的交互状态，包含消息历史和实时状态：

```typescript
interface Session {
  id: string;
  name: string;
  live: boolean;           // 活跃状态
  updated_at: string;      // 最后更新时间
  last_message: {
    role: 'user' | 'assistant';
    content: string;
  };
}
```

资料来源：[web/src/pages/Sessions/SessionList.tsx:1-20]()

### Skills（技能）

Skills 系统允许扩展 AI 代理的能力，支持本地技能和预设技能库：

| 技能类型 | 说明 | 配置项 |
|----------|------|--------|
| 本地技能 | 项目目录下定义的技能 | `project`, `agent_type`, `dirs` |
| 预设技能 | 官方/社区提供的技能包 | `display_name`, `description`, `version`, `pricing` |

资料来源：[web/src/pages/Skills/SkillList.tsx:1-50]()

## 平台支持

cc-connect 支持多种即时通讯平台的集成，构建时可以通过 build tags 选择性排除不需要的平台：

| 平台 | Build Tag | 说明 |
|------|-----------|------|
| 飞书 | 默认启用 | 企业协作平台 |
| 企业微信 | `wecom` | 企业微信集成 |
| 微信 | `weixin` | 微信消息通道 |
| Telegram | `telegram` | 第三方 IM |
| Discord | `discord` | 游戏社区平台 |
| Slack | `slack` | 企业通讯工具 |
| DingTalk | `dingtalk` | 钉钉集成 |
| QQ / QQBot | `qq` / `qqbot` | 腾讯 QQ |
| LINE | `line` | 台湾地区 IM |
| 微博 | `weibo` | 社交媒体 |

禁用特定平台的编译方式：`go build -tags no_feishu no_telegram ...`

资料来源：[AGENTS.md:1-8]()

## 插件系统

cc-connect 采用插件化架构，新增平台或代理只需遵循以下流程：

### 添加新平台

1. 创建 `platform/newplatform/newplatform.go`
2. 实现 `core.Platform` 接口
3. 在 `init()` 中注册：`core.RegisterPlatform("newplatform", factory)`
4. 创建构建插件文件：`cmd/cc-connect/plugin_platform_newplatform.go`
5. 添加到 `Makefile` 的 `ALL_PLATFORMS`
6. 在 `config.example.toml` 添加配置示例
7. 编写单元测试

资料来源：[AGENTS.md:9-18]()

### 添加新代理

1. 创建 `agent/newagent/newagent.go`
2. 实现 `core.Agent` 和 `core.AgentSession` 接口
3. 在 `init()` 中注册：`core.RegisterAgent("newagent", factory)`
4. 创建构建插件文件

资料来源：[AGENTS.md:19-24]()

## 国际化的消息提示

项目内置完整的国际化（i18n）支持，支持以下语言：

| 语言 | 代码 | 示例消息 |
|------|------|----------|
| 英语 | `en` | `Provider not found. Use /provider list` |
| 简体中文 | `zh-CN` | `未找到 Provider，使用 /provider list` |
| 繁体中文 | `zh-TW` | `未找到 Provider，使用 /provider list` |
| 日语 | `ja` | `プロバイダが見つかりません` |
| 西班牙语 | `es` | `Proveedor no encontrado` |

关键消息类型包括：
- Provider 操作消息（切换、清除、列表）
- Workspace 操作消息（绑定、路由）
- 错误提示与帮助信息

资料来源：[core/i18n.go:1-60]()

## 前端架构

前端采用 React + TypeScript + TailwindCSS 构建，提供现代化的管理界面：

### 主要页面模块

| 模块 | 路径 | 功能 |
|------|------|------|
| ProviderList | `/Providers` | 全局 AI 提供商管理 |
| ProjectList | `/Projects` | 项目列表与创建向导 |
| ProjectDetail | `/Projects/:id` | 单个项目配置与设置 |
| SkillList | `/Skills` | 技能管理与预设库 |
| SessionList | `/Sessions` | 会话管理与消息历史 |
| ChatView | `/Chat` | 实时聊天界面 |

### 状态管理

前端通过 React Hooks 管理状态，关键状态包括：
- `providers`: 全局 AI 提供商列表
- `projects`: 项目列表
- `sessions`: 会话列表
- `currentSession`: 当前活跃会话
- `drawerOpen`: 会话抽屉开关状态
- `bridgeStatus`: WebSocket 桥接状态

资料来源：[web/src/pages/Chat/ChatView.tsx:1-30]()

## 消息处理

### 企业微信文件消息

企业微信平台的文件消息采用 XML 格式传输，系统会解析以下字段：

| 字段 | 说明 |
|------|------|
| `MsgType` | 消息类型（text/image/file 等） |
| `MediaId` | 媒体文件 ID |
| `FileName` | 文件名（含路径） |
| `MsgId` | 消息唯一 ID |
| `AgentID` | 企业应用 ID |

资料来源：[platform/wecom/inbound_file_test.go:1-25]()

## 项目构建与测试

### 构建检查清单

提交代码前必须通过以下检查：

1. **编译通过**：`go build ./...`
2. **测试通过**：`go test ./...`
3. **无硬编码**：核心代码中无平台名称硬编码
4. **国际化完整**：新增用户可见字符串需包含所有语言翻译
5. **无敏感信息**：源码中不包含 API Key、Token 等凭据

资料来源：[AGENTS.md:25-32]()

## 技术栈总结

| 层级 | 技术选型 |
|------|----------|
| 后端核心 | Go 1.x |
| 前端框架 | React 18 + TypeScript |
| UI 样式 | TailwindCSS |
| 状态管理 | React Hooks |
| 国际化 | 自定义 i18n 模块 |
| 构建工具 | Vite（前端）+ Makefile（后端） |
| 测试框架 | Go testing |

资料来源：[web/index.html:1-10]()

## 设计理念

cc-connect 的核心设计原则：

1. **模块化解耦**：核心接口与平台实现分离，便于独立演进
2. **可插拔架构**：通过 build tags 实现平台按需编译
3. **统一配置管理**：通过 Web UI 或配置文件集中管理所有设置
4. **多语言支持**：内置 5 种语言的国际化消息
5. **开发者友好**：提供清晰的插件开发指南和代码规范

这种设计使得 cc-connect 能够灵活适应不同的部署场景，既可以作为单一平台桥接工具，也可以扩展为完整的多平台 AI 代理中控系统。

---

<a id='architecture'></a>

## 系统架构

### 相关页面

相关主题：[项目概述](#overview), [核心接口定义](#core-interfaces), [Bridge 协议](#bridge-protocol)

<details>
<summary>相关源码文件</summary>

以下源码文件用于生成本页说明：

- [core/engine.go](https://github.com/chenhg5/cc-connect/blob/main/core/engine.go)
- [core/bridge.go](https://github.com/chenhg5/cc-connect/blob/main/core/bridge.go)
- [core/registry.go](https://github.com/chenhg5/cc-connect/blob/main/core/registry.go)
- [web/src/pages/Providers/ProviderList.tsx](https://github.com/chenhg5/cc-connect/blob/main/web/src/pages/Providers/ProviderList.tsx)
- [web/src/pages/Projects/ProjectDetail.tsx](https://github.com/chenhg5/cc-connect/blob/main/web/src/pages/Projects/ProjectDetail.tsx)
- [web/src/pages/Sessions/SessionChat.tsx](https://github.com/chenhg5/cc-connect/blob/main/web/src/pages/Sessions/SessionChat.tsx)
- [web/src/api/client.ts](https://github.com/chenhg5/cc-connect/blob/main/web/src/api/client.ts)
- [INSTALL.md](https://github.com/chenhg5/cc-connect/blob/main/INSTALL.md)
- [AGENTS.md](https://github.com/chenhg5/cc-connect/blob/main/AGENTS.md)
</details>

# 系统架构

## 概述

cc-connect 是一个连接本地 AI 编程助手与即时通讯平台的中间件系统。其核心架构采用模块化设计，将 AI Agent（Claude Code、Codex、Cursor 等）、消息平台（Discord、Telegram、飞书等）和会话管理解耦，通过统一的引擎层进行协调调度。

架构设计遵循以下核心原则：

- **插件化平台支持**：通过 `core.RegisterPlatform` 注册机制支持新平台的热插拔
- **多项目隔离**：每个项目拥有独立的工作目录、Agent 配置和会话上下文
- **统一消息协议**：不同平台的消息统一转换为内部标准格式进行处理
- **前端分离**：Web 管理界面与后端核心服务通过 REST API 解耦

## 核心架构图

```mermaid
graph TB
    subgraph 前端层["前端层 (React + TypeScript)"]
        UI[Web Admin UI]
        API[API Client]
    end
    
    subgraph 后端核心["后端核心 (Go)"]
        ENG[Engine 引擎]
        BRG[Bridge 网桥]
        REG[Registry 注册表]
    end
    
    subgraph Agent层["Agent 层"]
        CLAUDE[Claude Code]
        CODEX[Codex]
        CURSOR[Cursor]
        GEMINI[Gemini CLI]
        QODER[Qoder]
        OPENCODE[OpenCode]
        IFLOW[iFlow]
    end
    
    subgraph 平台层["平台层 (Platform Plugins)"]
        DISCORD[Discord]
        TELEGRAM[Telegram]
        FEISHU[飞书]
        SLACK[Slack]
        DINGTALK[钉钉]
        WECOM[企业微信]
        WECHAT[微信]
        QQ[QQ/QQBot]
        LINE[Line]
        WEIBO[微博]
    end
    
    UI --> API
    API --> ENG
    ENG <--> BRG
    ENG <--> REG
    ENG <--> CLAUDE
    ENG <--> CODEX
    ENG <--> CURSOR
    ENG <--> GEMINI
    ENG <--> QODER
    ENG <--> OPENCODE
    ENG <--> IFLOW
    BRG <--> DISCORD
    BRG <--> TELEGRAM
    BRG <--> FEISHU
    BRG <--> SLACK
    BRG <--> DINGTALK
    BRG <--> WECOM
    BRG <--> WECHAT
    BRG <--> QQ
    BRG <--> LINE
    BRG <--> WEIBO
```

## 核心组件

### Engine（引擎）

Engine 是系统的核心调度器，负责协调 Agent 与平台之间的通信。从前端代码可以看到，Engine 处理以下关键功能：

- **Provider 管理**：管理 AI 模型提供商配置，包括 `base_url`、`model`、`thinking` 等参数
- **会话管理**：维护多个会话（Session）的生命周期，包括连接状态、消息历史
- **命令路由**：解析和执行用户命令，如 `/provider switch`、`/workspace bind` 等

```typescript
// 资料来源：web/src/pages/Providers/ProviderList.tsx:50-60
interface Provider {
  name: string;
  base_url?: string;
  model: string;
  models?: { model: string }[];
  thinking?: string;
  agent_types?: string[];
  endpoints?: Record<string, string>;
  agent_models?: Record<string, string>;
  agent_model_lists?: Record<string, string[]>;
}
```

### Bridge（网桥）

Bridge 负责维护与各消息平台的实时连接状态，实现消息的双向转发：

- **连接状态管理**：追踪 `connecting`、`connected`、`disconnected`、`error` 等状态
- **消息编码/解码**：将内部消息格式与各平台专有格式相互转换
- **心跳机制**：通过心跳保持与平台的长连接活跃

```typescript
// 资料来源：web/src/pages/Sessions/SessionChat.tsx:30-40
bridgeStatus === 'connected'  // 连接正常
bridgeStatus === 'connecting' // 连接中
bridgeStatus === 'disconnected' // 已断开
bridgeStatus === 'error' // 连接错误
```

### Registry（注册表）

Registry 实现了 Agent 和 Platform 的注册发现机制：

- **Agent 注册**：`core.RegisterAgent("agentname", factory)` 将新的 Agent 类型注册到系统
- **Platform 注册**：`core.RegisterPlatform("platformname", factory)` 将新的消息平台接入系统
- **工厂模式**：通过工厂函数延迟实例化，确保按需加载

## Agent 架构

### 支持的 Agent 类型

| Agent 类型 | 标识符 | 配置项 | 说明 |
|-----------|--------|--------|------|
| Claude Code | `claudecode` | `work_dir`, `mode` | Anthropic 官方 CLI |
| Codex | `codex` | `work_dir`, `mode` | OpenAI Codex |
| Cursor | `cursor` | `work_dir`, `mode` | Cursor IDE |
| Gemini CLI | `gemini` | `work_dir`, `mode` | Google Gemini CLI |
| Qoder | `qoder` | `work_dir`, `mode` | Qoder CLI |
| OpenCode | `opencode` | `work_dir`, `mode` | OpenCode CLI |
| iFlow | `iflow` | `work_dir`, `mode` | iFlow CLI |

### Agent 配置选项

```toml
# 资料来源：INSTALL.md:80-90
[projects.agent]
type = "claudecode"  # 或 "codex", "cursor", "gemini", "qoder", "opencode", "iflow"

[projects.agent.options]
work_dir = "/absolute/path/to/your/project"
mode = "default"     # 或 "acceptEdits", "plan", "bypassPermissions", "dontAsk"
```

### Agent 模式说明

| 模式 | 标识符 | 权限级别 | 说明 |
|------|--------|----------|------|
| 默认 | `default` | 标准 | 正常权限运行 |
| 编辑 | `acceptEdits` | 中等 | 自动接受代码编辑建议 |
| 计划 | `plan` | 只读 | 仅生成计划不执行 |
| 放行 | `bypassPermissions` | 最高 | 跳过所有权限检查 |
| 不询问 | `dontAsk` | 高 | 不等待确认直接执行 |

## 平台架构

### 支持的消息平台

cc-connect 通过插件化架构支持多种即时通讯平台：

| 平台 | 标识符 | 消息类型 | 特性 |
|------|--------|----------|------|
| Discord | `discord` | 文本/文件/图片 | Webhook + Bot |
| Telegram | `telegram` | 文本/文件/图片 | Bot API |
| 飞书 | `feishu` | 文本/文件 | 机器人 |
| Slack | `slack` | 文本/文件 | Webhook/Bot |
| 钉钉 | `dingtalk` | 文本/文件 | 机器人 |
| 企业微信 | `wecom` | 文本/文件 | 企业机器人 |
| 微信 | `weixin` | 文本/文件 | 公众号/企业微信 |
| QQ | `qq`/`qqbot` | 文本/文件 | QQ 机器人 |
| Line | `line` | 文本 | Line Bot |
| 微博 | `weibo` | 文本 | 微博消息 |

### 平台注册机制

新增平台需要完成以下步骤：

1. 创建平台目录 `platform/<platformname>/`
2. 实现 `core.Platform` 接口
3. 在 `init()` 函数中调用 `core.RegisterPlatform()`
4. 创建构建标签文件 `cmd/cc-connect/plugin_platform_<platformname>.go`
5. 添加到 `Makefile` 的 `ALL_PLATFORMS` 变量

```go
// 资料来源：AGENTS.md:25-30
// 伪代码示例
func init() {
    core.RegisterPlatform("newplatform", newPlatformFactory)
}
```

## 会话管理架构

### 会话生命周期

```mermaid
stateDiagram-v2
    [*] --> 创建中: 新建项目
    创建中 --> 活跃: 连接成功
    活跃 --> 等待中: 消息发送
    等待中 --> 活跃: 响应接收
    活跃 --> 断开: 关闭连接
    断开 --> 活跃: 重新连接
    活跃 --> [*]: 项目删除
```

### 会话数据结构

```typescript
// 资料来源：web/src/pages/Sessions/SessionList.tsx:20-35
interface Session {
  id: string;
  name?: string;
  user_name?: string;
  live: boolean;           // 是否活跃
  last_message?: {
    role: 'user' | 'assistant';
    content: string;
  };
  updated_at?: string;
  created_at?: string;
}
```

## API 架构

### API 客户端设计

前端通过统一的 `ApiClient` 类与后端通信：

```typescript
// 资料来源：web/src/api/client.ts:1-30
class ApiClient {
  get<T>(path: string, params?: Record<string, string>): Promise<T>
  post<T>(path: string, body?: any): Promise<T>
  put<T>(path: string, body?: any): Promise<T>
  patch<T>(path: string, body?: any): Promise<T>
  delete<T>(path: string): Promise<T>
  raw(path: string): Promise<string>  // 非 JSON 响应
}
```

### 认证机制

API 使用 Bearer Token 进行认证：

```typescript
// 资料来源：web/src/api/client.ts:20-25
const h: HeadersInit = {};
if (this.token) h['Authorization'] = `Bearer ${this.token}`;
```

## 项目配置架构

### 配置层级

```mermaid
graph TD
    A[config.toml] --> B[全局设置]
    A --> C[[projects]]
    C --> D[项目 1]
    C --> E[项目 N]
    D --> F[agent 配置]
    D --> G[platforms 配置]
    F --> H[type]
    F --> I[options]
    G --> J[platform 类型]
    G --> K[webhook/token]
```

### 配置示例

```toml
# 资料来源：INSTALL.md:40-70
[log]
level = "info"  # debug, info, warn, error

[[projects]]
name = "my-project"

[projects.agent]
type = "claudecode"
[projects.agent.options]
work_dir = "/path/to/project"
mode = "default"
```

## 工作目录隔离

每个项目拥有独立的工作目录，确保项目间环境互不影响：

```typescript
// 资料来源：web/src/pages/Projects/ProjectDetail.tsx:10-15
<Input
  label={t('projects.workDir', 'Working directory')}
  value={workDir}
  onChange={(e) => setWorkDir(e.target.value)}
  placeholder="/path/to/project"
/>
```

## 消息流转架构

```mermaid
sequenceDiagram
    participant User as 用户
    participant Platform as 消息平台
    participant Bridge as Bridge
    participant Engine as Engine
    participant Agent as AI Agent
    
    User->>Platform: 发送消息
    Platform->>Bridge: 接收消息
    Bridge->>Engine: 转发消息
    Engine->>Agent: 转发给 Agent
    Agent-->>Engine: 生成响应
    Engine-->>Bridge: 返回响应
    Bridge-->>Platform: 推送消息
    Platform-->>User: 显示响应
```

## 前端技术栈

| 层级 | 技术 | 职责 |
|------|------|------|
| UI 框架 | React 18 | 组件化开发 |
| 语言 | TypeScript | 类型安全 |
| 样式 | Tailwind CSS | 原子化样式 |
| 状态管理 | React Hooks | 本地状态 |
| 路由 | React Router | 页面导航 |
| HTTP | Fetch API | 服务端通信 |

### 前端页面结构

| 页面 | 路径 | 功能 |
|------|------|------|
| ProviderList | `/providers` | AI 提供商管理 |
| ProjectList | `/projects` | 项目列表 |
| ProjectDetail | `/projects/:id` | 项目配置 |
| SessionList | `/sessions` | 会话列表 |
| SessionChat | `/sessions/:id/chat` | 聊天界面 |
| SkillList | `/skills` | 技能管理 |

## 国际化

系统支持多语言界面，通过统一的翻译函数实现：

```go
// 资料来源：core/i18n.go:10-40
MsgProviderSwitchHint: {
    LangEnglish:            "`/provider switch <name>` to switch",
    LangChinese:            "`/provider switch <名称>` 切换",
    LangTraditionalChinese: "`/provider switch <名稱>` 切換",
    LangJapanese:           "`/provider switch <名前>` で切り替え",
    LangSpanish:            "`/provider switch <nombre>` para cambiar",
}
```

支持语言：`en`（英语）、`zh`（简体中文）、`zh-TW`（繁体中文）、`ja`（日语）、`es`（西班牙语）

## 构建与部署

### 构建标签

cc-connect 使用 Go 构建标签实现平台和 Agent 的条件编译：

```bash
# 资料来源：AGENTS.md:30-35
//go:build !no_discord
//go:build !no_telegram
//go:build !no_feishu
```

通过 `make build` 或 `make build PLATFORMS="discord,telegram"` 构建特定平台版本。

### 配置文件优先级

1. `-config <path>` 命令行参数
2. `./config.toml` 当前目录
3. `~/.cc-connect/config.toml` 全局配置（推荐）

## 扩展指南

### 新增 Agent 步骤

1. 创建 `agent/<agentname>/<agentname>.go`
2. 实现 `core.Agent` 和 `core.AgentSession` 接口
3. 在 `init()` 中调用 `core.RegisterAgent()`
4. 创建 `cmd/cc-connect/plugin_agent_<agentname>.go`
5. 添加到 `Makefile` 的 `ALL_AGENTS`

### 新增平台步骤

1. 创建 `platform/<platformname>/<platformname>.go`
2. 实现 `core.Platform` 接口
3. 在 `init()` 中调用 `core.RegisterPlatform()`
4. 创建 `cmd/cc-connect/plugin_platform_<platformname>.go`
5. 添加到 `Makefile` 的 `ALL_PLATFORMS`

## 总结

cc-connect 采用清晰的分层架构设计：

- **前端层**：React + TypeScript 构建的管理界面
- **核心层**：Engine、Bridge、Registry 组成的调度核心
- **Agent 层**：支持多种 AI 编程助手的统一抽象
- **平台层**：插件化的即时通讯平台集成

这种架构使得系统具有良好的可扩展性和可维护性，能够方便地接入新的 Agent 类型和消息平台，同时保持核心逻辑的稳定性。

---

<a id='core-interfaces'></a>

## 核心接口定义

### 相关页面

相关主题：[系统架构](#architecture), [Bridge 协议](#bridge-protocol)

<details>
<summary>相关源码文件</summary>

以下源码文件用于生成本页说明：

- [AGENTS.md](https://github.com/chenhg5/cc-connect/blob/main/AGENTS.md)
- [core/i18n.go](https://github.com/chenhg5/cc-connect/blob/main/core/i18n.go)
- [CONTRIBUTING.md](https://github.com/chenhg5/cc-connect/blob/main/CONTRIBUTING.md)
- [INSTALL.md](https://github.com/chenhg5/cc-connect/blob/main/INSTALL.md)
- [web/src/pages/Providers/ProviderList.tsx](https://github.com/chenhg5/cc-connect/blob/main/web/src/pages/Providers/ProviderList.tsx)
</details>

# 核心接口定义

## 概述

cc-connect 是一个将 AI 编码代理（如 Claude Code、Codex、Cursor 等）与多种消息平台（飞书、Telegram、Discord 等）连接的基础设施项目。其核心架构基于**接口驱动设计**，通过抽象层解耦代理实现与平台接入，使系统具备高度可扩展性。

核心接口体系包含三大支柱：

| 接口类别 | 作用 | 关键文件 |
|---------|------|---------|
| **Agent 接口** | 定义 AI 代理的标准行为 | `agent/*/` |
| **Platform 接口** | 定义消息平台的标准行为 | `platform/*/` |
| **Provider 接口** | 定义模型供应商配置 | `core/provider.go` |

资料来源：[AGENTS.md:1-20]()

## 接口架构图

```mermaid
graph TD
    subgraph "接入层 (Platform)"
        P1[Feishu]
        P2[Telegram]
        P3[Discord]
        P4[Slack]
    end
    
    subgraph "核心层 (Core)"
        Core[Core Engine]
        Provider[Provider Manager]
        Session[Session Manager]
    end
    
    subgraph "代理层 (Agent)"
        A1[Claude Code]
        A2[Codex]
        A3[Cursor]
        A4[Gemini]
    end
    
    P1 & P2 & P3 & P4 --> Core
    Core --> Provider
    Core --> Session
    Session --> A1 & A2 & A3 & A4
    
    style Core fill:#e1f5fe
    style Provider fill:#fff3e0
    style Session fill:#e8f5e9
```

## 代理接口体系

### Agent 接口

每个 AI 代理必须实现 `core.Agent` 和 `core.AgentSession` 接口。这种设计允许同一代理类型在不同工作目录下运行多个独立会话。

代理注册通过 `init()` 函数完成：

```go
core.RegisterAgent("newagent", factory)
```

资料来源：[AGENTS.md:35-44]()

### 支持的代理类型

| 代理类型 | 构建标签 | 配置标识 |
|---------|---------|---------|
| Claude Code | `no_claudecode` | `claudecode` |
| Codex | `no_codex` | `codex` |
| Cursor | `no_cursor` | `cursor` |
| Gemini | `no_gemini` | `gemini` |
| iFlow | `no_iflow` | `iflow` |
| OpenCode | `no_opencode` | `opencode` |
| Qoder | `no_qoder` | `qoder` |
| ACP | `no_acp` | `acp` |

资料来源：[AGENTS.md:43-52]()

### 代理配置选项

代理的 `options` 配置块支持以下参数：

| 参数 | 说明 | 可选值 |
|------|------|--------|
| `type` | 代理类型 | `claudecode`, `codex`, `cursor` 等 |
| `work_dir` | 工作目录路径 | 绝对路径 |
| `mode` | 运行模式 | `default`, `acceptEdits`, `plan`, `bypassPermissions`, `dontAsk` |

资料来源：[INSTALL.md:28-42]()

```toml
[projects.agent]
type = "claudecode"
[projects.agent.options]
work_dir = "/absolute/path/to/your/project"
mode = "default"  # 或 acceptEdits, plan, bypassPermissions, dontAsk
```

## 平台接口体系

### Platform 接口

消息平台通过实现 `core.Platform` 接口接入系统。接口支持可选扩展以提供更丰富的功能。

平台注册同样通过 `init()` 函数：

```go
core.RegisterPlatform("newplatform", factory)
```

资料来源：[AGENTS.md:17-33]()

### 支持的平台类型

| 平台 | 构建标签 | 配置标识 |
|------|---------|---------|
| 飞书 | `no_feishu` | `feishu` |
| Telegram | `no_telegram` | `telegram` |
| Discord | `no_discord` | `discord` |
| Slack | `no_slack` | `slack` |
| 钉钉 | `no_dingtalk` | `dingtalk` |
| 企业微信 | `no_wecom` | `wecom` |
| 微信 | `no_weixin` | `weixin` |
| QQ | `no_qq` | `qq` |
| QQ 机器人 | `no_qqbot` | `qqbot` |
| LINE | `no_line` | `line` |
| 微博 | `no_weibo` | `weibo` |

资料来源：[AGENTS.md:1-15]()

### 平台编译策略

cc-connect 采用**构建标签（Build Tags）** 实现选择性编译，每个平台/代理通过独立的 `plugin_*.go` 文件导入：

```go
//go:build !no_feishu
```

#### 编译命令示例

| 场景 | 命令 |
|------|------|
| 排除指定平台 | `go build -tags 'no_discord no_dingtalk'` |
| 仅包含特定代理 | `make build AGENTS=claudecode` |
| 仅包含特定平台 | `make build PLATFORMS_INCLUDE=feishu,telegram` |
| 排除多个组件 | `make build EXCLUDE=discord,dingtalk,qq` |

资料来源：[AGENTS.md:70-91]()

## Provider 接口体系

### Provider 管理

Provider 负责管理与 AI 模型的连接配置，支持多种模型供应商的统一抽象。

### Provider 配置结构

```toml
[[projects.providers]]
name = "provider-name"
type = "openai"  # 或 anthropic, google 等
base_url = "https://api.example.com/v1"
model = "gpt-4"
thinking = ""  # 支持 thinking 特性
```

Provider 配置可通过 Web 界面或配置文件管理，支持预设模板导入。

资料来源：[web/src/pages/Providers/ProviderList.tsx:1-50]()

### Provider 预设系统

系统内置 Provider 预设，支持一键配置常用供应商：

| 预设属性 | 说明 |
|---------|------|
| `tier` | 层级排序 |
| `thinking` | 是否支持思考模式 |
| `agent_types` | 支持的代理类型列表 |
| `endpoints` | 自定义端点映射 |
| `agent_models` | 代理特定模型配置 |
| `agent_model_lists` | 模型列表配置 |

资料来源：[web/src/pages/Providers/ProviderList.tsx:80-95]()

## Session 管理

### 会话生命周期

会话（Session）是连接平台消息与代理执行的桥梁。每个会话独立维护上下文状态。

会话支持以下操作：

- `/workspace bind <workspace-name>` - 绑定工作区
- `/workspace route <absolute-path>` - 设置路由路径
- `/provider switch <name>` - 切换 Provider
- `/provider clear` - 清除 Provider 选择

资料来源：[core/i18n.go:50-100]()

### 会话状态消息

| 消息键 | 英文 | 中文 |
|-------|------|------|
| `MsgWsBindSuccess` | ✅ Workspace bound | ✅ 工作区绑定成功 |
| `MsgWsBindNotFound` | Workspace not found | 工作区不存在 |
| `MsgProviderSwitched` | ✅ Provider switched | ✅ Provider 已切换 |
| `MsgProviderNotFound` | ❌ Provider not found | ❌ 未找到 Provider |

资料来源：[core/i18n.go:1-80]()

## 项目配置模型

### 完整配置结构

```toml
[[projects]]
name = "my-project"

[projects.agent]
type = "claudecode"
[projects.agent.options]
work_dir = "/absolute/path/to/your/project"
mode = "default"

# 平台配置
[projects.platform]
type = "feishu"
# ... 平台特定配置

# Provider 配置
[[projects.providers]]
name = "openai"
model = "gpt-4"

# 心跳配置（可选）
[projects.heartbeat]
interval_mins = 5
```

资料来源：[INSTALL.md:20-50]()

### 项目级功能开关

| 功能 | 配置项 | 说明 |
|------|--------|------|
| 上下文指示器 | `show_ctx_indicator` | 在回复后显示 `[ctx: ~N%]` |
| 回复页脚 | `reply_footer` | 追加模型/用量元数据 |

资料来源：[web/src/pages/Projects/ProjectDetail.tsx:50-80]()

## 国际化接口

### 消息定义格式

系统使用统一的国际化消息接口，支持多语言：

| 语言 | 代码 | 说明 |
|------|------|------|
| 英语 | `en` | 默认语言 |
| 中文 | `zh` | 简体中文 |
| 繁体中文 | `zh-TW` | 繁体中文 |
| 日语 | `ja` | 日语 |
| 西班牙语 | `es` | 西班牙语 |

消息定义示例：

```go
MsgProviderNotFound: {
    LangEnglish:            "❌ Provider %q not found...",
    LangChinese:            "❌ 未找到 Provider %q...",
    LangTraditionalChinese: "❌ 未找到 Provider %q...",
    LangJapanese:           "❌ プロバイダ %q が見つかりません...",
    LangSpanish:            "❌ Proveedor %q no encontrado...",
},
```

资料来源：[core/i18n.go:1-50]()

## 扩展开发指南

### 新增代理步骤

1. 创建 `agent/newagent/newagent.go`
2. 实现 `core.Agent` 和 `core.AgentSession` 接口
3. 在 `init()` 中注册：`core.RegisterAgent("newagent", factory)`
4. 创建 `cmd/cc-connect/plugin_agent_newagent.go` 含构建标签
5. 添加到 `Makefile` 的 `ALL_AGENTS`
6. 在 `config.example.toml` 添加配置示例
7. 编写单元测试

资料来源：[AGENTS.md:35-51]()

### 新增平台步骤

1. 创建 `platform/newplatform/newplatform.go`
2. 实现 `core.Platform` 接口
3. 在 `init()` 中注册：`core.RegisterPlatform("newplatform", factory)`
4. 创建构建标签文件
5. 添加到编译配置
6. 添加配置示例和测试

资料来源：[AGENTS.md:17-33]()

## 测试规范

### 接口测试要点

| 测试类别 | 测试方法 |
|---------|---------|
| 代理测试 | 使用 channels 模拟事件流 |
| 平台测试 | 模拟消息接收和响应 |
| 卡片渲染 | 检查返回的 `*Card` 结构体 |
| 会话测试 | 通过 channels 模拟事件流 |

资料来源：[AGENTS.md:60-65]()

## 编译检查清单

新增代码必须通过以下检查：

| 检查项 | 命令 | 说明 |
|--------|------|------|
| 构建测试 | `go build ./...` | 确保无编译错误 |
| 单元测试 | `go test ./...` | 所有测试通过 |
| 硬编码检查 | `grep` 检查 | core 目录无平台/代理硬编码名称 |
| 国际化 | 检查 | 所有用户可见字符串有翻译 |
| 敏感信息 | 检查 | 代码中无 API keys、tokens |

资料来源：[AGENTS.md:22-31]()

## 总结

cc-connect 的核心接口体系采用简洁而强大的设计：

- **接口抽象**：通过 `Agent`、`Platform`、`Provider` 三大接口抽象不同实现
- **插件化编译**：使用构建标签实现按需编译，减少二进制体积
- **国际化优先**：所有用户可见文本通过统一的 i18n 接口管理
- **配置驱动**：通过 TOML 配置文件灵活管理项目设置

这种设计使开发者能够以一致的方式添加新的代理类型或消息平台，同时保持核心引擎的稳定性和可测试性。

---

<a id='bridge-protocol'></a>

## Bridge 协议

### 相关页面

相关主题：[核心接口定义](#core-interfaces)

<details>
<summary>相关源码文件</summary>

以下源码文件用于生成本页说明：

- [core/bridge.go](https://github.com/chenhg5/cc-connect/blob/main/core/bridge.go)
- [core/bridge_capabilities.go](https://github.com/chenhg5/cc-connect/blob/main/core/bridge_capabilities.go)
- [web/src/pages/Sessions/SessionChat.tsx](https://github.com/chenhg5/cc-connect/blob/main/web/src/pages/Sessions/SessionChat.tsx)
- [web/src/pages/Chat/ChatView.tsx](https://github.com/chenhg5/cc-connect/blob/main/web/src/pages/Chat/ChatView.tsx)
- [web/src/api/client.ts](https://github.com/chenhg5/cc-connect/blob/main/web/src/api/client.ts)
</details>

# Bridge 协议

## 概述

Bridge 协议是 cc-connect 项目中的核心通信机制，用于在 Web 前端与后端引擎之间建立双向实时通信通道。它通过 WebSocket 技术实现低延迟的消息传递，支持多项目引擎管理、命令发布与订阅、以及卡片导航功能。

Bridge 协议的核心组件位于 `core/bridge.go` 和 `core/bridge_capabilities.go` 中，为整个应用提供可靠的前后端桥接能力。

---

## 架构设计

### 组件关系图

```mermaid
graph TD
    A[Web 前端] <-->|WebSocket| B[BridgeServer]
    B --> C[BridgePlatform]
    B --> D[bridgeAdapter]
    C --> E[Engine]
    E --> F[bridgeEngineRef]
    G[Providers] --> E
    H[Skills] --> E
```

### 核心数据结构

| 组件 | 文件位置 | 职责 |
|------|---------|------|
| `BridgeServer` | `core/bridge.go` | WebSocket 服务器主控，管理多个项目平台 |
| `BridgePlatform` | `core/bridge.go` | 单个项目的通信平台实例 |
| `bridgeAdapter` | `core/bridge.go` | 消息适配器，处理协议转换 |
| `bridgeEngineRef` | `core/bridge.go` | 引擎引用，管理引擎生命周期 |
| `Engine` | `core/bridge.go` | 具体项目引擎实现 |

资料来源：[core/bridge.go:47-61]()

---

## BridgeServer 配置与初始化

### 配置参数

`NewBridgeServer` 函数负责创建 Bridge 服务器实例，支持以下配置选项：

| 参数 | 类型 | 默认值 | 说明 |
|------|------|--------|------|
| `port` | int | 9810 | WebSocket 服务端口 |
| `path` | string | `/bridge/ws` | WebSocket 路径（自动补全前缀 `/`）|
| `token` | string | - | 认证令牌，insecure 模式下可为空 |
| `insecure` | bool | false | 是否启用非安全模式（仅限本地开发）|
| `corsOrigins` | []string | - | CORS 允许的源列表 |

资料来源：[core/bridge.go:47-59]()

### 安全机制

Bridge 协议实现了严格的安全验证：

```go
// Validate security settings
if token == "" && !insecure {
    slog.Error("bridge: token is required when insecure mode is not enabled",
        "help", "set bridge.token in config, or use insecure=true for local development only")
    return nil
}
if insecure && token == "" {
    slog.Warn("bridge: running in INSECURE mode without authentication - only use for local development!")
}
```

资料来源：[core/bridge.go:63-73]()

**安全规则：**
- 生产环境必须配置 `token`
- `insecure` 模式仅用于本地开发
- 未配置 token 且未启用 insecure 模式时，服务器启动失败

---

## 项目引擎管理

### 注册引擎

使用 `RegisterEngine` 方法将项目引擎注册到 Bridge 服务器：

```go
func (bs *BridgeServer) RegisterEngine(projectName string, engine *Engine, bp *BridgePlatform) {
    bs.enginesMu.Lock()
    defer bs.enginesMu.Unlock()
    if err := bp.Start(engine.handleMessage); err != nil {
        slog.Warn("bridge: platform start failed", "project", projectName, "error", err)
    }
    bp.SetCardNavigationHandler(engine.handleCardNav)
}
```

资料来源：[core/bridge.go:83-92]()

### 创建平台实例

每个项目引擎对应一个独立的 `BridgePlatform` 实例：

```go
func (bs *BridgeServer) NewPlatform(projectName string) *BridgePlatform {
    return &BridgePlatform{server: bs, project: projectName}
}
```

资料来源：[core/bridge.go:76-79]()

---

## 能力快照机制

### 快照数据结构

`bridgeCapabilitiesSnapshot` 定义了 Bridge 协议的能力快照格式：

```go
type bridgeCapabilitiesSnapshot struct {
    Type    string                           `json:"type"`
    Version int                              `json:"version"`
    Host    bridgeCapabilitiesHost            `json:"host"`
    Projects []bridgeProjectCapabilities      `json:"projects"`
}

type bridgeCapabilitiesHost struct {
    ID               string `json:"id"`
    Hostname         string `json:"hostname"`
    CCConnectVersion string `json:"ccconnect_version"`
    Commit           string `json:"commit"`
    BuildTime        string `json:"build_time"`
}

type bridgeProjectCapabilities struct {
    Project  string   `json:"project"`
    Commands []string `json:"commands"`
}
```

资料来源：[core/bridge_capabilities.go:1-35]()

### 获取能力快照

能力快照通过以下流程生成：

```mermaid
graph TD
    A[请求能力快照] --> B[获取所有项目名称]
    B --> C[排序项目列表]
    C --> D{遍历每个项目}
    D -->|获取引擎| E[bridgeEngineRef]
    E --> F[获取发布命令]
    F --> G[构建快照数据]
    G --> H[返回 JSON 响应]
```

资料来源：[core/bridge_capabilities.go:4-28]()

---

## 前端集成

### 连接状态管理

Web 前端通过 `web/src/api/client.ts` 中的 API 客户端与 Bridge 服务器通信：

```typescript
export class ApiClient {
  async raw(path: string): Promise<string> {
    const h: HeadersInit = {};
    if (this.token) h['Authorization'] = `Bearer ${this.token}`;
    const res = await fetch(`${API_BASE}${path}`, { headers: h });
    if (res.status === 401 && this.onUnauthorized) {
      this.onUnauthorized();
      throw new ApiError('Unauthorized', 401);
    }
    if (!res.ok) throw new ApiError(res.statusText, res.status);
    return res.text();
  }
}
```

资料来源：[web/src/api/client.ts:1-50]()

### 连接状态展示

前端 UI 根据 Bridge 连接状态显示不同的界面：

| 状态 | 样式 | 消息键名 |
|------|------|----------|
| `connected` | 绿色图标 | `sessions.bridgeConnected` |
| `error` | 琥珀色警告 | `sessions.bridgeDisconnected` |
| `connecting` | 灰色加载动画 | `sessions.bridgeConnecting` |

资料来源：[web/src/pages/Sessions/SessionChat.tsx:1-20]()
资料来源：[web/src/pages/Chat/ChatView.tsx:1-15]()

**连接中状态 UI：**
```tsx
<div className="flex items-center gap-2 px-4 py-3 text-sm text-gray-400 bg-gray-50 dark:bg-gray-800/50 rounded-xl">
  <Loader2 size={14} className="animate-spin" />
  <span>{t('sessions.bridgeConnecting', 'Connecting to bridge...')}</span>
</div>
```

资料来源：[web/src/pages/Sessions/SessionChat.tsx:13-16]()

---

## 配置示例

### config.toml 配置

```toml
[bridge]
port = 9810
path = "/bridge/ws"
token = "your-secret-token"
insecure = false  # 仅本地开发设为 true
cors_origins = ["http://localhost:5173"]
```

### 启动参数说明

| 参数 | 环境变量 | 说明 |
|------|----------|------|
| `port` | `BRIDGE_PORT` | 服务端口 |
| `path` | `BRIDGE_PATH` | WebSocket 路径 |
| `token` | `BRIDGE_TOKEN` | 认证令牌 |
| `insecure` | `BRIDGE_INSECURE` | 非安全模式 |

---

## 错误处理

### 常见错误场景

| 场景 | 错误消息 | 解决方案 |
|------|----------|----------|
| Token 缺失 | `bridge: token is required when insecure mode is not enabled` | 设置 `bridge.token` 或启用 `insecure=true` |
| 平台启动失败 | `bridge: platform start failed` | 检查引擎配置和网络连接 |
| 401 未授权 | `Unauthorized` | 验证 token 有效性 |

资料来源：[core/bridge.go:63-69]()

---

## 版本信息

能力快照中包含版本信息字段：

| 字段 | 来源 | 说明 |
|------|------|------|
| `CCConnectVersion` | 编译时注入 | cc-connect 版本号 |
| `Commit` | 编译时注入 | Git 提交哈希 |
| `BuildTime` | 编译时注入 | 构建时间戳 |

资料来源：[core/bridge_capabilities.go:18-22]()

---

## 总结

Bridge 协议是 cc-connect 实现前后端实时通信的关键机制。它具有以下特点：

- **基于 WebSocket**：提供低延迟的双向通信
- **多项目支持**：通过 `BridgePlatform` 管理多个独立项目
- **安全认证**：支持 token 验证和 CORS 控制
- **能力发现**：提供标准化的能力快照机制
- **状态监控**：前端可实时感知连接状态变化

---

<a id='agent-overview'></a>

## Agent 集成概述

### 相关页面

相关主题：[Claude Code 集成](#claude-code-integration), [Codex 集成](#codex-integration), [Agent 通信协议](#agent-protocols)

<details>
<summary>相关源码文件</summary>

以下源码文件用于生成本页说明：

- [agent/acp/agent.go](https://github.com/chenhg5/cc-connect/blob/main/agent/acp/agent.go)
- [agent/claudecode/claudecode.go](https://github.com/chenhg5/cc-connect/blob/main/agent/claudecode/claudecode.go)
- [agent/codex/codex.go](https://github.com/chenhg5/cc-connect/blob/main/agent/codex/codex.go)
- [core/agent.go](https://github.com/chenhg5/cc-connect/blob/main/core/agent.go)
- [web/src/pages/Projects/ProjectDetail.tsx](https://github.com/chenhg5/cc-connect/blob/main/web/src/pages/Projects/ProjectDetail.tsx)
- [web/src/pages/Providers/ProviderList.tsx](https://github.com/chenhg5/cc-connect/blob/main/web/src/pages/Providers/ProviderList.tsx)
- [core/i18n.go](https://github.com/chenhg5/cc-connect/blob/main/core/i18n.go)

</details>

# Agent 集成概述

## 简介

Agent 集成是 cc-connect 项目的核心功能模块，负责将多种 AI Agent 提供商统一接入到平台中。该模块通过抽象层设计，支持多种 Agent 运行时环境，包括 ACP Agent、Claude Code 和 Codex 等主流 AI 编程助手。

Agent 系统的设计目标是通过统一的接口规范，将不同提供商的 Agent 能力整合到同一个协作框架中，使开发者能够在项目中灵活切换和配置不同的 AI 助手，同时保持一致的用户体验和项目管理流程。

---

## 架构设计

### 整体架构

cc-connect 的 Agent 集成采用分层架构设计，从底层到顶层依次为：

```mermaid
graph TD
    A[用户界面层] --> B[项目管理模块]
    B --> C[Provider 配置层]
    C --> D[Agent 抽象层]
    D --> E[具体 Agent 实现]
    
    E --> F[ACP Agent]
    E --> G[Claude Code]
    E --> H[Codex]
    
    style D fill:#e1f5fe
    style F fill:#fff3e0
    style G fill:#fff3e0
    style H fill:#fff3e0
```

### Agent 类型系统

系统支持多种 Agent 类型，通过 `agent_type` 字段进行标识和配置。不同的 Agent 类型对应不同的 AI 提供商和运行时环境。

| Agent 类型 | 提供商 | 主要用途 | 配置方式 |
|-----------|--------|----------|----------|
| acp | ACP | 通用 AI 协作 | base_url + model |
| claude | Claude Code | Claude 编程助手 | claude_code 配置 |
| codex | OpenAI Codex | 代码补全与生成 | codex 配置 |

资料来源：[web/src/pages/Projects/ProjectDetail.tsx:30-35](https://github.com/chenhg5/cc-connect/blob/main/web/src/pages/Projects/ProjectDetail.tsx)

---

## Agent 权限模式

### 权限模式列表

每个 Agent 实例可以配置不同的权限模式，决定其执行操作时的权限级别。权限模式通过 `agentMode` 参数控制。

| 模式值 | 显示名称 | 说明 |
|--------|----------|------|
| default | 默认 | 标准权限，需要用户确认敏感操作 |
| acceptEdits | edit | 自动接受编辑操作 |
| plan | plan | 仅规划模式，不执行实际操作 |
| bypassPermissions | yolo | 绕过权限检查，所有操作直接执行 |
| dontAsk | dontAsk | 不询问，直接执行所有操作 |

资料来源：[web/src/pages/Projects/ProjectDetail.tsx:17-22](https://github.com/chenhg5/cc-connect/blob/main/web/src/pages/Projects/ProjectDetail.tsx)

### 权限模式配置界面

```tsx
<select
  value={agentMode}
  onChange={(e) => setAgentMode(e.target.value)}
  className="w-full px-3 py-2 text-sm rounded-lg border..."
>
  <option value="default">default</option>
  <option value="acceptEdits">acceptEdits (edit)</option>
  <option value="plan">plan</option>
  <option value="bypassPermissions">bypassPermissions (yolo)</option>
  <option value="dontAsk">dontAsk</option>
</select>
```

---

## Provider 配置与 Agent 关联

### Provider 模型

Provider 是 Agent 的配置容器，负责存储与特定 AI 服务提供商的连接配置。每个 Provider 可以包含多个模型配置和 Agent 类型支持。

```typescript
interface Provider {
  name: string;           // Provider 唯一标识
  base_url: string;       // API 端点地址
  model: string;          // 默认模型
  models: string[];       // 可用模型列表
  agent_types?: string[]; // 支持的 Agent 类型
  thinking?: string;     // 思考模式配置
}
```

资料来源：[web/src/pages/Providers/ProviderList.tsx:10-20](https://github.com/chenhg5/cc-connect/blob/main/web/src/pages/Providers/ProviderList.tsx)

### 思考模式配置

思考模式（Thinking）是 Agent 的重要特性之一，用于控制 AI 是否进行链式推理思考。

| 模式值 | 说明 |
|--------|------|
| 空字符串 | 使用 Provider 默认配置 |
| enabled | 启用思考模式 |
| disabled | 禁用思考模式 |

```tsx
<select
  value={form.thinking || ''}
  onChange={e => set('thinking', e.target.value)}
>
  <option value="">{t('globalProviders.form.thinkingDefault')}</option>
  <option value="enabled">enabled</option>
  <option value="disabled">disabled</option>
</select>
```

资料来源：[web/src/pages/Providers/ProviderList.tsx:90-105](https://github.com/chenhg5/cc-connect/blob/main/web/src/pages/Providers/ProviderList.tsx)

---

## 项目与 Agent 绑定

### 项目配置结构

每个项目（Project）可以关联一个或多个 Agent 实例，通过 `agent_type` 和相关配置实现绑定关系。

```typescript
interface Project {
  name: string;           // 项目名称
  agent_type: string;     // 关联的 Agent 类型
  work_dir?: string;      // 工作目录
  agent_mode?: string;    // 权限模式
  sessions_count: number; // 关联的会话数量
  heartbeat_enabled?: boolean; // 心跳功能开关
}
```

资料来源：[web/src/pages/Projects/ProjectList.tsx:20-30](https://github.com/chenhg5/cc-connect/blob/main/web/src/pages/Projects/ProjectList.tsx)

### Agent 类型变更流程

```mermaid
graph LR
    A[选择 Agent 类型] --> B{类型是否改变?}
    B -->|是| C[显示警告提示]
    C --> D[重启项目生效]
    B -->|否| E[保持当前配置]
    D --> F[移除不兼容的 Provider]
    F --> G[应用新配置]
```

当用户修改项目的 Agent 类型时，系统会显示警告提示，告知用户此操作需要重启项目，并且不兼容的 Provider 会被自动移除。

资料来源：[web/src/pages/Projects/ProjectDetail.tsx:40-42](https://github.com/chenhg5/cc-connect/blob/main/web/src/pages/Projects/ProjectDetail.tsx)

---

## Agent 实现类型

### ACP Agent

ACP Agent 是 cc-connect 的核心 Agent 实现，提供基于 ACP 协议的统一接口。

**主要特性：**
- 支持多种模型配置
- 可配置的思考模式
- 多语言国际化支持

### Claude Code

Claude Code Agent 集成，允许直接调用 Claude Code 的能力。

**配置参数：**
- `claude_code` 配置块
- 关联的 Provider base_url

### Codex

OpenAI Codex 集成，用于代码补全和生成任务。

**配置参数：**
- `codex` 配置块
- 支持 GPT-4 等模型

---

## 会话与 Agent 交互

### 会话状态

每个会话（Session）与特定的 Agent 实例关联，支持实时消息预览和状态指示。

| 状态字段 | 说明 |
|----------|------|
| live | 会话是否处于活跃状态 |
| last_message | 最后一条消息内容 |
| updated_at | 最后更新时间 |

```tsx
<div className="flex items-center gap-1.5 min-w-0">
  <MessageSquare size={14} className={s.live ? 'text-accent shrink-0' : 'text-gray-400 shrink-0'} />
  <span className="text-sm font-medium truncate">
    {s.name || s.user_name || s.id.slice(0, 8)}
  </span>
  {s.live && <Circle size={5} className="fill-emerald-500 text-emerald-500 shrink-0" />}
</div>
```

资料来源：[web/src/pages/Sessions/SessionList.tsx:15-22](https://github.com/chenhg5/cc-connect/blob/main/web/src/pages/Sessions/SessionList.tsx)

---

## 国际化和本地化

Agent 系统支持完整的国际化配置，通过 i18n 模块提供多语言消息支持。

**支持的语种：**

| 语言代码 | 名称 |
|----------|------|
| en | English |
| zh | 简体中文 |
| zh-TW | 繁體中文 |
| ja | 日本語 |
| es | Español |

```go
MsgProviderSwitchHint: {
    LangEnglish:            "`/provider switch <name>` to switch | `/provider clear` to reset",
    LangChinese:            "`/provider switch <名称>` 切换 | `/provider clear` 清除",
    LangTraditionalChinese: "`/provider switch <名稱>` 切換 | `/provider clear` 清除",
    LangJapanese:           "`/provider switch <名前>` で切り替え | `/provider clear` でリセット",
    LangSpanish:            "`/provider switch <nombre>` para cambiar | `/provider clear` para restablecer",
}
```

资料来源：[core/i18n.go:50-60](https://github.com/chenhg5/cc-connect/blob/main/core/i18n.go)

---

## 快速入门

### 配置新的 Agent Provider

1. 打开 CC-Connect Admin 管理界面
2. 导航至 Global Providers 页面
3. 点击「Add」按钮添加新的 Provider
4. 填写以下必要信息：
   - Provider 名称
   - API Base URL
   - 模型名称
   - 可选：模型列表

### 在项目中使用 Agent

1. 创建或选择已有项目
2. 在项目设置中配置 Agent 类型
3. 选择对应的权限模式
4. 绑定相关的 Provider 配置

### 切换 Provider

使用命令 `/provider switch <name>` 可以动态切换当前使用的 Provider，使用 `/provider clear` 可以重置为默认配置。

资料来源：[core/i18n.go:45-55](https://github.com/chenhg5/cc-connect/blob/main/core/i18n.go)

---

## 配置参考

### 项目级 Agent 配置

```toml
[project.my-project]
agent_type = "acp"
agent_mode = "default"
work_dir = "/path/to/project"
```

### Provider 级配置

```toml
[provider.anthropic]
base_url = "https://api.anthropic.com"
model = "claude-sonnet-4-20250514"
thinking = "enabled"
```

---

## 注意事项

1. **权限模式变更**：修改 `agent_mode` 后需要重启项目才能生效
2. **Agent 类型切换**：更换 Agent 类型会自动移除不兼容的 Provider 配置
3. **思考模式**：并非所有模型都支持思考模式，请参考具体模型的文档
4. **Provider 名称唯一性**：系统要求 Provider 名称全局唯一，重复添加会被拒绝

---

<a id='agent-protocols'></a>

## Agent 通信协议

### 相关页面

相关主题：[Agent 集成概述](#agent-overview)

<details>
<summary>相关源码文件</summary>

以下源码文件用于生成本页说明：

- [web/src/pages/Sessions/SessionChat.tsx](https://github.com/chenhg5/cc-connect/blob/main/web/src/pages/Sessions/SessionChat.tsx)
- [web/src/pages/Chat/ChatView.tsx](https://github.com/chenhg5/cc-connect/blob/main/web/src/pages/Chat/ChatView.tsx)
- [web/src/pages/Sessions/SessionList.tsx](https://github.com/chenhg5/cc-connect/blob/main/web/src/pages/Sessions/SessionList.tsx)
- [core/i18n.go](https://github.com/chenhg5/cc-connect/blob/main/core/i18n.go)
</details>

# Agent 通信协议

## 概述

Agent 通信协议是 CC-Connect 系统中实现多 Agent 之间消息传递、会话管理和状态同步的核心机制。该协议支撑了前端界面与后端 Agent 引擎之间的实时交互能力。

## 会话管理机制

会话（Session）是 Agent 通信的基本单元，每个会话包含唯一的标识符、状态信息和消息历史记录。

### 会话状态类型

| 状态类型 | 说明 | 标识 |
|---------|------|------|
| live | 会话处于活跃状态 | 绿色圆点指示器 |
| inactive | 会话已暂停 | 无特殊标识 |
| error | 连接错误 | 琥珀色警告显示 |

资料来源：[web/src/pages/Sessions/SessionList.tsx:4-5]()

### 会话消息结构

会话消息采用角色化结构，支持用户消息和 Agent 回复两种基本角色：

```typescript
interface SessionMessage {
  role: 'user' | 'assistant';
  content: string;
  timestamp?: string;
}
```

消息预览功能限制显示内容长度为 100 字符，并替换换行符为空格以保持布局整洁。资料来源：[web/src/pages/Sessions/SessionList.tsx:12-15]()

## 桥接连接机制

### 连接状态监控

Agent 通信依赖桥接（Bridge）机制实现前端与后端的长连接通信。系统提供三种连接状态：

| 状态 | 视觉反馈 | 触发条件 |
|------|---------|---------|
| connected | 绿色指示器 | 桥接连接正常 |
| connecting | 加载动画 + "Connecting to bridge..." | 连接建立中 |
| error | 琥珀色警告 + "Bridge disconnected" | 连接失败 |

资料来源：[web/src/pages/Sessions/SessionChat.tsx:3-9]() 和 [web/src/pages/Chat/ChatView.tsx:8-13]()

### 桥接连接流程

```
graph TD
    A[前端发起连接] --> B{连接状态检查}
    B -->|成功| C[显示 connected 状态]
    B -->|进行中| D[显示 loading 动画]
    B -->|失败| E[显示 error 警告]
    C --> F[建立 WebSocket 通信]
    E --> G[触发重连机制]
```

## 命令协议

Agent 通信支持多种命令操作，通过斜杠命令（Slash Commands）触发：

### Provider 相关命令

| 命令 | 功能 | 说明 |
|------|------|------|
| `/provider list` | 列出可用 Provider | 查看系统中配置的 AI 提供商 |
| `/provider switch <name>` | 切换 Provider | 切换到指定名称的 Provider |
| `/provider clear` | 重置 Provider | 清除当前 Provider 选择 |

资料来源：[core/i18n.go:1-10]()

### Workspace 相关命令

| 命令 | 功能 |
|------|------|
| `/workspace bind <workspace-name>` | 绑定工作区 |
| `/workspace route <absolute-path>` | 设置路由路径 |

## 消息国际化

系统支持多语言消息提示，确保 Agent 通信过程中的用户反馈清晰易懂：

| 语言 | Provider 切换提示 | Provider 未找到提示 |
|------|------------------|-------------------|
| English | `✅ Provider switched to **%s**` | `❌ Provider %q not found` |
| Chinese | `✅ Provider 已切换至 **%s**` | `❌ 未找到 Provider %q` |
| Japanese | `✅ プロバイダを %s に切り替えました` | `❌ プロバイダ %q が見つかりません` |
| Spanish | `✅ Proveedor cambiado a **%s**` | `❌ Proveedor %q no encontrado` |

资料来源：[core/i18n.go:1-8]()

## 前端通信组件

### ChatView 组件架构

ChatView 是核心通信视图组件，负责协调以下子组件：

```mermaid
graph TD
    A[ChatView] --> B[SessionDrawer]
    A --> C[CommandResultPanel]
    A --> D[BridgeStatus]
    B --> E[会话列表]
    C --> F[命令结果展示]
    D --> G[连接状态指示器]
```

组件接收以下属性：

- `sessions`: 会话列表数据
- `currentSession`: 当前活跃会话
- `onSelect`: 会话切换回调
- `onNewSession`: 新建会话回调

资料来源：[web/src/pages/Chat/ChatView.tsx:1-20]()

### SessionDrawer 组件

会话抽屉组件提供侧边栏式会话管理界面，支持：

- 会话列表展示
- 当前会话高亮
- 快速切换会话
- 新建会话入口

## 状态管理

### 会话状态同步

```typescript
// 会话状态更新流程
interface SessionState {
  id: string;
  name?: string;
  user_name?: string;
  live: boolean;
  last_message?: SessionMessage;
  updated_at?: string;
  created_at?: string;
}
```

会话列表按照最后更新时间排序，确保最近活跃的会话显示在列表顶部。

## 错误处理

系统提供分级错误处理机制：

1. **连接错误**：桥接连接失败时显示琥珀色警告，并提供重连选项
2. **命令错误**：未知命令返回使用提示信息
3. **Provider 错误**：Provider 不存在时提示可用列表

错误信息支持多语言显示，错误提示文本存储在 `core/i18n.go` 国际化配置中。

---

<a id='claude-code-integration'></a>

## Claude Code 集成

### 相关页面

相关主题：[Agent 集成概述](#agent-overview)

<details>
<summary>相关源码文件</summary>

以下源码文件用于生成本页说明：

- [agent/claudecode/claudecode.go](https://github.com/chenhg5/cc-connect/blob/main/agent/claudecode/claudecode.go) ⚠️ 未在当前上下文获取
- [agent/claudecode/session.go](https://github.com/chenhg5/cc-connect/blob/main/agent/claudecode/session.go) ⚠️ 未在当前上下文获取
- [agent/claudecode/claude_usage.go](https://github.com/chenhg5/cc-connect/blob/main/agent/claudecode/claude_usage.go) ⚠️ 未在当前上下文获取
- [web/src/pages/Providers/ProviderList.tsx](https://github.com/chenhg5/cc-connect/blob/main/web/src/pages/Providers/ProviderList.tsx) ✅ 已获取
- [web/src/pages/Projects/ProjectDetail.tsx](https://github.com/chenhg5/cc-connect/blob/main/web/src/pages/Projects/ProjectDetail.tsx) ✅ 已获取
- [core/i18n.go](https://github.com/chenhg5/cc-connect/blob/main/core/i18n.go) ✅ 已获取

> ⚠️ **注意**：Claude Code 集成核心源码文件（`agent/claudecode/*.go`）未包含在当前检索结果中。以下内容基于 Web 前端组件和 i18n 配置推断，可能与实际实现存在差异。建议查阅完整源码获取精确信息。

</details>

# Claude Code 集成

## 概述

Claude Code 集成是 cc-connect 项目中连接 Claude Code Agent 的核心功能模块。该集成允许用户在 cc-connect 平台中配置和使用 Claude Code 作为 AI 代码助手 provider，实现与 Claude Code 的无缝对接。

## 架构设计

### 核心组件

Claude Code 集成主要包含以下核心模块：

| 组件 | 文件路径 | 功能描述 |
|------|----------|----------|
| claudecode.go | agent/claudecode/ | Claude Code Agent 主逻辑实现 |
| session.go | agent/claudecode/ | 会话管理功能 |
| claude_usage.go | agent/claudecode/ | 使用量统计与计费追踪 |

### Provider 集成

Claude Code 作为一种特殊的 Agent Type（`codex`）集成到 cc-connect 的 Provider 系统中。用户可以在 Provider 配置界面选择或配置 Claude Code 作为 AI 服务提供商。

```mermaid
graph TD
    A[用户请求] --> B[cc-connect Core]
    B --> C{Provider 类型判断}
    C -->|codex| D[Claude Code Provider]
    C -->|其他| E[标准 Provider]
    D --> F[Claude Code Agent]
    E --> G[OpenAI/兼容 API]
    F --> H[Claude Code 执行环境]
```

## 配置选项

### Agent Mode 配置

在项目设置中，用户可以配置 Claude Code 的运行权限模式：

| 模式值 | 显示名称 | 权限级别 | 使用场景 |
|--------|----------|----------|----------|
| `default` | default | 标准权限 | 常规开发任务 |
| `acceptEdits` | acceptEdits (edit) | 自动接受编辑 | 信任的编辑操作 |
| `plan` | plan | 仅计划模式 | 安全审查阶段 |
| `bypassPermissions` | bypassPermissions (yolo) | 绕过权限检查 | 完全信任环境 |
| `dontAsk` | dontAsk | 无需确认 | 自动化脚本 |

资料来源：[web/src/pages/Projects/ProjectDetail.tsx]()

### Provider 配置

Claude Code Provider 支持以下核心配置项：

| 配置项 | 说明 | 必填 |
|--------|------|------|
| base_url | API 端点地址 | 是 |
| model | 模型标识符 | 是 |
| models | 模型列表（支持多模型） | 否 |
| agent_type | Agent 类型（codex 表示 Claude Code） | 是 |
| thinking | 思考模式（enabled/disabled/default） | 否 |

资料来源：[web/src/pages/Providers/ProviderList.tsx]()

### Codex 特有配置

对于 `agent_type` 为 `codex` 的 Claude Code Provider，还支持以下特有配置：

| 配置项 | 说明 | 来源 |
|--------|------|------|
| wire_api | Codex Wire API 配置 | ProjectDetail.tsx |

## 会话管理

Claude Code 集成了 cc-connect 的会话管理系统，支持：

- 实时会话列表展示
- 最后消息预览
- 会话时间戳显示
- 活跃会话状态指示（Live indicator）

资料来源：[web/src/pages/Sessions/SessionList.tsx]()

## 国际化支持

Claude Code 集成相关的消息已实现多语言支持：

| 语言 | 语言代码 | 消息覆盖 |
|------|----------|----------|
| 英语 | en | ✅ 完整支持 |
| 简体中文 | zh | ✅ 完整支持 |
| 繁体中文 | zh-TW | ✅ 完整支持 |
| 日语 | ja | ✅ 完整支持 |
| 西班牙语 | es | ✅ 完整支持 |

资料来源：[core/i18n.go]()

## 使用流程

### 1. 添加 Provider

在 cc-connect Web 界面的 Providers 页面，添加新的 Provider：

1. 选择或输入 Provider 名称
2. 配置 API 端点（base_url）
3. 设置模型标识符
4. 指定 Agent Type 为 `codex`
5. 根据需要配置 thinking 模式

### 2. 创建/配置项目

将 Claude Code Provider 关联到项目：

1. 在项目设置中选择 Provider
2. 配置 Agent Mode（权限级别）
3. 设置工作目录
4. 启用/禁用心跳检测（可选）

### 3. 启动会话

与 Claude Code Agent 建立会话：

1. 在会话列表中创建新会话
2. 与 Claude Code 进行交互
3. 监控系统使用量和状态

## 与其他 Provider 的对比

| 特性 | Claude Code (codex) | 标准 Provider |
|------|---------------------|----------------|
| Agent Mode | ✅ 支持 | ❌ 不适用 |
| Wire API | ✅ 支持特有配置 | ❌ 不适用 |
| 心跳检测 | ✅ 支持 | ✅ 支持 |
| 多模型支持 | ✅ | ✅ |
| thinking 配置 | ✅ | ✅ |

## 注意事项

1. **权限安全**：使用 `bypassPermissions` 或 `dontAsk` 模式时请确保环境安全
2. **API 配置**：Claude Code Provider 需要正确配置 API 端点和模型
3. **源码限制**：当前检索结果中未包含 `agent/claudecode/` 核心源码文件，建议查阅完整仓库以获取精确实现细节

---

<a id='codex-integration'></a>

## Codex 集成

### 相关页面

相关主题：[Agent 集成概述](#agent-overview)

<details>
<summary>相关源码文件</summary>

以下源码文件用于生成本页说明：

- [agent/codex/codex.go](https://github.com/chenhg5/cc-connect/blob/main/agent/codex/codex.go)
- [agent/codex/session.go](https://github.com/chenhg5/cc-connect/blob/main/agent/codex/session.go)
- [agent/codex/provider_config.go](https://github.com/chenhg5/cc-connect/blob/main/agent/codex/provider_config.go)
- [web/src/pages/Providers/ProviderList.tsx](https://github.com/chenhg5/cc-connect/blob/main/web/src/pages/Providers/ProviderList.tsx)
- [AGENTS.md](https://github.com/chenhg5/cc-connect/blob/main/AGENTS.md)
</details>

# Codex 集成

## 概述

Codex 集成是 cc-connect 项目中实现的一个可选 Agent 类型，允许用户通过统一的 cc-connect 接口与 OpenAI Codex（或兼容 Codex API 协议的服务）进行交互。该集成作为 cc-connect 的插件化 Agent 架构的一部分，通过实现 `core.Agent` 和 `core.AgentSession` 接口来提供完整的会话管理和消息处理能力。

## 架构设计

### 模块结构

Codex 集成位于 `agent/codex/` 目录下，包含三个核心文件：

| 文件 | 职责 |
|------|------|
| `codex.go` | 主入口，实现 Agent 工厂函数和核心接口 |
| `session.go` | 会话管理，处理消息流和状态维护 |
| `provider_config.go` | Provider 配置管理，支持 per-agent 配置 |

### 插件注册机制

根据 cc-connect 的插件化架构设计，Codex Agent 通过 `init()` 函数注册到核心系统：

```go
// 伪代码示例
func init() {
    core.RegisterAgent("codex", NewCodexAgent)
}
```

资料来源：[AGENTS.md]()

## 配置管理

### Provider 配置结构

Codex 集成支持两种配置模式：

1. **全局配置**：通过 `config.toml` 或 `cc-connect provider add` 命令添加
2. **Per-Agent 配置**：允许每个项目/工作区独立配置 Codex 参数

### wire_api 配置

Codex 集成支持 `wire_api` 参数，用于配置特殊的 API 协议处理：

```go
config.wire_api // Codex 特定的 API 线协议配置
```

资料来源：[web/src/pages/Providers/ProviderList.tsx:1]()

### Thinking 配置

Codex Agent 支持 thinking 参数控制：

| 值 | 行为 |
|----|------|
| 空字符串 | 使用 Provider 默认设置 |
| `enabled` | 强制启用 thinking 模式 |
| `disabled` | 强制禁用 thinking 模式 |

资料来源：[web/src/pages/Providers/ProviderList.tsx:1]()

## 界面集成

### Provider 管理界面

在 cc-connect Web 管理界面的 **Provider List** 页面中，Codex 作为特殊的 Agent 类型进行配置：

```
Agent Type 选择: codex
```

当选择 Codex 类型时，界面会显示额外的 `wire_api` 配置选项：

```tsx
{agentType === 'codex' && (
    <div>
      <label>Codex Wire API</label>
      <select value={config.wire_api || ''} onChange={...} />
    </div>
)}
```

资料来源：[web/src/pages/Providers/ProviderList.tsx:1]()

## 消息处理流程

```
graph TD
    A[用户消息] --> B[cc-connect Core]
    B --> C[Codex Agent]
    C --> D[Codex Session]
    D --> E[Codex API Provider]
    E --> F[API 响应]
    F --> G[Session 状态更新]
    G --> H[消息流返回]
```

## 与其他 Agent 的对比

| 特性 | Codex | 其他 Agent |
|------|-------|-----------|
| 插件注册 | `core.RegisterAgent("codex", ...)` | 相同模式 |
| 会话管理 | 实现 `AgentSession` 接口 | 相同模式 |
| Provider 配置 | 支持 per-agent 配置 | 部分支持 |
| wire_api | 特有配置项 | 无 |

## 添加新的 Agent 类型

如需参考 Codex 的实现方式来添加新的 Agent，可参考 AGENTS.md 中的指南：

1. 创建 `agent/newagent/newagent.go`
2. 实现 `core.Agent` 和 `core.AgentSession` 接口
3. 在 `init()` 函数中注册：`core.RegisterAgent("newagent", factory)`
4. 创建 `cmd/cc-connect/plugin_agent_newagent.go` 并添加 `//go:build !no_newagent` 标签
5. 在 `Makefile` 的 `ALL_AGENTS` 中添加新 Agent
6. 在 `config.example.toml` 中添加配置示例
7. 添加单元测试

资料来源：[AGENTS.md]()

## 总结

Codex 集成展示了 cc-connect 插件化架构的灵活性。通过实现标准化的 Agent 接口，Codex 能够无缝融入 cc-connect 的会话管理、Provider 管理和配置系统。Per-agent 配置能力和 wire_api 特殊参数的支持，使得 Codex 集成能够适应不同的部署场景和 API 提供商需求。

---

<a id='platform-overview'></a>

## 平台集成概述

### 相关页面

相关主题：[飞书集成详解](#platform-feishu)

<details>
<summary>相关源码文件</summary>

以下源码文件用于生成本页说明：

- [AGENTS.md](https://github.com/chenhg5/cc-connect/blob/main/AGENTS.md)
- [web/src/pages/Providers/ProviderList.tsx](https://github.com/chenhg5/cc-connect/blob/main/web/src/pages/Providers/ProviderList.tsx)
- [core/i18n.go](https://github.com/chenhg5/cc-connect/blob/main/core/i18n.go)
- [web/src/pages/Projects/ProjectList.tsx](https://github.com/chenhg5/cc-connect/blob/main/web/src/pages/Projects/ProjectList.tsx)
- [web/src/pages/Projects/ProjectDetail.tsx](https://github.com/chenhg5/cc-connect/blob/main/web/src/pages/Projects/ProjectDetail.tsx)
- [web/src/pages/Sessions/SessionList.tsx](https://github.com/chenhg5/cc-connect/blob/main/web/src/pages/Sessions/SessionList.tsx)
</details>

# 平台集成概述

## 简介

cc-connect 是一个多平台代理连接器，支持将多个 AI 编码助手平台（如 Claude Code、Cursor、Kimi 等）统一接入到单一界面进行管理。平台集成系统是 cc-connect 的核心架构之一，它通过标准化的 `core.Platform` 接口定义，允许以插件化方式加载和管理不同的即时通讯平台。

当前支持的平台包括飞书（Feishu）、Telegram、Slack、Discord、钉钉（DingTalk）、企业微信（WeCom）、微信（Weixin）、QQ、Line、微博（Weibo）等。

## 核心架构

### 平台接口设计

平台模块需要实现 `core.Platform` 接口，这是所有平台集成的核心契约。接口定义包含平台初始化、消息处理、会话管理等功能。

```mermaid
graph TD
    A[core.Platform 接口] --> B[平台初始化 init]
    A --> C[消息接收与处理]
    A --> D[会话管理]
    A --> E[平台配置]
    
    B --> B1[RegisterPlatform 注册]
    C --> C1[消息路由]
    D --> D1[Session 会话]
    E --> E1[配置解析]
```

### 平台注册机制

平台通过 `init()` 函数在启动时自动注册到核心系统：

```go
core.RegisterPlatform("newplatform", factory)
```

此机制遵循 Go 语言的插件化设计理念，允许在编译时通过构建标签（build tags）选择性地包含或排除特定平台。资料来源：[AGENTS.md:30]()

### 构建标签控制

平台的可选性通过 Go 构建标签实现，开发者可以使用 `no_` 前缀的标签来排除不需要的平台：

| 构建标签 | 排除平台 |
|---------|---------|
| `no_feishu` | 飞书 |
| `no_telegram` | Telegram |
| `no_slack` | Slack |
| `no_discord` | Discord |
| `no_dingtalk` | 钉钉 |
| `no_wecom` | 企业微信 |
| `no_weixin` | 微信 |
| `no_qq` | QQ |
| `no_line` | Line |
| `no_weibo` | 微博 |

编译示例：

```bash
# 排除飞书和钉钉平台
go build -tags "no_feishu,no_dingtalk"
```

资料来源：[AGENTS.md:5-6]()

## 新增平台流程

### 步骤概览

```mermaid
graph LR
    A[创建平台目录] --> B[实现 Platform 接口]
    B --> C[注册平台 init]
    C --> D[创建构建文件]
    D --> E[添加到 Makefile]
    E --> F[添加配置示例]
    F --> G[编写单元测试]
```

### 详细步骤

#### 1. 创建平台目录结构

在 `platform/` 目录下创建新平台目录：

```
platform/newplatform/
└── newplatform.go
```

#### 2. 实现 core.Platform 接口

创建 `platform/newplatform/newplatform.go` 文件，实现 `core.Platform` 接口以及可选的扩展接口。

#### 3. 注册平台

在 `init()` 函数中调用注册方法：

```go
func init() {
    core.RegisterPlatform("newplatform", NewPlatform)
}
```

#### 4. 创建构建文件

创建 `cmd/cc-connect/plugin_platform_newplatform.go`，并添加构建标签：

```go
//go:build !no_newplatform

package main
```

此文件用于在主程序中链接平台插件。

#### 5. 更新 Makefile

将新平台名称添加到 `Makefile` 中的 `ALL_PLATFORMS` 变量。

#### 6. 添加配置示例

在 `config.example.toml` 中添加该平台的配置示例段。

#### 7. 编写单元测试

为新平台创建对应的测试文件，确保核心功能覆盖。

资料来源：[AGENTS.md:28-35]()

## 平台配置管理

### Web 管理界面

cc-connect 提供了基于 Web 的配置管理界面，支持可视化配置各平台的连接参数。

#### Provider 配置

Provider 是平台配置的核心概念，用于定义 AI 模型提供商：

```typescript
interface Provider {
  name: string;           // 提供商名称
  base_url?: string;      // API 基础地址
  model?: string;         // 默认模型
  models?: Model[];       // 模型列表
  api_key?: string;       // API 密钥
  thinking?: string;      // 思考模式设置
  agent_types?: string[]; // 支持的代理类型
}
```

资料来源：[web/src/pages/Providers/ProviderList.tsx:1-50]()

#### Agent Type 支持

平台可支持的 Agent 类型包括：

| Agent Type | 说明 |
|-----------|------|
| `claudecode` | Claude Code |
| `codex` | OpenAI Codex |
| `gemini` | Google Gemini |
| `opencode` | OpenCode |
| `cursor` | Cursor |
| `kimi` | Kimi |
| `qoder` | Qoder |
| `acp` | ACP |

Web 界面中通过多选按钮组进行 Agent 类型的选择和配置。资料来源：[web/src/pages/Providers/ProviderList.tsx:100-120]()

### 国际化配置

平台相关的用户提示信息通过 `core/i18n.go` 进行多语言管理。当前支持的语言包括：

| 语言代码 | 语言名称 |
|--------|---------|
| `en` | English |
| `zh` | 简体中文 |
| `zh-TW` | 繁体中文 |
| `ja` | 日本語 |
| `es` | Español |

每条消息都定义了对应语言的翻译文本，确保用户在不同语言环境下获得一致体验。资料来源：[core/i18n.go:1-50]()

## 项目与会话管理

### 项目系统

每个平台连接的项目（Project）包含以下核心配置：

```typescript
interface Project {
  name: string;              // 项目名称
  agent_type: string;        // 代理类型
  platforms?: string[];     // 启用的平台列表
  work_dir?: string;        // 工作目录
  agent_mode?: string;      // 代理模式
  heartbeat_enabled?: boolean;  // 心跳功能启用
  sessions_count?: number;  // 会话数量
}
```

#### Agent Mode 选项

| Mode 值 | 说明 |
|--------|------|
| `default` | 默认模式 |
| `acceptEdits` | 编辑模式 |
| `plan` | 计划模式 |
| `bypassPermissions` | 绕过权限（yolo） |
| `dontAsk` | 不询问模式 |

资料来源：[web/src/pages/Projects/ProjectList.tsx:50-80]()

### 会话系统

会话（Session）代表用户与 AI 代理之间的单次交互：

```typescript
interface Session {
  id: string;
  name?: string;
  user_name?: string;
  live?: boolean;           // 是否在线
  last_message?: {
    role: 'user' | 'assistant';
    content: string;
  };
  updated_at?: string;
  created_at?: string;
}
```

会话列表支持显示实时状态指示器、最后消息预览等功能。资料来源：[web/src/pages/Sessions/SessionList.tsx:1-30]()

## 心跳机制

心跳（Heartbeat）功能用于维持项目与平台连接的活跃状态：

### 心跳配置项

| 配置项 | 说明 |
|-------|------|
| `interval_mins` | 心跳间隔（分钟） |
| `paused` | 是否暂停 |
| `run_count` | 运行次数 |
| `error_count` | 错误计数 |
| `skipped_busy` | 跳过忙碌次数 |
| `last_run` | 上次运行时间 |
| `last_error` | 最后错误信息 |

资料来源：[web/src/pages/Projects/ProjectDetail.tsx:1-30]()

### 心跳控制操作

| 操作 | 说明 |
|-----|------|
| `resumeHeartbeat` | 恢复心跳 |
| `pauseHeartbeat` | 暂停心跳 |
| `triggerHeartbeat` | 手动触发心跳 |
| `setInterval` | 设置间隔 |

## 技能系统

技能（Skills）允许在项目中预设和管理可用的工具集：

```typescript
interface SkillPreset {
  name: string;
  display_name?: string;
  project: string;          // 所属项目
  agent_type: string;       // 代理类型
  skills?: Skill[];         // 技能列表
  dirs?: string[];          // 扫描目录
  source?: {
    url?: string;
    name?: string;
    provider?: string;
  };
  author?: string;
  description?: string;
  description_zh?: string;
  tags?: string[];
  version?: string;
  pricing?: string;
  url?: string;
}
```

技能来源可以是本地定义的技能，也可以是远程下载的技能包。资料来源：[web/src/pages/Skills/SkillList.tsx:1-60]()

## 工作区管理

工作区（Workspace）功能允许用户绑定和管理多个工作空间：

| 命令 | 说明 |
|-----|------|
| `/workspace bind <name>` | 绑定工作区 |
| `/workspace clear` | 清除工作区 |
| `/workspace route <path>` | 路由到指定路径 |

资料来源：[core/i18n.go:200-250]()

## 开发检查清单

新增平台时需要遵循以下检查流程：

1. **构建通过**：`go build ./...`
2. **测试通过**：`go test ./...`
3. **无硬编码**：核心代码中不得有新的平台名称硬编码
4. **国际化完整**：所有用户可见字符串需包含所有语言翻译
5. **无敏感信息**：源码中不得包含 API Key、Token 等凭据

资料来源：[AGENTS.md:8-16]()

## 相关文件结构

```
cc-connect/
├── core/
│   ├── platform.go          # Platform 接口定义
│   └── i18n.go             # 国际化支持
├── platform/
│   ├── feishu/             # 飞书平台
│   ├── telegram/           # Telegram 平台
│   ├── slack/              # Slack 平台
│   └── ...                 # 其他平台
├── web/
│   └── src/pages/
│       ├── Providers/      # 提供商管理
│       ├── Projects/       # 项目管理
│       ├── Sessions/       # 会话管理
│       └── Skills/         # 技能管理
└── cmd/cc-connect/
    └── plugin_platform_*.go # 平台插件构建文件
```

## 总结

平台集成系统采用插件化架构设计，通过标准接口和构建标签实现高度的灵活性和可扩展性。开发者可以通过遵循既定的开发流程快速添加新平台支持，同时系统提供的 Web 管理界面降低了运维复杂度。

---

<a id='platform-feishu'></a>

## 飞书集成详解

### 相关页面

相关主题：[平台集成概述](#platform-overview)

无法生成此页面。提供的源码上下文中**不包含**飞书集成相关的代码。

您要求引用的以下文件均未出现在当前检索结果中：

- `platform/feishu/feishu.go`
- `platform/feishu/card.go`
- `platform/feishu/ws_shared.go`
- `docs/feishu.md`

当前上下文仅包含以下文件的相关代码片段：

| 文件路径 | 内容概述 |
|---------|---------|
| `web/src/pages/Providers/ProviderList.tsx` | 提供商列表 UI 组件 |
| `web/src/pages/Skills/SkillList.tsx` | 技能列表 UI 组件 |
| `web/src/pages/Projects/ProjectList.tsx` | 项目列表 UI 组件 |
| `web/src/pages/Projects/ProjectDetail.tsx` | 项目详情 UI 组件 |
| `web/src/pages/Sessions/SessionList.tsx` | 会话列表 UI 组件 |
| `core/i18n.go` | 国际化消息定义 |
| `web/index.html` | Web 应用入口 HTML |
| `web/preview.html` | 预览页面 HTML |

建议：请重新检索包含飞书集成源码的文件，或使用 `platform/feishu/` 目录下的实际代码片段进行查询。

---

---

## Doramagic 踩坑日志

项目：chenhg5/cc-connect

摘要：发现 24 个潜在踩坑项，其中 6 个为 high/blocking；最高优先级：安装坑 - 来源证据：[Bug]。

## 1. 安装坑 · 来源证据：[Bug]

- 严重度：high
- 证据强度：source_linked
- 发现：GitHub 社区证据显示该项目存在一个安装相关的待验证问题：[Bug]
- 对用户的影响：可能增加新用户试用和生产接入成本。
- 建议检查：来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。
- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。
- 证据：community_evidence:github | cevd_c85c0f8f48ac44c7a855066b2bfc3939 | https://github.com/chenhg5/cc-connect/issues/933 | 来源讨论提到 npm 相关条件，需在安装/试用前复核。

## 2. 安装坑 · 来源证据：[Feature] Preserve full interactive card schema on inbound

- 严重度：high
- 证据强度：source_linked
- 发现：GitHub 社区证据显示该项目存在一个安装相关的待验证问题：[Feature] Preserve full interactive card schema on inbound
- 对用户的影响：可能影响升级、迁移或版本选择。
- 建议检查：来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。
- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。
- 证据：community_evidence:github | cevd_f50380a7aef54548ac053b1127a2916e | https://github.com/chenhg5/cc-connect/issues/936 | 来源类型 github_issue 暴露的待验证使用条件。

## 3. 安装坑 · 来源证据：cc-connect 因 SSH 断开被 systemd 停止：需要文档化 `loginctl enable-linger`

- 严重度：high
- 证据强度：source_linked
- 发现：GitHub 社区证据显示该项目存在一个安装相关的待验证问题：cc-connect 因 SSH 断开被 systemd 停止：需要文档化 `loginctl enable-linger`
- 对用户的影响：可能增加新用户试用和生产接入成本。
- 建议检查：来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。
- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。
- 证据：community_evidence:github | cevd_3a818efa6ddf479aae0f026d1f06d491 | https://github.com/chenhg5/cc-connect/issues/960 | 来源讨论提到 npm 相关条件，需在安装/试用前复核。

## 4. 配置坑 · 来源证据：Feishu: all messages permanently ignored as 'old message after restart' after every daemon restart (v1.3.3-beta.2)

- 严重度：high
- 证据强度：source_linked
- 发现：GitHub 社区证据显示该项目存在一个配置相关的待验证问题：Feishu: all messages permanently ignored as 'old message after restart' after every daemon restart (v1.3.3-beta.2)
- 对用户的影响：可能增加新用户试用和生产接入成本。
- 建议检查：来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。
- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。
- 证据：community_evidence:github | cevd_7b001c45ac3449abaee3dd365bc4cc74 | https://github.com/chenhg5/cc-connect/issues/972 | 来源讨论提到 linux 相关条件，需在安装/试用前复核。

## 5. 配置坑 · 来源证据：[Bug] cc-connect send uses default socket path in custom data_dir agent sessions

- 严重度：high
- 证据强度：source_linked
- 发现：GitHub 社区证据显示该项目存在一个配置相关的待验证问题：[Bug] cc-connect send uses default socket path in custom data_dir agent sessions
- 对用户的影响：可能增加新用户试用和生产接入成本。
- 建议检查：来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。
- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。
- 证据：community_evidence:github | cevd_6136e384578b499ca63299322032211a | https://github.com/chenhg5/cc-connect/issues/966 | 来源类型 github_issue 暴露的待验证使用条件。

## 6. 安全/权限坑 · 来源证据：Feature Request: 终端与 IM 双通道统一会话管理

- 严重度：high
- 证据强度：source_linked
- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：Feature Request: 终端与 IM 双通道统一会话管理
- 对用户的影响：可能影响授权、密钥配置或安全边界。
- 建议检查：来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。
- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。
- 证据：community_evidence:github | cevd_befa8b4f1c7f4ef483d6d8b38ba06ba4 | https://github.com/chenhg5/cc-connect/issues/968 | 来源讨论提到 windows 相关条件，需在安装/试用前复核。

## 7. 安装坑 · 来源证据：v1.3.3-beta.1

- 严重度：medium
- 证据强度：source_linked
- 发现：GitHub 社区证据显示该项目存在一个安装相关的待验证问题：v1.3.3-beta.1
- 对用户的影响：可能影响升级、迁移或版本选择。
- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。
- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。
- 证据：community_evidence:github | cevd_5eb39ef63cf14e56aff580db738dcd9f | https://github.com/chenhg5/cc-connect/releases/tag/v1.3.3-beta.1 | 来源讨论提到 npm 相关条件，需在安装/试用前复核。

## 8. 安装坑 · 来源证据：生图 app-icon 请求未稳定转发到 generate-image，且 cc-connect 存在部署漂移风险

- 严重度：medium
- 证据强度：source_linked
- 发现：GitHub 社区证据显示该项目存在一个安装相关的待验证问题：生图 app-icon 请求未稳定转发到 generate-image，且 cc-connect 存在部署漂移风险
- 对用户的影响：可能增加新用户试用和生产接入成本。
- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。
- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。
- 证据：community_evidence:github | cevd_574cca97359b4bc1a8a8fa968ab758cb | https://github.com/chenhg5/cc-connect/issues/967 | 来源讨论提到 node 相关条件，需在安装/试用前复核。

## 9. 配置坑 · 可能修改宿主 AI 配置

- 严重度：medium
- 证据强度：source_linked
- 发现：项目面向 Claude/Cursor/Codex/Gemini/OpenCode 等宿主，或安装命令涉及用户配置目录。
- 对用户的影响：安装可能改变本机 AI 工具行为，用户需要知道写入位置和回滚方法。
- 建议检查：列出会写入的配置文件、目录和卸载/回滚步骤。
- 防护动作：涉及宿主配置目录时必须给回滚路径，不能只给安装命令。
- 证据：capability.host_targets | github_repo:1168978399 | https://github.com/chenhg5/cc-connect | host_targets=claude, claude_code, cursor

## 10. 配置坑 · 来源证据：v1.3.0-rc.3

- 严重度：medium
- 证据强度：source_linked
- 发现：GitHub 社区证据显示该项目存在一个配置相关的待验证问题：v1.3.0-rc.3
- 对用户的影响：可能增加新用户试用和生产接入成本。
- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。
- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。
- 证据：community_evidence:github | cevd_9e274ec877304b369e551afc543b9bae | https://github.com/chenhg5/cc-connect/releases/tag/v1.3.0-rc.3 | 来源类型 github_release 暴露的待验证使用条件。

## 11. 配置坑 · 来源证据：v1.3.1

- 严重度：medium
- 证据强度：source_linked
- 发现：GitHub 社区证据显示该项目存在一个配置相关的待验证问题：v1.3.1
- 对用户的影响：可能影响升级、迁移或版本选择。
- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。
- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。
- 证据：community_evidence:github | cevd_c2e03a5e0cc8465c968bcc252cc2926b | https://github.com/chenhg5/cc-connect/releases/tag/v1.3.1 | 来源类型 github_release 暴露的待验证使用条件。

## 12. 能力坑 · 能力判断依赖假设

- 严重度：medium
- 证据强度：source_linked
- 发现：README/documentation is current enough for a first validation pass.
- 对用户的影响：假设不成立时，用户拿不到承诺的能力。
- 建议检查：将假设转成下游验证清单。
- 防护动作：假设必须转成验证项；没有验证结果前不能写成事实。
- 证据：capability.assumptions | github_repo:1168978399 | https://github.com/chenhg5/cc-connect | README/documentation is current enough for a first validation pass.

## 13. 运行坑 · 来源证据：出现网络波动后，一直显示这个retrying，只能手动重启吗？

- 严重度：medium
- 证据强度：source_linked
- 发现：GitHub 社区证据显示该项目存在一个运行相关的待验证问题：出现网络波动后，一直显示这个retrying，只能手动重启吗？
- 对用户的影响：可能增加新用户试用和生产接入成本。
- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。
- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。
- 证据：community_evidence:github | cevd_8d8f7103758f4f46bffd9b411c81bbf6 | https://github.com/chenhg5/cc-connect/issues/102 | 来源类型 github_issue 暴露的待验证使用条件。

## 14. 维护坑 · 维护活跃度未知

- 严重度：medium
- 证据强度：source_linked
- 发现：未记录 last_activity_observed。
- 对用户的影响：新项目、停更项目和活跃项目会被混在一起，推荐信任度下降。
- 建议检查：补 GitHub 最近 commit、release、issue/PR 响应信号。
- 防护动作：维护活跃度未知时，推荐强度不能标为高信任。
- 证据：evidence.maintainer_signals | github_repo:1168978399 | https://github.com/chenhg5/cc-connect | last_activity_observed missing

## 15. 安全/权限坑 · 下游验证发现风险项

- 严重度：medium
- 证据强度：source_linked
- 发现：no_demo
- 对用户的影响：下游已经要求复核，不能在页面中弱化。
- 建议检查：进入安全/权限治理复核队列。
- 防护动作：下游风险存在时必须保持 review/recommendation 降级。
- 证据：downstream_validation.risk_items | github_repo:1168978399 | https://github.com/chenhg5/cc-connect | no_demo; severity=medium

## 16. 安全/权限坑 · 存在安全注意事项

- 严重度：medium
- 证据强度：source_linked
- 发现：No sandbox install has been executed yet; downstream must verify before user use.
- 对用户的影响：用户安装前需要知道权限边界和敏感操作。
- 建议检查：转成明确权限清单和安全审查提示。
- 防护动作：安全注意事项必须面向用户前置展示。
- 证据：risks.safety_notes | github_repo:1168978399 | https://github.com/chenhg5/cc-connect | No sandbox install has been executed yet; downstream must verify before user use.

## 17. 安全/权限坑 · 存在评分风险

- 严重度：medium
- 证据强度：source_linked
- 发现：no_demo
- 对用户的影响：风险会影响是否适合普通用户安装。
- 建议检查：把风险写入边界卡，并确认是否需要人工复核。
- 防护动作：评分风险必须进入边界卡，不能只作为内部分数。
- 证据：risks.scoring_risks | github_repo:1168978399 | https://github.com/chenhg5/cc-connect | no_demo; severity=medium

## 18. 安全/权限坑 · 来源证据：v1.3.0

- 严重度：medium
- 证据强度：source_linked
- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：v1.3.0
- 对用户的影响：可能影响授权、密钥配置或安全边界。
- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。
- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。
- 证据：community_evidence:github | cevd_8f40f1ed300048309ccb1501f52a5fd3 | https://github.com/chenhg5/cc-connect/releases/tag/v1.3.0 | 来源讨论提到 npm 相关条件，需在安装/试用前复核。

## 19. 安全/权限坑 · 来源证据：v1.3.0-rc.4

- 严重度：medium
- 证据强度：source_linked
- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：v1.3.0-rc.4
- 对用户的影响：可能影响授权、密钥配置或安全边界。
- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。
- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。
- 证据：community_evidence:github | cevd_83a9e36b399040b69147511b6daa7275 | https://github.com/chenhg5/cc-connect/releases/tag/v1.3.0-rc.4 | 来源讨论提到 windows 相关条件，需在安装/试用前复核。

## 20. 安全/权限坑 · 来源证据：v1.3.0-rc.5

- 严重度：medium
- 证据强度：source_linked
- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：v1.3.0-rc.5
- 对用户的影响：可能影响授权、密钥配置或安全边界。
- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。
- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。
- 证据：community_evidence:github | cevd_dc65ca84aa28428b93104b658be55c16 | https://github.com/chenhg5/cc-connect/releases/tag/v1.3.0-rc.5 | 来源类型 github_release 暴露的待验证使用条件。

## 21. 安全/权限坑 · 来源证据：v1.3.2

- 严重度：medium
- 证据强度：source_linked
- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：v1.3.2
- 对用户的影响：可能影响授权、密钥配置或安全边界。
- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。
- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。
- 证据：community_evidence:github | cevd_2245b50ba3e94323b2228f6ed5b2b73e | https://github.com/chenhg5/cc-connect/releases/tag/v1.3.2 | 来源类型 github_release 暴露的待验证使用条件。

## 22. 安全/权限坑 · 来源证据：v1.3.3-beta.2

- 严重度：medium
- 证据强度：source_linked
- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：v1.3.3-beta.2
- 对用户的影响：可能影响授权、密钥配置或安全边界。
- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。
- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。
- 证据：community_evidence:github | cevd_4665651336a6450db47e6262a8926c7b | https://github.com/chenhg5/cc-connect/releases/tag/v1.3.3-beta.2 | 来源类型 github_release 暴露的待验证使用条件。

## 23. 维护坑 · issue/PR 响应质量未知

- 严重度：low
- 证据强度：source_linked
- 发现：issue_or_pr_quality=unknown。
- 对用户的影响：用户无法判断遇到问题后是否有人维护。
- 建议检查：抽样最近 issue/PR，判断是否长期无人处理。
- 防护动作：issue/PR 响应未知时，必须提示维护风险。
- 证据：evidence.maintainer_signals | github_repo:1168978399 | https://github.com/chenhg5/cc-connect | issue_or_pr_quality=unknown

## 24. 维护坑 · 发布节奏不明确

- 严重度：low
- 证据强度：source_linked
- 发现：release_recency=unknown。
- 对用户的影响：安装命令和文档可能落后于代码，用户踩坑概率升高。
- 建议检查：确认最近 release/tag 和 README 安装命令是否一致。
- 防护动作：发布节奏未知或过期时，安装说明必须标注可能漂移。
- 证据：evidence.maintainer_signals | github_repo:1168978399 | https://github.com/chenhg5/cc-connect | release_recency=unknown

<!-- canonical_name: chenhg5/cc-connect; human_manual_source: deepwiki_human_wiki -->
