mcpField
C
Context Rot Detection

Context Rot Detection

本地服务
github.com/milos-product-makerAI 与智能体1336 周前更新

关于 Context Rot Detection

为 AI Agent 提供上下文健康度检测的 MCP 服务,依据 token 使用量、检索准确度、工具调用负担和会话时长计算评分。它支持多种指定模型及 HuggingFace 模型,并提供健康历史和恢复建议。

主要功能

  1. 010–100 上下文健康评分
  2. 02模型专属退化曲线
  3. 03HuggingFace 模型窗口解析
  4. 04中间信息丢失风险评估
  5. 05Agent 健康历史与服务统计
  6. 06上下文恢复建议

适用场景

  1. 01监测长会话中的上下文质量
  2. 02关键决策前检查 Agent 状态
  3. 03为不同模型评估上下文风险
  4. 04查看特定 Agent 的健康变化

MCP 相关

MCP 服务向客户端提供上下文健康检查、历史查询和服务统计工具。健康检查可按 Agent ID 跟踪;HuggingFace 模型配置会从仓库获取并缓存。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"context-rot-detection": {
"command": "npx",
"args": [
"-y",
"context-rot-detection"
],
"env": {
"HEALTH_HISTORY_DB": "<HEALTH_HISTORY_DB>"
}
}
}
}
启动命令npx -y context-rot-detection
需要配置的环境变量
HEALTH_HISTORY_DB

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmcontext-rot-detection

工具

3

收录的工具列表 · 更新于 3 周前

参数类型必填说明
context_summarystring否当前任务和近期操作的简要摘要(该工具会分析模式,而非原始上下文)
token_countinteger是当前上下文窗口中的估算 Token 数
session_duration_minutesinteger否此会话已运行的时长
tool_calls_countinteger否此会话中已进行的工具调用次数
modelstring否当前运行的大模型。已知具有调优配置的模型:claude-3.5-sonnet、claude-3.7-sonnet、claude-sonnet-4、claude-opus-4、claude-opus-4-5、claude-haiku-3.5、gpt-4o、gpt-4o-mini、gpt-4.1、gpt-4.1-mini、o3、o4-mini、gemini-2.0-flash、gemini-2.5-pro、gemini-2.5-flash。也可以传入 HuggingFace 仓库 ID(例如 "meta-llama/Llama-3.1-70B-Instruct"),系统会自动检测上下文窗口。其他字符串将使用保守的默认值。
agent_idstring否此 Agent 实例的可选唯一标识符,用于跟踪健康历史记录

详细介绍

上下文腐化检测

为 AI Agent 提供认知状态自我感知能力的 MCP 服务。

每个长时间运行的 AI Agent 都会受到上下文腐化的影响——随着上下文窗口逐渐填满,性能会出现可衡量的下降。Chroma、Stanford(“中间遗失”)和 Redis 的研究证实,这是生产环境 Agent 系统中最常见的实际故障模式。

受到上下文腐化影响的 Agent 并不知道自己的表现正在下降——它只是开始做出更差的决策。此工具可让 Agent 实时了解自身的认知健康状况。

功能

  • 基于 Token 利用率、检索准确率和会话疲劳度计算的健康评分(0–100)
  • 支持 15+ 款精选模型(Claude、GPT、Gemini、o-series)的模型专属性能衰减曲线
  • 自动解析任意 HuggingFace 模型——传入 meta-llama/Llama-3.1-70B 之类的仓库 ID,即可自动检测上下文窗口,并将结果缓存到 SQLite
  • 基于 Stanford 研究的中间遗失风险评分
  • 工具调用负担和会话疲劳度分析
  • 可执行的恢复建议——精简上下文、将内容转存到记忆中、创建检查点、拆分为子任务
  • 按 Agent 跟踪健康历史(SQLite)
  • 服务范围的利用率统计

快速开始

npx(无需安装)
npx context-rot-detection
npm(全局安装)
npm install -g context-rot-detection
context-rot-detection

MCP 客户端配置

Claude Code

在项目根目录的 .mcp.json 中添加:

{
  "mcpServers": {
    "context-rot-detection": {
      "command": "npx",
      "args": ["-y", "context-rot-detection"],
      "env": {
        "HEALTH_HISTORY_DB": "./health.db"
      }
    }
  }
}
Claude Desktop

在 claude_desktop_config.json 中添加:

{
  "mcpServers": {
    "context-rot-detection": {
      "command": "npx",
      "args": ["-y", "context-rot-detection"],
      "env": {
        "HEALTH_HISTORY_DB": "/path/to/health.db"
      }
    }
  }
}
Docker
{
  "mcpServers": {
    "context-rot-detection": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-v", "context-rot-data:/data",
        "ghcr.io/milos-product-maker/context-rot-detection:latest"
      ]
    }
  }
}

