前言¶
在 DSH 里跑工作流时,常见情况是:上游插件已经按天往固定目录里写 Markdown 日报,但对话里很少有人真的去打开那篇文件。手动找路径、复制进会话,模型还容易把报告原文复述一遍,而不是谈自己的理解。DeepSeek Harness 的生态是「一切皆插件」——能力通过插件挂进 profile,社区目录在 skillhub.cn 独立维护,与 DeepSeek / 幻方无官方从属关系。下面介绍维护者 hzh5021 的工作流类插件 dsh-daily-read:它只负责「去读最新那一篇」,并把读法写进一条命令和一个侧栏按钮。
这是什么¶
dsh-daily-read(GitHub:hzh5021/dsh-daily-read,目录页:skillhub.cn/plugins/hzh5021/dsh-daily-read)注册 slash 命令 /daily,在固定日报目录里按文件名挑出最新一篇 YYYY-MM-DD.md,向当前会话注入一条 user 消息——内容是「去读 <路径>」,并明确要求读原文、说自己的理解、不要复述报告结论。侧边栏另有「读日报」入口,主区一页按钮通过 RPC 执行同一条命令。它不生成日报,日报来自第三方插件 dsh-bili-scroll 写入的 ~/.dsh/bili-duty/out。
核心功能¶
命令 /daily¶
宿主侧(lib/index.js)向命令注册表注入 daily,描述为「读最新那篇刷 B 站日报(读完说自己的理解,不复述)」。
newestReport()对日报目录做readdir,只认文件名形如YYYY-MM-DD.md的文件,按字典序取最后一个作为「最新」。- 找到文件后,通过
agent.steer()注入上述 user 消息;只给路径、不把正文塞进消息,是为了让模型去翻原文,而不是念报告。 - 目录不存在、或目录里没有匹配文件时,返回
{ kind: "error", text: "还没找到日报:<目录> 里没有 YYYY-MM-DD.md" },错误里带目录路径,便于判断上游是否未跑。 - 宿主未暴露
agent.steer时返回错误,不静默失败。
侧栏「读日报」面板¶
客户端(lib/client.js)注册 sidebar.panellist(id daily-read,标签「读日报」)和对应 main 页面:一个按钮加说明。点击后调用 ctx.remote.commands.execute(sessionId, "/daily", []),与命令面板里执行 /daily 同一路径;完成后 ctx.layout.selectPanel(null) 回到对话界面,回执与模型回复都在对话里。
面板打开时主区已切换,无法直接读「当前输入框里的会话」,因此客户端订阅 ctx.sessions.list,把最近一次被主区保留(retainedBy.mainView > 0)的会话记为 lastSessionId,按钮发往该会话。若认不出会话,面板会提示先点开一个会话再回来按。失败原因会显示在面板上,而不是无反馈。
安装与启用¶
官方安装命令如下(来自仓库 README):
dsh plugin add hzh5021/dsh-daily-read
装好后需重启 DSH。包声明 dsh.client,设置页/侧栏随 profile 加载;插件行由本包 cordis.patch.yml 插入,profile 的 cordis.yml 为生成物,不要手改。
若手工接入,README 给出四步:将包放入 ~/.dsh/plugins/dsh-daily-read/;在 profile 的 package.json 的 dependencies 增加 "dsh-daily-read": "file:../../plugins/dsh-daily-read" 并在 profile 的 node_modules/ 下保留同名联接;在同一份 package.json 的 dsh.profile.bundles 中加入 "dsh-daily-read";重启 DSH。
运行环境:package.json 要求 Node >=18,许可证 MIT,当前资料中版本为 0.2.1。插件以当前 DSH 进程权限运行,安装前宜自行查看源码与许可证。
配置¶
无配置项。 日报目录、命令名、注入文案均写在代码里:
- 日报目录固定为
~/.dsh/bili-duty/out(用户 home 下的.dsh路径)。 - 要换目录需改源码,不能通过配置文件改。
典型用法¶
- 确保 dsh-bili-scroll(或等价流程)已在
~/.dsh/bili-duty/out产出YYYY-MM-DD.md。 - 在 DSH 中安装并重启本插件。
- 打开任意会话,输入
/daily并执行;或点侧栏「读日报」再按按钮。 - 在对话中查看模型是否按路径读取文件并给出理解,而非复述报告。
README 建议的冒烟方式:装好重启后,在会话里敲 /daily,观察模型是否去读对应文件。包内无自带 test/ 目录。
适用场景与注意¶
适合谁: 已用 dsh-bili-scroll 类插件每日落盘刷 B 站日报、希望在 DSH 里用一条命令或按钮触发「读最新 + 说理解」的开发者。
依赖与边界:
- 强依赖
~/.dsh/bili-duty/out与YYYY-MM-DD.md命名;上游未写文件时/daily仅返回错误。 - 宿主需暴露
commands;侧栏按钮还需remote.commands。客户端inject使用服务短名(如remote、remote.commands等),与package.json里dsh.client.inject的全名写法不是同一套,改错会导致 web boot 激活失败。 - 「点按钮」路径 README 注明无自动化测试;命令路径由宿主注册表承担。
结尾¶
dsh-daily-read 把「找最新日报、注入读文件指令、要求说理解而非复述」收成 /daily 与侧栏同效按钮,补的是「有人写、没人读」这一段工作流。进一步了解可访问 目录页 与 GitHub 仓库。