child-psycho-companion/docs/PROGRESS_SUMMARY.md

169 lines
5.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 儿童心理陪伴玩偶项目 — 进展综述
> 生成时间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_