zhouwei713 / dsh-daily-kit

Listed

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

mainOther View source

Installation

npx -y @deepseek-ai/dsh plugin --profile web add github:zhouwei713/dsh-daily-kit

This installation command is an unverified starting point generated from the GitHub repository address.

README

Maintainer-authored documentation snapshot.

View on GitHub ↗
Commit ab3165aSynced Aug 18, 2026

dsh-daily-kit

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

⚠️ 状态声明:dsh 与本集合均处于 developer preview。全部插件已通过 tsc --noEmit 类型检查与 596 个单测(node:test),并在 dsh 0.1.0-rc.6/rc.7 上完成真实启动加载验证(npm 安装路径实测可用)。功能性调用(尤其需要凭证的外部服务)仍建议按各插件 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 插入各插件行。覆盖配置遵循整行覆盖规则(见「快速开始」)。

注意:不要把单插件和包含它的 bundle 装进同一个 profile(例如先装 dsh-daily-notify 又装 dsh-daily-bundle-dev-buddy)——两层会插入相同 id 的插件行,dsh loader 会报 duplicate loader entry id 并拒绝启动(已实测)。二选一即可;bundle 里已含该插件。

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

Project files and signals

Shown items are public repository signals detected in the directory snapshot.

TestsDetected
Security policyDetected

Repository information

Language
TypeScript
License
MIT
Last updated
Aug 17, 2026, 5:01 PM

Install deliberately

Review source code, permissions, lifecycle hooks, dependencies and network access. Test untrusted plugins in an isolated environment.