Skip to main content
Glama

内存管家 · Local Model Manager

让本地 AI 模型按资源余量排队运行,同时给日常办公留出空间。

当前开源版本:v1.2.0。面向 Windows + NVIDIA GPU,提供命令行和 MCP 接口,可接入 Codex 等支持 MCP 的客户端。它是后台资源协调工具,目前没有图形界面。

它能帮你做什么?

例如,你正在用 ComfyUI 生成视频,另一个聊天又想启动本地大语言模型。两边各自启动容易争抢内存和显存。内存管家让接入的任务先申请资源,条件不够时排队,每次推理前重新检查,完成后释放资源。任务始终保留原有分辨率、步数、模型精度和上下文要求。

能力

具体用途

RAM、系统提交量、显存监测

分清哪一种容量不足,避免把物理内存回收当成显存扩容

跨聊天资源排队

多个客户端共享一个后台服务,通过凭证协调已登记的模型

推理前准入检查

根据实际任务规格、已有测量和桌面余量决定是否允许新提交

受控启停

核对进程身份和后端忙闲状态;忙碌或身份不明时拒绝停止

有界自适应

按模型与工作流分别积累峰值、耗时和质量反馈;遇到压力增加保护,可回退策略

闲置应用物理内存回收

v1.2.0 新增;真实模型任务持续缺 RAM 时,对符合条件的最小化应用执行有限的工作集回收

状态、历史与健康报告

解释为什么等待、是否有观测缺失、哪些经验可以用于容量预测

适合在同一台 Windows 电脑上运行本地视频模型、ComfyUI 和 llama.cpp,同时还需要浏览器、编辑器、录制或办公的人。仅安装它不会自动接管其他软件;任务必须走 MCP、CLI 包装器或资源凭证接口。

Related MCP server: vibedonate

能力边界

  • 当前调度以 NVIDIA GPU 0 为准;没有多 GPU 调度、AMD/macOS/Linux 完整运行支持。缺少必要遥测时会阻止准入。

  • 它不能增加硬件容量、硬隔离显存或抢占正在执行的推理,也不能阻止绕过管家的客户端抢资源。

  • 不会为了放行任务而自动降低生成质量。预算超过硬件能力时会报告 policy_infeasible,而不是无限等待或偷偷缩减预算。

  • 闲置回收调用 Windows EmptyWorkingSet,不关闭、暂停或重启应用。它移出可分页的物理驻留页,不减少私有提交量,不释放显存;切回应用可能重新调页,不能保证提速。

  • 状态采样、CPU 调度延迟和自动测试不等于人工确认桌面流畅,也不等于生成质量验收。

  • 项目不包含模型权重、ComfyUI、llama.cpp 或个人安装环境;这些软件须自行安装并遵守各自许可证。

安装与首次运行

需要 Windows、Python 3.12(本次验证版本为 3.12.14)、Git,以及可运行 nvidia-smi 的 NVIDIA 驱动。普通用户权限即可。以下命令在 PowerShell 中执行:

git clone https://github.com/tt1145142222/local-model-manager.git
cd local-model-manager
py -3.12 -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r requirements.txt
Copy-Item config.example.json config.json
.\.venv\Scripts\python.exe manager.py status

status 会在需要时自动启动轻量后台管家,不会启动模型。首次配置的 models 为空,这是预期状态。请只运行一个管家实例;默认地址为 127.0.0.1:18765,若本机已有实例,应复用它,或先在没有活动任务时正常关闭旧实例。

运行时仅需要 psutil;MCP stdio 层由本项目的标准库实现提供,无需额外安装 MCP SDK。启动后,凭证、SQLite 状态和日志保存在仓库下的 work/,已加入忽略规则。

1. 登记你已安装的模型

先复制 examples/llamacpp.manifest.json 或 examples/comfyui.manifest.json 到自己的工作目录,修改:

  1. root、exe 和 start_argv 中的所有路径:必须指向真实文件。

  2. url 与启动端口:保持一致,只允许 127.0.0.1。

  3. 启动参数:沿用你已验证可运行的模型、精度、采样及上下文配置。示例不代替模型安装说明。

  4. startup_*_gib:按实际模型和硬件设置保守启动阈值;示例值不是通用最低配置。不要为强行放行而调低预算。

llama.cpp 需暴露 /health 和 /slots,使用单推理槽 -np 1,且 -c 与 context_capacity 一致。ComfyUI 需提供 /queue。示例中的 model.gguf 是占位名称。

New-Item -ItemType Directory -Path work -Force
Copy-Item examples/llamacpp.manifest.json work/my-llm.json
# 编辑 work/my-llm.json,填写实际路径、启动参数及预算后执行:
.\.venv\Scripts\python.exe manager.py register --model my-llm --manifest work/my-llm.json

