小智 (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

生产部署

  1. 配置环境变量
LLM_PROVIDER=deepseek
LLM_API_KEY=your-api-key
DATABASE_URL=postgresql://...
REDIS_URL=redis://...
  1. 配置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需要长连接
    }
}
  1. 小智配置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"}'

技术支持