把 DeepSeek Harness 会话整理成日报、周报、交接与文章稿件,支持可核验的 HTML 导出与复核收据。
安装
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:ciceroyang/dsh-report-studio
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
让 agent 干完活,顺手把"干了什么"写成能直接交出去的东西。
把一次 DeepSeek Harness 会话转成工作日报 / 周报 / 交接文档 / 公众号文章, 并附上可验证的凭据块(报告哈希 + 产物哈希),用于检测保存后的报告或引用产物 是否发生变化。
状态:可用。当前版本见 Releases。跟随 Harness 开发者预览节奏,接口可能变化。
特性
- 4 套开箱即用模板:daily(日报)、weekly(周报)、handoff(交接文档)、article(公众号文章)
- 会话硬数据自动提取:用户诉求、任务清单、回合/步骤统计、Token 账本、工具调用、产出文件、执行命令、错误与阻塞——全部来自会话事件日志,不靠模型回忆
- 可验证凭据块:每份报告末尾自动追加会话 ID、工作区、生成时间、报告 SHA-256 与产物 SHA-256
- 落盘安全:目标路径强制限制在会话工作区内,拒绝绝对路径逃逸与
..穿越 - 模板可定制:内置模板可整体覆盖,占位符见下文
- 免构建:纯 ESM,直接
dsh plugin安装或--patch加载,无编译步骤
安装
需要 Node.js ≥ 18,以及 DeepSeek Harness(npx @deepseek-ai/dsh web 或源码运行)。
方式一:plugin 安装(需要 pnpm)
dsh plugin --profile web add github:ciceroyang/dsh-report-studio#v0.4.4
方式二:本地 / 源码覆盖层(无需 pnpm)
# 克隆仓库
git clone https://github.com/ciceroyang/dsh-report-studio.git
# 创建覆盖层文件 my-report.yml(注意:插件路径必须是绝对路径)
# - insert:
# - id: report-studio
# name: '/absolute/path/to/dsh-report-studio/index.js'
dsh web --patch ./my-report.yml
使用
对 agent 说(二选一):
- "写一份今天的工作日报"
- "把这次会话整理成交接文档,交接给接手人"
agent 会(work-report skill 已教会它):
- 调用
report_generate生成带硬数据与[[待写:…]]标记的草稿; - 用会话事实填满散文段落;
- 调用
report_save落盘并追加凭据块; - 回复你保存路径与报告哈希。
保存位置默认在工作区 reports/<kind>-<date>.md,可在调用时指定 path。
也可以直接在输入框敲命令即时预览草稿(不消耗模型回合):
/report daily # 或 weekly / handoff / article,中文别名 日报/周报/交接/公众号 也行
工具
report_generate
| 参数 | 必填 | 说明 |
|---|---|---|
kind |
是 | daily / weekly / handoff / article |
title |
否 | 自定义标题;省略时用会话标题或默认标题 |
period |
否 | 周期说明(如"2026-08-11 ~ 2026-08-17"),周报模板使用 |
返回:完整 Markdown 草稿。散文段为 [[待写:…]] 标记,由 agent 在两次调用之间填充。
report_save
| 参数 | 必填 | 说明 |
|---|---|---|
content |
是 | 最终报告全文(不含凭据块;所有 [[待写:…]] 必须已替换) |
path |
否 | 目标路径;省略时 reports/<kind>-<date>.md |
kind |
否 | 用于默认文件名;省略时 daily |
artifacts |
否 | 产出文件路径列表;存在的文件会被哈希进凭据块 |
format |
否 | md(默认)/ html — HTML 为独立可转发的文档,原始 Markdown 嵌入隐藏源块,report_verify 照常可核验 |
返回:绝对路径 + 报告 SHA-256 + 已核验产物列表。
report_week
聚合本周工作区内所有历史会话(读 $DSH_HOME/sessions 持久化日志)+ 当前会话,生成周报草稿,附"会话明细"表。历史日志读取需要 Node ≥ 22.15(内置 zstd);更老版本自动降级为仅当前会话。
report_verify
独立核验已保存报告的凭据块:重算报告 SHA-256 与每个产物哈希,逐项输出 match/missing。交付前自检或复核他人报告用。
| 参数 | 必填 | 说明 |
|---|---|---|
path |
是 | 已保存报告文件路径(工作区内) |
dir |
否 | 批量模式:核验该目录(相对工作区)下全部 .md 报告,输出 匹配/不匹配/无凭据 汇总 |
report_publish
把报告发布到飞书(自定义机器人 webhook)或 Notion(页面);target=dry 只预览载荷不发请求。
| 参数 | 必填 | 说明 |
|---|---|---|
target |
是 | feishu / notion / dry |
content |
否 | 报告全文;省略时从 path 读取 |
path |
否 | 已保存报告文件(工作区内) |
title |
否 | 飞书作为前缀,Notion 作为页面标题 |
配置:插件配置 publish.feishuWebhook / publish.notionToken + publish.notionParentPageId,或环境变量 FEISHU_WEBHOOK / NOTION_TOKEN / NOTION_PARENT_PAGE_ID。未配置时真实发布会明确报错,dry 永远可用。
| 参数 | 必填 | 说明 |
|---|---|---|
title |
否 | 自定义标题 |
period |
否 | 周期说明,如"2026-08-11 ~ 2026-08-17" |
自定义模板
模板是普通 Markdown 文件,支持以下占位符(数据段由插件确定性填充):
{{TITLE}} {{DATE}} {{PERIOD}}
{{META}} 会话 ID / 工作区 / 起止时间 / 标题
{{TASKS}} 用户诉求 + 任务清单快照
{{STATS}} 回合 / 步骤 / 工具调用 / Token 账本 / 结束原因
{{TOOLS}} 工具调用统计表
{{FILES}} 产出与读取的文件
{{COMMANDS}} 执行过的 shell 命令
{{ERRORS}} 工具错误与阻塞
{{TIMELINE}} 逐回合时间线
{{SESSIONS}} 周报会话明细表(report_week 聚合)
散文段写 [[待写:说明]],agent 保存前会填满。
放一份同名模板到自定义目录(如 daily.md),并在插件配置里声明:
- insert:
- id: report-studio
name: dsh-report-studio
config:
templatesDirs:
- '/absolute/path/to/my-templates'
内置模板在此仓库 templates/ 目录,可直接复制修改。
凭据块样例
## 报告凭据 Report Receipt
| 项 | 值 |
|---|---|
| 会话 Session | session-1c1e5d0c-… |
| 工作区 Workspace | /Users/you/project |
| 生成时间 Generated | 2026-08-14T08:00:00.000Z |
| 报告哈希 Report SHA-256 | 9f2c… |
| 产物 Artifacts | README.md → 3a1b… |
定时周报
两条路径(work-report skill 会按会话实际能力选择):
harness 内(官方工具):若组合已挂载 dsh-schedule,对 agent 说"每周五 18:00 自动出本周周报",它用
schedule_create落地(时区必须显式)。系统级(零依赖,数据段全自动):仓库
scripts/auto-weekly.mjs不依赖模型,聚合本周全部会话、填好所有数据段、保存草稿(prose 留 [[待写:…]]);配 launchd/cron 每周五 18:00 跑,之后开个会话说"填好并保存"即可。macOS 示例:node scripts/auto-weekly.mjs <工作区> --out reports/weekly-auto.md
已知限制
- report_week 跨会话聚合读取 $DSH_HOME/sessions 历史日志(多帧 zstd),历史读取需 Node ≥ 22.15。
- 落盘走 Node 原生 fs,不经过 Harness 的 fs 策略层;路径逃逸防护在插件内实现。
- 报告工具要求调用发生在 agent 会话内(headless 与 web 均满足)。
文档与示例
- 中文实战教程:从零到发布 — 完整开发复盘,含 6 个实测坑
- 插件脚手架 — 一键生成同款插件工程
- 环境体检 — 本地环境一键自诊(端口/依赖/profile/日志)
- 日报样例 — 真实会话产出的日报(含凭据块)
贡献
欢迎 Issue 与 PR(拼写修正、模板新增、翻译、测试)。发布前跑:
npm test
许可证与赞助
MIT。如果它帮你省了写日报的时间:
- 国内赞助:爱发电(提现到支付宝;GitHub Sponsors 不支持大陆收款)
- 海外赞助:GitHub Sponsors
为开源社区贡献,向 DeepSeek Harness 的"一切皆插件"理念致敬。
链接
同类插件
tt-a1i/archify#integrations/deepseek-harness★ 89901
从仓库或系统描述生成经过校验的自包含交互式架构图、流程图、时序图、数据流图和生命周期图。
dream-num/dsh-univer-office★ 614
为 DeepSeek Harness 打造一个真正的办公环境。Univer Office 插件将电子表格、文档、幻灯片、画布、多维表格等汇聚到同一个运行时——数据互联、修改经过校验、变更按版本管理,并以隔离工作树支持多 Agent 协作。
ECNU/EduWork#dsh-knowledge-studio★ 246
基于工作区资料的 Studio,复用 DSH 模型与共享成果服务,制作报告、演示文稿、表格、思维导图、测验、闪卡及音视频。Office 生成需 Python 3.12+ 及相关依赖,并配置 DSH_OFFICE_PYTHON;媒体渲染需 Chromium;本地语音转写另需 whisper.cpp 和模型。
PerryLink/dsh-industry-research★ 214
面向 DeepSeek Harness 的确定性行业研究报告:公司与行业研究流程基于分阶段证据产出结构化、可核验的报告。
HuanLinOTO/dsh-plugin-mineru★ 48
向模型暴露 MineRU 文档解析工具。
PolinniZhong/dsh-knit★ 47
把会话工作区里已有的 Markdown 文档、源码、图片与视频列进 DSH 侧边栏,按与当前对话的相关性排序。默认的词法模式用最近几条消息在本地与标题、摘要、正文做带 IDF 加权的匹配(BM25)—— 不调用模型、没有网络出口,内容不出本机。列表来自工作区扫描,而不是「最近打开记录」,所以重启 DSH 或新开会话都不会变空。排序结果组织成主要 / 辅助 / 相关三层的阅读顺序,每一条都写明可核验的理由(命中了哪个字段、被哪一篇引用),点一行即可就地预览:Markdown 按渲染后的样子显示、相对路径图片真实渲染、源码走宿主自带的语法高亮、视频走 HTTP Range 流式播放。同一份 Context Pack 也作为 knit_docs 工具交给 agent。后续版本陆续补上读取证据与生命周期(归因在读那一刻冻结)、固定 / 排除(排除先于检索生效,且可恢复)、关系证据(引用 / 导入 / 测试,带行号)与增量索引(重启后复用)。v0.23 起还多一条可选的混合检索:默认关闭,只有你自己配好 Ollama 或 OpenAI 兼容的 embedding 服务才会生效。它生效时,发出去的是你这句查询原话加上每篇候选文件的标题与摘要 —— Markdown 的摘要取自正文首段(不超过 60 字),代码的摘要是它所在的工作区相对目录,图片 / 视频贡献的是文件名;完整正文与绝对路径都不发送,指向本机服务(loopback)时内容不出这台机器。v0.24 起还能做变更关联:用一条只读的 git status(固定 argv、不走 shell、子进程环境白名单),配合同一套引用 / 导入 / 测试 / 提及证据,指出这次改动大概率该一起看哪些文件 —— 默认关闭。语义检索的收益仍待真 provider 实测,因此不承诺召回提升。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。