dsh
OpenPetsHQ/openpets将 DeepSeek Harness 的生命周期状态、错误与审批请求,桥接到本地运行的 OpenPets 桌面伙伴。
DeepSeek Harness (dsh) 插件:agent 思考超过阈值时,直接在对话流中打出一条热点新闻或提醒卡片。频率极低、绝不打扰正常对话。
assistant/message 消息直接追加进会话日志(session.append + surfaceOp:'append'),UI 自动渲染成对话流卡片(带可点击链接);内容源挂了静默降级,不阻塞对话。gap_feed_reminder_add 工具写入提醒,到点后在间隙内容里优先于新闻展示。gap-feed 表单,可改配置、管理提醒(增删改查 / 启停 / 完成),改动即时生效。model source(kind/provider/model),重启后会话可正常加载(伪造 source 会被 SessionPersistence 校验拒绝)。dsh plugin --profile web add dsh-gap-feed
重启 dsh web(或刷新页面即可)。
已发布到 npm(
dsh-gap-feed)——市场优先展示预构建 npm 包(免allowBuilds构建授权)。
一次注入需同时满足:
enabled 为 true(总开关);minThinkSeconds(默认 20 秒)——通过轮询 agents 注册表检测,对事件时序鲁棒;cooldownMinutes(默认 15 分钟);maxPerHour(默认 4)。不满足则静默,什么都不做。
对话里说一句带时间 + 事项的话即可,例如:
模型解析为 text(事项)+ dueAt(unix 毫秒,缺省 = 当前 + 1 小时)写入提醒。解析失败返回友好错误,不阻塞对话。到点后该提醒在下次注入时优先于新闻展示。
dsh 设置页自动渲染 gap-feed 命名空间表单,可改配置、管理提醒,改动即时生效、重启后保留。
| 配置项 | 类型 | 默认 | 说明 |
|---|---|---|---|
enabled | boolean | true | 总开关 |
minThinkSeconds | number | 20 | 思考超过该秒数才考虑注入 |
cooldownMinutes | number | 15 | 两次注入最小间隔(分钟),限频核心 |
maxPerHour | number | 4 | 每小时注入上限(兜底) |
blacklist | string[] | [] | 标题黑名单词,命中任一即过滤 |
默认值定义在 src/types.ts 的 DEFAULT_CONFIG。
$DSH_HOME/profiles/<profile>/data/gap-feed/reminders.json
DSH_HOME 缺省为 ~/.dsh;id / text / dueAt / done / enabled / createdAt;目录不存在自动建,读写失败或 JSON 损坏时静默降级为内存态,绝不抛错。npm install # 装 devDeps
npm test # vitest:67 条单测 + 契约测试
npm run typecheck # tsc --noEmit
npm run build # tsc -> dist/(prepack 自动执行)
分层纪律:纯函数层(decision.ts / picker.ts)零 dsh 依赖、全分支覆盖;副作用层(news.ts 网络 / reminders.ts 文件 I/O)经 Source 接口可 mock;接线层(index.ts)只做运行时接线。
-352),自动静默降级,不影响其他源;MIT