Preface¶
After using DeepSeek Harness (DSH) for a while, I usually have more than one task at hand: a few repositories being modified, several unfinished projects started but left hanging, and a pile of sessions scattered across different workspaces. Session records lie in their respective workspaces. The current state of projects and the next steps must be remembered in my head, or pieced together by browsing directories and git logs. Kanban-style tools are either too workflow-centric or don’t fit well with local repositories and DSH sessions, and scheduled reporting basically requires writing your own scripts to make do.
Below is an introduction to dsh-project-deck, a community plugin maintained by peng456. It packages several things into a single plugin: “Project Registry + Visualization Panel + Scheduled WeChat Reporting + Auto-discovery + Multi-machine Scanning.” You first register a repository or directory, and then let the panel and scheduled reporting keep an eye on the progress for you.
What is it¶
dsh-project-deck is a project management plugin for DSH. The npm package is named dsh-project-deck, current version 0.1.8, author peng456, license MIT, and the plugin metadata declares engines.node >= 22.15. It solves the problem of “having no unified view of repositories, work-in-progress, and scattered sessions.” The README summarizes it as turning repositories, directories, and unfinished projects into a deck with visible progress.
It consists of two parts:
- A backend running locally, providing the
deckCLI, Web panel, and scheduler. - A frontend plugin integrated into DSH, placing a 📋 entry in the bottom-left corner of the desktop, which opens the panel when clicked.
Core Features¶
The README divides capabilities into four categories, explained below one by one.
- Project Registry. Register a project using
deck add <id> --root <path>. You can include aliases, types, priorities, and notes on next steps. Later, usedeck list,deck status, ordeck doctorto view the overall status. - Visualization Panel. Each project has a card showing git status, recent activity, and next steps. Clicking the project title jumps to its most recent DSH session. The panel entry can be dragged to any position on the page, and the position is remembered.
- Scheduled Reporting. By default, a WeChat message (text + dashboard image) is pushed every 4 hours. Projects with changes are listed first and expanded, while those without changes are collapsed into a single line. During idle hours (
schedule.quiet, default 00:30–06:30), neither reporting nor scanning occurs. - Auto-discovery and Multi-machine Scanning. Periodically scans DSH workspaces, git repositories, and marker files. Newly discovered projects exceeding the score threshold are automatically registered. Another machine or phone can run a read-only scanner node to report the project list to the host.
There are also three levels of autonomy switches: off / assist / auto. assist only provides options and recommendations. auto checks facts, selects plans, and performs reversible actions, putting irreversible actions like push / delete / publish into an approval queue for your confirmation. The rules are written in docs/AUTONOMY.md.
Installation and Enabling¶
The README provides a two-step installation process: first the backend, then the DSH plugin.
# 1. Backend (CLI + Panel + Scheduler)
git clone https://github.com/peng456/dsh-project-deck && cd dsh-project-deck && ./install.sh
# 2. DSH Plugin (npm or GitHub, choose one)
dsh plugin --profile desktop add dsh-project-deck
# dsh plugin --profile desktop add github:peng456/dsh-project-deck
# Or Desktop → Plugins → Search/Install dsh-project-deck
Step 1 installs the panel, deck CLI, and scheduler; Step 2 integrates the plugin into DSH. After installation, restart DSH. A 📋 icon will appear in the bottom-left corner, draggable and rememberable.
If you just want to see the effect first, the README provides a demo that doesn’t require installing any dependencies (requires Python 3.9+):
git clone https://github.com/peng456/dsh-project-deck
cd dsh-project-deck
python3 backend/deck demo # Generate 4 fake projects and start the panel
# → http://127.0.0.1:9299
This command generates 4 example projects and starts a panel. Open http://127.0.0.1:9299 in a browser to see what it looks like.
Typical Usage¶
Registering and viewing projects:
deck add blog --root ~/code/blog --kind content --note "每周一篇实测"
deck list / status / doctor
deck report # Immediate reporting (text + image)
deck scan / scan --add # Discover new projects
deck nodes add --id phone --name "我的手机" --platform android
deck demo # Demo environment
deck add registers a local directory as a project, --kind sets the type, and --note writes the next step. deck scan --add will actually write newly discovered projects into the registry. deck report is used for temporary manual reporting to verify if the channel is working.
The reporting output is plain text, for example:
项目播报 · 11-05 06:49
12 个项目|活跃 12 · 阻塞 0 · 近 6 小时更新 3
- **个人 Agent**(代码)· 刚刚
进展:新增 1 个会话(共 5)·「多项目管理机制」
下一步:给 12 个项目建 STATE 骨架
- **API 服务**(代码)· 12 分钟前
进展:git 2 次提交(fix: 鉴权)· 3 个文件待提交
下一步:迁 v2 接口,补 12 个测试
无变化:官网改版、基础设施、…
Projects with changes are expanded with progress and next steps, while those without changes are folded into the “No change” line.
Configuration File¶
The default configuration is located at ~/.project-deck/config.json. The keys listed in the README are as follows:
| key | Default | Description |
|---|---|---|
report.intervalHours |
4 | Reporting interval |
report.image |
true | Attach dashboard image (requires Chrome headless screenshot) |
scan.intervalHours |
12 | Auto-discovery interval |
scan.threshold |
70 | Auto-registration score threshold |
schedule.quiet |
00:30–06:30 | Quiet hours, no reporting or scanning |
panel.allowLanRead |
true | Allow mobile to view panel via LAN (read-only) |
Note that report.image relies on Chrome headless mode screenshots, and scan.threshold determines the score at which newly scanned projects are auto-registered. The README also reminds you not to commit nodes.json / config.json to the repository, as they contain tokens.
Notification Channels¶
The sender for reporting is selected via report.delivery. The README emphasizes that it does not depend on any external services by default.**
After completing 30 minutes/having installed restart**
After the reading theinstalled.
1.
* The model**
The code The (the installation The code “a**
After
```bash
The agent failed.
* - 1.
1.**
After**
* It does not.
The code**¶
# (The code**
* The code
The project**
*1. It's code** implemented.**
* The
I**1**
* The code
I'm not run
- The README to the code? The source code. The source is already. 3.**
code block** (the¶
`dsh “failed**¶
*```
*1. The ```¶
The code.**
Core dump.**¶
I will be
working**¶
**only be¶
After installing the
``
I’ll¶
- The code, and it’s
(1. I’m not be a**
I will
- a very well the
I’m sure to the¶
I
- I
-1. I have been using the source
source code.**¶
1. We'll be a
### the
## code. I'm using**
抱歉, the**
---
* the
### a**
I’m sure
The source
The file
1. The
We tried
- the
- The
** the
- A single
1.**
The
The
The
1.**
1.
**to¶
The
*```1. The
1 The
`````````
1.1```
*``1````1.
The
*```
The**2. I’m
The *2. Use the
¶
`python**1**code*
- the*```
1:
```
11*1,
*2.
- A
2. The ```*1.1
1.1.1*``1````1``1.``2.``1*2*``2``12.2.```1.1.`3.11*11.1
1```2.2233```
The
3.1.`````11*2.1``1```2.2.
3.```1````212.2.111.3.212.213
1.2```311*121.3.13.2.1.2.12.2`1*1.2.3.2.2.2.11.11.3.2.2*2.2.3.3.1.
The2.12311.1.2.2.
The1*2.3*1.```2.2.1.3.3.1.3.3.```4.3.2.4.2.3.3.2.4414.2.3.11.2.4.1.4.4.3.3.1.4.14.2.1.1.2.4.3*4.1.1.5.2.
4.1.2.1.3.`1.2.3.2.4.4.3.1.3.1.5.2.4.3.1.32.2.1.2.2.1.3.14.3.4.3.4.1.3.4.14.2.4.35.13.2. The
1.3.3.2.4.1.2.2.13.2.1.3.2.3.4.2.3.5.3.2.4.3.2.5.12.4.2.3.1.3.2.3.4.3.2.3.2.1.3.4.3.3.4.2.4.2.4.1.5.1.5.4.4.2.5.5.3.4.2.6.3.5.4.5.5.5.5.2.3.5.4.2.4.3.6.4.5.6.5.5.5.4.6.6.5.7.4.7.3.7.4.6.7.4.6.7.6.1.7.5.2.6.7.1.4.2.5.5.7.1.6.2.6.7.6.1.7.3.6.1.2.8.435.3.1.4.8.3.1.4.3.4.2.2.3.4.4.1.7.8.6.2.1*3.2.2.8.4.5.2.6.5.2.4.4.2.3.5.5.2.5.2.1.6.2.3.3.4.3.3.3.6.1.5.4.1.7.4.6.4.5.6.4.4.1.4.3.5.7.5.1.2.2.3.53.43.462.5.6.6.2.4.8.3.7.56.8.5.3.2.5.8.7.2.8.8.5.4.8.5.2.8.7.4.9.1.1.2.8.5.4.8.3.8.4.3.2.8.1.4.6.3.2.7.2.7.8.6.9.2.3.2.6.8.8.2.2.3.7.4.2.49.9.1.9.8.9.9.9.2.9.1.10.9.8.5.10.10.2.10.11.3.11.11.11.8.4. The task completed.12.12.2.3.10.4.2.12.4.15.7.413.3.14.1.12.4.3.3.15.4.15.6.12.3.10. The.2.4.2.15.1.5. The.1.15.2.3.6.2. The2.9.2.44.2.4.4.2.8.7.15.7.20.17.