使用说明
九头蛇:自愈MCP监督员
“砍掉一个头,再砍两个头。”
Hydra是一个容错的 主管和代理人 用于模型上下文协议(MCP)服务器。它是专门为 人工智能辅助开发,确保崩溃、语法错误和“嘈杂”日志永远不会中断AI Agent(Claude、Gemini等)和开发服务器之间的连接。
🛑 问题
当AI代理为MCP服务器编写代码时(例如,向Python脚本添加工具):
- AI保存文件。
- 服务器因语法错误而崩溃。
- 连接已死。 AI失去了会话上下文、历史和修复错误的能力。
- 钱包流血了。 您支付代币以向AI重新解释上下文。
🐉 Hydra解决方案
Hydra位于AI客户端和MCP服务器之间。它 永不消逝,即使子服务器这样做。
graph LR
AI["AI Agent"] <-->|"Stdio (Safe)"| Hydra["Hydra Proxy"]
Hydra <-->|"Stdio (Raw)"| Child["MCP Server"]
style Hydra fill:#e6fffa,stroke:#2c7a7b,stroke-width:2px,color:#234e52
style Child fill:#fff5f5,stroke:#e53e3e,stroke-width:2px,stroke-dasharray: 5 5,color:#742a2a
style AI fill:#ebf8ff,stroke:#3182ce,stroke-width:2px,color:#2c5282
核心能力
- 🛡️ 会话持久性: AI会话在服务器崩溃后幸存下来。Hydra将错误报告为JSON-RPC消息,允许AI读取堆栈跟踪并修复代码 没有 断开连接。
- 🔇 标准消毒: Hydra过滤器
stdout。如果您的服务器打印console.log("Debug")或者对原始堆栈跟踪感到恐慌,Hydra会捕获它,将其封装在日志消息中,并防止它损坏JSON-RPC管道。 - ⚡ 乐观热重载: 文件保存后立即重新启动服务器(<500ms)。无“飞行前”检查;崩溃 是 反馈。
- 🧠 会话状态跟踪: 当服务器重新启动时,Hydra会保留并可以回放:
initialize请求(自动)resources/subscribe请求(跟踪的订阅)
- 💰 钱包保护: 防止象征性炸弹。
- 将工具输出限制在50KB,以防止意外转储。
- 速率限制日志消息(最大10/秒)。
- 可配置的大小限制和编辑模式。
- 📊 适应性学习: 监控服务器运行状况(0-100分),并根据观察到的模式建议配置优化。
- 💾 状态持久性: 指标和会话状态保存到
~/.hydra/state/用于恢复和分析。 - 📈 普罗米修斯出口: 用于监控仪表板和警报的可选指标端点。
✨ 为什么是九头蛇?
在九头蛇之前:
AI: "Let me add that new tool..."
[Server crashes due to syntax error]
AI: "I've lost the connection. Can you tell me what we were working on?"
You: [Re-explaining everything, burning tokens]
九头蛇:
AI: "Let me add that new tool..."
[Server crashes]
Hydra: "Server crashed with SyntaxError on line 42. Restarted in 320ms."
AI: "I see the issue - missing comma. Let me fix that..."
[No context lost, no reconnection needed]
区别: Hydra使AI会话保持活力,将崩溃转化为 调试消息 而不是 切断.
运作原理
- AI客户端连接到Hydra (不直接发送到您的服务器)
- Hydra生成您的服务器 作为一个孩子的过程
- 所有MCP消息都通过Hydra传输 (透明代理)
- Hydra捕获会话状态 (工具、订阅、文件状态)
- 服务器崩溃? 九头蛇:
- 保持AI连接活跃
- 重新启动服务器(<500ms)
- 回放会话状态
- 将错误作为JSON-RPC日志消息转发
- AI读取错误并修复代码 -没有上下文丢失
🚀 入门指南
安装
来源:
git clone https://github.com/proxikal/hydra.git
cd hydra
go build -o bin/hydra cmd/hydra/main.go
sudo mv bin/hydra /usr/local/bin/
或使用Make:
git clone https://github.com/proxikal/hydra.git
cd hydra
make install
验证安装:
hydra --version
注: Homebrew安装将在v1.0版本中发布
快速开始
1.为您的AI客户端初始化Hydra
hydra init --client claude
# Follow prompts to select which MCP servers to supervise
这将创建/更新您的Claude Desktop配置,以通过Hydra路由服务器。
2.启动受监控的服务器
hydra run --name my-python-server
3.检查状态
hydra status my-python-server
4.查看日志
hydra logs my-python-server --follow
5.手动重启(如需要)
hydra restart my-python-server
真实世界示例
脚本: 您正在构建一个Python MCP服务器,并希望在开发过程中进行热重新加载。
第一步: 将您的服务器添加到Hydra
hydra add my-tools \
--command python3 \
--args server.py \
--cwd ~/projects/my-mcp-server \
--watch-path ~/projects/my-mcp-server \
--watch-ext .py
第二步: 配置Claude Desktop以使用Hydra
hydra init --client claude
# Select "my-tools" from the list
步骤3: 开始编码
- 编辑
server.py并保存 - Hydra检测到变化并重新启动(<500ms)
- Claude桌面会话保持活动状态
- 你看到克劳德的错误,立即修复
- 无需手动重启,无需重新连接
检查服务器运行状况:
$ hydra inspect my-tools
Server: my-tools
Health: 95/100 ✓
Uptime: 2h 15m
Requests: 247 (245 success, 2 failed)
Latency: P50=42ms, P95=118ms
Restarts: 12 (11 file_change, 1 crash)
配置
Hydra使用两层配置系统:
全局注册表: ~/.hydra/config.json
{
"servers": {
"my-python-server": {
"command": "python",
"args": ["server.py"],
"env_file": ".env",
"watch": {
"paths": ["./src"],
"ignore_files": [".gitignore"]
},
"max_restarts": 5,
"restart_window_seconds": 60
}
}
}
本地覆盖(可选): ./hydra.json
{
"watch": {
"paths": ["./src", "./lib"]
}
}
看 docs/CONFIGURATION.md 对于完整模式。
🛠️ 建筑
九头蛇的设计严格 人工智能原生 原则:
- 运输不可知: 自动检测
Content-Length头文件(LSP样式)与NDJSON。 - 跨平台: 使用强大的进程组管理(Tree Kill)来处理Windows、Linux和macOS上的僵尸。
- 可注射工具: Hydra将自己的工具注入MCP会话:
hydra_restart:AI可以手动触发重启。hydra_logs:AI可以读取最后50行stderr.hydra_status:检查主管的健康状况(包括健康评分)。hydra_force_restart:覆盖碰撞回路保护。
- 健康监测: 5个维度的实时健康评分(0-100):
- 正常运行时间稳定性(30%)
- 错误率(25%)
- 响应延迟(20%)
- 队列深度(15%)
- 重启频率(10%)
- 适应性学习: 分析运行时模式并提出配置优化建议(例如,调整
max_restarts,queue_size,debounce_ms).
🗺️ 项目状态
所有实施阶段均已完成:
- ✅ 第一阶段:基础 -运输、配置、消毒器
- ✅ 第二阶段:核心逻辑 -主管、StateStore、观察者
- ✅ 第3阶段:编排 -代理、工具注入、流量记录器
- ✅ 第4阶段:CLI -命令,Bootstrap
- ✅ 第5阶段:硬化 -混沌测试,基准
当前版本: 测试版(接近v1.0)
v1.0路线图
- [x] 使用Claude Desktop进行真实世界验证
- [x] 综合测试套件(35个集成测试,共325+个)
- [x] 状态持久性和度量系统
- [x] 适应性学习和健康评分
- [x] 文件(11份指南中6200多行)
- []生产工作负载的性能验证
- []社区反馈和错误修复
- []Homebrew安装包
⚡ 演出
Hydra的设计旨在将开销降至最低:
| 度量 | 目标 | 实际 |
|---|---|---|
| 代理延迟(P50) | <50ms | 0.053ms |
| 代理延迟(P99) | <200ms | 0.141ms |
| 重启时间(P50) | <500ms | 101ms |
| 内存(1000次重启) | <100MB | 无泄漏(GC稳定) |
| CPU(空闲) | <1% | <0.5% |
自适应学习开销: 可忽略不计(<1MB RAM)
看 docs/BENCHARK_RESULTS.md 进行详细的性能分析。
🆘 故障排除
服务器无法启动:
# Check Hydra logs
hydra logs my-server --follow
# Verify config is valid
cat ~/.hydra/config.json | jq .
健康评分低:
# Get detailed breakdown
hydra inspect my-server
# Check what's failing (uptime, latency, errors, etc.)
# Adjust config accordingly
会话仍然在崩溃时死亡:
- 确保您正在使用
hydra run,不直接运行服务器 - 通过Hydra检查Claude Desktop配置路由
- 配置更改后重新启动Claude Desktop
看 测试/验证/VALIDATA_GUIDE.md 获取全面的测试说明。
🤝 贡献
我们欢迎捐款!请参阅 贡献.md 作为指导方针。
关键标准:
- 不
fmt.Println生产代码(使用internal/logger) - 接口优先模式(所有组件)
- 文件<250行(罕见复杂性时最多300行)
- 80%+测试覆盖率
- TDD强制性
发展:
git clone https://github.com/proxikal/hydra.git
cd hydra
make test # Run tests
make lint # Lint code
make coverage # Check coverage
📄 许可证
MIT许可证-请参阅 许可证 了解详情。
📚 文档
🙏 致谢
内置于❤️ MCP社区。
特别感谢所有帮助Hydra生产准备就绪的贡献者。