Skip to content

Commit 4ace7d2

Browse files
wangjuntaowangjuntao
authored andcommitted
feat: 添加统一 CLI 入口和完整中文化
- 新增 cli.py 统一命令行入口 - 支持 hyperliquid-mcp 主命令 - 支持 uvx 远程执行 - README.md 完全中文化并精简至 211 行 - .env.example 中文化 - CLI 帮助信息中文化 - 添加代码审查提示(.github/prompts/review.prompt.md) - 修复 pyproject.toml wheel 打包配置 - 删除冗余文档,统一到 README
1 parent afc782b commit 4ace7d2

5 files changed

Lines changed: 485 additions & 467 deletions

File tree

.env.example

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# HyperLiquid MCP 服务器配置
2+
# 复制此文件为 .env 并填入你的实际值
3+
4+
# 必填:你的 HyperLiquid 私钥(64 位十六进制字符,带 0x 前缀)
5+
# 警告:绝不要将真实私钥提交到版本控制!
6+
# 建议使用 API 钱包:https://app.hyperliquid.xyz/API
7+
HYPERLIQUID_PRIVATE_KEY=0x0000000000000000000000000000000000000000000000000000000000000000
8+
9+
# 可选:使用测试网 (true) 或主网 (false)
10+
# 默认:false(主网)
11+
# 推荐:开发和测试时使用测试网
12+
HYPERLIQUID_TESTNET=false
13+
14+
# 可选:账户地址(如未提供则从私钥派生)
15+
# 仅在使用与私钥派生地址不同的地址时需要
16+
HYPERLIQUID_ACCOUNT_ADDRESS=
17+
18+
# 开发提示:
19+
# 1. 始终先用测试网:HYPERLIQUID_TESTNET=true
20+
# 2. 在 HyperLiquid 仪表板生成 API 钱包以增加安全性
21+
# 3. 绝不分享你的私钥或将 .env 文件提交到 git
22+
# 4. 使用环境特定的 .env 文件:.env.dev、.env.prod

.github/prompts/review.prompt.md

