Line-range selection: browse workspace files, preview code with line numbers, visually select a line range, and write a `@path:start-end` reference into the composer; the agent receives the exact selected lines on send.
Install
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:fengMax1997/dsh-line-select
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time. Only install sources you trust, and pin a commit (github:owner/repo#sha).
README
A DeepSeek Harness Web GUI plugin: browse workspace files, preview code with line numbers, visually select a line range, and write a @path:start-end reference into the composer — when the message is sent, the agent automatically receives the exact selected lines and can modify precisely that range (e.g. lines 10–50).
Features
- File-tree browser: a 「⛶ 行选区」 button above the composer opens a panel that browses the workspace directory (dot-files skipped, directories first)
- Numbered preview: click a file to open a read-only view with line numbers (auto light/dark theme)
- Line-range selection: click a line number to set the start, click again to set the end (either order; range only expands), the selection is highlighted
- Write to composer: one click appends
@src/app.ts:10-50to the current draft; the Host expands that reference into an injected<workspace-selection>atagent/pre-step, so the agent sees the source lines without reading the file itself - Select file (whole-file reference): the 「选中文件」 button writes
@src/app.tsinto the draft, letting the agent read the whole file with itsreadtool (without stuffing large contents into context) - Hand-written references work too: type
@src/app.ts:10-50,@src/app.ts:10(single line), or@src/app.ts(whole file) directly — spaces in file names are supported (e.g.@新建 文本文档.md:3-8)
Install
dsh plugin --profile web add <this directory or tarball path>
Restart dsh web after installation.
Uninstall:
dsh plugin --profile web remove dsh-line-select
How it works
| Layer | Description |
|---|---|
Host (lib/index.js) |
lineSelect Typert Remote service (strict manifest): list lists a directory, read reads a file with line numbers; agent/pre-step scans @path:start-end tokens in user messages, reads the range, and injects <workspace-selection path="…" start-line="…" end-line="…"><line n="…">…</line></workspace-selection> |
Client (lib/client.js) |
conversation.input.dock entry: panel UI + selection interaction; writes the draft through the official inputActions.setDraft seam |
Security
- Every path is confined to the session cwd (absolute paths, drive letters, and
..traversal are rejected) - Read-only: never writes to disk, never executes file contents
- Limits: 1 MB per file (head-only beyond that), 800 preview lines, 400 injected lines per reference
- Zero third-party runtime dependencies (only
@deepseek-ai/dsh-typert-protocoland@deepseek-ai/dsh-llmpeer deps, provided by the DSH profile)
Tests
# From the DSH checkout, link its node_modules once for module resolution:
# New-Item -ItemType Junction -Path node_modules -Target <dsh checkout>/node_modules
node test/smoke.mjs
License
MIT
Links
More in this category
zhu1090093659/dsh-web-ui#packages/dsh-web-ui-all★ 2622
Plugin and skin collection for the DSH Web UI: task board, Git graph, right-side panel, remote mobile UI, pet, live token stats, and a skin center.
ccch1mneyyy/dsh-TUI★ 1231
Claude Code-style full-screen terminal UI: pixel-whale header, live status line, and streaming thought expansion.
omdsh-dev/DSH-better-sidebar★ 1198
Full sidebar workbench with file rendering and editing, terminal, Git, and subagents; third-party plugins can register new tabs.
omdsh-dev/dsh-at-file★ 214
Codex-style `@file` mentions: search workspace files in the composer and attach their contents to prompts.
huiliyi37/dsh-tianshu-tui★ 159
A terminal UI (TUI) for DeepSeek Harness.
Nagi-ovo/dsh-visualize★ 114
In-conversation generative UI: the model renders interactive HTML cards into the chat stream, with streaming preview and sandboxed rendering.