DeepSeek Harness Plugin

meihaoyidian/life-workbench

Stars ★ 0 Downloads (30d) 128 Category UI Enhancements Added 2026-09-20 npm dsh-life-workbench

Personal workbench panel with an overview dashboard, custom kanban boards, a note pad and a file library, persisted to local JSON by the host.

Install

# from npm (prebuilt)

dsh plugin --profile web add dsh-life-workbench

# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)

dsh plugin --profile web add github:meihaoyidian/life-workbench

Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).

README

This plugin publishes its README in Chinese only.

DSH Web GUI 的个人工作台插件 —— 把「工作 / 生活 / 每日事项」收进一个玻璃拟态面板,一页完成全部日常交互。

  • 总览:统计 + 执行 + 记录,所有操作就地完成,不用跳页
  • 看板:多列看板,可自定义增删看板与事项,事项可挂附件
  • 资料:上传文件与图片的总库,标注归属,可预览放大
  • 每日事项:跨天自动归档当天明细(保留 90 天)再重置,可回顾

安装

dsh plugin --profile web add dsh-life-workbench

装完 重启 dsh host 并刷新浏览器,侧边栏出现「工作台」图标。

功能细节

总览

区段 内容
开头 问候 + 5 个 KPI 读数(今日完成 / 今日待办 / 累计完成 / 近七天 / 资料)
统计 完成趋势(点击任意柱子回顾当天逐条明细)、看板进度
今日 今日执行、最近完成
记录 随手记、资料缩略图与上传

今日执行是一个统一列表:填了时间就是日程,不填就落进所选看板 —— 不用先想"我该用哪个入口"。日程按天归属,跨天自然不再出现。

看板

  • 事项:双击改名、勾选完成、删除
  • 事项附件:点回形针 → 上传即归属该事项
  • 删除事项时,它的附件退回总库而不是跟着消失

每日事项

跨天时先把当天逐条明细(标题 + 完成状态)归档进 history,再重置勾选。所以能回答"上周三做了什么",而不是只剩一个计数。

数据

存放在 $DSH_HOME/life-workbench/DSH_HOME 未设时即 ~/.dsh/life-workbench/):

state.json        工作台状态(看板 / 事项 / 便签 / 日程 / 归档)
blob-<id>.b64     上传的文件与图片
  • 单次上传上限 8 MB
  • 写入采用「临时文件 + rename」的原子替换,避免半截文件覆盖好数据
  • 从资料库移除条目不会删除磁盘文件(没有删除 API 语义时保留原件)

开发

零构建 —— 纯 ESM JavaScript,改完 lib/*.js 重启 dsh host 即生效(不需要 TypeScript 或打包器)。

package.json      包清单(dsh.bundle.patch + dsh.client 声明)
cordis.patch.yml  插件行插入声明
lib/index.js      Host 半边:数据权威 + HTTP 端点
lib/client.js     浏览器半边:__ModuleLoader__ 协议 + React UI

半边职责

  • Host:结构归一、每日事项跨天归档、原子落盘、暴露 4 个端点。只依赖 webServer 服务。
  • Client:通过 window.__ModuleLoader__.load({ id, factory }) 装载,用 require('react') 取 React,注册到 sidebar.panellist + main 两个 slot。

Host ↔ Client 通信

正式插件没有动态插件的 host.call,因此走同源 HTTP:

端点 作用
POST /life-workbench/load 读取状态(含每日归档与跨天重置)
POST /life-workbench/save 写入状态(history 以磁盘为准合并)
POST /life-workbench/upload 落盘一个 base64 文件
POST /life-workbench/readFile 读回某个文件的 base64

两个已知的实现约束

  1. Client 的 factory 必须 return module.exports —— 漏掉会让浏览器启动页报 invalid plugin ... received undefined

  2. link: 安装时包自带的 bundle patch 不会被 dsh 收集(roster 里没有该 bundle 的 section)。这只影响本地 link 开发,此时改用 profile 用户层:

    # ~/.dsh/profiles/web/cordis.patch.yml
    - insert:
        - id: ui-life-workbench
          name: 'dsh-life-workbench'
    

    dsh --profile web --dump-config | grep -A2 life-workbench 验证是否进入 roster。

    从 npm 安装没有这个问题 —— 已实测:roster 中会出现 # == dsh-life-workbench 段,装完即可用,不需要任何额外步骤。

许可

MIT

Content from the project README on GitHub ↗

Links

More in this category

View the whole category →

Community comments

Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.