Lines changed: 256 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,256 @@
1+
---
2+
mode: 'agent'
3+
model: GPT-5
4+
tools: ['search', 'usages', 'problems', 'changes', 'githubRepo', 'todos']
5+
description: 'HyperLiquid MCP 项目代码质量自动检测与分析'
6+
---
7+
8+
# HyperLiquid MCP 代码审查指南
9+
10+
## 审查目标
11+
对 HyperLiquid MCP 服务器项目进行全面的代码质量检查,确保交易功能的安全性、可靠性和最佳实践。
12+
13+
## 核心审查领域
14+
15+
### 1. 安全性审查 🔒
16+
**重点关注:**
17+
- ✅ 私钥处理:确保私钥永不泄露、正确加密存储
18+
- ✅ 环境变量配置:检查 `.env` 文件是否正确添加到 `.gitignore`
19+
- ✅ API 认证:验证所有交易操作的身份验证机制
20+
- ✅ 输入验证:所有用户输入必须经过严格验证(订单大小、价格、币种等)
21+
- ✅ 错误信息:确保错误信息不暴露敏感数据
22+
- ✅ 测试网/主网隔离:验证网络切换逻辑正确无误
23+
24+
**检查清单:**
25+
```python
26+
# ❌ 错误示例
27+
print(f"Private key: {private_key}") # 永不打印私钥
28+
29+
# ✅ 正确示例
30+
logger.info(f"Account initialized: {account_address[:6]}...{account_address[-4:]}")
31+
```
32+
33+
### 2. 交易逻辑审查 💰
34+
**关键模式验证:**
35+
-**订单大小 vs 美元金额**:确保 `size` 参数代表代币数量,非美元价值
36+
```python
37+
# ❌ 常见错误:用户想买 $20 的 SOL
38+
place_limit_order(coin="SOL", size=20.0) # 错误!这是 20 个 SOL
39+
40+
# ✅ 正确做法
41+
token_amount = calculate_token_amount_from_dollars("SOL", 20.0)
42+
place_limit_order(coin="SOL", size=token_amount["token_amount"])
43+
```
44+
45+
-**OCO 订单分组**:验证不同场景使用正确的分组类型
46+
- `normalTpSl`:新仓位的止盈止损(`place_bracket_order`
47+
- `positionTpSl`:现有仓位的止盈止损(`set_position_tpsl`
48+
49+
-**仓位管理**:区分新仓位操作 vs 现有仓位操作
50+
- 新仓位:`market_open_position()`, `place_bracket_order()`
51+
- 现有仓位:`set_take_profit_stop_loss()`, `market_close_position()`
52+
53+
-**滑点计算**:检查 `_slippage_price()` 方法的正确性
54+
55+
### 3. 异步模式审查 ⚡
56+
**FastMCP 架构要求:**
57+
- ✅ 所有 `@mcp.tool` 装饰的函数必须是 `async def`
58+
- ✅ 服务层调用使用 `await` 关键字
59+
- ✅ 全局服务实例的正确初始化(单例模式)
60+
- ✅ 避免阻塞操作影响异步性能
61+
62+
```python
63+
# ✅ 正确的异步工具实现
64+
@mcp.tool
65+
async def get_account_balance() -> Dict[str, Any]:
66+
initialize_service() # 确保服务已初始化
67+
return await hyperliquid_service.get_account_balance()
68+
```
69+
70+
### 4. 错误处理审查 🛡️
71+
**标准化返回格式:**
72+
```python
73+
# ✅ 成功响应
74+
{
75+
"success": True,
76+
"data": {...},
77+
"order_result": {...}
78+
}
79+
80+
# ✅ 失败响应
81+
{
82+
"success": False,
83+
"error": "详细错误描述"
84+
}
85+
```
86+
87+
**检查要点:**
88+
- ✅ 所有 API 调用都有 try-except 包裹
89+
- ✅ 错误日志包含足够的上下文信息
90+
- ✅ 用户友好的错误提示
91+
- ✅ 关键操作失败时的回滚机制
92+
93+
### 5. 日志与监控审查 📊
94+
**日志策略:**
95+
- ✅ 结构化日志:包含时间戳、级别、上下文
96+
- ✅ 文件日志:写入 `hyperliquid_mcp.log`
97+
- ✅ 敏感信息过滤:订单 ID 可记录,私钥绝不记录
98+
- ✅ API 交互日志:记录请求参数和响应(排除敏感数据)
99+
100+
```python
101+
# ✅ 良好的日志实践
102+
self.logger.info(f"Placing order: {coin} {side} {sz} @ {limit_px}")
103+
self.logger.error(f"Failed to place order for {coin}: {e}", exc_info=True)
104+
```
105+
106+
### 6. 配置管理审查 ⚙️
107+
**三层配置系统:**
108+
1. 环境变量(优先级最高)
109+
2. `.env` 文件
110+
3. `config.json` 文件
111+
112+
**验证要点:**
113+
- ✅ 配置加载顺序正确
114+
- ✅ 必需配置缺失时提供清晰的错误提示
115+
- ✅ 配置验证使用 Pydantic 模型
116+
- ✅ 测试网/主网配置清晰标识
117+
118+
### 7. SDK 集成审查 🔌
119+
**HyperLiquid SDK 使用:**
120+
- ✅ Info 客户端:只读操作(余额、持仓、市场数据)
121+
- ✅ Exchange 客户端:交易操作(订单、取消、转账)
122+
- ✅ 自定义扩展:`_bulk_orders_with_grouping()` 正确设置 OCO 分组
123+
- ✅ 钱包集成:`eth-account` 正确签名交易
124+
125+
### 8. 代码质量审查 ✨
126+
**Python 最佳实践:**
127+
- ✅ 类型注解:使用 `typing` 模块标注参数和返回值
128+
- ✅ 文档字符串:所有公共方法包含清晰的 docstring
129+
- ✅ 命名规范:遵循 PEP 8(snake_case 函数,CamelCase 类)
130+
- ✅ 代码复用:避免重复代码,提取通用函数
131+
- ✅ 依赖管理:使用 `uv` 管理依赖,保持 `pyproject.toml` 整洁
132+
133+
## 自动化检查流程
134+
135+
### 步骤 1:问题诊断 🔍
136+
```bash
137+
# 使用 'problems' 工具检查编译和 lint 错误
138+
- 检查类型错误
139+
- 检查未使用的导入
140+
- 检查潜在的 bug
141+
```
142+
143+
### 步骤 2:代码变更分析 📝
144+
```bash
145+
# 使用 'changes' 工具查看最近修改
146+
- 识别新增或修改的交易功能
147+
- 检查是否影响核心安全逻辑
148+
- 验证测试覆盖
149+
```
150+
151+
### 步骤 3:代码搜索 🔎
152+
```bash
153+
# 使用 'search' 工具查找特定模式
154+
- 搜索硬编码的敏感信息(API 密钥、私钥等)
155+
- 查找未处理的异常
156+
- 识别同步代码在异步环境中的使用
157+
```
158+
159+
### 步骤 4:使用情况分析 📈
160+
```bash
161+
# 使用 'usages' 工具分析函数调用
162+
- 验证服务层函数被正确调用
163+
- 检查已弃用的 API 使用
164+
- 识别未使用的代码
165+
```
166+
167+
### 步骤 5:待办事项检查 ✅
168+
```bash
169+
# 使用 'todos' 工具查找未完成工作
170+
- 检查 TODO 注释
171+
- 识别 FIXME 标记
172+
- 查找临时解决方案
173+
```
174+
175+
## 特定场景审查清单
176+
177+
### 新增交易工具函数
178+
- [ ] 函数名清晰描述功能
179+
- [ ] 包含完整的 docstring(参数、返回值、示例)
180+
- [ ] 使用 `@mcp.tool` 装饰器
181+
- [ ] 函数声明为 `async def`
182+
- [ ] 调用 `initialize_service()` 初始化服务
183+
- [ ] 参数验证完整(类型、范围、格式)
184+
- [ ] 错误处理遵循标准返回格式
185+
- [ ] 日志记录关键操作
186+
- [ ] 添加使用示例或测试用例
187+
188+
### 修改核心服务层
189+
- [ ] 保持向后兼容性
190+
- [ ] 更新相关文档
191+
- [ ] 验证所有调用点
192+
- [ ] 添加或更新单元测试
193+
- [ ] 考虑性能影响
194+
- [ ] 审查错误处理路径
195+
196+
### 配置变更
197+
- [ ] 更新 `.env.example` 文件
198+
- [ ] 文档化新配置项
199+
- [ ] 提供默认值或验证逻辑
200+
- [ ] 测试配置缺失场景
201+
- [ ] 更新 README.md
202+
203+
## 输出格式
204+
205+
### 审查报告结构
206+
```markdown
207+
# HyperLiquid MCP 代码审查报告
208+
209+
## 📊 总体评分
210+
- 安全性:X/10
211+
- 代码质量:X/10
212+
- 文档完整性:X/10
213+
- 测试覆盖率:X/10
214+
215+
## 🔴 严重问题(必须修复)
216+
1. [问题描述]
217+
- 位置:文件名:行号
218+
- 影响:安全性/功能性
219+
- 建议:具体修复方案
220+
221+
## 🟡 警告(建议修复)
222+
1. [问题描述]
223+
- 位置:文件名:行号
224+
- 建议:改进方案
225+
226+
## 🟢 最佳实践建议
227+
1. [建议内容]
228+
- 位置:文件名:行号
229+
- 优化:具体建议
230+
231+
## 📝 详细分析
232+
[按审查领域组织的详细发现]
233+
234+
## ✅ 操作项
235+
- [ ] 修复严重安全问题
236+
- [ ] 改进错误处理
237+
- [ ] 补充文档
238+
- [ ] 添加测试用例
239+
```
240+
241+
## 参考文档
242+
- **项目文档**`AGENT.md` - AI 编程指南
243+
- **FastMCP 文档**https://github.com/jlowin/fastmcp
244+
- **HyperLiquid SDK**https://github.com/hyperliquid-dex/hyperliquid-python-sdk
245+
- **Python 异步编程**:PEP 492
246+
247+
---
248+
249+
**执行建议**
250+
1. 优先审查涉及资金操作的代码
251+
2. 关注最近变更的文件
252+
3. 验证所有错误路径的处理
253+
4. 确保文档与代码同步
254+
5. 定期运行自动化检查工具
255+
256+

0 commit comments

Comments
 (0)