dsh-serena
One-line value: install this and every DeepSeek Harness agent gains IDE-grade symbolic code intelligence — find_symbol, find_referencing_symbols, rename_symbol, replace_symbol_body, get_symbols_overview and more — via the Serena MCP server, plus session hooks that keep agents actually using it.
Capability category: 工具与能力 (Tools & Capabilities) License: MIT · Compatibility: DSH ≥ 0.2.0-rc.2 (bundles API); Windows/macOS/Linux; Python ≥ 3.11 for the Serena CLI
What it adds to every agent on the profile
| Row | Module | Purpose |
|---|---|---|
mcp-serena |
@deepseek-ai/dsh-mcp-client |
Spawns the Serena MCP server (stdio) → mcp__serena__* tools: symbol search & overview, find references/implementations/declarations, rename & safe-delete symbols, symbolic editing, per-project memories, diagnostics |
dsh-hooks-claude-code |
@deepseek-ai/dsh-hooks-claude-code (dependency of this bundle) |
Runs ~/.dsh/hooks.json: session-start project activation prompt, tool-drift reminders toward Serena's tools, stop cleanup |
Launched with --context claude-code --project-from-cwd: each session auto-activates its workspace as the Serena project, and tools that duplicate DSH built-ins (file read/search/shell) stay hidden.
Install
One command (recommended):
dsh plugin --profile web add github:akash-digitavision/dsh-serena
or in Settings → Plugin Market (DSH Plugin Hub), search for dsh-serena.
Prerequisites
- The Serena CLI — the official install puts
serenaon your PATH (the bundle's default):
Custom location? Point the bundle at it:# install uv first: https://docs.astral.sh/uv/getting-started/installation/ uv tool install -p 3.13 serena-agentsetx SERENA_COMMAND "C:\path\to\serena.exe"Windows note (Smart App Control / WDAC): application-control policies may block uv-managed unsigned Python builds. Workaround: build a venv from a trusted/signed interpreter,
pip install serena-agentinto it, andsetx SERENA_COMMANDto that venv'sserena.exe. - The hooks file
~/.dsh/hooks.json(Windows:%USERPROFILE%\.dsh\hooks.json) — copyhooks.template.json:{ "SessionStart": [{ "matcher": "", "hooks": [{ "type": "command", "command": "serena-hooks activate --client=claude-code" }] }], "PreToolUse": [{ "matcher": "", "hooks": [{ "type": "command", "command": "serena-hooks remind --client=claude-code" }] }], "Stop": [{ "matcher": "", "hooks": [{ "type": "command", "command": "serena-hooks cleanup --client=claude-code" }] }] }serena-hooksships withuv tool install serena-agent. If it is not on the DSH process PATH, use the absolute path to the executable in the template.
Then restart DeepSeek Harness. Verify by asking an agent: "activate this project with serena".
Permissions & external services
- Spawns a local
serenaMCP server process (language servers may download per-language tooling on demand) - Reads/writes only your activated project workspaces; memories stored per-project in
.serena/ - No accounts, no API keys, no telemetry
Known limitations
- The hooks-bridge dependency is version-pinned (
@deepseek-ai/dsh-hooks-claude-code0.2.0-rc.2); if your DSH runtime is newer and install is rejected for peer incompatibility, match the version to your runtime - First symbol query in a new project downloads that language's language server — first call can be slow
Uninstall
Remove dsh-serena from the profile dsh.profile.bundles + dependencies (or dsh plugin remove), then restart the host. The Serena CLI, venv and hooks file are independent of the bundle.
Credits
Upstream: oraios/serena (MIT / GPL-3.0) — this bundle only wires it into DeepSeek Harness.
No comments yet. Be the first to write one.