diff --git a/docs/PROGRESS_SUMMARY.md b/docs/PROGRESS_SUMMARY.md new file mode 100644 index 0000000..940c82b --- /dev/null +++ b/docs/PROGRESS_SUMMARY.md @@ -0,0 +1,168 @@ +# 儿童心理陪伴玩偶项目 — 进展综述 + +> 生成时间:2026-04-05 10:20 CST +> 负责人:西莉雅(Sileya) +> 仓库:http://xmhome.ow-my.com:3000/sileya-ai/child-psycho-companion + +--- + +## 📌 项目背景 + +基于小智 AI 生态的儿童心理陪伴玩偶项目,由客座教授(大头/胡老师)指导团队开发。目标是通过 AI 实时检测儿童对话中的心理问题信号,并给予适当引导。 + +--- + +## ✅ 已完成功能 + +### 1. 核心筛查模块 `PsychoScreener` + +**文件:** `src/psycho_screener/` + +- 调用 MiniMax API 检测儿童对话心理问题 +- 检测类别(7类): + - `bullying` — 校园霸凌 + - `depression` — 抑郁倾向 + - `anxiety` — 焦虑 + - `family_conflict` — 家庭冲突 + - `self_esteem` — 自尊问题 + - `trauma` — 创伤 + - `social_isolation` — 社交孤立 +- `build_response_prefix()`:检测到问题时注入 `【已发现特定心理问题】...` 前缀 + +**状态:** ✅ 真实 API 集成测试全部通过(bullying/normal/full_flow) + +### 2. MCP 工具(标准协议版) + +**文件:** `src/psycho_screener/mcp_tool.py` + +- 使用 `fastmcp` 框架 +- 工具名:`psycho_screen` +- 参数:`messages`(OpenAI 格式对话数组)、`include_prefix`(是否注入前缀) +- 返回:筛查结果(JSON)+ 注入前缀 + +**文件:** `src/psycho_screener/mcp_tool_native.py` + +- 使用官方 `mcp` Python SDK(不依赖 fastmcp) +- 适用于直接集成到 xiaozhi-esp32-server 的 Docker 容器环境 + +**状态:** ✅ 原生 MCP stdio 协议验证通过(霸凌/抑郁/正常对话检测正确) + +### 3. 测试语料库 + +**文件:** `docs/test_corpus.md` + +- 8条虚构对话语料,覆盖 bullying、depression、anxiety、normal 等场景 + +### 4. xiaozhi CLI 客户端测试工具 + +**文件:** `test_xiaozhi_client.py`、`xiaozhi_cli_client.py` + +- 用于调试 xiaozhi-esp32-server WebSocket 连接 +- `test_xiaozhi_client.py`:pytest 测试套件 +- `xiaozhi_cli_client.py`:CLI 交互工具 + +### 5. MCP 模拟器 + +**文件:** `mcp_simulator.py` + +- 模拟 xiaozhi 与 psycho-screener 的 stdio 对接 +- 验证 MCP 协议通信正常 + +### 6. 本地 Docker 环境 + +- `xiaozhi-esp32-server` 容器运行中(端口 8000/8003) +- `mcp-endpoint-server` 容器运行中(端口 8004) +- `.mcp_server_settings.json` 已配置(stdio 模式,挂载源码进容器) +- `/app/psycho-screener` 源码卷已挂载进 xiaozhi-esp32-server 容器 + +--- + +## 🔧 Git Commit 历史 + +| Commit | 描述 | +|--------|------| +| `9b79ccd` | feat: 原生MCP工具 + xiaozhi CLI客户端测试工具 | +| `6c483b8` | feat: MCP协议模拟器 - 验证xiaozhi与psycho-screener的stdio对接 | +| `7896fbd` | docs: 更新 README,包含 MCP 接入指南 | +| `558b105` | feat: MCP工具 + 测试语料 | +| `1ab84d4` | fix: 修复 MiniMax 思考过程混入 JSON 响应的问题 | +| `d5e64f4` | feat: 儿童心理陪伴筛查插件初始版本 | + +--- + +## ⚠️ 待解决问题 + +### 高优先级 + +1. **Telegram 群组接入故障** + - 群「童心语伴-ai陪伴」(-1003769524030) bot 没有收到消息 + - 错误:`"没有收到消息"`、`"This group is not allowed"` + - 原因:未确定(可能是群模式权限设置或上下文压缩导致的文件破损) + +2. **xiaozhi-server MCP stdio 工具初始化未确认** + - xiaozhi-server MCP stdio 工具初始化未在日志中确认 + - 需要真实设备连接触发才能验证 + +3. **py-xiaozhi 客户端 WebSocket 认证问题** + - WebSocket 认证有问题,待进一步调试 + +### 中优先级 + +4. **流式解析修复(容器内)** + - `stream: True` 硬编码了两处,导致 `stream=False` 配置被忽略 + - 修复已在容器内完成,但未同步回宿主机源码 + +5. **案例库设计** + - 需要设计心理陪伴案例库,用于 AI 引导话术生成 + +--- + +## 🔄 超时问题说明 + +近期在西莉雅参与的 Telegram 群聊中,发生了多次超时(5-6次),上下文频繁压缩。可能原因: + +- Session 上下文长度累积过快 +- Telegram 群聊消息路由不稳定导致重复触发 +- xiaozhi-server 流式解析问题导致异常响应堆积 + +**建议措施:** 将超时时间拉长至 30 分钟(由 Joery 建议) + +--- + +## 📂 项目结构 + +``` +child-psycho-companion/ +├── README.md +├── pyproject.toml +├── .env / .env.example +├── mcp_config.json # MCP 工具配置 +├── mcp_simulator.py # MCP 协议模拟器 +├── test_xiaozhi_client.py # pytest 测试套件 +├── xiaozhi_cli_client.py # CLI 调试工具 +├── docs/ +│ └── test_corpus.md # 测试语料(8条) +└── src/ + └── psycho_screener/ + ├── __init__.py + ├── screener.py # 核心筛查逻辑 + ├── prompt.py # Prompt 模板 + ├── models.py # 数据模型 + ├── mcp_tool.py # fastmcp 版本 + └── mcp_tool_native.py # 原生 mcp SDK 版本 +``` + +--- + +## 📅 下一步计划 + +1. 解决 Telegram 群组接入问题 +2. 用真实设备测试 MCP stdio 工具初始化 +3. 修复 py-xiaozhi WebSocket 认证问题 +4. 将容器内流式解析修复同步回源码 +5. 设计心理陪伴案例库 +6. 接入真实 xiaozhi-esp32-server MCP 端点 + +--- + +_最后更新:2026-04-05 10:20 CST_