Files
rust-work/INCUBATOR.md

170 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 代理工具孵化记录
> 状态:孵化中 | 更新2026-03-24
---
## 工具列表
| 工具 | 端口 | 状态 | 项目目录 |
|------|------|------|----------|
| mysql-proxy | 3307 | 可用 | `mysql-proxy` |
| ssh-proxy | 3308 | 可用 | `ssh-proxy` |
| mongo-proxy | 3309 | 可用 | `mongo-proxy` |
| redis-proxy | 3310 | 可用 | `redis-proxy` |
---
## 新增功能
### 2026-03-24
1. **redis-proxy** (新工具)
- Redis HTTP 代理,会话复用
- 支持 run/get/set/del/keys/info
- CLI 模式 + HTTP API 双模式
- 连接: flux_dev
2. **mongo-proxy** (新工具)
- MongoDB HTTP 代理,会话复用
- 支持 find/insert/update/delete/aggregate/count
- CLI 模式 + HTTP API 双模式
- 连接: suke_dev, suke_pro
### 2026-03-21
1. **ssh-proxy 断线重连** (P0)
- exec 方法检测到会话失效时自动清除并重连
- 修复 get_or_create_session TOCTOU 竞态条件
2. **日志智能分级** (P1)
- 慢请求告警: >3s WARN, >10s ERROR
- 退出码识别: exitCode 0/1/-1 视为正常,>=2 或 127 标记 ERROR
- UTF-8 安全截断
3. **服务器配置扩展** (P1)
- 新增 server1 (一号机)、server2 (二号机)、ai_sg (新加坡 AI 机器)
- 共 5 台服务器
4. **代码优化** (P2)
- 移除未使用的 async-trait 依赖
- 用 time crate 替换 40 行手写日期计算
- 清理未使用字段
### 2026-03-20
1. **ssh-proxy russh 迁移** (P0)
- 从 ssh2 迁移到 russh原生支持 ed25519 密钥
- 修复了 ed25519 认证失败问题
- 使用 async/await 原生 API
### 2026-03-19
1. **请求日志** (P0)
- 设置环境变量启用:`MYSQL_PROXY_LOG` / `SSH_PROXY_LOG`
- 日志格式JSON每行一条记录
2. **ssh-proxy CLI JSON 输出** (P1)
```bash
ssh-proxy exec -n flux_dev -c "docker ps" -F json
```
3. **ssh-proxy 动态添加服务器** (P2)
```bash
ssh-proxy add-server -n myserver -H 192.168.1.100 -u root -p password
# 或 API
curl -X POST http://127.0.0.1:3308/servers/add \
-H "Content-Type: application/json" \
-d '{"name":"myserver","host":"192.168.1.100","user":"root","password":"secret"}'
```
4. **API 错误友好提示**
- 错误时返回 `usage` 字段,引导正确使用
### 2026-03-18
- mysql-proxy 动态添加连接 API
- ssh-proxy Windows 路径修复
- ssh-proxy 读取错误日志修复
---
## 实测性能
| 操作 | 代理 | 直连 | 提升 |
|------|------|------|------|
| mysql 首次查询 | ~150ms | ~500ms | 3x |
| mysql 复用会话 | ~50ms | ~500ms | 10x |
| ssh 首次执行 | ~900ms | ~1500ms | 1.7x |
| ssh 复用会话 | ~100-200ms | ~1500ms | 7-15x |
---
## AI 推荐使用方式
> **优先使用 CLI 模式**,命令简洁
```bash
# MySQL 查询 (CLI 优先)
mysql-proxy cli -c flux_dev -e "SELECT VERSION()"
# MySQL JSON 输出
mysql-proxy cli -c flux_dev -e "SHOW TABLES" -F json
# MySQL 执行 DML
mysql-proxy cli -c flux_dev -e "UPDATE users SET status=1" -x
# SSH 执行 (CLI 优先)
ssh-proxy exec -n flux_dev -c "docker ps"
# SSH JSON 输出
ssh-proxy exec -n flux_dev -c "docker ps" -F json
# 列出服务器
ssh-proxy servers
mysql-proxy connections
```
**HTTP API (复杂场景)**
```bash
# MySQL
curl -X POST http://127.0.0.1:3307/query \
-H "Content-Type: application/json" \
-d '{"conn":"flux_dev","sql":"SELECT VERSION()"}'
# SSH
curl -X POST http://127.0.0.1:3308/exec \
-H "Content-Type: application/json" \
-d '{"server":"flux_dev","command":"docker ps"}'
```
**降级方案** (代理不可用)
```bash
mysql -h<host> -u<user> -p<password> -D<database> -e "<SQL>"
ssh <user>@<host> "<command>"
```
**优势**
- CLI 命令简洁AI 友好
- JSON 格式输出,易于解析
- 会话复用,响应快
- 错误提示友好
---
## 已知问题
### ssh-proxy
- 暂无 (ed25519 已支持)
### mysql-proxy
- 暂无
---
## 待优化
*由 AI 在实际使用过程中根据遇到的问题填写*