# CyouCode **Repository Path**: luo-youlu6/cyou-code ## Basic Information - **Project Name**: CyouCode - **Description**: CyouOps 是一个基于 VSCode 的一站式代码协作与任务管理插件,集成了 Dify AI 代码审查、CODING 平台任务管理、OAuth 统一登录等功能。该插件旨在提升开发者的代码质量和协作效率。 - **Primary Language**: NodeJS - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-08-06 - **Last Updated**: 2025-10-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # CyouOps VSCode 插件完整项目文档 ## 项目概述 CyouOps 是一个基于 VSCode 的一站式代码协作与任务管理插件,集成了 Dify AI 代码审查、CODING 平台任务管理、OAuth 统一登录等功能。该插件旨在提升开发者的代码质量和协作效率。 ### 核心特性 - 🤖 **AI代码审查**: 使用 Dify AI 对代码变更进行智能审查 - 📝 **自动生成 commit message**: 基于代码变更自动生成规范 commit message - 👤 **统一登录/登出**: 支持 OAuth 登录,用户身份自动带入 Dify 审查 - 💾 **配置持久化**: 配置和用户信息本地缓存,断网/离线也可用 - 🟦 **状态栏交互**: 状态栏显示当前用户,支持一键登录/登出 - ⚙️ **命令面板操作**: 所有功能均可通过命令面板便捷调用 - 📋 **任务列表管理**: 集成 CODING 平台项目任务列表,支持任务的查看、切换、状态修改 - 🛡️ **健壮性处理**: 网络异常自动降级本地缓存,永不"卡死" ## 项目结构 ``` git-demo/ ├── .project-info/ │ └── project.json # 项目信息配置 ├── media/ │ ├── CyouOps.svg # 插件图标 │ └── myicon.svg # 备用图标 ├── src/ │ ├── extension.ts # 插件主入口 │ ├── authService.ts # 认证服务 │ ├── configService.ts # 配置服务 │ ├── difyService.ts # Dify AI服务 │ ├── gitScmEnhancer.ts # Git SCM增强 │ ├── logger.ts # 日志服务 │ ├── myFlatListView.html # 任务列表前端页面 │ ├── myFlatListView.ts # 任务列表视图逻辑 │ ├── projectIndexer.ts # 项目索引器 │ ├── projectInfoService.ts # 项目信息服务 │ ├── scmInterceptor.ts # SCM拦截器 │ └── userUtil.ts # 用户工具函数 ├── package.json # 项目配置 ├── tsconfig.json # TypeScript配置 ├── README.md # 项目说明 ├── PROJECT_DOCUMENTATION.md # 详细项目文档 ├── ER_DIAGRAM.md # ER图设计文档 ├── API_DOCUMENTATION.md # API接口文档 └── COMPLETE_PROJECT_DOCS.md # 完整项目文档 ``` ## 技术架构 ### 整体架构图 ``` ┌─────────────────────────────────────────────────────────────┐ │ VSCode Extension │ ├─────────────────────────────────────────────────────────────┤ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │ UI Layer │ │ Service Layer│ │ Data Layer │ │ │ │ │ │ │ │ │ │ │ │ • StatusBar │ │ • AuthService│ │ • LocalStorage│ │ │ │ • Webview │ │ • DifyService│ │ • GlobalState│ │ │ │ • Commands │ │ • ConfigService│ │ • FileSystem│ │ │ └─────────────┘ └─────────────┘ └─────────────┘ │ ├─────────────────────────────────────────────────────────────┤ │ External APIs │ ├─────────────────────────────────────────────────────────────┤ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │ OAuth │ │ Dify │ │ CODING │ │ │ │ Server │ │ AI │ │ Platform │ │ │ └─────────────┘ └─────────────┘ └─────────────┘ │ └─────────────────────────────────────────────────────────────┘ ``` ## 核心模块设计 ### 1. 认证服务 (AuthService) - **职责**: 处理用户登录、登出、用户信息管理 - **核心功能**: - OAuth 2.0 登录流程 - 用户信息获取和缓存 - Git 用户配置自动设置 - 登录状态管理 ### 2. 配置服务 (ConfigService) - **职责**: 管理插件配置,支持远程配置和本地缓存 - **核心功能**: - 远程配置拉取 - 本地配置缓存 - 配置降级处理 - 配置刷新机制 ### 3. Dify服务 (DifyService) - **职责**: 与 Dify AI 平台交互,进行代码审查 - **核心功能**: - 代码差异分析 - AI 代码审查 - Commit message 生成 - 错误重试机制 ### 4. 任务管理服务 (MyFlatListViewProvider) - **职责**: 管理 CODING 平台任务列表 - **核心功能**: - 任务列表展示 - 任务状态管理 - 项目切换 - 实时同步 ### 5. 项目信息服务 (ProjectInfoService) - **职责**: 管理项目元数据和信息 - **核心功能**: - 项目信息生成 - 分支变化检测 - 历史版本管理 - 自动更新服务 ## 数据模型 ### 用户信息模型 ```typescript interface UserInfo { account: string; // 用户账号 name: string; // 用户姓名 oauthtoken: string; // OAuth令牌 [key: string]: any; // 扩展字段 } ``` ### 任务模型 ```typescript interface Task { id: number; // 任务ID title: string; // 任务标题 assigneeId?: number; // 负责人ID statusId: string; // 状态ID statusName: string; // 状态名称 description?: string; // 任务描述 type: string; // 任务类型 mappedStatus?: string; // 映射状态 } ``` ### 项目信息模型 ```typescript interface ProjectInfo { branch: string; // Git分支 timestamp: string; // 时间戳 operator: string; // 操作者 projectName: string; // 项目名称 workspacePath: string; // 工作区路径 summary?: { // 项目摘要 projectDescription?: string; erEntities?: any[]; codeAnalysis?: any; }; } ``` ### 远程配置模型 ```typescript interface RemoteConfig { apiKey: string; // API密钥 apiEndpoint: string; // API端点 maxDiffLength: number; // 最大差异长度 timeout: number; // 超时时间 } ``` ## ER图设计 ### 实体关系图 ```mermaid erDiagram %% 核心实体 User { string account PK "用户账号" string name "用户姓名" string oauthtoken "OAuth令牌" string email "邮箱地址" datetime created_at "创建时间" datetime updated_at "更新时间" } Project { string name PK "项目名称" string display_name "显示名称" string workspace_path "工作区路径" string branch "当前分支" string operator "操作者" datetime timestamp "时间戳" json summary "项目摘要" } Task { int id PK "任务ID" string title "任务标题" string description "任务描述" int assignee_id FK "负责人ID" string status_id "状态ID" string status_name "状态名称" string type "任务类型" string mapped_status "映射状态" datetime created_at "创建时间" datetime updated_at "更新时间" } Configuration { string api_key PK "API密钥" string api_endpoint "API端点" int max_diff_length "最大差异长度" int timeout "超时时间" datetime created_at "创建时间" datetime updated_at "更新时间" } CodeReview { string id PK "审查ID" string conversation_id "会话ID" string message_id "消息ID" string diff_content "差异内容" string review_result "审查结果" string commit_message "提交信息" boolean pass "是否通过" datetime created_at "创建时间" } ProjectInfo { string project_name PK "项目名称" string branch "分支名称" string operator "操作者" datetime timestamp "时间戳" string workspace_path "工作区路径" json summary "项目摘要" } UserMapping { string oauth_account PK "OAuth账号" int coding_user_id "CODING用户ID" string user_name "用户姓名" datetime created_at "创建时间" } %% 关系定义 User ||--o{ Task : "assigns" User ||--o{ CodeReview : "performs" User ||--o{ ProjectInfo : "operates" User ||--|| UserMapping : "maps_to" Project ||--o{ Task : "contains" Project ||--|| ProjectInfo : "has_info" Task ||--o{ CodeReview : "triggers" Configuration ||--o{ CodeReview : "configures" %% 状态枚举 TaskStatus { string status_id PK "状态ID" string status_name "状态名称" string status_type "状态类型" string mapped_status "映射状态" } TaskType { string type_code PK "类型代码" string type_name "类型名称" string description "类型描述" } %% 状态和类型关系 Task ||--|| TaskStatus : "has_status" Task ||--|| TaskType : "has_type" ``` ## API接口设计 ### 1. OAuth认证接口 - **登录页面**: `http://oauth.cyou-inc.com:8088/oauth/oauth.html` - **用户信息**: `http://oauth.cyou-inc.com:8090/oauth/user/getAccount` - **回调端口**: 54321 ### 2. Dify AI接口 - **端点**: `https://dify.cyouai.com/v1/chat-messages` - **功能**: 代码审查和Commit Message生成 - **重试机制**: 3次重试,指数退避 ### 3. CODING平台接口 - **基础地址**: `https://e.coding.net/open-api/` - **任务列表**: `?Action=DescribeIssueList` - **状态修改**: `?action=ModifyIssue` - **项目列表**: 通过API Key获取 ### 4. 配置中心接口 - **配置获取**: `https://test-jobs.cyouops.com/config_center/api/v1/configs/demo/application` - **用户映射**: `https://test-jobs.cyouops.com/config_center/api/v1/configs/demo/code.review/` ## 核心功能流程 ### 1. 用户登录流程 ``` 1. 用户点击登录 → 2. 启动本地HTTP服务 → 3. 打开OAuth页面 4. 用户完成认证 → 5. 获取用户信息 → 6. 保存到本地存储 7. 设置Git配置 → 8. 更新状态栏 → 9. 自动拉取任务 ``` ### 2. 代码审查流程 ``` 1. 检测代码变更 → 2. 生成差异内容 → 3. 调用Dify API 4. AI分析代码 → 5. 生成审查结果 → 6. 生成Commit Message 7. 自动填入SCM面板 → 8. 显示审查结果 ``` ### 3. 任务管理流程 ``` 1. 用户登录 → 2. 获取API Key → 3. 拉取项目列表 4. 选择项目 → 5. 拉取任务列表 → 6. 展示任务 7. 状态变更 → 8. 同步到CODING平台 → 9. 刷新本地缓存 ``` ## 错误处理机制 ### 1. 网络异常处理 - 远程配置拉取失败时自动降级为本地缓存 - API调用失败时进行重试 - 超时处理机制 ### 2. 权限异常处理 - API Key权限不足时明确提示 - 用户未登录时的友好提示 - 项目权限检查 ### 3. 数据异常处理 - 本地缓存损坏时的恢复机制 - 数据格式验证 - 异常数据的过滤和清理 ## 性能优化 ### 1. 缓存策略 - 用户信息本地缓存 - 配置信息多级缓存 - 任务列表分项目缓存 ### 2. 异步处理 - 非阻塞的API调用 - 后台任务自动刷新 - 用户界面响应优化 ### 3. 资源管理 - 定时器自动清理 - 内存使用优化 - 文件系统操作优化 ## 安全考虑 ### 1. 数据安全 - API Key本地加密存储 - 敏感信息脱敏显示 - 用户信息保护 ### 2. 网络安全 - HTTPS通信 - 请求超时控制 - 错误信息脱敏 ### 3. 权限控制 - 最小权限原则 - 用户身份验证 - 操作权限检查 ## 部署和发布 ### 1. 开发环境 ```bash npm install npm run compile npm run watch ``` ### 2. 打包发布 ```bash npm install -g vsce vsce package ``` ### 3. 安装方式 - VSCode扩展市场 - VSIX文件安装 - 开发模式调试 ## 维护和监控 ### 1. 日志记录 - 结构化日志输出 - 错误日志收集 - 性能监控 ### 2. 版本管理 - 语义化版本控制 - 更新日志维护 - 向后兼容性 ### 3. 用户反馈 - 错误报告机制 - 功能建议收集 - 用户支持渠道 ## 未来规划 ### 1. 功能扩展 - 支持更多代码托管平台 - 增强AI审查能力 - 团队协作功能 ### 2. 性能优化 - 更智能的缓存策略 - 更快的响应速度 - 更低的资源占用 ### 3. 用户体验 - 更直观的界面设计 - 更便捷的操作流程 - 更丰富的自定义选项 ## 项目文件清单 ### 核心源代码文件 1. `src/extension.ts` - 插件主入口,命令和服务注册 2. `src/authService.ts` - 统一登录/登出、用户信息管理 3. `src/configService.ts` - 配置拉取、持久化、降级处理 4. `src/difyService.ts` - Dify API 调用、代码审查主逻辑 5. `src/gitScmEnhancer.ts` - Git SCM 相关增强 6. `src/logger.ts` - 日志记录 7. `src/myFlatListView.html` - 任务列表 Webview 前端页面 8. `src/myFlatListView.ts` - 任务列表视图逻辑与项目列表集成 9. `src/projectIndexer.ts` - 项目索引构建 10. `src/projectInfoService.ts` - 项目信息服务 11. `src/scmInterceptor.ts` - 审查拦截、命令注册、状态栏管理 12. `src/userUtil.ts` - 用户映射、用户工具函数 ### 配置文件 1. `package.json` - 项目依赖与插件元数据 2. `tsconfig.json` - TypeScript 配置 3. `.project-info/project.json` - 项目信息配置 ### 文档文件 1. `README.md` - 项目说明文档 2. `PROJECT_DOCUMENTATION.md` - 详细项目文档 3. `ER_DIAGRAM.md` - ER图设计文档 4. `API_DOCUMENTATION.md` - API接口文档 5. `COMPLETE_PROJECT_DOCS.md` - 完整项目文档 ### 资源文件 1. `media/CyouOps.svg` - 插件图标 2. `media/myicon.svg` - 备用图标 ## 技术栈 - **开发语言**: TypeScript - **运行环境**: Node.js - **框架**: VSCode Extension API - **构建工具**: TypeScript Compiler - **包管理**: npm - **版本控制**: Git - **外部服务**: Dify AI, CODING Platform, OAuth Server