Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🍳 kitchen-ag — 邻里香社区共享厨房(P92)

DSH Java Native Plugin 场景案例:社区共享厨房。用户通过 AI 厨房管家完成「查灶位 → 挑厨艺导师 → 订位下单 → 订位单查询 → 经营统计」全流程,业务应用以 Spring Boot 提供页面与 REST,插件以 JAVA_NATIVE 方式把 5 个工具注册进 DSH Agent。

首页

业务概览

模块 内容
灶位 灶台A·小炒位 ¥45/2h · 灶台B·烘焙位 ¥68/2h · 灶台C·火锅位 ¥58/2h · 灶台D·面点位 ¥52/2h · VIP 私厨间 ¥128/2h
厨艺导师 M01 川菜·老刁(4.9)· M02 烘焙·糖糖(4.8)· M03 面点·白师傅(4.9),陪教 60 元/小时,可选自助下厨
订位单号 CK1001 起,状态流转:已订位 → 使用中 → 已完成
规则 2 小时起订按整小时续;订满 3 小时送时令蔬菜;食材自带或代购(按小票结算);提前 30 分钟到场;开始前 2 小时可免费取消

AI 对话演示

咨询灶位

咨询灶位

订位下单(AI 复述要素后调用 book,返回单号)

订位下单

订位单查询

订位单查询

经营统计

经营统计

插件注册的 5 个工具

工具 说明 对应 REST
plugin__kitchen-ag__station_list 灶位列表(价格/配置/计价规则) GET /api/stations
plugin__kitchen-ag__master_list 厨艺导师列表(专长/评分/在课量) GET /api/masters
plugin__kitchen-ag__book 灶位订位(owner/phone/station/hours 必填,masterId/slot 可选) POST /api/book
plugin__kitchen-ag__order_info 订位单查询(CK1001 格式单号) GET /api/order?orderId=
plugin__kitchen-ag__stats 运营统计(单量/状态分布/收入/分灶位分导师) GET /api/stats

项目结构

kitchen-ag/
├── pom.xml                     # 父工程(community-kitchen-ag)
├── ag-app/                     # 业务应用(Spring Boot,端口 18131)
│   ├── pom.xml                 # artifactId: ag-app
│   └── src/main/
│       ├── java/cn/xiaofuge/ag/app/
│       │   ├── CommunityKitchenApplication.java
│       │   ├── AgStore.java            # 数据中心:灶位/导师/订位单/统计
│       │   ├── AgController.java       # REST 接口
│       │   └── AssistantController.java# /api/assistant/stream SSE 代理 → DSH
│       └── resources/
│           ├── application.yml         # 端口 18131 / agent-id kitchen-ag
│           └── static/index.html       # 🍳 橙红色系对话页面
├── ag-plugin/                  # DSH 插件(JAVA_NATIVE)
│   ├── pom.xml                 # artifactId: ag-plugin
│   └── src/main/
│       ├── java/cn/xiaofuge/ag/plugin/KitchenPlugin.java  # 5 工具
│       └── resources/META-INF/
│           ├── plugin.yaml     # id: kitchen-ag
│           └── services/cn.xiaofuge.deepseek.harness.domain.spi.JavaHarnessPlugin
├── kitchen_ag_e2e.py           # E2E 验证脚本(5 用例)
└── docs/images/                # 截图

快速开始

# 1. 构建并启动业务应用
mvn clean package -DskipTests
java -jar ag-app/target/ag-app-1.0.0-SNAPSHOT.jar --server.port=18131

# 2. 安装并激活插件(DSH standalone 运行于 8090)
cp ag-plugin/target/ag-plugin-1.0.0-SNAPSHOT.jar ~/.dsh/standalone/plugins/kitchen-ag.jar
curl -X POST http://127.0.0.1:8090/api/harness/plugins/install \
  -H 'Content-Type: application/json' \
  -d '{"pluginId":"kitchen-ag","displayName":"邻里香社区共享厨房","pluginVersion":"1.0.0","runtimeType":"JAVA_NATIVE","sourcePath":"/Users/<you>/.dsh/standalone/plugins/kitchen-ag.jar","entrypoint":"cn.xiaofuge.ag.plugin.KitchenPlugin"}'
curl -X POST http://127.0.0.1:8090/api/harness/plugins/activate \
  -H 'Content-Type: application/json' -d '{"pluginId":"kitchen-ag"}'

# 3. 打开页面 http://127.0.0.1:18131 与 AI 管家对话
# 或运行 E2E
python3 kitchen_ag_e2e.py

E2E 结果

[PASS] T1 灶位列表(45/68/58/52/128)
[PASS] T2 导师列表(老刁/糖糖/白师傅)
[PASS] T3 订位下单(CK1006,烘焙位 × 3 小时 ¥204 送蔬菜)
[PASS] T4 订位单查询(CK1002 火锅位)
[PASS] T5 运营统计(总单量/收入/分布)
===== kitchen-ag E2E: 5/5 PASS =====

技术要点

  • JAVA_NATIVE 插件:AbstractHarnessPlugin + 内部 AbstractTool 子类,run() 返回 CompletableFuture<ToolExecutionResult>,HTTP 调用业务应用 REST。
  • 系统提示注入:configure() 中 registerSystemPrompt 写入报价/确认/单号播报与厨房安全提醒;registerHook(PRE_TOOL_USE) 做调用审计。
  • SSE 透传:AssistantController 把页面消息代理到 DSH /api/agent/stream(StreamingResponseBody,上游超时 170s,MVC async 180s)。
  • SSE 事件格式:DSH 输出 event:meta/step_break/tool_result/chunk/finish/done + data:{...};chunk 载荷为 {"content":"..."},前端按 event: 分段解析。
  • 数值容错:Controller 对 hours 做 Number/String 双格式解析,兼容 LLM 传 "3" 字符串。
  • 会话锁处理:Agent 连发两条消息会报「正在执行上一条」,需先 POST /api/agent/{id}/cancel 再等数秒重发。

DSH 版本

  • deepseek-harness-java-types 0.1.5(provided)
  • Spring Boot 3.2.5 / Java 17

License

MIT

About

🍳 邻里香社区共享厨房:DSH Java Native Plugin 共享空间场景(灶位/导师/订位/订单/统计)

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages