这是一个实现双周期元认知推理框架的MCP服务器,用于自主代理。该工具通过智能循环检测和经验获取增强了代理的自我意识和可靠性。
<a href="https://glama.ai/mcp/servers/@cyqlelabs/mcp-dual-cycle-reasoner"> <img width="380" height="200" src="https://gips0.baidu.com/it/u=1779269105,1258884785&fm=3081&app=3081&f=PNG?w=760&h=400" alt="双周期推理器 MCP 服务器" /> </a>MCP 双周期推理器是一个设计用于增强AI代理自主性和可靠性的高级工具。通过实现双周期元认知框架,它提供了代理监控自身认知过程的能力,检测何时陷入重复循环,并从过去的经验中学习以做出更好的决策。
该框架由两个主要组件组成:
该服务器使用TypeScript构建,并利用高性能库进行统计分析、自然语言处理和语义相似性,支持先进的特性,如基于熵的异常检测、基于NLI的文本分析和智能案例管理。
simple-statistics、natural、compromise和HuggingFace Transformers构建。@huggingface/transformers:用于基于NLI的语义分析natural:用于情感分析和分词compromise:用于自然语言处理simple-statistics:用于统计计算ml-matrix:用于矩阵操作jest:用于测试eslint:用于代码检查prettier:用于代码格式化zod:用于模式验证要使项目在本地运行,请按照以下步骤操作:
克隆仓库:
git clone https://github.com/cyqlelabs/mcp-dual-cycle-reasoner.git
cd mcp-dual-cycle-reasoner
安装依赖项:
npm install
构建项目:
npm run build
你可以以两种模式运行服务器:
HTTP流(默认):
npm start
服务器将在8080端口启动。
Stdio:
npm start -- --stdio
在你的Claude Desktop MCP配置中添加以下内容:
{
"mcpServers": {
"dual-cycle-reasoner": {
"command": "npx",
"args": ["@cyqlelabs/mcp-dual-cycle-reasoner"]
}
}
}
对于stdio传输,在args数组中添加--stdio标志。
start_monitoring初始化代理认知过程的元认知监控。
输入模式:
{
goal: string; // 当前追求的目标
initial_beliefs?: string[]; // 关于任务的初始信念
}
process_trace_update主要监控函数——处理来自代理的认知轨迹更新。
输入模式:
{
last_action: string; // 最新动作名称
current_context?: string; // 当前环境上下文
goal: string; // 当前追求的目标
window_size?: number; // 监控窗口大小(默认:10)
}
返回负载:
返回一个JSON对象,指示是否需要干预以及检测到的任何循环的详细信息。
{
"intervention_required": true,
"loop_detected": {
"detected": true,
"type": "action_repetition",
"confidence": 0.85,
"details": "通过参数重复检测到循环:57%异常分数...",
"actions_involved": ["click_submit_button"]
}
}
stop_monitoring停止元认知监控并获取会话摘要。
输入模式:{}
detect_loop使用各种策略检测代理是否陷入循环。
输入模式:
{
current_context?: string; // 当前环境上下文
goal: string; // 当前追求的目标
detection_method?: "statistical" | "pattern" | "hybrid"; // 检测方法(默认:"hybrid")
}
返回负载:
返回一个作为JSON字符串的LoopDetectionResult对象。
{
"detected": true,
"type": "action_repetition",
"confidence": 0.85,
"details": {
"dominant_method": "parameter_repetition",
"anomaly_score": 0.57,
"actions_involved_count": 1,
"recent_actions_count": 10,
"metrics": {
"semantic_repetition": 0.6,
"parameter_repetition": 0.8
}
},
"actions_involved": ["click_submit_button"]
}
configure_detection配置循环检测参数和领域特定的进度指标。
输入模式:
{
progress_indicators?: string[]; // 默认:[]
min_actions_for_detection?: number; // 默认:5
alternating_threshold?: number; // 默认:0.5
repetition_threshold?: number; // 默认:0.4
progress_threshold_adjustment?: number; // 默认:0.2
semantic_intents?: string[]; // 默认:[]
}
store_experience存储未来基于案例推理的案例,带有增强的元数据和质量评分。
输入模式:
{
problem_description: string;
solution: string;
outcome: boolean;
context?: string;
difficulty_level?: "low" | "medium" | "high";
}
retrieve_similar_cases使用高级语义匹配和过滤检索类似案例。
输入模式:
{
problem_description: string;
max_results?: number; // 默认:5
context_filter?: string;
difficulty_filter?: "low" | "medium" | "high";
outcome_filter?: boolean;
min_similarity?: number; // 默认:0.1
}
返回负载:
返回一个作为JSON字符串的Case对象数组。
[
{
"id": "case-123",
"problem_description": "表单提交按钮对点击无响应",
"solution": "确保所有必填字段正确填写。",
"outcome": true,
"context": "registration_form",
"difficulty_level": "medium",
"similarity_metrics": {
"combined_similarity": 0.92
}
}
]
get_monitoring_status获取当前监控状态和统计数据。
输入模式:{}
返回负载:
返回一个包含当前监控状态的JSON字符串,包括is_monitoring、current_goal、trace_length和intervention_count。
{
"is_monitoring": true,
"current_goal": "完成网站上的用户注册流程",
"trace_length": 15,
"intervention_count": 2,
"recent_actions": [
{ "type": "click_submit_button", "timestamp": 1678886400000 },
{ "type": "click_submit_button", "timestamp": 1678886401000 }
]
}
reset_engine重置双周期引擎状态。
输入模式:{}
这里是一个完整的示例,展示了如何使用双周期推理器来监控自主代理并随着时间积累经验:
// 配置适用于您领域的检测参数
await configure_detection({
progress_indicators: ['页面加载', '表单提交', '数据提取'],
min_actions_for_detection: 3,
alternating_threshold: 0.6,
repetition_threshold: 0.3,
semantic_intents: [
'导航到页面',
'点击元素',
'填写表单字段',
'提交表单',
'验证输入',
'处理弹出窗口',
'提取数据',
'等待响应'
],
});
// 开始监控代理的目标
await start_monitoring({
goal: '完成网站上的用户注册流程',
});
// 监控代理采取的每个动作
await process_trace_update({
last_action: '点击注册按钮',
current_context: '首页',
goal: '完成网站上的用户注册流程',
});
// ... 代理继续执行动作 ...
// 代理反复点击提交按钮
await process_trace_update({
last_action: '点击提交按钮',
current_context: '注册表单',
goal: '完成网站上的用户注册流程',
});
// 返回:{
// "intervention_required": true,
// "loop_detected": {
// "detected": true,
// "type": "action_repetition",
// "confidence": 0.85,
// "details": {
// "dominant_method": "parameter_repetition",
// "anomaly_score": 0.57,
// "actions_involved_count": 1,
// "recent_actions_count": 10,
// "metrics": {
// "semantic_repetition": 0.6,
// "parameter_repetition": 0.8
// }
// },
// "actions_involved": ["点击提交按钮"]
// }
// }
// 存储成功的经验
await store_experience({
problem_description: '电子邮件验证错误阻止了表单提交',
solution: '检查电子邮件格式并使用有效地址重新尝试',
outcome: true,
context: '注册表单',
difficulty_level: 'medium',
});
// 当检测到循环时,检索类似案例以恢复
const similarCases = await retrieve_similar_cases({
problem_description: '表单提交按钮对点击无响应',
max_results: 3,
context_filter: '注册表单',
outcome_filter: true,
});
当process_trace_update工具检测到潜在循环时,它会返回一个详细的loop_detected对象。理解此对象中的各个组成部分可以帮助您诊断和调试代理行为。
这里是对details对象中关键指标的快速指南:
dominant_method:触发循环检测的主要方法(例如,semantic_repetition,state_invariance)。anomaly_score:表示代理最近动作属于循环部分的整体信心得分(0-1)。它是多种检测方法的加权平均值。actions_involved_count:被识别为参与检测到的循环的最近动作数量。recent_actions_count:分析的最近动作总数。metrics:包含不同检测方法的原始得分的对象,例如:
semantic_repetition:最近动作之间语义相似的比例。parameter_repetition:语义相似动作参数之间的相似比例。exact_repetition:最近动作中完全相同的字符重复比例。cyclical_pattern:表示动作重复序列存在的分数(0-1)。oscillation_pattern:表示动作来回切换存在的分数(0-1)。alternating_pattern:表示动作交替模式存在的分数(0-1)。欢迎贡献!请阅读贡献指南,并确保所有测试通过后再提交拉取请求。
本项目采用MIT许可证。详情见LICENSE文件。