cc-haha/docs/reference/project-structure.md
2026-07-23 20:46:33 +08:00

4.5 KiB
Raw Blame History

项目结构

本项目包含 CLI/TUI、本地 Server、Electron 桌面端、IM Adapter 和文档站。下面只列稳定的职责边界;具体文件以当前源码为准。

.
├── bin/
│   └── claude-haha                 # CLI 启动脚本
├── preload.ts                      # Bun preload 与构建期兼容入口
├── package.json                    # 根项目脚本和依赖
├── src/
│   ├── entrypoints/
│   │   └── cli.tsx                 # CLI 主入口
│   ├── main.tsx                    # TUI 主流程
│   ├── setup.ts                    # 启动初始化
│   ├── screens/                    # REPL 等终端界面
│   ├── components/                 # Ink UI 组件
│   ├── tools/                      # Bash、Edit、Grep 等 Agent 工具
│   ├── commands/                   # 斜杠命令
│   ├── services/                   # Provider、MCP、OAuth 等共享服务
│   ├── utils/                      # 运行时工具与 Computer Use 集成
│   ├── vendor/                     # 受控的 vendored 实现
│   └── server/
│       ├── index.ts                # Bun.serve HTTP/WebSocket 入口
│       ├── router.ts               # REST 资源路由
│       ├── api/                    # API 边界
│       ├── services/               # 会话、Provider、索引、诊断等服务
│       ├── ws/                     # WebSocket 协议和生命周期
│       ├── proxy/                  # Provider 协议转换
│       ├── middleware/             # Auth 与 CORS
│       └── config/                 # Provider 预设
├── desktop/
│   ├── src/                        # React Renderer
│   │   ├── api/                    # Server API / WebSocket 客户端
│   │   ├── components/             # Chat、Workspace、Browser、布局组件
│   │   ├── features/               # Pets 等独立功能
│   │   ├── pages/                  # 会话、设置、任务、诊断等页面
│   │   ├── stores/                 # Zustand 状态
│   │   ├── i18n/                   # 桌面多语言
│   │   └── lib/                    # Renderer 运行时工具
│   ├── electron/
│   │   ├── main.ts                 # Electron main 入口
│   │   ├── preload.ts              # 主窗口 Host bridge
│   │   ├── preview-preload.ts      # 原生预览 bridge
│   │   ├── pet-preload.ts          # 宠物窗口 bridge
│   │   ├── ipc/                    # IPC channel 与校验
│   │   └── services/               # Sidecar、终端、更新、预览等服务
│   ├── sidecars/
│   │   └── claude-sidecar.ts       # server / cli / adapters 统一入口
│   ├── scripts/                    # 构建、打包和资源准备
│   └── src-tauri/                  # 历史代码及现用打包资源;非当前 Host
├── adapters/
│   ├── common/                     # 配置、配对、消息与 WS 共享层
│   ├── telegram/
│   ├── feishu/
│   ├── wechat/
│   ├── dingtalk/
│   └── whatsapp/
├── runtime/
│   ├── mac_helper.py               # macOS Computer Use helper
│   ├── win_helper.py               # Windows Computer Use helper
│   ├── requirements.txt
│   └── requirements-win.txt
├── scripts/                        # 根项目质量门禁、发布与维护脚本
├── tests/                          # 跨模块测试与测试资源
├── site/                           # React 文档站、内容索引与静态构建
└── docs/                           # 中英文 Markdown 文档内容

运行边界

入口 运行时 说明
src/entrypoints/cli.tsx Bun CLI/TUI 与 Agent 工具
src/server/index.ts Bun / Bun.serve 本地 HTTP、WebSocket 与 H5
desktop/electron/main.ts Electron main 原生桌面 Host
desktop/src/ Chromium Renderer React 桌面 UI
desktop/sidecars/claude-sidecar.ts Bun 编译 Sidecar 打包后的 Server、CLI 与 Adapter 入口
adapters/<platform>/ Bun Sidecar 平台消息接入

新增代码时应放在拥有该职责的边界内:桌面原生能力进入 desktop/electron/,共享业务 API 进入 src/server/IM 平台差异进入 adapters/<platform>/,不要在 Renderer 中绕过这些边界。