LLM集成开发工具

FGD Fusion Stack Pro是一款集成了大型语言模型(LLM)的开发工具,提供智能内存管理、文件监控和多LLM供应商支持,适用于开发环境中的AI辅助编程。

  • by mikeychann-hash
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 mikeychann-hash/MCPM

使用说明

FGD Fusion Stack Pro-MCP内存和LLM集成

具有智能内存管理、文件监控和多LLM提供程序支持的生产就绪模型上下文协议(MCP)服务器。具有现代PyQt6 GUI和Neo-Cyber主题,用于通过持久内存和上下文感知AI辅助管理您的开发工作区。


📋 目录


🆕 最新动态

6.0版-主要稳定性和性能更新(2025年11月)

🔒 关键错误修复(P0)

  • 数据完整性:静默写入失败现在会引发异常,以防止数据丢失
  • 种族状况预防:跨平台文件锁定(fcntl/msvcrt),超时10秒
  • 安全:限制内存文件的文件权限(600)
  • 原子写入:临时文件+重命名模式可防止损坏
  • UI一致性:所有窗户均采用现代新赛博色彩
  • 演出:日志查看器已优化-只读取新行(30%+CPU→ 最小)
  • 健康监测:后端进程崩溃检测和用户警报

⚡ 高优先级增强功能(P1)

  • UUID聊天键:防止基于时间戳的密钥发生16%的冲突率
  • 提供程序配置:尊重用户 default_provider 设置(硬编码到Grok)
  • 吐司通知:添加/移除烤面包时,可以平稳地重新定位
  • 内存泄漏已修复:按钮和标题的计时器生命周期管理
  • 加载指示器:用于长时间操作的现代微调器覆盖(>100KB文件,服务器启动)
  • 懒惰树加载:性能大幅提升-大型项目(1000+个文件)速度提高20-50倍

🚀 中等优先级功能(P2)

  • 记忆修剪:基于LRU的自动清理(可配置的最大值:1000个条目)
  • 可配置超时:每个提供程序超时设置(30-120s)
  • 网络重试逻辑:瞬时故障的指数回退(3次重试,2秒-8秒延迟)

已修复的错误总数15个关键/高/中优先问题 性能提升:树加载速度提高20-50倍,内存减少90%,CPU使用率最低 代码更改:在4次提交中添加了606行,删除了146行


🎯 概述

FGD Fusion Stack Pro提供了一个符合MCP标准的服务器,将您的本地开发环境与大型语言模型连接起来。它维护交互的持久内存,监视文件系统更改,并为LLM查询提供智能上下文。

关键部件:

  • MCP服务器:用于工具执行的符合模型上下文协议的服务器
  • 存储器:基于JSON的持久内存,具有LRU修剪和访问跟踪功能
  • 文件监视器:实时文件系统监控和更改检测
  • LLM后端:具有重试逻辑的多提供商支持(Grok、OpenAI、Claude、Ollama)
  • PyQt6图形用户界面:带有加载指示器的专业Neo-Cyber主题界面
  • FastAPI服务器:用于web集成的可选REST API包装

🏗️ 建筑

