# hey 项目约定
## 语言规则
- **代码注释**:中文(对维护者友好)
- **用户可见输出**(CLI help / 错误消息 / 终端打印 / JSON 事件):一律英文(通用性)
- 内部日志(tracing)可用英文
## 构建与测试
```bash
cargo build --release # 构建(零系统依赖,rustls)
cargo test # 全绿是每个里程碑的验收项
cargo clippy # 零警告
```
## 架构(详见 docs/DESIGN.md)
- 协议无关内核:`llm/ir.rs` 统一 IR + `llm/openai.rs` 等协议适配器
- 扩展只走 MCP + Skills(无 TS/语言级插件)
- 扩展通道:provider(多协议)+ tool(MCP 工具)+ skill(文件级指令)
- 回调式输出:`ui::Output` 同步回调,避免事件流调度开销
## 目录
- `src/llm/` — IR + Provider trait + 协议适配器(openai / anthropic / google)+ 重试包装(openai / anthropic / retry)
- `src/config.rs` — TOML 配置 + env 展开 + provider 选择
- `src/proxy.rs` — 代理解析(CLI > 配置 > 环境变量)
- `src/agent.rs` — Agent 循环(动态系统提示 / turn 级重试 / 预算裁剪 / skills 注入 / 会话写入 / DCP 去重+nudge / compress 工具)
- `src/tools.rs` — Tool trait + bash 输出过滤 + 内建 5 工具(bash/read_file/write_file/edit/grep)
- `src/skills.rs` — Skills:frontmatter 校验 + 项目/全局扫描 + 渐进披露系统提示段 + 造技能指南
- `src/sessions.rs` — JSONL 会话(~/.local/state/hey/sessions/):追加消息/用量、resume 历史重建
- `src/mcp.rs` — MCP stdio 客户端(JSON-RPC 2.0):tools/list 汇入注册表,失败仅告警
- `src/trust.rs` — 项目信任门控(~/.config/hey/trust.json):未信任项目不加载 .hey/ 资源
- `src/ui.rs` — 终端 / JSON / 测试输出
- `src/main.rs` — CLI 入口 + REPL(/usage /compact /model /reload /skill:<name> + 跨轮会话)
- `tests/` — 集成测试(自写 MockServer + FakeProvider + FlakyProvider,不碰真实网络)