docs: 添加 CLAUDE.md 项目文档

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-05-06 14:35:37 +08:00
parent cd09784e54
commit 905a78def1
+183
View File
@@ -0,0 +1,183 @@
# CLAUDE.md
## 项目概述
LHY Code — 基于 Claude Code 泄露源码修复的**本地可运行版本**,支持接入任意 Anthropic 兼容 APIMiniMax、OpenRouter 等)。
## 技术栈
- **运行时**: [Bun](https://bun.sh)(唯一运行时,不可用 Node.js)
- **语言**: TypeScript
- **终端 UI**: React 19 + [Ink 6](https://github.com/vadimdemedes/ink)
- **CLI 解析**: Commander.js
- **API**: Anthropic SDK (`@anthropic-ai/sdk`)
- **协议**: MCP、LSP
- **构建**: Bun bundler(通过 `bun:bundle``feature()` 做 DCE
- **包管理**: bun install(锁文件 `bun.lock`
## 启动与运行
```bash
# 安装依赖
bun install
# 交互 TUI 模式
./bin/lhy-code
# 无头模式
./bin/lhy-code -p "your prompt"
# 管道输入
echo "explain this code" | ./bin/lhy-code -p
# Windows 直接调用
bun --env-file=.env ./src/entrypoints/cli.tsx
# 降级 Recovery CLI
CLAUDE_CODE_FORCE_RECOVERY_CLI=1 ./bin/lhy-code
```
## 环境变量
| 变量 | 说明 |
|------|------|
| `ANTHROPIC_AUTH_TOKEN` | Bearer Token 认证(`Authorization` 头) |
| `ANTHROPIC_API_KEY` | API Key 认证(`x-api-key` 头) |
| `ANTHROPIC_BASE_URL` | 自定义 API 端点 |
| `ANTHROPIC_MODEL` | 默认模型 |
| `ANTHROPIC_DEFAULT_SONNET/HAIKU/OPUS_MODEL` | 各 tier 模型映射 |
| `API_TIMEOUT_MS` | API 超时(默认 600000 |
| `DISABLE_TELEMETRY` | 设为 `1` 禁用遥测 |
| `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` | 设为 `1` 禁用非必要网络请求 |
## 项目结构
```
bin/lhy-code # Bash 入口脚本
preload.ts # Bun preload(设置 MACRO 全局变量)
.env # 环境变量(gitignore
src/
├── entrypoints/cli.tsx # CLI 主入口(快速路径分流、动态导入)
├── main.tsx # TUI 主逻辑(Commander.js + React/Ink 渲染)
├── localRecoveryCli.ts # 降级 Recovery CLIreadline 模式)
├── setup.ts # 启动初始化(配置、OAuth、遥测等)
├── screens/REPL.tsx # 交互 REPL 主界面
├── ink/ # Ink 终端渲染引擎(定制版)
│ ├── components/ # Box、Text 等基础组件
│ ├── reconciler.ts # React Reconciler
│ ├── renderer.ts # 渲染器
│ ├── layout/ # Yoga 布局引擎
│ └── termio/ # ANSI/CSI/SGR 终端协议解析
├── components/ # UI 组件(Message、PromptInput、权限对话框等)
├── tools/ # Agent 工具系统(Bash、Edit、Grep、WebFetch、MCP 等)
├── commands/ # 斜杠命令(/commit、/review、/help 等)
├── skills/ # Skill 系统(内置 + 可扩展)
│ └── bundled/ # 内置 Skillsverify、loop、debug 等)
├── services/ # 服务层
│ ├── api/ # Anthropic API 客户端(流式、重试)
│ ├── mcp/ # MCP 协议实现
│ ├── oauth/ # OAuth 认证
│ ├── lsp/ # LSP 语言服务器
│ ├── analytics/ # 遥测/分析
│ └── plugins/ # 插件系统
├── bridge/ # 远程控制桥接(Bridge 模式)
├── hooks/ # React Hooks
├── state/ # 全局状态管理(useSyncExternalStore
├── utils/ # 工具函数
│ ├── git/ # Git 操作
│ ├── github/ # GitHub 集成
│ ├── permissions/ # 权限系统
│ ├── model/ # 模型选择与路由
│ ├── bash/ # Shell 执行
│ ├── sandbox/ # 沙箱隔离
│ ├── settings/ # 配置管理
│ └── memory/ # 记忆系统
├── constants/ # 常量与系统提示词
├── types/ # TypeScript 类型定义
│ └── generated/ # Protobuf 生成类型
├── plugins/ # 插件接口与内置插件
├── coordinator/ # 多 Agent 协调
├── keybindings/ # 键盘快捷键
├── vim/ # Vim 模式
└── voice/ # 语音输入
```
## 核心架构
### 启动流程
```
bin/lhy-code → entrypoints/cli.tsx → 快速路径分流 → main.tsx → screens/REPL.tsx
```
`cli.tsx` 使用动态导入 + 快速路径模式,对 `--version``--daemon-worker``remote-control` 等特殊参数先行处理,避免加载完整模块。
### Feature Flags(构建时 DCE
通过 `feature('FLAG_NAME')` 实现 Dead Code Elimination
- `BRIDGE_MODE`:远程控制桥接
- `DAEMON`:守护进程
- `BG_SESSIONS`:后台会话管理
- `VOICE_MODE`:语音输入
- `COORDINATOR_MODE`:多 Agent 协调
- `WORKFLOW_SCRIPTS`:工作流脚本
### 工具系统
所有工具继承 `Tool` 基类,核心工具:
- **BashTool** — Shell 命令执行
- **FileReadTool / FileEditTool / FileWriteTool** — 文件操作
- **GlobTool / GrepTool** — 文件/内容搜索
- **WebFetchTool / WebSearchTool** — 网络访问
- **AgentTool** — 子 Agent 生成
- **MCPTool / LSPTool** — 协议工具
- **SkillTool** — Skill 调用
- **TaskCreateTool / TaskStopTool 等** — 任务管理
### 权限模型
工具调用需要权限确认,支持:
- `denyRules`:禁止特定工具/参数
- `allowRules`:允许特定工具/参数
- `bypassMode`:绕过权限检查
- 权限持久化到 `~/.claude/settings.json`
### 状态管理
使用 React `useSyncExternalStore` + 选择器模式:
- `AppStateStore` 全局 store
- `useAppState(selector)` 订阅特定切片
- 避免不必要的重渲染
## 开发约定
### 语言
- 代码注释用中文
- 提交消息用中文(约定式提交格式:`feat:``fix:``refactor:` 等)
### 文件组织
- 函数 < 50 行,文件 < 800 行
- 高内聚低耦合,按功能而非类型组织
- 嵌套层级不超过 4 层
### 代码风格
- 不可变性优先(创建新对象,不修改现有对象)
- 显式处理错误,禁止静默吞掉异常
- 禁止硬编码密钥/凭据
- 系统边界处验证所有输入
### 安全
- `.env` 文件已 gitignore,禁止提交
- 不要在前端代码中暴露 API Key
- 工具执行前必须经过权限检查
## 关键入口文件
| 文件 | 说明 |
|------|------|
| [bin/lhy-code](bin/lhy-code) | Bash 启动脚本 |
| [src/entrypoints/cli.tsx](src/entrypoints/cli.tsx) | CLI 入口(快速路径分流) |
| [src/main.tsx](src/main.tsx) | TUI 主程序 |
| [src/screens/REPL.tsx](src/screens/REPL.tsx) | REPL 交互界面 |
| [src/localRecoveryCli.ts](src/localRecoveryCli.ts) | 降级 CLI |
| [preload.ts](preload.ts) | Bun preload |