配置

环境变量描述默认值
HEALTH_HISTORY_DB用于保存健康历史的 SQLite 数据库路径。使用 :memory: 表示临时存储。:memory:
LOG_FILE用于追加结构化 JSON 日志行的路径。省略此项可禁用文件日志记录。(无)

工具

check_my_health

分析当前上下文窗口的健康状况。在长时间会话期间定期调用,或在做出关键决策之前调用。

参数:

参数类型必填描述
token_countinteger是当前上下文窗口中估算的 Token 数量
modelstring否大模型标识符——精选模型名称(例如,claude-opus-4、gpt-4o)、HuggingFace 仓库 ID(例如,meta-llama/Llama-3.1-70B),或任意字符串(将回退到保守默认值)
session_duration_minutesinteger否此会话已运行的时长
tool_calls_countinteger否此会话中已进行的工具调用次数
context_summarystring否当前任务和近期操作的简要摘要
agent_idstring否用于历史记录跟踪的唯一 Agent 标识符

响应示例:

{
  "health_score": 62,
  "status": "warning",
  "token_utilization": {
    "current": 155000,
    "max_effective": 170000,
    "percentage": 91.2,
    "danger_zone_starts_at": 170000
  },
  "quality_estimate": {
    "retrieval_accuracy": "degrading",
    "middle_content_risk": "high",
    "estimated_hallucination_risk": "moderate"
  },
  "session_fatigue": {
    "tool_call_burden": "moderate",
    "session_length_risk": "low",
    "recommendation": "Consider breaking into sub-tasks if complexity increases."
  },
  "recommendations": [
    {
      "priority": "high",
      "action": "compact_context",
      "reason": "You are approaching the effective quality threshold. Summarize older context and remove completed task details.",
      "estimated_quality_gain": 15
    },
    {
      "priority": "high",
      "action": "offload_to_memory",
      "reason": "High risk of lost-in-the-middle effect. Store critical information to external memory before it is effectively lost.",
      "estimated_quality_gain": 8
    }
  ]
}
get_health_history

检索特定 Agent 的健康检查历史记录。

参数:

参数类型必填描述
agent_idstring是唯一 Agent 标识符
limitinteger否返回的最大记录数(默认值:20,最大值:100)
get_service_stats

获取服务范围的利用率统计。无需参数。

返回调用总数、唯一 Agent 数量、平均健康评分、模型分布、状态分布和近期活动(过去 1 小时 / 过去 24 小时)。

支持的模型

模型最大 Token 数危险区间中间位置信息丢失风险
claude-opus-4-5200K175K低
claude-opus-4200K170K低
claude-sonnet-4200K165K低
claude-3.7-sonnet200K160K低至中
claude-3.5-sonnet200K152K中
claude-haiku-3.5200K130K中
gpt-4.11M500K中
gpt-4.1-mini1M450K中
gpt-4o128K105K中
gpt-4o-mini128K95K中至高
o3200K160K低至中
o4-mini200K150K中
gemini-2.5-pro1M600K中
gemini-2.5-flash1M520K中至高
gemini-2.0-flash1M500K高
HuggingFace 自动解析

任何包含 / 的模型字符串都会被视为 HuggingFace 仓库 ID。服务会从仓库获取 config.json,提取上下文窗口大小(max_position_embeddings、n_positions 或 max_seq_len),并生成保守的退化配置:

  • 最大 Token 数的 65% → 退化开始
  • 最大 Token 数的 80% → 危险区间

结果会缓存到 SQLite 中,后续查询可即时完成。

model: "meta-llama/Llama-3.1-70B"       → 131K context, danger at 105K
model: "mistralai/Mistral-7B-v0.1"      → 32K context, danger at 26K
model: "mosaicml/mpt-7b"                → 65K context, danger at 52K

如果获取失败(网络错误、模型受限或配置缺失),服务会静默回退到保守默认值。

回退

任何不包含 / 的无法识别的模型字符串都会回退到保守默认值(最大值为 128K,危险区间为 100K)。

工作原理

健康评分由四项信号加权计算得出:

信号权重来源
Token 使用率质量40%特定模型的 sigmoid 退化曲线
检索准确率25%基础准确率减去中间位置丢失惩罚
工具调用负担20%工具调用达到 10 次以上后的累积质量损失
会话长度15%基于时间的疲劳启发式算法

退化曲线根据实证研究得出:

开发

git clone https://github.com/milos-product-maker/context-rot-detection.git
cd context-rot-detection
npm install
npm run dev        # Run with tsx (hot reload)
npm test           # Run unit tests
npm run build      # Compile TypeScript
使用 MCP Inspector 进行测试
npx @modelcontextprotocol/inspector node dist/index.js

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。