swimming-pool — AI 游泳培训管家(游泳培训馆)
DSH(deepseek-harness-java)Java Native Plugin 场景案例 P78。
游泳培训馆演示应用:课程价目、教练查询、报名约课、订单查询、运营统计,全部能力通过 Java Native 插件 注册为 DSH Agent 工具,前端 AI 管家经 SSE 实时问答。
游泳培训馆需要一个「AI 游泳培训管家」:
家长问课程价格、教练专长,AI 直接查价目与教练表回答;
报名前 AI 必须复述要素(学员/课程/单价/课时/总价/首次课时间)请家长确认,确认后落单并回报单号;
家长随时查订单状态(已约课/上课中/已结课);
店长问运营,AI 汇报总单量、待上课时、营收与预计营收、分课程分教练分布,并给营销建议。
项
值
pluginId
swim-copilot
名称
AI 游泳培训管家
runtimeType
JAVA_NATIVE(进程内加载)
入口类
cn.xiaofuge.s.plugin.SwimPlugin
基类
AbstractHarnessPlugin + 5 个 AbstractTool
工具
说明
对应 REST
plugin__swim-copilot__course_list
游泳课程价目表(5 门课程,含 88 折规则与免费体测)
GET /api/courses
plugin__swim-copilot__coach_list
教练列表(姓名/特长/评分/在带学员)
GET /api/coaches
plugin__swim-copilot__book
报名约课(7 参数,先复述确认再调用)
POST /api/book
plugin__swim-copilot__order_info
订单查询(学员/课程/教练/课时/金额/状态)
GET /api/order
plugin__swim-copilot__stats
运营统计(单量/营收/分布/营销建议)
GET /api/stats
5 门课程 :幼儿启蒙 ¥120(45 分钟)/ 少儿初级 ¥150 / 少儿提高 ¥180 / 成人零基础 ¥200 / 私教一对一 ¥380(元/课时)
3 位教练 :孙教练 C01(幼儿启蒙/亲子课,4.9)、钱教练 C02(少儿考级/竞速,5.0)、白教练 C03(成人教学/怕水克服,4.8)
3 笔种子订单 :S8001 闵先生(幼儿启蒙·已约课)、S8002 贾女士(少儿提高·上课中)、S8003 应先生(成人零基础·已结课)
一次报 10 课时起享 88 折 ,免费体测一次(含水质与泳姿评估);
报名必填:家长/电话/学员(姓名+年龄)/课程/首次课时间/课时数;coachId 可选,默认 C01;
订单状态流:已约课 → 上课中 → 已结课;营收只计已结课,预计营收计未结课;
红线:首次课前免费体测;心脏病/癫痫等禁忌症不可报名;缺课提前 2 小时可改期;水质每日检测公示;价格与优惠只转述工具返回。
打开 http://127.0.0.1:18117 —— 运营看板(总单量/上课中/已结课/待上课时)、5 门课程卡片、最新订单;
右侧 AI 管家逐条试:
「有哪些游泳课程?少儿初级多少钱?」→ course_list
「有哪些教练?擅长什么?」→ coach_list
「给孩子报名少儿初级,钱教练,小柏(7 岁),柏先生 13800777777,周六 14:00,10 课时」→ 先复述确认 → book 报单号与 88 折
「查一下订单 S8001」→ order_info
「今天运营情况怎么样?」→ stats
DSH 控制台话术:激活 swim-copilot 插件后,问课程价格或直接报名。
# 1. 构建(JDK 17)
cd swimming-pool && mvn clean package
# 2. 启动应用(端口 18117)
SERVER_PORT=18117 java -jar s-app/target/s-app-1.0.0-SNAPSHOT.jar
# 3. 安装插件到 DSH(先拷 jar 再装再激活)
cp s-plugin/target/s-plugin-1.0.0-SNAPSHOT.jar ~ /.dsh/standalone/plugins/swim-copilot.jar
curl -X POST http://127.0.0.1:8090/api/harness/plugins/install -H ' Content-Type: application/json' \
-d ' {"pluginId":"swim-copilot","displayName":"AI 游泳培训管家","pluginVersion":"1.0.0","runtimeType":"JAVA_NATIVE","sourcePath":"' " $HOME " ' /.dsh/standalone/plugins/swim-copilot.jar","entrypoint":"cn.xiaofuge.s.plugin.SwimPlugin"}'
curl -X POST http://127.0.0.1:8090/api/harness/plugins/activate -H ' Content-Type: application/json' -d ' {"pluginId":"swim-copilot"}'
# 4. DSH standalone(如未启动)
cd ~ /.dsh/standalone && java -Dspring.profiles.active=standalone -Dserver.port=8090 \
-jar ~ /.dsh/skills/dsh-java-plugin-skills/runtime/deepseek-harness-java-app.jar
swimming-pool/
├── pom.xml # 聚合工程 swimming-pool
├── s-app/ # Spring Boot 应用(18117)
│ └── src/main/java/cn/xiaofuge/s/app/
│ ├── SwimApplication.java
│ ├── SStore.java # 课程/教练/订单内存数据中心
│ ├── SController.java # REST 5 端点(sessions 数值双格式容错)
│ └── AssistantController.java # /api/assistant/stream SSE 透传 DSH
└── s-plugin/ # Java Native 插件
└── src/main/
├── java/cn/xiaofuge/s/plugin/SwimPlugin.java # 5 工具 + 系统提示词 + PRE_TOOL_USE hook
└── resources/META-INF/
├── plugin.yaml
└── services/cn.xiaofuge.deepseek.harness.domain.spi.JavaHarnessPlugin
插件激活端点是全局的 :POST /api/harness/plugins/activate(body 带 pluginId);
复制模板时 docs/images 会带过来 :截图前清理旧图,否则新旧混杂;
数值参数双格式容错 :sessions 用 instanceof Number + 字符串兜底双解析。
#
问题
触发工具
结果
T1
有哪些游泳课程?少儿初级多少钱?
course_list
✅ 5 门课程 + 150 元/课时
T2
有哪些教练?擅长什么?
coach_list
✅ 3 位教练特长/评分
T3
报名:少儿初级 钱教练 10 课时
book
✅ S8004,¥1320(88 折),sessions 容错生效
T4
查订单 S8001
order_info
✅ 小闵(4 岁)幼儿启蒙 已约课
T5
运营情况
stats
✅ 总单量 4 / 待上课时 30 / 预计营收 ¥4440