Files
cc-switch/CLAUDE.md
farion1231 b83652a162 修复fetch API超时实现:使用AbortController替换不支持的timeout参数
- 替换fetch中的timeout选项为AbortController + setTimeout实现
- 修复TypeScript编译错误:timeout不存在于RequestInit类型中
- 添加proper超时清理逻辑避免内存泄漏
- 更新CLAUDE.md文档:统一使用pnpm命令,补充IPC接口说明
2025-08-06 08:08:27 +08:00

3.0 KiB
Raw Blame History

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

项目概述

这是一个 Electron + React + TypeScript 的桌面应用,用于管理和切换 Claude Code 的不同供应商配置Anthropic、OpenRouter 等)。

开发命令

# 安装依赖
pnpm install

# 开发模式(同时启动 Vite 开发服务器和 Electron 主进程监听)
pnpm run dev

# 仅构建主进程
pnpm run build:main

# 仅构建渲染进程
pnpm run build:renderer

# 完整构建
pnpm run build

# 启动应用(需要先构建)
pnpm start
# 或
electron .

# 打包发布
pnpm run dist

代码架构

三层架构设计

  1. 主进程 (src/main/)

    • index.ts: Electron 主进程入口,处理窗口创建和 IPC 通信
    • services.ts: 核心业务逻辑,包含供应商状态检查和 Claude Code 配置文件操作
    • preload.ts: 预加载脚本,提供安全的 IPC API 接口
  2. 渲染进程 (src/renderer/)

    • App.tsx: 主应用组件,状态管理和业务逻辑协调
    • components/: React 组件
      • ProviderList.tsx: 供应商列表显示和操作
      • AddProviderModal.tsx: 添加供应商的模态框
      • EditProviderModal.tsx: 编辑供应商的模态框
  3. 共享类型 (src/shared/types.ts)

    • 定义主进程和渲染进程间的数据结构
    • 声明 window.electronAPI 接口用于类型安全的 IPC 调用

数据流

  • 使用 electron-store 在主进程中持久化供应商配置
  • 通过 IPC 在主进程和渲染进程间通信
  • 供应商状态通过 HTTP 请求实时检测
  • 切换供应商时直接修改 ~/.claude/settings.json 文件

关键文件操作

  • Claude Code 配置文件路径: ~/.claude/settings.json
  • 配置更新通过 services.ts 中的 switchProvider() 函数完成
  • 应用配置存储在 electron-store 默认位置

构建配置

  • 主进程使用 tsconfig.main.json 配置
  • 渲染进程使用 tsconfig.json + Vite 构建
  • 开发时渲染进程运行在 localhost:3000
  • 生产时渲染进程文件位于 dist/renderer/

依赖管理

项目使用 npm 管理依赖,但检测到 pnpm-lock.yaml,建议使用 pnpm

# 安装依赖
pnpm install

# 或使用 npm
npm install

核心 IPC 接口

主要的 IPC 接口定义在 src/shared/types.ts 中的 window.electronAPI

  • getProviders(): 获取所有供应商配置
  • switchProvider(providerId): 切换当前供应商
  • addProvider(provider): 添加新供应商
  • updateProvider(provider): 更新供应商配置
  • deleteProvider(id): 删除供应商
  • getClaudeCodeConfigPath(): 获取 Claude Code 配置路径
  • selectConfigFile(): 打开文件选择对话框

重要说明

  • 供应商配置存储在 electron-store 中,自动持久化
  • 切换供应商会直接修改 ~/.claude/settings.json 中的 ANTHROPIC_AUTH_TOKENANTHROPIC_BASE_URL
  • 应用支持多平台打包Windows NSIS、macOS DMG、Linux AppImage