[中文](README.md) · **English** # Hermes to DSH **Browse your local Hermes skills / MCP servers / chats right inside the DeepSeek Harness web sidebar, and inject the selected skills & MCP config into the active agent.**
--- **Hermes to DSH** (`hermes-to-dsh`) is a DSH plugin (`dsh.bundle`) that surfaces your local [Hermes](https://github.com/anthropics/hermes) assets (skills, MCP servers, conversation history) in the DeepSeek Harness web UI as a dockable, resizable sidebar panel. It offers two injection modes: - **Active** — you tick the skills / MCP servers you actually need; the plugin reads each selected `SKILL.md` + MCP config and injects them into the active agent's system prompt (with a length warning and total cap). - **Passive** — a contact-style hint; the agent reads skill `SKILL.md` / MCP config on demand only when a capability is missing. ## Features - **Fixed, draggable/resizable panel** with four-corner grab handles (26px hit area). - **Two columns**: left = repositories / projects → conversations; right = skills + MCP servers + mode. - **Global search** across chat name / id, skill name / description, MCP server name. - **Conversation preview** — open any chat to see `opening X + latest Y` (per-side counts are configurable). - **Source filter** — filter chats by their `source` (desktop / cron / ...). - **Message-type filter** — keep only 提问 `user` / 回答 `assistant` / 工具 `tool`; when a type is chosen the panel **auto-fills** the requested count by stepping across other message types. - **Copy address** — copy the conversation id. - **MCP detail** — inspect a server's config block before selecting it. - **Active selection persistence** — writes `~/hermes-active-selection.json` and pings the live session so the agent knows what you chose. ## Capabilities | Surface | What it provides | |---|---| | **UI** | `sidebar.footer.action` sidebar panel (pill toggling a fixed/resizable two-column panel) | | **Host handlers** | `inspect`, `chatPreview`, `mcpDetail`, `setMode`, `detail` | | **Injection** | `systemPrompt.section` `hermes:mode` (active → selected SKILL.md full text + MCP config; passive → contact hint) | ## Install ```bash # bundle: enters the profile layer stack (restart web) dsh plugin --profile web add github:beimianism/Hermes-to-DSH # or pure-Cordis, zero-restart via config HMR dsh plugin add github:beimianism/Hermes-to-DSH ``` > Public `@deepseek-ai/*` and `cordis` deps are intentionally undeclared (injected by the profile pnpm closure). Requires local [Hermes](https://github.com/anthropics/hermes) data at `%LOCALAPPDATA%\hermes\state.db` (read-only), and `python` on `PATH` for the helper scripts. ## Native architecture (follows startup) The plugin is a **native bundle + client** that loads automatically on every `dsh web` start — no dynamic plugin or launcher needed: - **Host half** (`index.js`): registers `ctx.connection.rpc.handle('/hermes', …, {authority:'trusted-host'})` and exposes five endpoints — `inspect` / `chatPreview` / `mcpDetail` / `setMode` / `detail`; `systemPrompt.section('hermes:mode')` injects the active/passive hint (if the host has no `systemPrompt` service — e.g. a pure web profile — the section is skipped silently and everything else keeps working). - **Client half** (`client/index.js`, generated by `client/_make_native.cjs`): a `__ModuleLoader__.load` bundle, `require('react')`, `host.call` adapted to `ctx.connection.rpc.call('/hermes', …)`, styles injected via `