Back to home

zhouwei713

dsh-daily-kit

DeepSeek Harness 日常插件集合:16 个插件 + 4 个一键组合 bundle,权限透明、读取优先、零 native 依赖

Stars
0
Language
TypeScript
Created
Aug 16, 2026
Updated
Aug 16, 2026

Introduction

dsh-daily-kit

DeepSeek Harness(dsh)日常插件集合:16 个面向日常使用的小型插件 + 4 个一键组合的 bundle,以 monorepo 形式统一工程规范、统一兼容性 CI。

⚠️ 状态声明:dsh 与本集合均处于 developer preview。全部插件已通过 tsc --noEmit 类型检查与 596 个单测(node:test),但尚未发布 npm、尚未在真实 dsh 运行时中端到端验证。各插件 README 均附手动验证步骤;使用中遇到任何断裂或不实描述,欢迎提 issue。

为什么选这个集合

  • 权限透明:每个插件 README 都有「权限透明」章节,逐条交代读写位置、网络域名、凭证持有、确认点、日志内容——装之前就知道它会碰什么。
  • 读取优先:涉及外部服务的插件(mail、calendar)默认只读,写操作(创建日程、回复草稿)要么默认关闭,要么只落本地、绝不发送。
  • 零 native 依赖:全部插件纯 JS/TS 实现(pdfjs-dist 仅 lazy 加载),Node ^22.19 || >=24 直接跑,不需要编译工具链。
  • 596 个单测:决策逻辑全部写成不依赖 dsh 运行时的纯函数模块,node:test 全覆盖。
  • 兼容性 CI 每日巡检.github/workflows/compat.yml 每日对 dsh 最新 rc 跑类型检查与单测,上游签名断裂第一时间发现。
  • bundle 一键组合:四个场景化 bundle 用 cordis.patch.yml 一次插入多个插件行,带钉版的合理默认值。

快速开始

前置

  • Node.js ^22.19>= 24
  • 已安装 dsh(developer preview),参考 deepseek-harness

安装

三种方式,按场景选:

# 1. 装单个插件(包名规范 dsh-daily-<短名>)
dsh plugin add dsh-daily-notify

# 2. 装 bundle(一次组合多个插件 + 默认配置)
dsh plugin add dsh-daily-bundle-dev-buddy

# 3. 开发期从本地路径安装
dsh plugin add ./packages/notify

安装后改配置

插件配置写在 dsh 的 cordis.yml(或用户配置层)。注意:dsh 的配置层叠是整行覆盖,不是深合并——在你自己的配置层写一个与已有行相同 id 的插件行,该行会整体替换原行,原来的 config 不会被保留合并。要改任何一个字段,需要把该行连同你要保留的配置一起重写;省略 config 的部分由插件自身 schema 的内置默认值兜底(本集合所有插件的每个配置叶子都有默认值)。

插件总览