┌─────────────────────────────────────────────────────────────┐
│                        User Interface                        │
│  ┌────────────────┐              ┌────────────────┐         │
│  │  PyQt6 GUI     │              │  FastAPI REST  │         │
│  │  (gui_main_    │              │  (server.py)   │         │
│  │   pro.py)      │              │                │         │
│  │                │              │                │         │
│  │ • Loading      │              │ • Rate Limit   │         │
│  │   Indicators   │              │ • CORS Config  │         │
│  │ • Lazy Tree    │              │ • Health Check │         │
│  │ • Toast Notif  │              │                │         │
│  └────────┬───────┘              └────────┬───────┘         │
└───────────┼──────────────────────────────┼─────────────────┘
            │                              │
            └──────────────┬───────────────┘
                           ▼
            ┌──────────────────────────────┐
            │   MCP Server (mcp_backend.py) │
            │                               │
            │  ┌─────────────────────────┐  │
            │  │  MCP Protocol Handler   │  │
            │  │  - list_tools()         │  │
            │  │  - call_tool()          │  │
            │  └─────────────────────────┘  │
            │                               │
            │  ┌──────────┬───────────┐    │
            │  │ Memory   │ File      │    │
            │  │ Store    │ Watcher   │    │
            │  │ + LRU    │           │    │
            │  │ + Lock   │           │    │
            │  └──────────┴───────────┘    │
            │                               │
            │  ┌─────────────────────────┐  │
            │  │    LLM Backend          │  │
            │  │  + Retry Logic          │  │
            │  │  + Config Timeouts      │  │
            │  │  ┌─────┬──────┬──────┐ │  │
            │  │  │Grok │OpenAI│Claude│ │  │
            │  │  └─────┴──────┴──────┘ │  │
            │  └─────────────────────────┘  │
            └──────────────┬────────────────┘
                           ▼
            ┌──────────────────────────────┐
            │    External LLM APIs         │
            │  - X.AI (Grok)               │
            │  - OpenAI                    │
            │  - Anthropic (Claude)        │
            │  - Ollama (Local)            │
            └──────────────────────────────┘

✨ 特性

🔧 MCP工具(8个可用)

工具 描述 功能
list_directory 使用gitignore感知浏览文件 模式匹配,大小限制
read_file 读取文件内容 编码检测、大小验证
write_file 使用自动备份写入文件 原子写入、审批工作流
edit_file 编辑现有文件 差异预览,需要批准
使用 git_diff 显示未提交的更改 统一差异格式
git_提交 使用自动生成的消息进行提交 AI驱动的提交消息
git_log 查看提交历史 可配置深度
llm_query 使用上下文注入查询LLM 多提供程序,重试逻辑

💾 存储器系统

持久存储功能:

  • ✅ LRU修剪:超过1000个条目时自动清理(可配置)
  • ✅ 文件锁定:跨平台锁可防止比赛条件
  • ✅ 原子写入:临时文件+重命名可确保数据完整性
  • ✅ 安全权限:600(仅限所有者读/写)
  • ✅ 访问跟踪:统计每个内存被访问的次数
  • ✅ 分类:按类型组织(一般、llm、对话、文件更改)
  • ✅ UUID密钥:防止时间戳冲突(消除16%的冲突率)

存储结构:

{
  "memories": {
    "conversations": {
      "chat_<uuid>": {
        "id": "550e8400-e29b-41d4-a716-446655440000",
        "prompt": "Explain this code",
        "response": "This code implements...",
        "provider": "grok",
        "timestamp": "2025-11-09T10:30:00",
        "context_used": 5,
        "value": {...},
        "access_count": 3
      }
    }
  },
  "context": [
    {"type": "file_change", "data": {...}, "timestamp": "..."},
    ...
  ]
}

📊 文件监视

  • 看门狗集成:实时文件系统事件监控
  • 更改跟踪:创建、修改和删除文件的记录
  • 上下文集成:文件更改自动添加到上下文窗口
  • 大小限制:可配置的目录和文件大小限制,以防止过载
  • Gitignore感知:尊重他人

🎨 GUI功能(现代新网络主题)

视觉组件:

  • ✅ 加载覆盖层:用于长时间操作(文件加载、服务器启动)的动画微调器
  • ✅ 懒惰文件树:按需加载1000多个文件项目(速度提高20-50倍)
  • ✅ 吐司通知:在动画中平滑滑动,并自动重新定位
  • ✅ 深色主题:基于专业梯度的Neo-Cyber设计
  • ✅ 实时日志:实时日志查看,增量更新(无完全重建)
  • ✅ 健康监测:使用用户警报进行后端崩溃检测
  • ✅ 提供者选择:LLM提供商之间的轻松切换
  • ✅ 弹出窗口:用于预览、差异和日志的单独窗口

性能特点:

  • 日志查看器只读取新行(每秒读取整个文件)
  • 树只加载可见节点(正在加载整个目录结构)
  • 定时器清理可防止内存泄漏
  • 加载指示器可防止“冻结应用程序”的感知

