DSH(deepseek-harness-java)Java Native Plugin 场景案例 P81:净菜周配订购平台 + AI 管家插件。
「veggie-box」是一个净菜周配订购场景的演示项目,包含:
- v-app:Spring Boot 应用(端口
18120),提供套餐、站点、订购、统计等 REST 接口和一个可视化管家台页面。 - v-plugin:DSH Java Native Plugin(agent:
veggie-copilot),以 SPI 方式接入 DSH,提供 5 个可被大模型调用的工具。
用户在管家台页面与 AI 对话即可完成套餐咨询、订购下单、订单查询、运营问数等操作,AI 通过 DSH 调用插件工具读写业务数据。
| 模块 | 说明 |
|---|---|
| 周配套餐 | 5 款套餐:轻食一人食周配 ¥128、三口之家经典周配 ¥268、健身低脂周配 ¥198、银发软糯周配 ¥158、轻享双人尝鲜周配 ¥228(每周期) |
| 配送站点 | 3 个站点:滨江小区北门(D01)、中央公园公寓(D02)、科技园西门(D03),含评分与在配量 |
| 订购 | 订 4 周起 95 折、12 周起 9 折;每周日晚 18-20 点统一投递;食材不新鲜包赔 |
| 订单 | 单号 V2001+,状态:已下单 / 配送中 / 已签收;提醒检查冰袋、可续订换套餐 |
| 统计 | 总单量、进行中 / 已签收、收入、按套餐 / 按站点分布、运营建议 |
| 工具 | 说明 |
|---|---|
plan_list |
周配套餐列表(单价 / 份数 / 内容 / 折扣规则) |
station_list |
配送站点列表(编号 / 特点 / 评分 / 在配量) |
subscribe |
订购下单(客户 / 电话 / 套餐 / 周数),先复述要素再执行 |
order_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 v-app && java -jar target/v-app-1.0.0-SNAPSHOT.jar --server.port=18120cp v-plugin/target/v-plugin-1.0.0-SNAPSHOT.jar ~/.dsh/standalone/plugins/veggie-copilot.jar
curl -X POST http://127.0.0.1:8090/api/harness/plugins/install \
-H 'Content-Type: application/json' \
-d '{"pluginId":"veggie-copilot","displayName":"AI 净菜周配管家","pluginVersion":"1.0.0","runtimeType":"JAVA_NATIVE","sourcePath":"/Users/<you>/.dsh/standalone/plugins/veggie-copilot.jar","entrypoint":"cn.xiaofuge.v.plugin.VeggiePlugin"}'
curl -X POST http://127.0.0.1:8090/api/harness/plugins/activate \
-H 'Content-Type: application/json' -d '{"pluginId":"veggie-copilot"}'浏览器访问 http://127.0.0.1:18120,点击右侧 AI 面板的快捷按钮或直接对话,例如:
- 「有哪些周配套餐?多少钱一周?」
- 「我要订三口之家经典周配 4 周,在滨江小区北门收,屈女士 13800334455」
- 「查一下订单 V2001 的状态」
- 「今天运营情况怎么样?」
python3 veggie_e2e.py依次验证 5 个工具调用(套餐 / 站点 / 订购 / 查询 / 统计)。
| 截图 | 说明 |
|---|---|
![]() |
管家台首页:运营看板 + 周配套餐 + 最新订单 |
![]() |
AI 咨询套餐与价格 |
![]() |
AI 复述确认后下单成功(4 周 95 折生效) |
![]() |
AI 查询订单状态与投递提醒 |
![]() |
AI 运营问数与建议 |
veggie-box/
├── pom.xml # 父工程(v-app / v-plugin)
├── v-app/ # Spring Boot 应用(18120)
│ └── src/main/java/cn/xiaofuge/v/app/
│ ├── VeggieApplication.java # 启动类
│ ├── VStore.java # 业务数据中心(内存)
│ ├── VController.java # REST 接口
│ └── AssistantController.java # SSE 代理 → DSH /api/agent/stream
├── v-plugin/ # DSH Java Native Plugin
│ └── src/main/java/cn/xiaofuge/v/plugin/
│ └── VeggiePlugin.java # 5 个工具 + 系统提示词
├── docs/ # 使用说明 + 截图
└── veggie_e2e.py # E2E 验证脚本
- Java Native Plugin:继承
AbstractHarnessPlugin,内部工具继承AbstractTool,以plugin__veggie-copilot__<name>暴露给大模型。 - SPI 注册:
META-INF/services/cn.xiaofuge.deepseek.harness.domain.spi.JavaHarnessPlugin指向cn.xiaofuge.v.plugin.VeggiePlugin。 - SSE 透传:前端
/api/assistant/stream→ DSH/api/agent/stream(agentId=veggie-copilot),流式返回。 - 数值容错:LLM 常传字符串数字(如
"4"),Controller 对weeks做双格式解析。 - 安全红线:系统提示词约定「先复述要素再下单」「食材不新鲜包赔」「检查冰袋」等规则。
dsh-java dsh-java-plugin veggie fresh-food spring-boot




