dsh-pouch
Verified@moon16u/dsh-pouch Β· v0.2.0 Β· MIT Β· Web UI
A collection of small, beautiful, and practical plugins for DeepSeek Harness (DSH)
Install
dsh plugin add @moon16u/dsh-pouch Confirm the layer applied with dsh --profile default --dump-config β see the install guide.
Source
Published to npm without a public repository. Inspect the package contents before installing.
Tags
Readme
dsh-pouch
English | δΈζ
dsh-pouch is a pocket toolkit of practical, lightweight, and beautiful plugins designed for DeepSeek Harness (DSH).
It delivers out-of-the-box micro-extensions to enhance your daily workflow, interactive experience, and development productivity.
π¦ Plugins Included
| Plugin | Type | Description |
|---|---|---|
@moon16u/dsh-plugin-restart |
Host / CLI | Safe, detached DSH process restart command (/dsh-restart) and agent tool (dsh_restart) with a 3-second grace period. |
@moon16u/dsh-plugin-current-time |
Host / Agent | Injects the host's real date, time, and timezone into agent context at the start of every turn, so a long-running session never reasons from a stale date. |
@moon16u/dsh-plugin-session-id |
Web UI | Displays a native-styled Session ID badge in the web session header with one-click clipboard copy. |
@moon16u/dsh-plugin-web-search-tavily |
Capability Seam | Real-time web search provider backed by the Tavily REST API, seamlessly integrating with DSH's ctx.web capability seam. |
@moon16u/dsh-plugin-llm-headers |
LLM Seam + Web UI | Provider routes whose request headers are yours to set from settings.yaml β including the User-Agent the harness reserves for itself: literals, ${env:NAME} interpolation, per-model overrides, null deletion, plus a visual Request Headers settings page. Wire up any of pi-ai's 37 built-in providers with headers only. |
π Quick Start & Installation
Method 1: One-Command Installation via DSH CLI (Recommended βοΈβοΈβοΈβοΈβοΈ)
Run a single command in your terminal. DSH will automatically download, bundle-register, and mount all 5 pocket plugins (zero manual configuration):
# 1. Install the entire toolkit via npm (recommended)
dsh plugin --profile web add @moon16u/dsh-pouch
# Or install directly from GitHub
dsh plugin --profile web add https://github.com/moon16u/dsh-pouch.git
Method 2: Local Git Clone Installation
Clone the repository:
git clone https://github.com/moon16u/dsh-pouch.git ~/dsh-pouchAdd the bundle to your DSH profile:
dsh plugin --profile web add file:~/dsh-pouchDSH automatically detects
dsh.bundleand applies the built-incordis.patch.ymllayer without manual configuration file edits.
π οΈ Plugin Highlights
1. @moon16u/dsh-plugin-restart
- Problem: After editing plugins or configs, restarting DSH manually in an external terminal is tedious; killing the process directly inside an agent tool causes the session to freeze.
- Solution: Exposes
/dsh-restartslash command anddsh_restartagent tool. Spawns an asynchronous detached worker process that returns the response immediately and restarts cleanly after 3 seconds.
2. @moon16u/dsh-plugin-current-time
- Problem: A model has no clock. It infers "today" from whatever the harness injected once at startup, so a session left open across midnight keeps reasoning from yesterday's date β and nothing in the transcript contradicts it.
- Solution: Hooks
agent/pre-stepand appends one wall-clock reading after the prompt on the first step of every turn. Once per turn rather than per step, so a tool-call loop does not bury the transcript in near-identical timestamps.
3. @moon16u/dsh-plugin-session-id
- Problem: Retrieving the current session UUID for debugging or log tracking requires digging into URLs or console logs.
- Solution: Injects a clean capsule button displaying the Session ID in the web header utility bar with instant one-click clipboard copying.
4. @moon16u/dsh-plugin-web-search-tavily
- Problem: Built-in search engines may be restricted or lack high-quality synthesized web answers.
- Solution: Formally implements the
ctx.web.registerSearchProvidercontract. Automatically resolves API keys from theTAVILY_API_KEYenvironment variable or DSH Credentials service.
5. @moon16u/dsh-plugin-llm-headers
- Problem: DSH merges its own attribution
User-Agentinto every provider request last, and aheadersmap written intollm-pi-aicannot override that reserved name. Gateways that authenticate by client identity β Tencent CodeBuddy returns500 {"code":11128,"msg":"request illegal"}β are unreachable with configuration alone. - Solution: Declare routes in your own
llm-headerssettings section, still served by the officialPiAiAdapter; only the pi-ai provider is wrapped, so the configured headers get the final word before the socket. Ships with a Request Headers settings page (independent sidebar entry) β the stock provider cards expose no slot, and headers written intollm-pi-aiare stripped anyway. Wrapping the provider rather than the protocol object keeps pi-ai's own route implementations, so such routes wire up in a couple of lines. Routes without configured headers keep sending the DSH attribution unchanged, and deleting it is refused.
π§ͺ Testing
This monorepo uses pnpm workspaces and Node.js native test runner for contract and smoke tests:
cd dsh-pouch
pnpm install
pnpm test
π License & Credits
- MIT License Β© 2026 moon16u
- Logo icon: Toolbox icon by Icons8.