Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dsh-java-inbox · Inbox Triage(邮件分诊台)

DSH 独立 AI 产品矩阵 #14 · 端口 8105 · 形态参照 dsh-java-mysql:独立工具型产品, 本身是完整可用的邮件分诊后台 + DSH Java Native 插件(AI 分诊操作员),而非"业务系统 + 右侧 AI 助手"。

产品定位

把一批原始邮件文本(mbox / EML 导出 / 直接粘贴)变成可执行的回复计划:

  • 主题聚类:8 类规则聚类(告警/审批/协作/通知/营销/人事/财务/其他),每类给出代表邮件;
  • 草稿要点:单封邮件 → 诉求 / 行动项 / 截止时间 / 情绪 / 紧急度打分;
  • 跟进清单:全量邮件按 P0/P1/P2 打分排序(紧急词、疑问句、负面情绪加权);
  • 负载统计:总量 / 紧急数 / 发件人 Top。

AI 的角色是"熟练的分诊秘书":一句话让它读完全部邮件、给出回复顺序和每封的回复要点。

AI 工具(插件 dsh-java-inbox-plugin,前缀 plugin__dsh-java-inbox-plugin__mail_*)

工具 作用
mail_load_folder 解析邮件文本:From/Subject/Date 头解析,返回邮件清单摘要
mail_cluster_topics 8 类主题聚类 + 每类代表邮件
mail_draft_points 单封 → 诉求/行动项/截止/情绪/紧急度五维要点
mail_followups P0/P1/P2 跟进排序(紧急词/疑问句/负面情绪评分)
mail_stats 总量 / 紧急数 / 发件人 Top 统计

安全红线

  • 绝不发送任何邮件——所有工具只读分析,无任何 SMTP / 发送通道;
  • 不动原文件——只接受粘贴文本或只读解析,不写回邮箱/文件;
  • systemPrompt + PRE_TOOL_USE hook 双重约束:AI 被明确禁止声称"已发送/将代发"。

架构

inbox-app (Spring Boot :8105)                inbox-plugin (DSH Java Native Plugin)
├─ POST /api/mail/load        ─┐             ├─ DshInboxTriagePlugin extends AbstractHarnessPlugin
├─ POST /api/mail/cluster      │ 同一        │   ├─ 5 × AbstractTool (mail_*)
├─ POST /api/mail/draft-points ├ InboxTriage │   ├─ systemPrompt(分诊秘书人设 + 红线)
├─ POST /api/mail/followups    │ Service     │   └─ PRE_TOOL_USE hook(危险意图拦截)
├─ POST /api/mail/stats        └─             └─ SPI: META-INF/services/...JavaHarnessPlugin
└─ POST /api/assistant/stream ──→ harness :8090 /api/agent/stream(SSE 转发)

UI:static/index.html + app.js(会话管理、SSE 流式渲染、聚类/要点/统计工作台、跟进清单弹窗)。

运行

# 1. 启动 app(harness 8090 需已在运行)
SERVER__PORT= java -jar dsh-java-inbox-app/target/*.jar --server.port=8105

# 2. 安装并激活插件(jar 先拷贝到 ~/.dsh/standalone/plugins/)
curl --noproxy '*' -X POST http://127.0.0.1:8090/api/harness/plugins/install -H 'Content-Type: application/json' -d '{
  "pluginId":"dsh-java-inbox-plugin","jarName":"dsh-java-inbox-plugin-0.1.0.jar",
  "displayName":"Inbox Triage","pluginVersion":"0.1.0","runtimeType":"JAVA_NATIVE",
  "sourcePath":"<abs-path>/dsh-java-inbox-plugin-0.1.0.jar",
  "entrypoint":"cn.xiaofuge.dsh.inbox.plugin.DshInboxTriagePlugin","installMode":"COPY"}'
curl --noproxy '*' -X POST http://127.0.0.1:8090/api/harness/plugins/activate -H 'Content-Type: application/json' \
  -d '{"pluginId":"dsh-java-inbox-plugin"}'

# 3. 打开 http://127.0.0.1:8105

E2E

inbox_triage_e2e.py — 8 用例 / 23 断言,全部通过:

用例 验证点
T0 mail_load_folder 解析 4 封样例邮件
T1 聚类返回 4 个主题簇
T2 草稿要点:urgent 邮件 → 紧急+负面+行动项
T3 跟进清单 3 封,P0 排前
T4 统计:总量/紧急数/发件人 Top
T5 空输入 → 400
T6 AI 对话调用 mail_* 工具(SSE step_break 断言)
T7 AI 不声称发送邮件(红线断言)

截图

  • screenshots/01-home.png — 分诊台首页
  • screenshots/02-ai-drawer.png — AI 对话分诊(调用 mail_* 工具)
  • screenshots/03-safety.png — 跟进清单(只读分析、不发送邮件)

About

DSH Inbox Triage: 邮件分诊/优先级/自动归档建议 - Java Native Plugin 独立 AI 产品,不代发邮件

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages