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
English | 简体中文
✅ Status: M6 is implemented entirely in Explain and passes its DSH
0.1.0-rc.6acceptance gates. No other plugin requires a patch or runtime dependency. See the product requirements and technical architecture for the full design. The detailed design documents are currently written in Chinese.
dsh-explain turns useful material from multiple DeepSeek Harness work sessions into one private, local-first learning thread. It keeps at most one active explanation per source session and continuously adapts explanations to the user's knowledge, preferences, and learning progress.
$DSH_HOME contains exactly one local learning thread. Work sessions, resumes, and forks do not copy its state./explain <learning request> in the composer of an established or empty session to request an explanation. /explain on, /explain off, and /explain status manage the feature.ExplainContext summarizes conversation preferences, knowledge level, and learning progress. It is sent only to the auxiliary model and is never injected into the primary agent.ExplainContext are stored in $DSH_HOME/dsh-explain/v1/thread.sqlite. Enablement and model settings use $DSH_HOME/settings.yaml.conversation.view slot as a Learning tab. Configuration and diagnostics use the first-party settings.section; no external UI host is required.better-sidebar.ExplainContext, and automatable acceptance criteria.conversation.view registration following the ui-trajectory view-ring pattern, with no external UI dependency.ExplainContext, and the Learning view./explain <learning request>, explicit-request scheduling, source labels, durable rephrase summaries, and stable failure results.--selection and --answer <turn> source resolution, origin persistence, rephrase propagation, legacy --suggested input compatibility, and stable failures.M1 established persistence and Host/Client RPC. M2 completed the learning loop. M3 added release gates. M4 made configuration, diagnostics, and source navigation available in the UI. M5 added user-initiated learning from the composer. M6 adds Explain-owned shortcuts without modifying optional plugins. See the acceptance matrix for automated evidence.
M6 registers an Explain selection action in conversation.input.left and an exact-answer action in conversation.chat.assistant-actions. Both use the public per-session input facade, recheck the live composer at click time, write only an editable draft, and remain independent of dsh-selection-chat, dsh-suggested-replies, and dsh-advisor. The scope and evidence are recorded in docs/NEXT.md.
Explain currently targets DSH 0.1.0-rc.6. DSH is a developer preview, so older private-preview package lines are not supported.
npx @deepseek-ai/dsh@0.1.0-rc.6 plugin --profile web add github:yuezengwu/dsh-explain
npx @deepseek-ai/dsh@0.1.0-rc.6 web
Git-hosted plugins build during installation. If pnpm asks for build approval, add the printed dsh-explain entry to the profile's pnpm-workspace.yaml and repeat the install command.
The default build uses the public DSH 0.1.0-rc.6 API packages. A built DSH source checkout is required for assembled-Web acceptance; link it explicitly after installing dependencies:
pnpm install
DSH_SOURCE_DIR=/absolute/path/to/dsh pnpm run dsh:link
DSH_SOURCE_DIR=/absolute/path/to/dsh pnpm run dsh:link:check
pnpm run test
DSH_SOURCE_DIR=/absolute/path/to/dsh pnpm run test:web
DSH_SOURCE_DIR=/absolute/path/to/dsh pnpm run test:m6
pnpm run typecheck
pnpm run build
The source checkout must match the 0.1.0-rc.6 public API surface. Compatibility layers for earlier private-preview package lines are not retained.
test:web starts a real keyless DSH Web composition with a fresh temporary $DSH_HOME, a durable session fixture, and a pre-seeded Explain database. It compares the Learning and Settings ARIA output against golden snapshots and verifies native settings revisions, source navigation, and the missing-source fallback. To intentionally update the UI output, run DSH_SOURCE_DIR=/absolute/path/to/dsh pnpm run test:web:refresh and review the snapshot diff.
test:m6 installs only Explain into a fresh profile. It verifies that no consumer plugin is present, both shortcuts produce exact editable drafts without submitting, and removing then reinstalling Explain restores the complete layer once.
Install the development checkout directly rather than through npm:
dsh plugin --profile web add /absolute/path/to/dsh-explain
dsh --profile web --dump-config
dsh --profile web
The product goal has no direct duplicate. The following projects informed individual implementation choices but do not define this project's data model.
| Project | Reused idea | Deliberately not reused |
|---|---|---|
dsh-auto-blame |
Background model calls after a turn and client feedback patterns | External custom session events and projections are not used for Explain persistence |
dsh-advisor |
Transcript deltas, isolated model calls, emission guards, and configuration gateways | Advisor injects suggestions into the primary agent; Explain never injects the primary model |
dsh-memory |
Repository naming covers the long-term-memory direction | The placeholder contains no reusable service or protocol |
dsh-memory-evolve |
Cross-session layered memory, low-frequency snapshots, and user-visible management | Its snapshots enter the primary agent; Explain neither depends on nor reads its private files |
DSH compact-basic, token-meter, and LLM model info |
Capacity thresholds, deterministic token estimates, and routed contextWindow values |
Native compaction modifies one session surface; Explain needs its own global SQLite compactor |
| DSH third-party memory MCP example | Optional interoperability reference for cross-session persistence | Model-initiated tool calls and an external provider do not fit automatic P0 ExplainContext updates |
DSH ui-trajectory |
conversation.view registration, session-header tabs, and active-only rendering |
Trajectory uses a session-event view model; learning facts remain in Explain SQLite and Remotes |
DSH-better-sidebar |
Side-workbench interaction reference | P0 does not require simultaneous work and learning views, so it adds no sidebar service or dependency tree |
official-plugins-port claude/learning-output-style and claude/explanatory-output-style |
Learning and explanation prompt references | A system prompt alone cannot provide isolated scheduling, durable history, or a feedback loop |
dsh-edu |
Possible future knowledge-artifact formats | P0 does not implement courses, quizzes, cards, or spaced review |
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。