@wycto/dsh-task-pulse
v0.1.1
Published
DSH 任务脉冲插件:任务进度动画、完成/卡住通知、钉钉 Webhook 推送
Downloads
112
Maintainers
Readme
dsh-task-pulse — DSH 任务脉冲插件
为 DeepSeek Harness 增加趣味动画、进度指示和通知功能,支持钉钉 Webhook 推送。
✨ 功能特性
🎨 趣味动画
- 粒子效果:任务进行时,屏幕边缘产生流动的蓝色粒子,营造科技感
- 进度条:顶部彩虹渐变进度条,指示任务正在进行
- 任务指示器:右下角显示当前进行中的任务数量
🔔 通知系统
- 任务完成通知:任务完成时自动弹出通知,展示模型、提供商、耗时、回合/步骤数、工具调用次数、Token 明细(输入/输出/推理/缓存)、Token 速率、任务结果摘要与结束原因
- 卡住检测通知:任务超过阈值(默认60秒)未完成时发出警告,附带当前进度与 Token 消耗
- 错误通知:任务异常(出错/中止/达输出上限)时以警示样式通知用户
- 多行渲染:通知正文支持换行展示,信息结构更清晰
📱 钉钉 Webhook 推送
- 群机器人通知:通过钉钉群机器人 Webhook 发送任务状态
- Markdown 消息:支持富文本格式的通知消息
- 可配置推送:可选择推送任务完成、卡住检测等事件
📦 安装
方式一:npm 包(推荐)
dsh plugin --profile <profile名> add @wycto/dsh-task-pulse安装后重启 DSH(dsh --profile <profile名>),侧边栏底部出现"✨ 任务脉冲"按钮。
方式二:本地开发
- 克隆或下载本项目
- 安装依赖:
npm install - 构建客户端:
npm run build - 本地体验:
pnpm dsh web --patch ./dsh-task-pulse/cordis.patch.yml
⚙️ 配置
通过界面配置
点击侧边栏底部的"✨ 任务脉冲"按钮,打开配置面板:
- 钉钉 Webhook:填入钉钉群机器人的 Webhook 地址
- 启用钉钉通知:开启/关闭钉钉推送
- 任务完成通知:任务完成时是否弹出通知
- 卡住检测通知:任务卡住时是否发出警告
- 卡住阈值:设置多久(秒)视为卡住(默认60秒)
通过 settings.yaml 配置
在 ~/.dsh/settings.yaml 中添加:
task-pulse:
dingtalkWebhook: 'https://oapi.dingtalk.com/robot/send?access_token=YOUR_TOKEN'
dingtalkEnabled: true
notifyOnComplete: true
notifyOnStuck: true
stuckThresholdMs: 60000 # 60秒🔧 钉钉 Webhook 配置
1. 创建钉钉群机器人
- 打开钉钉群 → 群设置 → 智能群助手 → 添加机器人
- 选择"自定义(通过Webhook接入自定义服务)"
- 设置机器人名称和头像
- 安全设置选择"自定义关键词",填入"DSH"或"任务"
- 复制生成的 Webhook 地址
2. Webhook 地址格式
https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxx3. 消息格式
插件使用 Markdown 格式发送通知:
{
"msgtype": "markdown",
"markdown": {
"title": "✅ dsh 任务完成",
"text": "### ✅ dsh 任务完成\n\n**📋 任务标题**: 优化通知内容\n**🤖 模型**: claude-opus-4-8-thinking(anthropic)\n**🧠 上下文窗口**: 200,000 tokens\n**⏱️ 耗时**: 4分59秒(14:30:02 → 14:35:01)\n**📝 回合数**: 2(平均 2分29秒/回合)\n**🔧 步骤数**: 21(平均 14秒/步)\n**🛠️ 工具调用**: 5 次\n**🏁 结果**: ✅ 完成\n\n**📊 Token 统计**:\n- 输入: 115,856(缓存读 12,000)\n- 输出: 17,929(推理 8,000)\n- 总计: 133,785\n- 速率: ~447 tokens/秒\n\n**📌 任务结果摘要**:\n> 已完成通知内容优化,新增了模型/提供商/耗时明细等字段…\n\n---\n*由 dsh task-pulse 插件发送 · 08-25 14:35:01*"
}
}🎯 使用场景
开发调试
- 长时间运行的任务时,粒子动画让你知道任务还在跑
- 任务完成自动通知,不用一直盯着屏幕
团队协作
- 钉钉群通知让团队成员实时了解任务状态
- 卡住检测及时发现问题,避免资源浪费
自动化监控
- 结合钉钉机器人实现任务监控告警
- 可自定义阈值和通知规则
📁 项目结构
dsh-task-pulse/
├── package.json # npm 包配置
├── cordis.patch.yml # DSH 插件注册
├── README.md # 本文档
├── lib/
│ └── index.js # Host 端(事件监听、钉钉推送)
└── client/
├── index.js # Client 端(动画、通知 UI)
├── build.mjs # 构建脚本
└── dist/
└── index.js # 构建产物🔍 工作原理
Host 端
- 监听
session/event事件,追踪任务状态 - 统计
step/start/turn/end(含结束原因)等事件,汇总回合数、步骤数、工具调用次数 - 从
assistant/message提取 Token 使用(输入/输出/推理/缓存)与最终回复摘要 - 从
request/context/request/header提取提供商、模型、上下文窗口、输出上限 - 检测卡住任务(超过阈值)
- 通过钉钉 Webhook 发送富信息通知
Client 端
- 注册侧栏入口按钮
- 注册全局覆盖层(粒子动画、通知弹窗)
- 定期查询 Host 状态,更新 UI
- 提供配置面板
🛠️ 开发
构建
npm run build # 构建客户端
npm run pack # 打包 npm 包发布
npm version patch # 升版本
npm publish # 发布到 npm📝 更新日志
v0.1.1 (2026-08-26)
- 📊 通知内容大幅增强:新增提供商/上下文窗口/输出上限、开始结束时间、平均回合&步骤耗时、工具调用次数、结束原因(完成/出错/中止/达上限)、推理&缓存 Token、Token 速率
- 📌 新增任务结果摘要:通知附带最后一条助手回复的摘要文本
- 🏷️ 标题兜底:无会话标题时使用首条用户输入作为任务标题
- 🖥️ GUI 通知支持多行渲染(
white-space: pre-line),面板展示补充提供商/工具调用/输入输出 Token - ⚠️ 任务出错时通知改为警示样式并附带错误信息
v0.1.0 (2026-08-25)
- ✨ 初始版本
- 🎨 粒子动画效果
- 🔔 任务完成/卡住通知
- 📱 钉钉 Webhook 推送
📄 许可证
MIT License
