Preface¶
Most people running agents with DSH encounter the same issue: items are scattered across various Sessions and Workspaces. Approvals, questions, plan reviews, blocked goals, and acceptance results for autonomous run cycles are waiting in some Session or have been idle for hours without anyone looking. The native interface only provides objects within the current window; cross-Session summation requires manually checking logs.
The qingj01/dsh-attention-inbox introduced below fills this gap. It projects items “waiting for you to process” in your personal DSH environment into a sidebar queue, classifies them, displays them uniformly, and provides disposal, ignore, mute, and statistics options. Please note that the current version is a Release Candidate, the npm package has not yet been published, and marketplace distribution and full acceptance testing are not yet complete.
What is it¶
qingj01/dsh-attention-inbox is a personal DeepSeek Harness plugin, maintained by QingJ01. The category belongs to Memory. It solves a single problem: concentrating pending items across Sessions and Workspaces into one queue, including approvals, questions, plan reviews, blocked goals, autonomous run acceptance, final round failures, and account login failures.
It is currently at v1.0.0-rc.2 Release Candidate. The DSH Desktop version used for independent testing is 0.2.1-rc.5. This version number should not be interpreted as full acceptance having passed; full acceptance records are in the repository’s 008 Acceptance Table. The package name is dsh-attention-inbox, the repository is QingJ01/dsh-attention-inbox, and it uses the MIT License. Current stars: 0.
Core Features¶
Three Categories of Attention Items¶
The Inbox is divided into three categories based on “what you need to do”:
- Agent is Waiting for You: Approvals, questions, plan reviews. Allows one-time approval, rejection, and answering using DSH native interaction objects without bypassing permission policies; opens the source Session when native capabilities are unavailable. Plan approval uses the specified option in the native intent.
- Waiting for You to Decide Next Step: Blocked goals, autonomous completion rounds with a clear source, final failed or interrupted rounds. Soft items can ignore the current revision or set a reminder for one hour later; manually completing a goal yourself does not create an additional autonomous acceptance item.
- System: DeepSeek login failure. The entry is withdrawn after login is completed based on the account fact.
Only hard and system categories count towards the badge, and cannot be hidden by ignoring or muting. In the native interface, “answered” does not equal “processed”: a call return is not the same as completion; only a native decision or settlement fact confirms it is processed. When a button fails, it shows an error and keeps the item; it does not silently discard it.
Settings and Statistics¶
Where it aligns with native settings, it provides a review toggle, ledger retention days (1–3650 days), and Session/Workspace mute rule management. Muting only applies to soft items; Workspace mute uses the actual Workspace ID. Turning off review does not affect native approvals or native questions.
The footer displays verifiable L1/L2 drops, display counts, hard block response time, in-place processing rate, and noise rate by source. It displays “No Data” when there are no confirmed samples; it does not count clicks, requests sent, or test samples as real disposal actions.
Data and Recovery¶
Obligation facts come from Session log projections, DSH’s built-in userQuestions projection, and native Client interaction objects. Disposal, settings, muting, external plugin submissions, and ledger are stored in the plugin’s own attention_inbox storage domain. Submissions must wait for persistence to succeed before returning; they are not written to the user’s Session or preset.
Cold start only reads and observes recent seven days of readable history Sessions, keeping still-valid blocked goals, continued questions, and autonomous reviews that failed within 48 hours with a clear source. Cold backfilling and real-time derivation use the same facts and rules; it gives a prompt when partial read failures occur. When the Host is temporarily unreachable, native interactions continue to update in real-time, and the most recent Host result is marked as possibly stale.
Extension Capabilities¶
The plugin provides ctx.attention to the Host side and ctx.attentionClient to the Client side, with both having an apiVersion of 1. It is recommended to integrate as an optional dependency. The Cordis contextual service automatically tracks the actual caller and returns a disposer upon registration, which cleans up the registration and obligations when the caller unloads.
raise / withdraw: Explicit submission;producercan be omitted and is derived from the actual caller. The returned canonical key is saved for withdrawal.registerProducer / invalidate: Derived from real business facts; explicit submission and derived obligations are both subject to the caller’s quantity budget constraint (default max 50).registerSubjectType / registerKind / registerAction: Subject description, type, and Host action, or action metadata for Client executors.attentionClient.registerAction: Registers a Client executor with the same ID, preserving revision, permissions, and destructive confirmation boundaries.attention.subjectkeyed Slot: Provides rich rendering by subject type; falls back to general description if not provided; internal navigation usespanelId, external usesurl.registerChannel: By default, onlyhard/systemis selected; deduplication by key/revision, exponential backoff to 60s limit on failure, cancels retry and cleans up async delivery on close or unload.defaultAction: Generic row display with localized action labels; does not expose input; does not execute automatically upon expiration; execution is still the responsibility of the submitter.
The hello-producer in the repository is a 28-line on-demand integration example, demonstrating raise, withdraw, and Host actions, and does not create business items when mounted. Extension API provides actual interfaces and Client/Slot usage. Public types can be imported via the following line:
import type { AttentionService } from 'dsh-attention-inbox/api'
Installation and Enabling¶
During the candidate stage, you can only install the absolute directory of the repository via DSH’s Plugin Manager, or the candidate archive provided by the maintainer:
{ "action": "install_bundle", "target": "/absolute/path/to/dsh-inbox" }
The README also provides the npm target, but explicitly states only available after release, do not execute now:
{ "action": "install_bundle", "target": "dsh-attention-inbox@1.0.0-rc.2" }
If you are just downloading the package to a regular development project, the npm command after release is:
npm install dsh-attention-inbox@1.0.0-rc.2
The npm download itself does not activate the DSH bundle. To use in DSH, use the Plugin Manager installation entry mentioned above; do not manually modify profile configuration. After installation, open “Attention Inbox” in the sidebar of the current DSH interface. If the page is still using old modules, just refresh the existing page; no need to start a server separately.
Typical Usage¶
Daily usage after installation is essentially reading the queue and making decisions. Below are the disposal methods for each type of item in the order described in the README.
- Open “Attention Inbox” in the sidebar, check approvals, questions, and plan reviews under “Agent is Waiting for You”. Use native objects for one-time approval or rejection, answer questions with native objects, and approve plan reviews in the specified option of the native intent.
- In “Waiting for You to Decide Next Step”, distinguish between blocked goals, autonomous completion rounds, and failed/interrupted rounds. For soft items you want to handle later, choose to ignore the current revision or set a reminder for one hour later.
- See a system DeepSeek login failure, go complete the login; after completion, the system will withdraw the entry based on the account fact.
- To reduce interruption, go to DSH native settings to configure the review toggle, ledger retention days, and mute rules. Muting only affects soft items;
hardandsystemare not affected. - When a third party needs to integrate, first read
docs/004-extension-api.md, useraiseto submit items following the hello-producer style, and use the returned canonical key forwithdraw.
Development and Verification¶
The repository is managed with pnpm, and tests use Node’s built-in runner:
pnpm install --ignore-scripts
pnpm check
The check script executes node --check index.js, node --check client.js, and node --test tests/*.test.mjs in sequence. Host uses ESM, Client uses DSH ModuleLoader; currently, no separate packaging build is required. TypeScript 5.9.3 actually compiles the examples for and against the public API.
Full native runtime testing requires pointing to an existing DSH installation or extracted artifacts:
DSH_TEST_RUNTIME=/path/to/dsh/node_modules/@deepseek-ai node --test tests/*.test.mjs
The results of this round’s independent full review are 90 Passed, 0 Failed, 0 Skipped, covering real Cordis caller lifecycle, Channel retry and cancellation, Client executors and Slots, public type compilation, and anonymous structure recording/playback. It should be noted that tests cannot replace GUI or marketplace acceptance; evidence for the latest real interface, fresh installation, and uninstallation is based on the 008 Acceptance Table, and the scope of candidate implementation is in 007.
Applicable Scenarios and Notes¶
Suitable for managing a personal DSH environment and for those who want to view scattered items across multiple Sessions uniformly. It only serves individuals and does not provide team sharing or assignment.
Pay attention to these boundaries before use: the plugin does not automatically grant permissions, modify presets, switch asynchronous question modes, or provide permission rule suggestions. There are no built-in Feishu, email, or desktop notification Channel providers; Channel retry status is currently within the process, and external delivery requires the provider’s own idempotent design; it does not promise exactly-once across processes. Native approval and question objects are still part of the DSH implementation interface, and fail back to opening the source Session if capability detection fails after an upgrade.
The plugin runs with the permissions of the current dsh process; you should check the source code and license before installing. The repository uses the MIT license, and the config also includes a cordis.patch.yml; read it through before making changes. The directory page is on SkillHub, which has no official affiliation with DeepSeek / Hypersphere.
Conclusion¶
The value of this plugin lies in converging the question “what else is waiting for you” into a queue, and using fact sources rather than interface state to determine if it is processed. It is still a candidate version, and the npm installation entry is unavailable; follow the Plugin Manager candidate method before installing.
- Directory Page: https://www.skillhub.cn/plugins/QingJ01/dsh-attention-inbox
- Source Code Repository: https://github.com/QingJ01/dsh-attention-inbox