小智 (XIAOZHI.ME) MCP 接入指南
概述
米塞斯行为引擎通过MCP协议为小智提供行为决策分析服务。小智只需配置MCP工具,无需任何代码修改。
接入方式
方式一:SSE模式(推荐)
MCP Endpoint: http://YOUR_SERVER_IP:8000/mcp/sse
方式二:HTTP POST模式
MCP Endpoint: http://YOUR_SERVER_IP:8000/mcp
小智配置步骤
1. 登录 XIAOZHI.ME 管理后台
2. 进入设备管理 → 选择设备 → MCP工具配置
3. 添加MCP服务
{
"name": "米塞斯行为引擎",
"endpoint": "http://YOUR_SERVER_IP:8000/mcp/sse",
"transport": "sse",
"description": "AI决策分析助手,帮助用户理清困惑、做出决策"
}
4. 工具会自动注册
引擎会向小智注册以下工具:
| 工具名 | 功能 | 触发场景 |
|---|---|---|
mises_analyze |
行为分析 | 用户表达困惑、压力、决策困难时 |
mises_feedback |
结果反馈 | 用户报告行动结果时 |
工具详情
mises_analyze
描述: 米塞斯行为分析引擎。当用户表达以下情况时调用:
- 不舒适、困惑、烦恼、焦虑
- 决策困难、纠结、两难
- 想改变、不知道该怎么办
- 对未来迷茫、职业困惑
- 人际关系、家庭、工作问题
参数:
{
"user_input": "用户原始输入(必填)",
"device_id": "小智设备ID(必填)",
"user_id": "用户ID(可选)"
}
返回:
{
"speech_output": "引擎回复(用于语音播报)",
"display_data": {
"stage": "当前阶段",
"uneasiness": "识别的不舒适",
"desires": "分析的愿望",
"paths": "建议的路径",
"next_action": "建议的下一步"
},
"session_id": "会话ID",
"requires_input": true/false,
"suggested_prompts": ["建议追问1", "建议追问2"]
}
mises_feedback
描述: 记录行动结果反馈。当用户报告之前决策的执行结果时调用。
参数:
{
"device_id": "小智设备ID(必填)",
"user_id": "用户ID(可选)",
"action_result": "行动结果描述(必填)",
"satisfaction": 1-10的满意度(必填)
}
对话示例
场景1:工作压力
用户: "最近工作压力好大,不知道该怎么办"
小智调用: mises_analyze
{
"user_input": "最近工作压力好大,不知道该怎么办",
"device_id": "xiaozhi_device_001"
}
引擎返回:
{
"speech_output": "听起来你正在经历工作带来的压力。能告诉我更多吗?是什么让你感到压力最大?是工作量、人际关系、还是对未来的担忧?",
"display_data": {
"stage": "uneasiness_mining",
"detected_domain": "career"
},
"requires_input": true
}
用户: "主要是领导总是临时加任务,而且deadline很紧"
小智调用: mises_analyze(继续对话)
引擎返回:
{
"speech_output": "我理解了,临时任务和紧迫的截止日期让你感到失控和焦虑。你内心真正想要的是什么?是更好的工作节奏、被尊重、还是换一个环境?",
"display_data": {
"stage": "desire_analysis",
"uneasiness": {
"surface": "领导临时加任务,deadline紧",
"hidden": ["缺乏掌控感", "边界被侵犯", "时间自主权丧失"]
}
}
}
场景2:决策困难
用户: "我在纠结要不要跳槽"
小智调用: mises_analyze
引擎返回:
{
"speech_output": "跳槽是个重要决定。让我帮你理清思路。你现在对当前工作最不满意的是什么?",
"display_data": {
"stage": "uneasiness_mining",
"detected_domain": "career"
}
}
身份关联
引擎使用 device_id 关联用户会话和历史记录:
- 同一设备的多次对话会保持上下文
- 用户画像会随对话积累
- 支持跨会话的长期记忆
如果小智提供 user_id,引擎会优先使用用户ID关联。
部署配置
本地测试
# 启动引擎
docker-compose up -d
# 验证服务
curl http://localhost:8000/api/health
curl http://localhost:8000/mcp/tools
生产部署
- 配置环境变量
LLM_PROVIDER=deepseek
LLM_API_KEY=your-api-key
DATABASE_URL=postgresql://...
REDIS_URL=redis://...
- 配置HTTPS(推荐)
server {
listen 443 ssl;
server_name mbe.yourdomain.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location / {
proxy_pass http://localhost:8000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_read_timeout 86400; # SSE需要长连接
}
}
- 小智配置endpoint
https://mbe.yourdomain.com/mcp/sse
触发词建议
在小智的角色设定中添加以下提示,帮助小智识别何时调用引擎:
当用户表达以下情况时,请调用"米塞斯行为引擎"(mises_analyze):
- 感到困惑、迷茫、不知所措
- 面临选择或决策困难
- 表达压力、焦虑、烦恼
- 想要改变但不知从何开始
- 人际关系、工作、家庭问题
- 说"帮我分析一下"、"我该怎么办"
用户报告之前讨论的事情的结果时,调用mises_feedback记录反馈。
常见问题
Q: 小智如何知道何时调用引擎?
A: 小智的LLM会根据工具描述和用户输入自动判断。引擎的工具描述已包含触发场景。
Q: 多轮对话如何处理?
A: 引擎内部管理会话状态。小智只需每次都传递相同的device_id,引擎会自动续接对话。
Q: 如果引擎返回requires_input: false?
A: 表示当前阶段完成,小智可直接播报speech_output,无需追问。
Q: 如何测试连接?
A:
# 测试工具列表
curl http://YOUR_SERVER:8000/mcp/tools
# 测试分析
curl -X POST http://YOUR_SERVER:8000/mcp/analyze \
-H "Content-Type: application/json" \
-d '{"user_input": "test", "device_id": "test001"}'