Back to home@ShineFree7

dsh-daily-log

Daily work log plugin for DeepSeek Harness: /daily scaffold + daily_log_write/read/list tools, YYYY-MM-DD.md + theme-aware HTML dashboard

Stars
0
Language
TypeScript
Created
Aug 23, 2026
Updated
Aug 23, 2026
GitHub repo

Introduction

dsh-daily-log

dsh-daily-log 是 DeepSeek Harness 的每日工作日志插件。/daily 命令会生成 YYYY-MM-DD.md 和跟随系统浅色/深色主题的 YYYY-MM-DD.html 仪表盘;同时提供 三个面向模型(agent)的工具用于读取、合并、列出日志。所有文件都写入配置的 outputDir,默认是 ~/.dsh/daily-log

dsh-daily-log is a daily work log plugin for DeepSeek Harness. The /daily command scaffolds YYYY-MM-DD.md plus a theme-aware YYYY-MM-DD.html dashboard (system light/dark), and three model-facing tools read, merge, and list logs. All files are written under the configured output directory, defaulting to ~/.dsh/daily-log.

截图 Screenshots

浅色 / Light

Light

深色 / Dark

Dark

功能 Features

  • /daily 一键生成当天或指定日期日志:/daily/daily 2026-08-19/daily list

  • 六个固定区块:done(已完成)、changes(变更)、problems(问题)、 next(下一步)、improve(改进)、takeaways(经验)

  • Markdown 与 HTML 双格式;HTML 为仪表盘版并支持系统浅色/深色主题

  • 模型工具:daily_log_write(按区块合并写入,覆盖前自动 .bak 备份)、 daily_log_read(结构化读取)、daily_log_list(列出已有日志)

  • 支持 zh / en locale 配置

  • /daily scaffold for today or a specific date: /daily, /daily 2026-08-19, /daily list

  • Six fixed sections: done, changes, problems, next, improve, takeaways

  • Both .md and a dashboard-style, theme-aware .html (system light/dark)

  • Model tools: daily_log_write (section-level merge with .bak backups before overwrite), daily_log_read (structured read), daily_log_list (list dates, newest first)

  • zh / en locale support

布局 Layout

  • src/index.ts — Cordis 插件入口:注册 /daily 与三个工具

  • src/daily-log.ts — 日期解析、Markdown/HTML 渲染、合并写入(.bak 备份)、 读回解析、列表

  • cordis.patch.ymldsh.bundle 引用的补丁层

  • scripts/smoke.mjs — 无依赖 smoke 测试(Node 24 类型剥离)

  • assets/ — 浅色/深色截图

  • src/index.ts — Cordis plugin entry: registers /daily and the three tools

  • src/daily-log.ts — date parsing, Markdown/HTML rendering, merge-on-write with .bak backups, read-back parsing, listing

  • cordis.patch.yml — bundle patch layer referenced by dsh.bundle

  • scripts/smoke.mjs — dependency-free smoke test (Node 24 type stripping)

  • assets/ — light/dark screenshots

使用 Usage

面向用户的 /daily 命令:

Human-facing /daily command:

/daily              # today, default output directory
/daily 2026-08-19   # a specific date (scaffold only, never overwrites)
/daily list         # list existing log dates, newest first

面向模型(agent)的工具:

Model-facing tools:

  • daily_log_write — 写入某天日志。合并规则:只覆盖你传入的区块,未传的 区块保留原内容(首次写入时缺失区块渲染为提示占位)。即将被覆盖的文件会先备份 为 YYYY-MM-DD.bak.md / .bak.html。六个区块中至少提供一项:donechangesproblemsnextimprovetakeaways。空数组视为“未提供” (不会清空区块)。返回 updated / preserved / backups 供确认。
  • daily_log_read — 将某天日志读为结构化区块 + 原始 Markdown(省略 date 即今天)。
  • daily_log_list — 列出输出目录中全部日志日期,最新在前。

problems 的每条可写成“问题:xxx;解决:yyy”(也可用“处理方式:”“,改用” 等自然写法);HTML 渲染时会自动拆分为“问题/解决”两栏,没有解决方式的条目 右侧显示横杠。

  • daily_log_write — write one date's log. Merging: only the sections you send are overwritten; omitted sections keep their previous content (a first write renders missing sections as hint placeholders). Files that will be overwritten are first backed up to YYYY-MM-DD.bak.md / .bak.html. Provide at least one of the six sections: done, changes, problems, next, improve, takeaways. Empty arrays count as "not provided" (never wipes a section). Returns updated / preserved / backups for confirmation.
  • daily_log_read — read one date's log as structured sections plus the raw Markdown (date omitted = today).
  • daily_log_list — list all log dates in the output directory, newest first.

Each problems item may use "Problem: xxx; Solution: yyy" (or natural phrasing such as "处理方式:" / ",改用" / "fixed by"); the HTML renderer splits it into a problem/solution pair, and an item without a solution keeps a dash on the right.

.md.html 始终渲染全部六个区块,.md 同时是合并数据源。如果手工编辑 破坏了生成格式,下次合并会明确报错而不是覆盖,daily_log_read 也会返回原始 Markdown 以便恢复。

Both .md and .html are always rendered with all six sections; the .md is also the merge source. If hand edits break the generated section format, the next merge fails loudly instead of overwriting, and daily_log_read returns the raw Markdown for recovery.

配置 Configuration

在 profile 的 cordis.patch.yml 中覆盖输出目录与语言:

Override the output directory and language from the profile's cordis.patch.yml:

- id: dsh-daily-log
  config:
    outputDir: 'D:\\dsh\\workspace\\daily-log'
    locale: zh   # 'zh' (default) or 'en'

outputDir 默认为 ~/.dsh/daily-log(不会使用 process.cwd());locale 控制区块标题、工具描述、命令输出和渲染文档的语言。

outputDir defaults to ~/.dsh/daily-log (never process.cwd()); locale controls section labels, tool descriptions, command output, and the rendered documents.

本地开发 Local development

包面向 Node >= 24,直接通过原生 TypeScript 类型剥离加载 src/index.ts, 本地链接无需构建步骤。运行 pnpm smoke 执行 smoke 测试;类型检查先 pnpm install,再 pnpm typecheck

The package targets Node >= 24 and loads src/index.ts directly through native TypeScript type stripping, so no build step is required for local links. Run the smoke test with pnpm smoke. Type checking needs pnpm install first, then pnpm typecheck.

安装到 profile:

Install into a profile:

dsh plugin --profile web add /absolute/path/to/dsh-daily-log