DSH(deepseek-harness-java)Java Native Plugin 场景案例 P80:共享雨伞租借平台 + AI 管家插件。
「umbrella-share」是一个共享雨伞租借场景的演示项目,包含:
- u-app:Spring Boot 应用(端口
18119),提供伞型价目、网点、租借、统计等 REST 接口和一个可视化管家台页面。 - u-plugin:DSH Java Native Plugin(agent:
umbrella-copilot),以 SPI 方式接入 DSH,提供 5 个可被大模型调用的工具。
用户在管家台页面与 AI 对话即可完成租伞下单、租借查询、运营问数等操作,AI 通过 DSH 调用插件工具读写业务数据。
| 模块 | 说明 |
|---|---|
| 伞型价目 | 5 款伞型:标准折叠伞(押金 ¥39 / 日租 ¥2)、加大直杆伞(¥59 / ¥3)、迷你超轻伞(¥29 / ¥1.5)、亲子伞(¥45 / ¥2.5)、双人高尔夫伞(¥79 / ¥4) |
| 网点 | 3 个网点:地铁站 1 号口(P01)、中心商务区大堂(P02)、大学城东门(P03),含评分与在租数 |
| 租借 | 押金 + 日租金计费;信用分 650 免押;3 天内归还按 2 天计费;满 3 天超出部分 8 折;雨雪天上浮 1 元 |
| 租借单 | 单号 U1001+,状态:租借中 / 已归还 / 逾期;逾期按日租金 2 倍计费,伞面破损照价赔付押金 |
| 统计 | 总单量、租借中 / 逾期 / 已归还、租金收入、按伞型 / 按网点分布、运营建议 |
| 工具 | 说明 |
|---|---|
umbrella_list |
伞型价目表(押金 / 日租金 / 说明 / 计费规则) |
station_list |
网点列表(编号 / 特点 / 评分 / 在租数) |
rent |
租伞下单(客户 / 电话 / 伞型 / 网点 / 天数),先复述要素再执行 |
rental_info |
租借单查询(单号、状态、逾期提醒) |
stats |
运营统计(单量 / 收入 / 分布 / 建议) |
cd ~/.dsh/standalone && java -Dspring.profiles.active=standalone -Dserver.port=8090 \
-jar ~/.dsh/skills/dsh-java-plugin-skills/runtime/deepseek-harness-java-app.jarmvn clean package
cd u-app && java -jar target/u-app-1.0.0-SNAPSHOT.jar --server.port=18119cp u-plugin/target/u-plugin-1.0.0-SNAPSHOT.jar ~/.dsh/standalone/plugins/umbrella-copilot.jar
curl -X POST http://127.0.0.1:8090/api/harness/plugins/install \
-H 'Content-Type: application/json' \
-d '{"pluginId":"umbrella-copilot","displayName":"AI 共享雨伞管家","pluginVersion":"1.0.0","runtimeType":"JAVA_NATIVE","sourcePath":"/Users/<you>/.dsh/standalone/plugins/umbrella-copilot.jar","entrypoint":"cn.xiaofuge.u.plugin.UmbrellaPlugin"}'
curl -X POST http://127.0.0.1:8090/api/harness/plugins/activate \
-H 'Content-Type: application/json' -d '{"pluginId":"umbrella-copilot"}'浏览器访问 http://127.0.0.1:18119,点击右侧 AI 面板的快捷按钮或直接对话,例如:
- 「有哪些伞型?押金和日租金多少?」
- 「我要租一把双人高尔夫伞 3 天,在地铁站 1 号口取,岳先生 13800112233」
- 「查一下租借单 U1001 的状态」
- 「今天运营情况怎么样?」
python3 umbrella_e2e.py依次验证 5 个工具调用(伞型 / 网点 / 下单 / 查询 / 统计)。
| 截图 | 说明 |
|---|---|
![]() |
管家台首页:运营看板 + 伞型价目 + 最新租借单 |
![]() |
AI 咨询伞型与押金租金 |
![]() |
AI 复述确认后下单成功(满 3 天 8 折生效) |
![]() |
AI 查询租借单状态与逾期提醒 |
![]() |
AI 运营问数与建议 |
umbrella-share/
├── pom.xml # 父工程(u-app / u-plugin)
├── u-app/ # Spring Boot 应用(18119)
│ └── src/main/java/cn/xiaofuge/u/app/
│ ├── UmbrellaApplication.java # 启动类
│ ├── UStore.java # 业务数据中心(内存)
│ ├── UController.java # REST 接口
│ └── AssistantController.java # SSE 代理 → DSH /api/agent/stream
├── u-plugin/ # DSH Java Native Plugin
│ └── src/main/java/cn/xiaofuge/u/plugin/
│ └── UmbrellaPlugin.java # 5 个工具 + 系统提示词
├── docs/ # 使用说明 + 截图
└── umbrella_e2e.py # E2E 验证脚本
- Java Native Plugin:继承
AbstractHarnessPlugin,内部工具继承AbstractTool,以plugin__umbrella-copilot__<name>暴露给大模型。 - SPI 注册:
META-INF/services/cn.xiaofuge.deepseek.harness.domain.spi.JavaHarnessPlugin指向cn.xiaofuge.u.plugin.UmbrellaPlugin。 - SSE 透传:前端
/api/assistant/stream→ DSH/api/agent/stream(agentId=umbrella-copilot),流式返回。 - 数值容错:LLM 常传字符串数字(如
"3"),Controller 对days做双格式解析。 - 安全红线:系统提示词约定「先复述要素再下单」「逾期 2 倍计费」「伞面破损赔押金」等规则。
dsh-java dsh-java-plugin umbrella sharing spring-boot