登记只验证并保存配置,不启动模型。登记时不能有排队或活动任务。h3 和 muse 是原安装环境的保留 ID;新安装请使用自己的名称,例如 my-llm、my-video。

2. 接入 Codex / MCP 客户端

将以下条目合并到客户端的 MCP 配置,替换路径,不要覆盖已有服务器配置:

[mcp_servers.local_models]
command = "C:/Tools/local-model-manager/.venv/Scripts/python.exe"
args = ["C:/Tools/local-model-manager/mcp_server.py"]

其他 MCP 客户端使用相同的 stdio 命令和参数。重新加载连接后,让助手遵循以下资源协议:

对已登记模型,先 status,再 request;仅在 active 且 proceed=true 时继续。每次实际推理前 prepare;只有本次 prepare 返回 proceed=true 才提交。长任务定期 lease 续期;完成推理与原流程质量检查后 complete,整批结束 release。保留原质量参数,quality 未评估就填 unknown。外部服务停止需要针对具体对象的授权。

MCP 管家不会替你调用模型推理接口。 原有 ComfyUI/LLM 工作流继续执行生成,管家负责允许何时执行和记录结果。完整工具映射见 使用与集成说明。

3. 用一条命令包装现有脚本

复制并修改 examples/task-llm.json,填写本次实际 token/上下文规模,以及能标识模型、精度、采样配置的 workflow_signature:

Copy-Item examples/task-llm.json work/task.json
.\.venv\Scripts\python.exe manager.py run --model my-llm --owner demo --task-file work/task.json -- C:/YourPython/python.exe C:/YourProject/infer.py

包装器自动申请、等待、prepare、续期、记录完成并释放。脚本退出成功只表示执行完成,质量仍为 unknown。若原流程产生本次 QA 文件,可加 --qa-file work/qa.json;不要预造 passed。

一个脚本内部多次提交推理时,每次都需要单独 prepare/complete;外层 run 只检查命令启动,不能替代每次推理检查。

4. 查看状态、回收记录与停机

.\.venv\Scripts\python.exe manager.py status
.\.venv\Scripts\python.exe manager.py health-report
.\.venv\Scripts\python.exe manager.py app-memory
.\.venv\Scripts\python.exe manager.py history
.\.venv\Scripts\python.exe manager.py learning
# 没有排队或活动任务时正常关闭管家,保留模型服务:
.\.venv\Scripts\python.exe manager.py shutdown

v1.2.0 的闲置内存回收怎么工作?

公开示例配置中 app_memory_reclaim.enabled 为 false。需要此功能时,在无任务时正常关闭管家,将其改为 true 后重新启动。启用后,只有有效模型任务持续 15 秒 缺少 RAM,才考虑同一用户/桌面会话内:所有可见窗口都已最小化、连续 10 分钟 CPU/I/O 活动低、工作集至少 256 MiB 的应用。

前台程序及其进程族、模型和任务进程、Codex、常见办公/编辑/录制/媒体应用、脚本运行时受保护;无窗口服务、托盘程序、身份不明或权限不足的目标跳过。每次最多处理一个应用的 4 个进程,全局间隔至少 60 秒,同一应用冷却 30 分钟,一次持续压力最多 3 次。执行前还会重查身份、活动与 RAM 需求。

关闭方法:在无任务时执行 shutdown,将 config.json 中 app_memory_reclaim.enabled 改为 false,再执行 status 启动。不要直接修改正在运行的配置并假定已经生效。

最新快照还包含持久停用控制:若部署目录存在明确的用户停用标记,普通调用不会自动重启管家或接受新任务;已获准保留的任务可继续完成。停用控制与仅关闭应用回收不同,详见 使用说明。

测试与开发

.\.venv\Scripts\python.exe -m unittest discover -s . -p "test_*.py" -v

默认测试使用隔离的临时目录、模拟后端和公开测试配置,不启动真实模型。smoke_*.py 属于按需运行的本机集成检查,其中部分会申请资源或启停模型,不应当作默认测试批量执行。测试范围与本次结果见 验证记录。

许可证

本项目源码以 MIT License 开源,允许使用、修改、分发和商业使用,须保留许可证与版权声明。外部模型、软件及其素材的授权不由本许可证授予。

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Unified MCP server for managing local model runtimes (Ollama, LM Studio, etc.), enabling provider-agnostic discovery, lifecycle management, hardware-fit checks, and delegated inference.
    16
    17 npm
    Creative Commons Attribution Non Commercial No Derivatives 4.0 International
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables peer-to-peer AI inference donation by exposing MCP tools to check node status and request capacity, with local-first compute sharing, consent, and metering.
    44 npm
    MIT