3.5 KiB
3.5 KiB
Claude Code — 儿童心理陪伴玩偶项目
项目背景
基于小智 AI 生态的儿童心理陪伴玩偶项目。由客座教授(大头/胡老师)指导团队开发。
- 仓库:http://xmhome.ow-my.com:3000/sileya-ai/child-psycho-companion
- 技术栈:Python、MCP(Model Context Protocol)、MiniMax API、Docker
技术架构
核心模块
src/psycho_screener/screener.py— 心理问题筛查(bullying/depression/anxiety 等7类)src/psycho_screener/mcp_tool.py— fastmcp 协议版本src/psycho_screener/mcp_tool_native.py— 原生 mcp SDK 版本
工具
mcp_simulator.py— MCP 协议模拟器xiaozhi_cli_client.py— xiaozhi-esp32-server CLI 调试工具test_xiaozhi_client.py— pytest 测试套件
环境
- Docker 容器:xiaozhi-esp32-server(8000/8003)、mcp-endpoint-server(8004)
- Python 3.x + .venv 虚拟环境
当前状态(2026-04-06)
已解决的问题
1. WebSocket 认证问题 ✅
- 问题:服务端从 HTTP header 读
device-id,客户端从 URL query param 传 - 根因:xiaozhi-server
connection.py第 227 行用self.headers.get("device-id")读 header,客户端用?device-id=xxxquery 参数 - 修复:
xiaozhi_cli_client.py改用additional_headers={"Device-ID": DEVICE_ID, "Client-ID": DEVICE_ID}传递 - 状态:已修复并验证,WebSocket 连接成功
2. MCP Endpoint Token URL 编码 ✅
- 问题:token 中的
+在 URL 中被 FastAPI 解码为空格,导致 base64 解码失败 - 根因:
api.minimaxi.com/v1返回 1008 policy violation - 修复:
.config.yaml中 token 的+→%2B,=→%3D - 状态:已修复,
MCP接入点连接成功
3. MCP 工具注册 ✅ 不需要真机
- 澄清:
psycho-screener是服务端 MCP,通过 stdio 子进程运行,不需要 ESP32 真机 - 状态:
psycho_screen工具已在函数列表中注册
待解决问题
P0 — MiniMax LLM 401 错误(根因已定位)
- 现象:xiaozhi-server LLM 调用返回 401 "令牌已过期或验证不正确"
- 根因:配置被 xinnan-tech manager-api 远程覆盖
- 本地
.config.yaml配置了 MiniMax-M2.5 - 但
config_loader.py检测到 manager-api 配置后,调用get_server_config()从 xinnan-tech API 获取设备配置 - API 返回的默认模型是
glm-4-flash,覆盖了本地配置 glm-4-flash的 API key 与 MiniMax 不匹配,导致 401
- 本地
- 解决方向:升级到 xiaozhi-esp32-server 全模块安装(智控台),在智控台配置 MiniMax API Key
- 详见:
STATUS.md
P1 — screen_from_messages() 未实现
screener.py的消息格式接口未完成- 需要从 messages 数组提取儿童对话
下一步计划
近期(升级智控台)
- 将 xiaozhi-esp32-server 从最简化安装升级为全模块安装(智控台)
- 在智控台配置 MiniMax LLM + TTS
- 验证玩偶对话功能完整链路
中期(功能完善)
- 实现
screen_from_messages()方法 - WebSocket 认证调试
- 案例库设计
详见 STATUS.md
运行命令
# 激活虚拟环境
cd /Users/bigemon/WorkSpace/child-psycho-companion
source .venv/bin/activate
# 测试玩偶对话
python xiaozhi_cli_client.py "今天小朋友打我,我好害怕"
# Docker 容器状态
docker ps | grep xiaozhi
# 查看 xiaozhi-server 日志
docker logs xiaozhi-esp32-server 2>&1 | tail -20
Git 操作
git add . && git commit -m "描述" && git push origin main