插件一句话用途主要工具凭证需求
approval-guard统一高风险操作审批门(L0–L3 风险分级)+ 脱敏 + 审计无(hook 插件)
notify触发×渠道分离通知:任务完成/待审批/出错 → 桌面/Webhooknotify_sendnotify_channels 等 4 个webhook URL(可选,配置内)
cost-meter按模型定价表算真实花费:会话/日/7日报告、预算告警cost_reportcost_budgetcost_pricing
session-export会话事件流导出 Markdown/自包含 HTML(可打印 PDF)session_exportsession_export_preview
ollama-adapter本地 Ollama 模型接入(原生 NDJSON 协议)无(注册 provider 路由 ollama无(OLLAMA_HOST 可选)
context-budget上下文水位监控:阈值分档告警、回落重置context_statuscontext_config
documentsPDF/DOCX/XLSX/PPTX 解析 + 引用位置回传 + 可选 VLM OCRdocument_extractdocument_search 等 5 个VLM 端点 API Key(可选,默认关)
local-memory文件夹持续索引 + 关键词检索 + 文件:行号 引用memory_indexmemory_search 等 5 个
schedulercron 风格全局调度:跨会话任务、运行历史、latest-only 补跑schedule_createschedule_history 等 7 个
watcher内容理解型监控:RSS/Atom 去重、网页正文判变、文件夹新增watch_addwatch_check 等 6 个
calendar日历读取(Google/CalDAV 双 Provider)、空闲查询,写默认关calendar_listcalendar_freebusy 等 5 个Google token 或 CalDAV 账号
mailGmail 搜索/阅读/线程,本地回复草稿(不发送)mail_searchmail_read 等 4 个Gmail OAuth token
tasks跨会话持久待办:优先级/截止/标签/四桶统计task_addtask_list 等 5 个
location天气/地点/营业时间/路线距离:免 key Provider 开箱即用weather_getplace_search 等 4 个
receipts票据识别(VLM/纯文本规则)、确认流、消费报告receipt_scanreceipt_report 等 4 个VLM 端点 API Key(可选,默认关)
transcription音视频转录(云端 Whisper API / 本地 whisper.cpp)、章节与待办提取transcribe_filetranscript_format云端转录 API Key(本地引擎则免)

插件详述

P0 · 开发者工具线

给编码 Agent 装的安全、可观测与成本底座。

approval-guard

统一的高风险操作审批门,挂在 tools/pre-execute waterfall 上:内置 L0(只读,自动放行)→ L3(删除/付款/发布,默认硬拒绝)四级风险分级表;支持路径/域名白名单降级、L3 高危命令模式升级、审批审计(会话事件 approval-guard/decision,兜底写 JSONL)与敏感信息脱敏(参数摘要 + 工具结果文本投影)。无工具、无网络、无凭证。

配置要点说明
defaultLevel未知工具(如 MCP 工具)的风险级,默认 2(每次 ask)
overrides覆盖/追加工具分级
allowedPaths / allowedDomains命中白名单的 L1/L2 调用降为 L0
l3AsAsktrue 时 L3 由 deny 降级为 ask
redaction.redactResults是否脱敏进入会话的工具结果文本
- id: approval-guard
  name: dsh-daily-approval-guard
  config:
    enabled: true
    defaultLevel: 2
    allowedPaths: [D:/code/scratch]     # 命中前缀的写操作降为 L0
    l3AsAsk: false
    redaction: { redactResults: true }
    auditLog: { enabled: true, filePath: approval-guard-audit.jsonl }

提示词:「启用审批门后,对我的工具调用按风险分级管控:删除类直接拒绝,改文件和执行命令每次问我,读操作直接放行。」

notify

触发 × 渠道分离的通知插件。触发层监听三个 dsh 事件(运行结束 agent/status → idle、等待审批 approval/asked、运行出错 agent/error),带去重窗口与最短运行时长过滤(短任务不打扰);渠道层内置 webhook(JSON POST,超时+重试)与桌面通知(Win/macOS/Linux 三平台),新渠道实现 NotificationProvider 接口即可接入。发送前与记录前默认脱敏。

工具作用
notify_preview预览通知内容与去向,wouldNotify 告知是否会真正发出,不实际发送
notify_send手动发送一条通知(L1 级副作用)
notify_history查询本进程内发送历史
notify_channels列出渠道状态;test: true 向每个已启用渠道发测试通知
- id: notify
  name: dsh-daily-notify
  config:
    enabled: true
    channels:
      webhook:
        enabled: false
        url: ''            # 例:https://open.feishu.cn/open-apis/bot/v2/hook/xxx
      desktop: { enabled: true }
    triggers:
      runFinished: { enabled: true, minRunMs: 30000 }
      dedupeWindowMs: 10000

提示词:「调 notify_channels 并 test 一下渠道,然后任务跑完或需要我审批时给我发通知。」

cost-meter

按模型定价表算真实花费。订阅会话事件 assistant/message 采集 token 用量(含缓存命中),按会话/按天/按模型聚合;费用在出报告时按当前定价表计算,只持久化 token 数,改定价追溯生效。内置定价表整理于 2026-08,务必自行核对当前价格并用 pricing 覆盖。

工具作用
cost_report花费报告(scope: session / today / 7days / all),按模型分解、预算状态
cost_budget查看或设置每日/近 7 日预算(USD),超限警告
cost_pricing查看生效定价表及来源,测试某模型的定价命中
- id: cost-meter
  name: dsh-daily-cost-meter
  config:
    enabled: true
    persistence: { enabled: true, filePath: cost-meter-data.json }
    budget: { dailyUsd: 5, weeklyUsd: 30 }
    pricing:                        # 覆盖/追加定价,USD/百万 tokens
      deepseek-chat:
        inputPerMillion: 0.27
        outputPerMillion: 1.10
        cachedPerMillion: 0.07

提示词:「查一下今天的花费,按模型分解;把每日预算设成 5 美元,超了提醒我。」

session-export

把当前会话的结构化事件流导出为可分享/归档的文档:Markdown 完整时间线,或自包含单文件 HTML(内联 CSS,浏览器打开后可打印为 PDF)。工具结果截断长度、推理内容、时间戳均可开关,导出前默认脱敏;目标文件已存在时报错,绝不覆盖。

工具作用
session_export导出当前会话为文件,返回路径 + 字节数 + 统计
session_export_preview不落盘预览前 N 行,确认格式与脱敏效果后再导出
- id: session-export
  name: dsh-daily-session-export
  config:
    enabled: true
    outputDir: ./exports
    format: markdown            # markdown / html
    includeToolResults: true
    includeReasoning: false
    redact: true

提示词:「先 session_export_preview 看下效果,没问题就把这次会话导出成 HTML 存到 ./exports。」

ollama-adapter

把本地 Ollama 模型接入 dsh,注册 provider 路由 ollama。选原生 /api/chat(NDJSON)协议而非 OpenAI 兼容端点:thinking 用独立 message.thinking 字段流式输出并支持 think 档位,与 dsh 的 reasoning-delta / reasoningEffort 一一对应;usage 固定在终态分块返回。前提:本机已运行 Ollama 并拉取模型(如 ollama pull qwen3)。

配置要点说明
baseURL省略时读 $OLLAMA_HOST,再回退 http://localhost:11434
reasoningEffortoff / low / medium / high / max,映射到 think 参数
keepAlive透传 keep_alive"0" 立即卸载,-1 常驻
models模型目录(advisory),与 /api/tags 结果合并
- id: ollama-adapter
  name: 'dsh-daily-ollama-adapter'
  config:
    enabled: true
    reasoningEffort: high
    keepAlive: 30m
    models:
      - id: qwen3:8b
        name: Qwen3 8B
        contextWindow: 32768

# agent 侧路由到本插件
- id: agent-loop
  name: '@deepseek-ai/dsh-agent-loop'
  config:
    agents:
      - id: main
        provider: ollama
        model: qwen3:8b

提示词:「把 main agent 切到本地 ollama 的 qwen3:8b,然后正常对话。」

context-budget

上下文水位监控。每次模型调用后根据 usage 估算水位(inputTokens + cacheReadTokens + cacheWriteTokens + outputTokens),越过阈值时写会话事件 context-budget/warning 并打警告日志;每会话每档只报一次,回落后重新武装。窗口来源三级解析:适配器上报 → 配置 contextWindowsfallbackWindow

工具作用
context_status估算占用、窗口、比例、档位、窗口来源
context_config查看或临时调整 warnAt / criticalAt(仅进程内存生效,重启丢失)
- id: context-budget
  name: dsh-daily-context-budget
  config:
    enabled: true
    warnAt: 0.7
    criticalAt: 0.85
    contextWindows:
      deepseek-chat: 128000
    fallbackWindow: 128000

提示词:「看下当前上下文水位;到 70% 提醒我,85% 时建议我压缩或新开会话。」

P1 · 个人助手线

documents

本地办公文档解析(PDF / DOCX / XLSX / PPTX + 可选 VLM OCR),核心差异化是引用位置回传:PDF 到页码、XLSX 到 工作表!单元格、PPTX 到幻灯片号(含备注页)、DOCX 到标题路径。先搜索定位、再按需提取,避免整文档灌入上下文。只读工具,不写任何文件;VLM OCR 默认完全关闭、零网络。

工具作用
document_inspect快速探测格式/页数/工作表名/文档属性,不提取正文
document_extract提取带引用的结构化内容块,按 maxChars 截断
document_search关键词搜索,返回引用位置 + 上下文片段
spreadsheet_readXLSX 专用 A1 区域读取(上限 20000 单元格)
ocr_imageVLM 桥接 OCR(OpenAI 兼容端点),默认关闭
- id: documents
  name: dsh-daily-documents
  config:
    enabled: true
    defaultMaxChars: 20000
    searchMaxResults: 20
    vlm:                     # 可选:默认完全关闭、零网络
      enabled: true
      baseURL: https://api.openai.com/v1
      apiKeyEnv: OPENAI_API_KEY    # Key 从该环境变量读取,不写进配置
      model: gpt-4o-mini

提示词:「用 document_inspect 看下这份 PDF 的结构,搜索『违约金』命中的页码,再提取那几页的内容。」

local-memory

文件系统级本地资料检索层:持续索引磁盘上指定的真实文件夹,增量更新(mtime+size 比对),关键词检索返回 文件路径:行号 引用。自研倒排索引(拉丁词 + CJK 二元组,中文免分词器),存储只是一个 JSON 文件;.git/node_modules/.ssh/.aws 等敏感目录默认排除。全程本地、零网络、零 native。

工具作用
memory_index索引指定文件夹(递归);重复调用即增量更新
memory_search关键词检索,命中带 路径:起始行-结束行 引用与上下文
memory_get_source按引用取原文片段(仅限已索引文件夹内)
memory_remove删除指定文件夹的索引,绝不改动原始文件
memory_status索引状态:文件夹数、文件数、块数、占用空间
- id: local-memory
  name: dsh-daily-local-memory
  config:
    enabled: true
    # indexDir: D:/data/dsh-index      # 默认 ~/.dsh/local-memory
    # maxFileBytes: 1048576
    # extraExcludes: ['family-photos']
    # searchMaxResults: 20

提示词:「用 memory_index 索引我的 notes 文件夹,然后搜一下『rust 生命周期』相关的笔记,给出文件和行号。」

scheduler

cron 风格的全局定时任务调度器。与核心 dsh-schedule 分工:核心的 after_seconds/every_seconds 是会话内「提醒我一下」;本插件用标准 5 段 cron 表达「每天 9 点」「每周一」,任务持久化跨会话跨重启,到点在新建隔离会话或指定会话中执行 prompt,并记录结构化运行历史;重启后按 latest-only 补跑最近一次漏触发。

工具作用
schedule_createcron + prompt + 目标(isolated 默认 / session),返回未来 3 次触发预览
schedule_list / schedule_update / schedule_pause / schedule_delete任务管理面
schedule_history结构化运行历史(成功/失败/跳过、耗时、输出摘要)
schedule_run_now立即手动触发一次并等待结果
- id: scheduler
  name: dsh-daily-scheduler
  config:
    enabled: true
    # timeZone: Asia/Shanghai     # 缺省用系统时区
    # dataFile: scheduler-store.json
    # catchUp: true               # 启动时 latest-only 补跑

提示词:「建一个任务:每个工作日早上 8:05 提醒我整理今日待办,cron 用 5 8 * * 1-5。」

watcher

内容理解型监控:RSS/Atom 条目级 GUID 去重 + etag/last-modified 条件请求、网页正文提取 + 归一化 hash 判变、文件夹新增文本文件预览注入。变化通过 followup 投递到新建隔离会话或指定会话;首次检查只建基线,连续失败指数退避,遇登录墙/抓取限制自动暂停并说明原因。与 dsh-sentinel(边沿信号型监控)互补,可共存。

工具作用
watch_add新增监控:kind(rss / webpage / folder)+ target + 可选间隔与投递目标
watch_list / watch_pause / watch_remove监控管理
watch_check立即检查一次(暂停中也可手动触发)
watch_history检查历史(unchanged/changed/blocked/error、是否投递)
- id: watcher
  name: dsh-daily-watcher
  config:
    enabled: true
    dataFile: watcher-store.json
    defaultIntervalSeconds: 1800
    maxItemsPerDelivery: 10
    summarize: false              # true 时由目标会话 agent 自行总结

提示词:「用 watch_add 订阅这个 RSS 源,每 30 分钟检查一次,有新条目时投递给我并列出标题。」

calendar

读取优先的日历访问:统一 CalendarProvider 接口下接 Google Calendar(API v3)与通用 CalDAV(iCloud / Fastmail / Nextcloud)。写操作(创建/修改事件)默认关闭,writesEnabled: true 才注册。凭证务实方案:无内置 OAuth 跳转,用户自备 token 走环境变量(获取步骤见 packages/calendar/README.md);配齐 refresh 三件套后过期自动刷新。

工具作用注册条件
calendar_list按时间范围列出事件(默认今天起 7 天)始终
calendar_get单个事件详情始终
calendar_freebusy合并忙碌块 + 足够长的空档始终
calendar_create / calendar_update创建/修改事件(标注高风险 L2)writesEnabled: true
- id: calendar
  name: dsh-daily-calendar
  config:
    enabled: true
    provider: google        # google | caldav
    writesEnabled: false
    timeZone: Asia/Shanghai
    google:
      calendarId: primary
      accessTokenEnv: GOOGLE_CALENDAR_TOKEN
    # caldav: { serverUrl: https://caldav.icloud.com, usernameEnv: CALDAV_USERNAME, passwordEnv: CALDAV_PASSWORD }

提示词:「列出我这一周的日程,然后找一个明天下午两小时的空档。」

mail

邮箱读取、分类浏览、摘要与回复草稿。首版只读 + 本地草稿:不调用任何发送、删除、改标 API。Provider 首版实现 gmail(Gmail API v1,全部 GET);自研 MIME 解析(嵌套 multipart、base64/quoted-printable、RFC 2047 编码头、UTF-8/GBK)。回复草稿写本地目录(.emlX-Unsent: 1 与正确的 In-Reply-To/References),由用户自查后自行发送。

工具作用
mail_search按关键词/发件人/时间范围/未读/标签搜索,返回摘要列表
mail_read读取单封完整正文;附件默认只返回元数据
mail_thread展开会话线程,按时间正序
mail_draft_reply生成回复草稿写入本地草稿目录,绝不发送(L1 本地写入)
- id: mail
  name: dsh-daily-mail
  config:
    enabled: true
    provider: gmail
    draftDir: ./mail-drafts
    downloadAttachments: false
    gmail:
      accessTokenEnv: GMAIL_ACCESS_TOKEN
      # refreshTokenEnv / clientIdEnv / clientSecretEnv 三件套可选:配齐后 401 自动刷新

提示词:「搜一下过去三天的未读邮件,挑出需要回复的,各写一份简短草稿放到草稿目录,不要发送。」

tasks

跨会话的持久个人待办清单(GTD)。与内置 todo_write 分工:后者是 agent 单次任务的执行计划,会话结束即止;本插件是跨会话的长期待办。本地 JSON 存储(原子写),Provider 接口已为 v2 远程后端(Todoist / Microsoft To Do)预留。

工具作用
task_add新增待办:标题、优先级、截止日期、标签、备注、来源标记
task_list过滤列表:状态/标签/优先级/截止范围/关键词
task_update改字段、迁移状态(open/done/cancelled)
task_get单条详情
task_summary四桶总览:逾期 / 今日到期 / 本周 / 无日期
- id: tasks
  name: dsh-daily-tasks
  config:
    enabled: true
    provider: local            # v1 仅 local
    local:
      dataFile: tasks-store.json

提示词:「把『周五前交周报』加成高优先级待办;然后给我 task_summary 的四桶总览。」

location

天气查询、地点搜索、营业时间查询、路线距离——全部只读,全部走免密钥公共服务(Open-Meteo / OSM Nominatim / Overpass / OSRM 公共实例),开箱即用,无需任何凭证。

工具作用数据源
weather_get地名 → 当前天气 + 逐小时/逐日预报(1–16 天)Open-Meteo
place_search关键词(可带城市/坐标偏置)→ 结构化地点列表OSM Nominatim
place_hours营业时间解析 + 「是否营业中」判定Overpass API
route_distance两点距离/时长(驾车/步行/骑行),附直线距离OSRM 公共实例
- id: location
  name: dsh-daily-location
  config:
    enabled: true        # 以下为默认值,可不写
    language: zh
    defaultForecastDays: 7
    retry: true

提示词:「查一下上海明天的天气,再找陆家嘴附近现在还在营业的咖啡馆。」

receipts

发票/收据/支付截图识别与消费报告。两条识别路径:VLM 桥接(图片 → OpenAI 兼容端点,默认关;票据图像会发往所配端点,介意请走纯文本路径)与纯文本规则解析(完全离线)。识别结果带 uncertain 待确认标记,用户核对修正后落库本地 JSON 账本;报告按类别/商户/月份聚合,自动标记疑似重复票据与金额离群,可导出 CSV。

工具作用
receipt_scan识别单张票据(不落库):text 规则解析 / path 走 VLM
receipt_confirm核对/修正后写入本地账本
receipt_list账本查询(日期范围/类别/商户过滤)
receipt_report消费报告 + 异常标记;传 exportDir 导出 CSV
- id: receipts
  name: dsh-daily-receipts
  config:
    enabled: true
    dataFile: receipts-ledger.json
    defaultCurrency: CNY
    vlm: { enabled: false, baseURL: https://api.openai.com/v1, apiKeyEnv: OPENAI_API_KEY, model: gpt-4o-mini }   # 图片识别路径,默认关

提示词:「用 receipt_scan 识别这段收据文本,不确定的字段列给我核对,确认后落库,月底给我一份分类消费报告。」

transcription

音/视频文件转录 + 章节与待办提取。双引擎:openai-compatible(默认,云端 /audio/transcriptions,Groq 等兼容端点改 baseURL 即可)与 local-whisper(本地 whisper.cpp 子进程,全离线)。章节与待办均为本地启发式(静音分章/关键词命中),不做模型调用。视频输入与时间范围裁剪依赖 ffmpeg(不内置)。无说话人分段(两引擎都不做 diarization)。

工具作用
transcribe_file转录音/视频为结构化结果:transcript(带时间分段)+ chapters + actionItems
transcript_format导出 plain / srt / vtt 到指定目录
- id: transcription
  name: dsh-daily-transcription
  config:
    enabled: true
    provider: openai-compatible   # 或 local-whisper(全离线)
    ffmpegPath: ''                # 视频输入/云端裁剪必需
    openai: { baseURL: https://api.openai.com/v1, apiKeyEnv: OPENAI_API_KEY, model: whisper-1 }
    # whisper: { binaryPath: whisper-cli, modelPath: ggml-base.bin }   # local-whisper 时必填 modelPath

提示词:「用 transcribe_file 转录这段会议录音,给我章节概览和待办清单,然后导出 srt 字幕。」

凭证与环境变量汇总

所有凭证一律从环境变量读取——配置文件里只写变量名,插件从不把凭证写进配置、日志或历史。不需要凭证的插件(approval-guard、cost-meter、session-export、context-budget、local-memory、scheduler、watcher、tasks、location)未列入。

环境变量插件用途必需性
GOOGLE_CALENDAR_TOKENcalendarGoogle Calendar access tokenprovider=google 时必需
GOOGLE_CALENDAR_REFRESH_TOKEN + GOOGLE_CALENDAR_CLIENT_ID + GOOGLE_CALENDAR_CLIENT_SECRETcalendartoken 过期自动刷新三件套可选
CALDAV_USERNAME / CALDAV_PASSWORDcalendarCalDAV 账号 / App 专用密码provider=caldav 时必需
GMAIL_ACCESS_TOKENmailGmail access token必需
GMAIL_REFRESH_TOKEN + GMAIL_CLIENT_ID + GMAIL_CLIENT_SECRETmail401 自动刷新三件套可选
OPENAI_API_KEY(默认变量名,可配 apiKeyEnvdocuments / receipts / transcriptionVLM OCR、票据图片识别、云端转录端点的 API Key对应功能开启时必需
GROQ_API_KEY(示例)transcription换 Groq 等兼容转录端点时的 Key按端点而定
OLLAMA_HOSTollama-adapterOllama 端点地址(非凭证)可选,回退 http://localhost:11434
—(webhook URL 写在配置内)notifywebhook URL 本身即凭证(如飞书/钉钉机器人 URL 含密钥),请按凭证标准保管配置文件启用 webhook 渠道时

Bundle

bundle 本身不含代码,只做组合与默认值钉版:安装时应用包内 cordis.patch.yml,向 cordis.yml 插入各插件行。覆盖配置遵循整行覆盖规则(见「快速开始」)。

dev-buddy — 编码 Agent 安全与成本底座

组合 approval-guard + notify + cost-meter:风险分级审批门、运行结束/待审批/出错通知、token 花费与预算警告。

dsh plugin add dsh-daily-bundle-dev-buddy

bundle 默认要点:defaultLevel: 2、L1 会话记忆开、L3 硬拒绝、审计开;notify 只开桌面渠道;cost-meter 用内置定价表、持久化开、预算关闭(设 dailyUsd/weeklyUsd 启用)。

evidence-wall — 持续话题跟踪

组合 watcher + local-memory + documents + notify:监控信息源、建立本地资料库、解析文档、关键变化通知。

dsh plugin add dsh-daily-bundle-evidence-wall

示例提示词:

持续跟踪这个话题:[填写话题]。用 watch_add 订阅我给你的信息源,优先读取原始公告、论文和项目资料。
发现的资料用 memory_index 收入资料库,文档用 document_extract 提取。
每条证据写清来源、发布日期、能证明什么和无法证明什么。
发现关键变化时用 notify_send 通知我,证据不足时保留暂时结论。

inbox-zero — 收件箱清零

组合 mail + tasks + calendar + approval-guard:把未处理邮件分成需要回复、可以归档、应转成待办三类,所有写操作先经你确认。前置:Gmail 访问凭证(GMAIL_ACCESS_TOKEN)。

dsh plugin add dsh-daily-bundle-inbox-zero

示例提示词:

检查过去三天的未读邮件。按需要回复、可以归档和应转成待办分类。
为需要回复的邮件生成简短草稿,应转成待办的用 task_add 建任务并带上邮件来源。
任何发送、归档和创建待办操作都先让我确认。

daily-briefing — 晨间简报

组合 calendar + tasks + location + watcher + scheduler + notify:每个工作日早上自动生成一份只保留「会影响今天行动」的简报。前置:日历凭证(Google token 或 CalDAV 账号);无需天气/地图 key。最常改的是 scheduler 的 timeZone(bundle 默认 Asia/Shanghai)——改时记得整行重写。

dsh plugin add dsh-daily-bundle-daily-briefing

示例提示词:

用 watch_add 订阅这五个信息源:[填写 RSS/网页]。
用 schedule_create 建一个任务:cron `5 8 * * 1-5`,内容如下——
读取今天的日历和 task_summary 的未完成任务,查询[你的城市]天气,再检查 watch_history 里订阅源的变化。
只保留会影响今天行动的内容,把需要我确认的事项放在最前面,最后用 notify_send 通知我简报已就绪。

组合玩法

证据墙流(watcher → local-memory → documents → notify):watcher 盯住的 RSS/网页出现新条目后,投递消息驱动 agent 把资料落进 local-memory 索引;遇到 PDF/表格类附件用 documents 按引用位置提取;关键变化用 notify 推到桌面。memory_search 返回的 文件:行号 引用让每条证据都可回查原文——这正是 evidence-wall bundle 的预设流程。

收件箱流(mail → tasks,approval-guard 把关)mail_search 筛出未读,mail_draft_reply 起草回复落本地草稿目录,行动项用 task_add 带上 source: mail:<id> 溯源;approval-guard 确保每次写操作都经你确认。邮件绝不自动发送——草稿由你检查后用邮件客户端发出。

晨报流(scheduler 触发,calendar + tasks + location + watcher 供料,notify 投递):scheduler 的 cron 任务到点在隔离会话里执行简报 prompt,依次读今日日程、待办四桶、天气和订阅源变化,汇总后经 notify 通知你。各插件互不感知,靠 prompt 编排——换掉任何一个供料源(比如不要天气)只需改任务 prompt。

已知边界

  • 进程存活才调度:scheduler 与 watcher 都是进程内调度——dsh 不运行时无人触发。重启后 scheduler 按 latest-only 补跑最近一次漏触发(catchUp: false 可关);watcher 的账本持久化,旧条目不重复推送。
  • 未经真实运行时端到端验证:CI 只覆盖类型检查与纯函数/注入替身单测。各插件 README 的「手动验证」章节给出了接入真实 dsh 后的逐步核对清单。
  • developer preview 版本锁定:全部插件 peerDependencies@deepseek-ai/cordis: >=4.0.1-rc.4 <4.0.2 窄区间,Node engines 锁 ^22.19 || >=24。上游 rc 签名随时可能变化,兼容性 CI(见下)用于第一时间发现断裂。

开发指南

前置:Node.js ^22.19 或 >= 24,包管理器使用 npm(workspaces)。

npm install          # 安装所有 workspace 依赖
npm run build        # 构建全部插件
npm run typecheck    # 全部插件 tsc --noEmit
npm test             # 全部插件单测(node:test)

新建插件

node scripts/create-plugin.mjs <plugin-name>
npm install   # 让根 workspace 识别新包

生成器会在 packages/<plugin-name>/ 下产出完整骨架:package.json(含 dsh.bundle.patch 声明)、tsconfig.jsoncordis.patch.ymlsrc/index.tsname/Config/apply 模板)、src/config.ts、占位单测、README(含权限透明章节模板)、SECURITY.md、CHANGELOG.md。

插件工程约定

  • 对齐 dsh 官方插件风格:函数插件导出 name / inject / apply(ctx, config);Config 用 @deepseek-ai/schemastery,schema 与接口同名导出,叶子字段带 .default()
  • peerDependencies 锁窄区间(如 @deepseek-ai/cordis: >=4.0.1-rc.4 <4.0.2),dsh 类型包放 devDependencies 用于编译期核对。
  • 决策逻辑写成不依赖 dsh 运行时的纯函数模块,index.ts 只做接线,保证 node:test 可全覆盖。
  • 代码注释用英文(对齐 dsh 源码风格),README/SECURITY 用中文。

仓库结构

dsh-daily-kit/
├── packages/            # 16 个独立的 dsh 插件
│   ├── approval-guard/  notify/  cost-meter/  session-export/  ollama-adapter/  context-budget/   # P0 开发者工具线
│   ├── documents/  local-memory/  scheduler/  watcher/  calendar/  mail/  tasks/  location/  receipts/  transcription/   # P1 个人助手线
├── bundles/             # 4 个组合 bundle(无代码,cordis.patch.yml 钉版)
│   ├── dev-buddy/  evidence-wall/  inbox-zero/  daily-briefing/
├── scripts/
│   └── create-plugin.mjs   # 插件模板生成器
├── .github/workflows/
│   └── compat.yml          # 生命线 CI:每日对 dsh 最新 rc 做类型与单测验证
└── tsconfig.base.json      # 所有插件共享的 TS 基线(NodeNext ESM strict)

兼容性 CI

.github/workflows/compat.yml 是本集合的生命线:每日定时 + push 触发,安装 npm 上 dsh 主线最新 rc 的类型依赖后,对全部插件跑 tsc --noEmit 和单测。dsh 处于 developer preview,上游签名随时可能变化,此 CI 用于第一时间发现断裂。

许可

MIT