dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
Feishu/Lark channel for DeepSeek Harness: prefix-created task sessions, thread routing, streaming thinking cards, interactive questions, media delivery, lifecycle notices, runtime policies, web mirror
为 DeepSeek Harness(DSH)提供飞书/Lark 渠道,基于 deepseek-harness-lark 桥接层构建。在原生桥接层之上增加了面向任务的工作流:通过前缀创建任务会话并支持话题路由、流式思考卡片、交互式提问、媒体投递、生命周期通知、运行时策略,以及 Web UI 镜像。
这是该插件的开源版本;此前它以三个独立包(dsh-lark-tasks + dsh-lark-policies + dsh-lark-mirror)维护,现已合并为一个。
| 功能 | 描述 |
|---|---|
| 任务会话 | 通过主聊天前缀创建任务会话:ptc任务: / 标准任务: / 极简任务: / 创造任务: / 任务:(预设映射可配置)。一个任务 = 一个持久的 DSH 会话,管理与 Web 会话完全一致 |
| 话题路由 | 任务话题内的每条消息都会被投递到该任务对应的会话——话题内无需再带前缀 |
| 流式卡片 | 任务运行期间,思考过程会以流式方式写入话题内的交互卡片(事件驱动 + 每秒心跳)。每轮都会生成一张新卡片;已完成的卡片冻结在其最终状态 |
| 任务报告 | 最终答案会作为同话题中的一条独立消息发送,带固定格式前缀(✅[dsh] [YYYY-MM-DD-任务-N],按日序号递增) |
| 交互式提问 | ask_user_question 被重定向到飞书卡片按钮(支持文本回复兜底),不再依赖不可见的 Web 提示 |
| 媒体投递 | lark_send_media(图片/文件/音频/视频,≤30 MB)、lark_send_bigfile(>30 MB → 云空间 + 链接,查看权限授予发送者)、lark_create_doc(markdown → 飞书 docx 文档) |
| 生命周期通知 | 🔴 停机 / 🟢 恢复通知,投递到用户的私聊(自动学习或手动配置) |
| 运行时策略 | 精确匹配 restartCommandText(默认 重启进程)可重启 DSH 进程;单轮硬性时长上限(默认 6 小时);全局中文输出提示段落 |
| Web 镜像 | 将任务会话单向同步到 Web GUI:/lark-mirror/* 只读路由 + "飞书任务"侧边栏面板;任务会话归组到"飞书"工作区 |
来自 deepseek-harness-lark 的原生 lark-channel 被禁用,由本插件取代。将包放到 DSH profile(plugins/ 或 node_modules/)下,然后在 cordis.patch.yml 中:
- id: lark-channel
disabled: true
- insert:
- id: lark
name: dsh-lark
config:
appId: <your feishu app id>
appSecretRef: LARK_APP_SECRET
cwd: !!js process.env.DSH_LARK_CWD ?? process.cwd()
lifecycleChatId: <optional: DM chat id for lifecycle notices>
restartCommandText: 重启进程
turnHardLimitHours: 6
凭据通过 DSH 凭据存储解析(appSecretRef 指向环境变量/凭据条目——切勿把密钥写进 patch 文件)。
配置项是三个被合并插件键的并集。要点如下:
| 键 | 默认值 | 描述 |
|---|---|---|
appId / appSecretRef | — | 飞书应用凭据(必填) |
taskPresets | ptc→code, standard→standard, minimal→minimal, creation→cordis, default→anchor-standard | 前缀 → agent 预设映射(default 同时服务无前缀消息与"任务:"前缀) |
taskPermission | danger-full-access | 固定到新任务会话上的权限预设('' 表示禁用;飞书没有交互式审批界面) |
registryPath | ~/.dsh/lark/registry.json | 任务注册表持久化路径(可覆盖以保留旧布局的历史数据) |
reportSymbol / reportIdentity / reportTaskLabel | ✅ / dsh / 任务 | 任务报告前缀的各部分 |
restartCommandText | 重启进程 | 触发重启 DSH 的精确用户消息 |
turnHardLimitHours | 6 | 单轮硬性时长上限(小时;0 表示禁用) |
questionEnable / questionTimeoutMs | true / 30 min | 飞书交互式提问行为 |
lifecycleChatId | 自动学习 | 🔴/🟢 通知的私聊 chat id |
较长的 markdown/文本回复会被官方 SDK 分块发送,且只有第一个分块携带 replyTo——第 2 页及之后的内容会落到主聊天而不是话题中(影响较长的任务报告)。根因在 @larksuiteoapi/node-sdk 的 OutboundSender:
在上游修复发布之前,请修补 dist/index.js 中打包的 SDK 代码(两处):
- replyTo: i === 0 ? opts.replyTo : void 0,
+ replyTo: opts.replyTo,
(sendMarkdown 与 sendText 各 1 处,共 2 处;已在生产环境验证:所有分块页面都会留在话题内,@提及仍然只在第 1 页。)
node --check lib/*.js
node test/self-test.mjs
MIT