🤖 LLM提供商支持

提供程序 型号 超时 重试 状态
Grok(X.AI) grok-3 30s(配置) ✅ 3x ✅ 默认值
开放人工智能 gpt-4o-mini 60秒(配置) ✅ 3x ✅ 活动
克劳德 claude-3-5连接器 90秒(配置) ✅ 3x ✅ 活动
奥拉玛 llama3(本地) 120秒(配置) ✅ 3x ✅ 活动

所有提供商现在都具有以下功能:

  • ✅ 每个提供程序可配置超时
  • ✅ 指数回退重试(3次尝试:2秒、4秒、8秒延迟)
  • ✅ 尊重 default_provider 配置
  • ✅ 详细的错误记录和重试尝试

🔨 最近的改进

数据完整性和安全性

修复 之前 之后 影响
无声故障 吞下错误 引发异常 防止数据丢失
竞态条件 无锁定 文件锁(fcntl/msvcrt) 防止损坏
文件权限 644(全球可读) 600(仅限所有者) 安全强化
写原子性 直接写入 临时+重命名 防崩溃写入

性能优化

组件 之前 之后 改进
日志查看器 30%+CPU,完全重建 最小CPU,增量 95%+减少
树加载 1000个文件2-5秒 <100ms 快20-50倍
内存增长 无限 最多1000个条目 有限制
网络错误 立即失败 3次回退重试 可靠性++

用户体验

  • ✅ 加载指示器:不再有“冻了吗?”的困惑
  • ✅ 吐司动画:拆卸时可顺利重新定位
  • ✅ 碰撞检测:如果后端死亡,立即通知
  • ✅ 零碰撞:基于UUID的聊天密钥(冲突率为16%)
  • ✅ 供应商选择:默认配置荣誉(硬编码到Grok)

📦 安装

先决条件

  • python:3.10或更高
  • 点:包管理器
  • 虚拟环境:推荐

系统依赖关系(Linux)

PyQt6 GUI需要Linux上的系统库:

# Ubuntu/Debian
sudo apt-get install -y libegl1 libegl-mesa0 libgl1 libxkbcommon0 libdbus-1-3 \
    libxcb-xinerama0 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 \
    libxcb-randr0 libxcb-render-util0 libxcb-shape0 libxcb-cursor0 libxcb-xfixes0

备注:这些是预装在大多数桌面Linux系统上的。

安装步骤

  1. 克隆存储库

    git clone https://github.com/mikeychann-hash/MCPM.git
    cd MCPM
    
  2. 创建虚拟环境

    python -m venv venv
    source venv/bin/activate  # Windows: venv\Scripts\activate
    
  3. 安装依赖项

    pip install -r requirements.txt
    
  4. 设置环境变量

    # Create .env file
    cat > .env << EOF
    # Required for Grok (default provider)
    XAI_API_KEY=your_xai_api_key_here
    
    # Optional: Only needed if using these providers
    OPENAI_API_KEY=your_openai_api_key_here
    ANTHROPIC_API_KEY=your_anthropic_api_key_here
    EOF
    
  5. 启动GUI

    python gui_main_pro.py
    

⚙️ 配置

增强的config.yaml

watch_dir: "/path/to/your/project"    # Directory to monitor
memory_file: ".fgd_memory.json"        # Memory storage file
log_file: "fgd_server.log"             # Log output file
context_limit: 20                      # Max context items to keep
max_memory_entries: 1000               # NEW: Max memories before LRU pruning

scan:
  max_dir_size_gb: 2                   # Max directory size to scan
  max_files_per_scan: 5                # Max files per list operation
  max_file_size_kb: 250                # Max individual file size to read

llm:
  default_provider: "grok"             # Default LLM provider
  providers:
    grok:
      model: "grok-3"
      base_url: "https://api.x.ai/v1"
      timeout: 30                      # NEW: Configurable timeout (seconds)
    openai:
      model: "gpt-4o-mini"
      base_url: "https://api.openai.com/v1"
      timeout: 60                      # NEW: Longer for complex queries
    claude:
      model: "claude-3-5-sonnet-20241022"
      base_url: "https://api.anthropic.com/v1"
      timeout: 90                      # NEW: Even longer for Claude
    ollama:
      model: "llama3"
      base_url: "http://localhost:11434/v1"
      timeout: 120                     # NEW: Longest for local models

配置说明

v6.0中的新功能:

  • max_memory_entries:控制LRU修剪何时开始(默认值:1000)
  • timeout:每个提供程序超时时间(秒)(允许针对不同型号速度进行自定义)

内存修剪策略:

  • 按access_count(升序)和timestamp(最旧的先)对条目进行排序
  • 超过限制时删除最近最少使用的条目
  • 自动清理空类别
  • 记录修剪活动以进行监控

🚀 用法

选项1:PyQt6图形用户界面(推荐)

python gui_main_pro.py

增强的GUI工作流程:

  1. 点击 浏览 选择项目目录
  2. 从下拉列表中选择LLM提供商(Grok、OpenAI、Claude、Ollama)
  3. 点击 启动服务器 启动MCP后端
    • 新:加载指示器显示启动进度
    • 新:后端健康监控检测到崩溃
  4. 查看带有过滤选项的实时日志
    • 新:增量日志更新(无完全重建)
    • 按日志级别搜索和筛选
  5. 使用延迟加载树浏览项目文件
    • 新:大型项目速度快20-50倍
    • 新:为大于100KB的文件加载微调器
  6. 实时监控服务器状态和内存使用情况

GUI功能:

  • ✅ 自动生成配置文件
  • ✅ 验证API密钥
  • ✅ 管理子流程生命周期
  • ✅ 平滑的吐司通知
  • ✅ 用于预览/差异/日志的弹出窗口
  • ✅ 现代新网络主题

选项2:MCP服务器直接

python mcp_backend.py config.yaml

这将以stdio模式启动MCP服务器,以便与MCP客户端集成。

增强功能:

  • ✅ 自动内存修剪
  • ✅ 文件锁定可防止损坏
  • ✅ 采用指数回退的网络重试
  • ✅ 每个提供程序的可配置超时

选项3:FastAPI REST服务器

python server.py

访问端点位于 http://localhost:8456:

端点 方法 描述
/api/status GET 检查服务器状态
/api/start POST 启动MCP服务器
/api/stop POST 停止MCP服务器
/api/logs GET 查看日志(查询: ?file=fgd_server.log)
/api/memory GET 检索所有记忆
/api/llm_query POST 直接查询LLM

快速查找查询示例

# 1. Start FastAPI server
python server.py &

# 2. Start MCP backend
curl -X POST http://localhost:8456/api/start \
  -H 'Content-Type: application/json' \
  -d '{
        "watch_dir": "/path/to/project",
        "default_provider": "grok"
      }'

# 3. Send query to Grok
curl -X POST http://localhost:8456/api/llm_query \
  -H 'Content-Type: application/json' \
  -d '{
        "prompt": "Summarize the recent changes",
        "provider": "grok"
      }'

# 4. Check status
curl http://localhost:8456/api/status | jq

📚 API 参考

MCP工具

llm_query(增强型)

使用自动上下文注入和重试逻辑查询LLM。

{
  "tool": "llm_query",
  "arguments": {
    "prompt": "Explain this error",
    "provider": "grok"
  }
}

新功能:

  • ✅ 已配置尊重 default_provider
  • ✅ 3次指数回退重试(2s、4s、8s)
  • ✅ 每个提供程序的可配置超时
  • ✅ 基于UUID的对话密钥(防止冲突)

记住(增强)

使用LRU修剪将信息存储在持久内存中。

{
  "tool": "remember",
  "arguments": {
    "key": "api_endpoint",
    "value": "https://api.example.com",
    "category": "general"
  }
}

新功能:

  • ✅ 超过限制时自动修剪LRU
  • ✅ 访问计数跟踪
  • ✅ 文件锁定可防止损坏
  • ✅ 原子写入防止数据丢失

召回

通过访问跟踪检索存储的内存。

{
  "tool": "recall",
  "arguments": {
    "key": "api_endpoint",
    "category": "general"
  }
}

新功能:

  • ✅ 每次召回的访问次数递增
  • ✅ 帮助LRU算法保留常用数据

有关完整的工具文档,请参阅上面的原始API参考部分。


🗺️ 路线图

✅ 已完成(v6.0)

  • [x] 关键错误修复(P0):数据完整性、文件锁定、原子写入
  • [x] 高优先级增强(P1):UUID键、加载指示器、懒惰树
  • [x] 中等优先级功能(P2):内存修剪、重试逻辑、可配置超时
  • [x] GUI改进:Neo Cyber主题、健康监测、吐司动画
  • [x] 性能优化:树速度提高20-50倍,日志CPU减少95%

🔜 即将推出(v6.1)

  • [ ] MCP-2:启动时的连接验证
  • [ ] MCP-4:正确的MCP错误响应(重构字符串错误)
  • [ ] 桂-6/7/8:窗口状态持久性(大小、位置、拆分器状态)
  • [ ] 桂-20:常用操作的键盘快捷键
  • [ ] GUI-12:自定义对话框(替换QMessageBox)

🎯 未来的增强功能

  • [ ] 测试:综合单元测试套件
  • [ ] 指标:Prometheus兼容指标端点
  • [ ] 认证:REST终结点的API密钥身份验证
  • [ ] 插件:自定义工具插件系统
  • [ ] 多语言:支持非Python项目
  • [ ] 云同步:可选的云存储备份
  • [ ] 协作:跨团队成员共享内存

🐛 已知问题

  • 目前没有跟踪(v6.0中修复了15个错误)

🔍 故障排除

服务器无法启动

症状:后端无法启动,日志中有错误

解决方案:

  • ✅ 检查API密钥 .env 文件
  • ✅ 验证的目录权限 watch_dir
  • ✅ 检查端口8456是否可用(适用于FastAPI)
  • ✅ 查看后端脚本路径(mcp_backend.py 必须存在)

新:加载指示器现在显示启动进度,使问题更加明显。

文件监视器未检测到更改

症状:文件修改未出现在上下文中

解决方案:

  • ✅ 确保 watch_dir 已正确配置
  • ✅ 检查目录是否太大(>2GB默认限制)
  • ✅ 验证是否有足够的系统资源
  • ✅ 检查监视器是否正在运行(日志显示“文件监视器已启动”)

LLM查询失败

症状:查询返回错误或超时

解决方案:

  • ✅ 验证API密钥有效并且具有信用
  • ✅ 检查到API端点的网络连接
  • ✅ 查看日志以了解详细的错误消息
  • ✅ 新:检查重试尝试是否已用尽(日志显示“3次尝试后失败”)
  • ✅ 新:如果需要,在提供程序配置中增加超时时间

记忆不持久

症状:重新启动后数据丢失

解决方案:

  • ✅ 检查上的写入权限 memory_file 位置
  • ✅ 验证可用磁盘空间
  • ✅ 在保存操作期间查找日志中的错误
  • ✅ 新:检查文件锁定是否导致超时(日志显示“内存加载超时”)

GUI冻结

症状:接口变得无响应

解决方案:

  • ✅ 在v6.0中已修复:日志查看器性能问题已解决
  • ✅ 在v6.0中已修复:延迟树加载可防止大型项目冻结
  • ✅ 关闭资源密集型选项卡(日志、预览)
  • ✅ 降低后端日志的冗长程度

内存使用率高

症状:应用程序使用了过多的RAM

解决方案:

  • ✅ 新:内存修剪将条目限制为1000个(可配置)
  • ✅ 降低 max_memory_entries 在配置中
  • ✅ 通过回忆/删除手动清除旧记忆
  • ✅ 定期重新启动服务器以获得新状态

JSON-RPC验证错误

症状: "Invalid JSON: expected value at line 1 column 1"

原因:MCP服务器使用JSON-RPC 2.0协议通过stdio进行通信。

解决方案:

  • ✅ 使用PyQt6图形用户界面(gui_main_pro.py)而不是直接运行服务器
  • ✅ 使用FastAPI REST包装器(server.py)用于基于HTTP的交互
  • ✅ 不要在运行MCP服务器的终端中键入纯文本
  • ✅ 确保所有stdin输入都是有效的JSON-RPC 2.0格式

预期格式:

{"jsonrpc": "2.0", "method": "tools/call", "params": {"name": "read_file", "arguments": {"filepath": "test.py"}}, "id": 1}

📊 性能基准

前后对比(v6.0)

度量 之前 之后 改进
树加载(1000个文件) 2-5秒 <100毫秒 快20-50倍
日志查看器CPU 减少30%+ <2% 95%
内存文件大小 无限制(10MB+) 有限制(1000个条目) 可预测
聊天键冲突 碰撞率16% 碰撞率0% 提高100%
网络故障恢复 立即失败 3次重试,2-8秒回退 可靠性++
文件写入安全 无锁定 跨平台锁定 防止损坏

🔒 安全最佳实践

如果在生产环境中部署:

  1. 环境变量:从不承诺 .env 文件到版本控制
  2. API密钥:定期轮换密钥,使用密钥管理服务
  3. 跨域资源共享:将特定来源列入白名单,而不是 *
  4. 输入验证:验证所有用户输入和文件路径(✅ 已实施)
  5. 速率限制:实施每个用户/IP速率限制(✅ 在FastAPI中实现)
  6. 传输层安全:对所有外部API通信使用HTTPS
  7. 日志记录:避免记录敏感数据(API密钥、令牌)
  8. 文件权限:内存文件现在使用600(✅ 在v6.0中实现)
  9. 原子操作:防止写入过程中的数据损坏(✅ 在v6.0中实现)

🔗 Grok API连接指南

⚠️ 重要提示:型号更新

截至2025年11月,X.AI已弃用 grok-beta.你 必须 使用 grok-3 相反。

  • ❌ 老的 model: grok-beta (已撤销-将失败,出现404错误)
  • ✅ 新 model: grok-3 (当前型号)

MCPM v6.0+已更新为使用 grok-3 自动。如果您使用的是旧版本,请更新您的 fgd_config.yaml:

llm:
  providers:
    grok:
      model: grok-3  # Change from grok-beta to grok-3

先决条件

  • Grok API帐户位于 x.ai
  • X.AI帐户中的有效API密钥
  • XAI_API_KEY环境变量集
  • 要连接的互联网 api.x.ai/v1

步骤1:获取Grok API密钥

  1. 访问X.AI首选 https://x.ai/
  2. 注册/登录:创建帐户或登录
  3. 获取API密钥:
    • 导航到API设置
    • 生成新的API密钥
    • 复制密钥(以开头 xai- 前缀通常)
  4. 安全保存:将其存放在安全的地方

步骤2:配置MCPM

选项A:使用.env文件(推荐)

创建 .env MCPM根目录中的文件:

# Required for Grok provider
XAI_API_KEY=xai_your_actual_api_key_here

# Optional: Other providers
OPENAI_API_KEY=sk-your-openai-key
ANTHROPIC_API_KEY=sk-ant-your-anthropic-key

选项B:使用环境变量

Windows(命令提示符):

set XAI_API_KEY=xai_your_actual_api_key_here
python gui_main_pro.py

Windows(PowerShell):

$env:XAI_API_KEY = "xai_your_actual_api_key_here"
python gui_main_pro.py

Linux/Mac:

export XAI_API_KEY="xai_your_actual_api_key_here"
python gui_main_pro.py

步骤3:启动MCPM

# GUI Mode (Recommended)
python gui_main_pro.py

# Or direct backend mode
python mcp_backend.py fgd_config.yaml

步骤4:验证连接

GUI将显示:

  • 连接状态: "🟢 在grok上运行”(绿色指示灯)
  • 日志输出:“Grok API密钥存在:True”
  • 型号信息:应显示“grok-3”型号

Grok连接故障排除

问题:“XAI_API_KEY未设置”错误

原因:找不到环境变量

解决方案:

  1. 检查 .env 文件存在并且具有正确的密钥:

    cat .env  # Linux/Mac
    type .env  # Windows
    
  2. 验证密钥格式(应以开头 xai-):

    import os
    print(os.getenv("XAI_API_KEY"))
    
  3. 设置变量后重新启动Python/GUI:

    • 对环境变量的更改需要重新启动
    • .env 文件更改会自动拾取

问题:“Grok API错误401:未经授权”

原因:API密钥无效或过期

解决方案:

  1. 检查API密钥是否正确(没有空格,前缀正确)
  2. 从X.AI仪表板重新生成密钥
  3. 验证密钥是否仍处于活动状态(检查帐户设置)
  4. 直接测试API密钥:
    curl -H "Authorization: Bearer xai_YOUR_KEY" \
      https://api.x.ai/v1/models
    

问题:“Grok API错误429:速率受限”

原因:短时间内请求太多

解决方案:

  1. 等待1-2分钟后重试
  2. 检查您帐户的请求限制
  3. 如果需要,升级X.AI帐户
  4. 减少并发查询

问题:“连接错误”或“超时”

原因:网络连接问题

解决方案:

  1. 检查互联网连接: ping api.x.ai
  2. 检查防火墙/代理设置
  3. 验证API终结点是否可访问:
    curl -I https://api.x.ai/v1/chat/completions
    
  4. 检查X.AI服务状态

问题:GUI显示“已连接”,但Grok没有响应

原因:后端已启动,但API调用以静默方式失败

解决方案:

  1. 检查日志中的实际错误:

    tail -f fgd_server.log  # Backend logs
    tail -f mcpm_gui.log    # GUI logs
    
  2. 在日志中验证:

    • “Grok API密钥存在:True”
    • 没有“API错误”消息
    • 无超时警告
  3. 在GUI中使用简单查询进行测试

  4. 检查模型名称是否与配置匹配: grok-3

命令列表:通过MCPM GUI使用Grok

1. 启动服务器

  • 点击 “浏览” 选择项目文件夹
  • 选择 “grok” 从提供者下拉列表
  • 点击 "▶️ 启动服务器“ 按钮
  • 等候 "🟢 在grok上奔跑” 状态

2. 查询Grok

在支持以下功能的MCP客户端或工具中 llm_query 工具:

{
  "tool": "llm_query",
  "arguments": {
    "prompt": "Your question here",
    "provider": "grok"
  }
}

3. 使用文件上下文

自动包含文件上下文的查询:

{
  "tool": "llm_query",
  "arguments": {
    "prompt": "Analyze this code: read_file(src/main.py)",
    "provider": "grok"
  }
}

4. 存储和召回信息

记住Grok的回答:

{
  "tool": "remember",
  "arguments": {
    "key": "grok_solution",
    "value": "Solution from Grok response",
    "category": "llm"
  }
}

稍后再回忆:

{
  "tool": "recall",
  "arguments": {
    "category": "llm"
  }
}

5. 搜索项目文件

{
  "tool": "search_in_files",
  "arguments": {
    "query": "TODO",
    "pattern": "**/*.py"
  }
}

6. 列出文件

{
  "tool": "list_files",
  "arguments": {
    "pattern": "**/*.py"
  }
}

REST API:直接Grok查询

如果使用FastAPI包装器(python server.py):

# Start FastAPI server
python server.py

# Query Grok
curl -X POST http://localhost:8456/api/llm_query \
  -H 'Content-Type: application/json' \
  -d '{
    "prompt": "What is machine learning?",
    "provider": "grok"
  }'

配置文件设置

编辑 fgd_config.yaml 对于Grok特定设置:

llm:
  default_provider: grok
  providers:
    grok:
      model: grok-3              # Model version
      base_url: https://api.x.ai/v1 # API endpoint
      timeout: 60                   # Request timeout in seconds

