dsh-web-search-ddg
aooyoo
Zero-token DuckDuckGo search provider for the DeepSeek Harness (DSH) web seam — local headless browser, no API key, no m…
PROJECT TOPICS
PROJECT README
Client-side layout plugin for the DeepSeek Harness web UI: settled tool calls, context injections and finished reasoning rows pile horizontally in the chat flow as compact name-only chips, while running cards, streaming reasoning and plain text keep their original full-width vertical stacking.
Before — every tool call and reasoning row takes its own full-width line:

After — settled rows pile horizontally as compact name-only chips, and the same turn takes a fraction of the vertical space:

Pure CSS injection, no component rewrites:
flex: 0 0 auto), everything
else stays a full-width line (flex: 1 1 100%);display: contents
so reasoning rows can share lines with tool chips;role="status", "Deep diving...") always
takes its own full line at the end of the flow;_summary / _separator / _sep / _fileLink), restored with :has()
for running and interactive Cordis cards.dsh-chat-flow-re-layout/
├── package.json # dsh-chat-flow-re-layout
├── LICENSE # MIT
├── lib/
│ ├── index.js # Node half: empty plugin (ESM)
│ ├── client.js # Browser half: ModuleLoader bundle, injects <style>
│ └── types/ # Type declarations for both halves
The browser half is a hand-written ModuleLoader bundle (no build step): the
stylesheet is injected into <head> when the module materializes and is
guarded by a data-plugin-css marker against double injection.
Clone this repository, then from the repository directory:
dsh plugin --profile web add .
Add a row to the profile's cordis.patch.yml:
- insert:
- id: chat-flow-re-layout
name: 'dsh-chat-flow-re-layout'
then restart dsh web. Run dsh --profile web --dump-config to confirm the
plugin made it into the composed configuration. There is no build step — the
hand-written ModuleLoader bundle is committed as-is.
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。