Introduction¶
In DSH sessions, discussions are often lively, but the few things that need to be actually done are scattered across historical messages. They are either manually noted down in other tools or retold by the model in the next round. dsh-gor-tasks was created to fill this gap: it adds a “To-do Tasks” entry to the DSH sidebar, manages tasks under projects, allows for direct addition and deletion within conversations, and allows a single assistant answer to be split into multiple to-dos. The plugin is maintained by gorwayne, current version 1.2.0, License is MIT.
Below, I will first introduce what it is, then walk through its features, installation, and usage.
1. Positioning¶
One sentence: This is a DSH client plugin that embeds project-based to-do management into the interface and conversations, with data stored locally.
The difference between this and “letting the assistant remember to do something” is that tasks are structured objects with an associated project, status, priority, and due date. They can be filtered, searched, and imported/exported in batches, rather than remaining as text in the conversation.
2. Core Features¶
Interface. The sidebar gains a new “To-do Tasks” entry. The red circle number at the end of the line indicates the count of incomplete tasks that are “Due Soon”. The panel has three columns: a project list on the left, a task list in the middle, and clicking a task slides out an edit drawer from the right. It automatically collapses in narrow windows.
Task fields include title, description, status, priority, and due date. There are four statuses: Todo, In Progress, Blocked, and Done.
Project Categories. Tasks must be attached to a project. The default project is “Inbox”. Projects can be created, renamed, recolored, deleted, and sorted via drag-and-drop. The order is the display order, and the Inbox can also be dragged. Before deleting a project, a prompt will indicate how many tasks will be deleted with it.
Filtering and Searching. You can view all tasks or a specific project, filter by In Progress / All / Done, and search by keywords.
Two Views. The list view uses tabs to sort by status; the Kanban view has four columns corresponding to the four statuses, and cards can be dragged directly to other columns to change status. Selection is remembered.
Management in Conversation. The plugin exposes 9 tools to the model, covering the CRUD operations for projects and tasks, plus a task_bulk_add for adding multiple tasks at once.
Split Answer into Tasks. On the action bar of every assistant answer (the row with Copy, Like, etc.), there is a “Split into Tasks” button. You can choose to use your configured model to split the answer into multiple tasks, or skip the model call and split roughly by line or punctuation.
Theme. All colors are taken from DSH theme variables. It automatically switches following DSH’s Light/Dark settings (including following system), with no separate configuration items.
Portable Data. In system settings, you can export JSON (projects + tasks + settings) with a filename containing a timestamp; importing it on another machine restores the data. Importing will overwrite all current data, with a secondary confirmation and display of the item count before import.
3. Installation and Activation¶
It needs to be stated first: the plugin is not yet listed in the app store. The README states: “App Store: Once listed, search for ‘To-do Tasks’ in DSH’s plugin market and install it with one click.” This means there is currently no one-click install command, so you must use the development mode to mount it.
The method for development mode is to clone the repository locally, mount it via a symlink in the profile, and refresh the page to apply changes after editing code; no reinstall is needed.
git clone git@github.com:gorwayne/dsh-gor-tasks.git
Then, write the insertion point in cordis.patch.yml:
- insert:
- id: dsh-gor-tasks
name: "@local/dsh-gor-tasks"
And in the profile’s package.json, replace the path with the actual clone location:
{
"dependencies": { "@local/dsh-gor-tasks": "link:/path/to/dsh-gor-tasks" }
}
The plugin’s package name and declaration come from package.json: @gorwayne/dsh-gor-tasks, dsh.bundle points to ./cordis.patch.yml, and dsh.client declares the web platform and three client dependencies injection.
One thing worth remembering: If you change the Host side (index.js), you need to disable and re-enable the plugin, or restart DSH; if you only change client.js, refreshing the page is sufficient.
4. Typical Usage¶
After entering the interface, click “To-do Tasks” in the sidebar to operate in the three-column interface:
- ”+ New Task”: Title is required, project, status, priority, and due date are optional.
- Hovering over a project row reveals
✎(rename),✕(delete), and⋮⋮(drag). - The gear icon in the top-right corner is for system settings.
If you don’t want to switch interfaces, you can let the assistant call the tools directly in the conversation. The following is an example from the README:
Help me add three tasks under the "Product Redesign" project: organize competitor screenshots, write redesign documentation, and schedule a design review. The last one must be completed before this Friday.
Mark "Write redesign documentation" as In Progress.
List the unfinished tasks in this project.
The tool list is as follows:
| Tool | Function |
|---|---|
project_list / project_create / project_update / project_delete |
Projects: view, create, update, delete |
task_list / task_create / task_update / task_delete |
Tasks: view, create, update, delete |
task_bulk_add |
Add multiple at once (used for split entries stored in DB) |
The first time you click “Split into Tasks”, it will ask if you want to use your configured model to split. After agreeing, this choice is remembered, and subsequent splits are direct. If you refuse, it will split roughly by line / punctuation. Drafts can be edited manually and do not consume credits. Each line of the split becomes one task. Select the project at the bottom, and after saving, enter the corresponding project, where notes will record the source message. To turn off model splitting, go to “System Settings -> Task Split” and turn off the switch; after that, the prompt will not appear again.
5. System Settings¶
Click the gear in the top bar to open; all settings are saved immediately:
| Setting | Default | Description |
|---|---|---|
| Use my configured model to split tasks | On | When off, only rough splitting by line is done without calling any model |
| Show red circle number on sidebar icon | On | Badge number = count of incomplete tasks that are “Overdue” or “Due within N days” |
| Count as “Due Soon” N days in advance | 3 | Range 0–30, 0 means only look at overdue and due today |
| Export JSON | — | Export projects, tasks, and settings at once, filename includes timestamp |
| Import JSON | — | Overwrites all current data, secondary confirmation and display of item count before import |
6. Data and Storage¶
All data is local, in one JSON file:
$DSH_HOME/integrations/gor-tasks/tasks.json
Writing uses “temp file + atomic rename” and is serialized to avoid corrupting concurrent writes. The file format is:
{
"version": 1,
"projects": [{ "id": "p_inbox", "name": "Inbox", "color": "#8b8fa3", "order": 0 }],
"tasks": [{ "id": "t_x1", "projectId": "p_inbox", "title": "Write weekly report", "status": "todo", "priority": "normal", "due": "2026-11-08" }],
"settings": { "useModelSplit": true, "dueReminder": true, "dueSoonDays": 3 }
}
The export file is marked with format: "dsh-gor-tasks/export" and recognized during import; tasks missing project references are automatically moved to the Inbox.
7. Use Cases and Notes¶
Suitable for people who: use DSH conversations daily to advance work, have tasks scattered in sessions, want to close them as items nearby, and don’t want to open a dedicated task tool.
A few points to note. First, the plugin runs with the permissions of the current DSH process. The Host side reads and writes local $DSH_HOME data and exposes RPC tools; you should open the source code to verify before installing to ensure the tools and storage behavior meet expectations. See MIT License in the root directory of the repository. Second, there is currently no app store installation path, so you must mount it as described above in development mode. Third, importing JSON will overwrite all existing data; you can only revert when exporting and backing up.
Regarding directory structure, Host logic is in index.js (storage, RPC, 9 tools), the interface is in client.js (sidebar icon, task panel, split modal, settings), and there is also locale/, icon.svg, and a README screenshots directory.
Summary¶
dsh-gor-tasks does one simple thing: it adds a structured to-do entry to DSH, giving tasks project attribution, status, and searchability, and allows them to be stored directly from conversations and answers. It is not yet listed in the market, so you need to clone and mount it yourself, but local JSON storage plus import/export means data doesn’t depend on this specific interface.
Directory page: https://www.skillhub.cn/plugins/gorwayne/dsh-gor-tasks
Repository: https://github.com/gorwayne/dsh-gor-tasks