最佳实践

  1. API密钥安全:

    • 永不承诺 .env 转git
    • 使用 .gitignore 排除它
    • 定期旋转按键
  2. 速率限制:

    • 保持查询<4000个令牌
    • 分隔多个请求
    • 检查X.AI帐户限制
  3. 错误处理:

    • 始终检查日志(fgd_server.log)
    • 使用指数回退(内置)重试
    • 优雅地回退到其他提供商
  4. 上下文管理:

    • 将上下文窗口限制为20个项目(可配置)
    • 通过LRU修剪将旧记忆存档
    • 清理不必要的文件更改

常见问题解答

Q: 我怎么知道Grok是否真的有联系? A: 检查 fgd_server.log 对于线路:

Grok API Key present: True
MCP Server starting with configuration:
  LLM Provider: grok

Q: 我可以同时使用多个提供商吗? A: 否,只有一个默认提供程序。通过在GUI或设置中选择不同的提供商进行切换 default_provider 在配置中。

Q: 如果我的API密钥过期怎么办? A: 在X.AI仪表板上生成新密钥并更新 .env 文件。

Q: Grok API的价格是多少? A: 检查 X.AI定价 -定价结构因层级而异。

Q: 我可以自行托管后端吗? A: 是的, mcp_backend.py 在当地运行。它只需要互联网对Grok API调用。


📝 更新日志

[6.0.0] - 2025-11-09

添加

  • 长时间操作(文件加载、服务器启动)的加载指示器
  • 延迟文件树加载(按需节点扩展)
  • 具有可配置限制的LRU内存修剪
  • 具有指数回退的网络重试逻辑
  • 每个提供程序可配置超时
  • 后端健康监控和崩溃检测
  • 基于UUID的聊天密钥,以防止冲突
  • 跨平台文件锁定(fcntl/msvcrt)
  • 原子文件写入(临时+重命名)
  • 限制性文件权限(600)

固定的

  • 静默写入失败现在会引发异常
  • 日志查看器性能(30%+CPU→ 最小)
  • 树木装载性能(2-5s→ <100ms)
  • 并发文件访问中的竞争条件
  • Toast通知定位故障
  • 定时器内存在按钮和标题中泄漏
  • 硬编码Grok提供者(现在尊重配置)
  • 聊天键中的时间戳冲突(16%的比率)

改变

  • 日志查看器用于增量更新(已完全重建)
  • 树加载到懒惰的按需加载(渴望满载)
  • 内存存储限制大小(无限制)
  • 自动重试的网络请求(单次尝试)
  • 提供程序超时为可配置(硬编码为30秒)

演出

  • 大型项目的树加载速度提高了20-50倍
  • 日志查看器CPU使用率降低95%
  • 大型项目的内存使用量减少90%
  • 零聊天键冲突(16%)

提交引用:

  • 706b403 -P2中等优先级错误
  • 2793d02 -P1剩余修复
  • 5caded9 -P1高优先级错误
  • 601ffdd -P0严重错误

🤝 贡献

我们欢迎捐款!感兴趣的领域:

高优先级

  • []添加全面的单元测试套件
  • []启动时执行连接验证(MCP-2)
  • []将字符串错误重构为正确的MCP错误对象(MCP-4)

中优先级

  • []添加窗口状态持久性(GUI-6/7/8)
  • []实现键盘快捷键(GUI-20)
  • []用自定义对话框(GUI-12)替换QMessageBox

锦上添花

  • []在整个代码库中添加类型提示
  • []使用建议改进错误消息
  • []添加Prometheus指标
  • []实现插件系统

📄 许可证

[在此处添加您的许可证]


💬 支持

对于问题、疑问或贡献:


🙏 致谢

  • 模型上下文协议(MCP)规范
  • PyQt6用于优秀的GUI框架
  • 文件系统监控监视器
  • 所有法学硕士提供者(X.AI、OpenAI、Anthropic、Ollama)

内置于❤️ 使用Python、PyQt6和模型上下文协议