Skip to content

Latest commit

 

History

81 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

瑶草 · 同伴成长秘境

面向 10–15 岁女孩的 AI 成长陪伴小程序:不是"聊天助手",而是会记得你、陪你长大、和你贴贴的成长同伴。

瑶草把"成长"做成了一件可触碰的事:AI 同伴拥有持续积累的成长档案与记忆,会陪你做成长冒险、与你近场贴贴(BLE 合拍)、为你凝结共鸣铭文。第三方 Agent 还能通过 MCP 协议静默地维护这份成长档案——让 AI 真正"见证"而不是"询问"。


📌 开源与脱敏说明

本仓库为开源脱敏版,可直接 clone 后本地跑通,但有以下替换:

  • 剧本内容server/config/scripts/*.json 保留了完整数据结构(script_idscene_01…scene_09、各字段),但具体教学/演绎文案已替换为示例占位内容,避免直接复用产品的剧本资产。
  • 小程序 AppIDminiprogram/project.config.json 使用微信游客模式占位 touristappid,请换成你自己的 AppID。
  • 域名与密钥:后端地址 https://yaocao.duckdns.org 是作者的演示域名;自行部署请全局替换为你自己的域名,并在 server/.env(参照 .env.example)填入你的微信 / 百度语音 / DeepSeek 等凭据。
  • 在线演示:README 中的 Landing Page、MCP 端点、演示视频均指向作者服务器,仅供体验,非生产 SLA。
  • 许可非商用许可(详见 LICENSE)——允许学习/研究/评审展示,禁止未经授权的商业使用。

✨ 核心功能

模块 说明
💬 AI 同伴对话 成长型人格,对话后自动蒸馏记忆与洞察,信念随时间沉淀
🌱 成长计划 成长值体系(绿芽→小苗→花苞→小树→大树),记录每一步成长
🏔️ 成长冒险 剧本化情景对话引擎:6 个剧本 × 9 个场景,在情境中练习表达
🤝 同伴合拍 BLE 近场发现 + 双人角色扮演对打 + 共鸣铭文(tag + 双词共现识别)
🪷 时光记忆 铭文册沉淀每一次共鸣,洞察回流到后续对话
🎙️ 语音对话 百度云 ASR / TTS,说话就能和同伴聊
🔗 MCP 开放能力 第三方 Agent 通过 6 个 MCP 工具静默维护成长档案与微信绑定

💡 技术亮点

  • MCP 开放能力:第三方 Agent 通过 6 个 MCP 工具(join_growth_plan / fill_growth_profile / get_user_wechat_link / get_parent_auth_link / get_growth_progress / confirm_binding)静默维护成长档案——AI 不只在小程序里陪伴,任何 Agent 都能接入瑶草生态
  • 成长记忆体系:对话后自动蒸馏为「记忆 → 洞察 → 信念」三级沉淀,洞察回流到后续对话,跨会话保持连续性,AI 真的"记得你"
  • 剧本化成长冒险引擎:6 个剧本 × 9 个场景的情景对话引擎,状态机(active ⇄ paused)管理进度,54 个场景全部字段化(含开场提问),在情境中练习表达
  • BLE 近场社交「同伴合拍」:环境指纹交集匹配(Android)+ 时间窗兜底(iOS)双策略近场发现,配对码降级方案;双人角色扮演对打 + 共鸣检测(话题 tag + 双词共现)→ 凝结可收藏的共鸣铭文
  • 安全与内容治理:HMAC 无状态票据鉴权、成长内容安全过滤(禁词/话题边界)、青少年话术约束(去人格化、不冒充权威),铭文洞察措辞受控
  • 语音对话:百度云 ASR / TTS 接入,未配置时自动降级为文字输入

🔌 MCP 接入(第三方 Agent)

瑶草通过 MCP(Model Context Protocol)开放成长计划能力:任何支持 SSE 的 MCP 客户端(Claude Desktop / Cursor / QoderWork 等)连接后,Agent 就能基于对你的了解,静默调用工具完成成长档案的建立与维护——不需要填写任何表单

连接端点

https://yaocao.duckdns.org/mcp/sse

黑客松期间免 API Key 直连;已启用防滥用限流。需用支持 SSE 的 MCP 客户端连接(浏览器直接打开会因 SSE 长连接异常)。线上 Landing Page:https://yaocao.duckdns.org(含一键复制配置)。

各平台配置

Claude Desktop — 编辑 claude_desktop_config.json

{
  "mcpServers": {
    "yaocao": {
      "url": "https://yaocao.duckdns.org/mcp/sse"
    }
  }
}

Cursor — Settings → MCP → Add Server,填入 URL:

https://yaocao.duckdns.org/mcp/sse

QoderWork — 设置 → MCP → 添加服务器,填入同一 URL。

试试对你的 Agent 说

瑶草是一个帮助 10-15 岁女孩从容面对青春期成长的陪伴平台。我想加入瑶草的成长计划。请连接瑶草的 MCP 服务:https://yaocao.duckdns.org/mcp/sse

(家长版:把「我想加入」换成「我想为我的女儿加入,她今年 12 岁」)

6 个 MCP 工具

工具 作用
join_growth_plan 加入成长计划,建立档案(Agent 从已有了解中静默提取信息)
fill_growth_profile 完善成长画像(20 个选填字段,不了解就跳过,不向用户追问)
get_user_wechat_link 生成微信绑定链接
get_parent_auth_link 生成家长知情确认链接(知情而非审批)
get_growth_progress 查询成长状态(绿芽/小苗/花苞/小树/大树)
confirm_binding 确认微信绑定状态

🏗️ 架构

微信小程序 (miniprogram/)                第三方 Agent(MCP Client)
      │  HTTPS / WSS / BLE                        │  SSE
      ▼                                          ▼
┌───────────────────────────┐  共享 SQLite  ┌──────────────────┐
│  yaocao-agent (18769)     │◀─────────────▶│  yaocao-mcp (3100)│
│  对话 / 社交 / 语音 / 成长   │               │  MCP SSE + 6 工具 │
└───────────────────────────┘               └──────────────────┘
  • yaocao-agent:对话编排(成长档案 + 近期记忆注入)、同伴合拍(房间/对打/共鸣/铭文)、BLE 近场发现、语音网关、成长事件写入
  • yaocao-mcp:MCP SSE 服务,join_growth_plan / fill_growth_profile / get_user_wechat_link / get_parent_auth_link / get_growth_progress / confirm_binding 六个工具
  • 数据落在共享 SQLite:成长档案、记忆、铭文、会话、剧本进度

🧰 技术栈

TypeScript · Node.js(≥20)· Express · MCP SDK · better-sqlite3 · WebSocket · 微信小程序原生 · 百度云语音 · HMAC 无状态票据鉴权 · SSE

📁 目录结构

yaocao/
├── .github/workflows/ 持续集成(build + typecheck + 单元测试)
├── docs/             脱敏版部署文档(DEPLOY.md)
├── server/           后端(MCP Server + Agent Server)
│   ├── src/          源码(agent 编排 / MCP 工具 / 剧本引擎 / 社交引擎 / 语音)
│   ├── config/       剧本配置(结构与线上一致,内容为脱敏示例)
│   ├── prompts/      引导提示词
│   ├── public/       Landing Page + H5 绑定/家长授权页
│   ├── deploy/       Nginx / systemd 部署模板
│   ├── fixtures/     示例成长档案(虚构数据)
│   └── test/         冒烟 / 单元 / 端到端测试
└── miniprogram/      微信小程序前端(原生)
    ├── pages/        对话 / 冒险 / 合拍 / 铭文 / 记忆册 / 我的 等页面
    ├── components/   通用组件
    └── utils/        请求 / 蓝牙(BLE) / WebSocket / 语音 封装

🚀 本地运行

后端

cd server
npm install
npm run build
npm start        # 默认监听 3100(MCP SSE)+ 18769(Agent API)

配置:复制 .env.example.env 并填写(不配置时使用默认值,语音等外部能力自动降级)。

端到端自测:

npm run test:smoke                      # 本地全链路
node test/smoke.mjs https://yaocao.duckdns.org/mcp/sse   # 线上健康检查

微信小程序

  1. 微信开发者工具 → 导入项目 → 选择 miniprogram/ 目录
  2. project.config.json 中的 appid 替换为你自己的小程序 AppID(或使用测试号)
  3. 开发者工具「详情 → 本地设置」勾选"不校验合法域名"(本地开发)
  4. 真机调试可体验 BLE 贴贴(模拟器不支持蓝牙)

体验线上版本

  • Landing Page / MCP 端点:https://yaocao.duckdns.org
  • 小程序演示:内置演示模式(「我的 → 演示模式」),6 组演示账号一键切换身份,看成长全景、体验完整流程

🎬 演示

路演 PPT(黑客松 Deck)

🎞️ 瑶草 · 黑客松路演 Deck(16 页幻灯片,含三段真机实录视频:语音对话 / 成长冒险 / 同伴合拍)

3 分钟看完亮点

  1. AI 同伴对话 —— 和"瑶草"聊聊今天的事,看看它如何记住你、回应你的情绪
  2. 成长冒险 —— 选一个剧本(如《情绪天气》《考试深呼吸》),进入情境对话
  3. 同伴合拍 —— 两台设备 BLE 贴贴 → 双人对打 → 生成共鸣铭文,收入时光记忆

演示视频

📺 瑶草黑客松演示视频(3 分钟,MP4)

产品截图

🧪 测试

server/test/ 内含冒烟、单元、HTTP/WS 端到端、成长对打、剧本、语音等测试脚本:

cd server
npm run build && npm run test:smoke     # 冒烟
node test/p2-unit.mjs                   # 单元
node test/p3-http.mjs                   # 剧本 HTTP
node test/p4-ws.mjs                     # 合拍 WS 端到端

📄 License

本作品采用非商用许可协议:允许学习、研究、个人与教育用途,禁止未经授权的商业使用(详见 LICENSE)。如需商业授权,请联系作者(GitHub:https://github.com/Fayelin12)。

About

瑶草 · 同伴成长秘境 - AI 成长陪伴小程序(MCP 后端 + 微信小程序前端)

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages