DeepSeek Harness plugin

dsh-plugin-verified-search

Verified current-source search workflow for DeepSeek Harness

Jump to install

Source facts

Repository
f0909172434/dsh-plugin-verified-search
Latest update
Aug 16, 2026
Category
Workflow & Automation
GitHub stars
1
Format
plugin
Catalog evidence
Upstream dsh.bundle evidence
Evidence path
package.json#dsh.bundle
Checked against
0.1.0-rc.8
Upstream check date
2026-08-20

This evidence comes from the upstream catalog. This site has not installed, run, or security-reviewed the plugin.

Install

Start with a prompt that asks an agent to review the GitHub repository and source. Switch to the command if you want to install it yourself.

Copy this prompt into DSH, Codex, or another agent and ask it to review the GitHub repository and source first.

Do not install or run any commands yet. Read this plugin's GitHub repository, README, and relevant source code. Then answer the questions below clearly and directly so I can decide whether it fits my needs:

1. What is this plugin, and what problem does it solve?
2. Who is it for, and what are its typical use cases?
3. How is it used after installation? Include one minimal example.
4. What known limitations or privacy, security, compatibility, or maintenance risks does it have?
5. Give a clear recommendation: recommend, conditionally recommend, or do not recommend, with reasons.

Distinguish statements documented by the repository, inferences from source code, and unknowns. If evidence is insufficient, say so explicitly. Do not guess or simply repeat the README.

GitHub: https://github.com/f0909172434/dsh-plugin-verified-search
Plugin: dsh-plugin-verified-search
Author: f0909172434

Check the source files

Read the README and other files from this plugin directory before installing.

File explorer5 files
README.mdSource · read only
README language

dsh-plugin-verified-search

![CI](https://github.com/f0909172434/dsh-plugin-verified-search/actions/workflows/ci.yml) ![Release](https://github.com/f0909172434/dsh-plugin-verified-search/releases) ![License](LICENSE)

English · 繁體中文 · 简体中文

Auditable current-source retrieval for DeepSeek Harness.

The plugin replaces an agent's inherited web_search with bounded workflows that make source scope, retained evidence, deterministic JSON selection, and unresolved gaps visible. It is the installable companion to deepseek-harness Discussion #332 and also mounts the time context discussed in Discussion #344.

It verifies workflow and structured-source postconditions. It does not certify publisher truth or guarantee that an upstream search index is current.

![Architecture of the bounded evidence workflow](docs/assets/architecture.svg)

Release status

TrackInstall refModel-facing toolsValidation boundary
Stablev0.1.1verified_searchMaintainer-validated release tag with packaged artifacts, checksums, cross-platform CI, clean-profile installation, and recorded live provider conformance
Experimental snapshotc29b531a6c2e52200d454aa9ded42214ba8c0014All five tools listed belowLast green main snapshot on 2026-08-16; 250 tests and the 42-case frozen offline corpus passed
Moving mainmainUnreleased developmentDo not install unpinned; behavior and generated artifacts may change between commits

> External independent validation: absent. The repository provides internal deterministic tests, CI, package-reproducibility checks, and maintainer-run conformance evidence. Those signals are not described as third-party review.

Prerequisites

  • DeepSeek Harness 0.1.0-rc.6 and Cordis 4.0.1.
  • Node.js 22.19.x or 24.x.
  • A DEEPSEEK_API_KEY available through the Harness credential service or launch environment.
  • A search-capable preset. The plugin does not grant search capability to the shipped minimal preset.
  • Ubuntu and Windows are covered by CI. macOS is not currently part of the support contract.

See [the compatibility contract](docs/COMPATIBILITY.md) before changing Harness, Cordis, Node, or package-manager versions.

Install in one minute

Stable verified_search

dsh plugin --profile web add github:f0909172434/dsh-plugin-verified-search#v0.1.1
dsh --profile web --dump-config
dsh web

Equivalent one-line PowerShell command:

dsh plugin --profile web add github:f0909172434/dsh-plugin-verified-search#v0.1.1; dsh --profile web --dump-config; dsh web

The release commits prebuilt lib/ output and has no install-time build script, so a pinned Git install does not execute this repository's development toolchain on the user's machine.

Experimental five-tool snapshot

dsh plugin --profile web add github:f0909172434/dsh-plugin-verified-search#c29b531a6c2e52200d454aa9ded42214ba8c0014
dsh --profile web --dump-config
dsh web

Use this only for development and evaluation. Do not replace the commit with the moving main branch in a reproducible test.

If the deployment already mounts Discussion #344's time-context row, set DSH_VERIFIED_SEARCH_DISABLE_TIME_CONTEXT=1 before starting Harness to avoid duplicate clock injectors.

Roll back

dsh plugin --profile web remove dsh-plugin-verified-search
dsh web

Minimal quickstart

Ask a search-capable agent a bounded, absolute-date question, for example:

> Find DeepSeek's current flagship API model as of 2026-08-14. Use only api-docs.deepseek.com. If the retained sources do not contain an answer-bearing excerpt, report the claim as unresolved instead of filling it from memory.

The corresponding model-facing verified_search arguments are:

{
  "query": "DeepSeek current flagship API model as of 2026-08-14",
  "allowed_domains": ["api-docs.deepseek.com"]
}

Expected behavior:

  • the native provider allowlist is sent upstream;
  • returned structured sources are post-filtered locally by exact hostname or subdomain;
  • credential-bearing URLs and sensitive or tracking URL components are rejected or removed before session-visible results are assembled;
  • a title or URL without a retained citation excerpt is not promoted to verified evidence;
  • an evidence gap remains visible rather than being replaced with an older or memorized answer.

Run a separate unrestricted query when independent comparison sources are also required. The allowlist is a postcondition over returned structured-source hostnames, not a network-egress or privacy boundary.

Choose the right tool

ToolUse it forBounded result
verified_searchOne narrow mutable-fact lookupStructured-source hostname postfilter and visible citation-excerpt gaps
verified_researchMulti-entity or multi-claim researchPer-claim retained excerpt, retrieval metadata, content hash, and explicit unresolved claims
verified_json_selectionLatest/as-of selection from an official JSON feedStrict RFC 6901 traversal, date cutoff, maximum date, and all final ties
verified_json_numeric_extremaExact numeric maximum or minimum from JSONSource-lexeme comparison without IEEE-754 loss and all final ties
verified_json_projectionEvery strict matching JSON row in source orderBounded parent/nested projection with auditable pointer repairs and no inferred ordering

Only verified_search belongs to the stable v0.1.1 release. The other four tools are experimental in the pinned 0.3.0-experiment.0 snapshot.

Composite research example

{
  "query": "Identify current flagship API model IDs as of 2026-08-14",
  "lanes": [
    {
      "id": "deepseek",
      "query": "DeepSeek current flagship API model ID as of 2026-08-14",
      "required_claims": [
        {
          "id": "model_id",
          "query": "latest DeepSeek flagship API model identifier",
          "evidence_must_include": ["Model ID"],
          "value_kind": "generic_text",
          "scope": {"kind": "document", "must_include": ["DeepSeek"]}
        }
      ],
      "allowed_domains": ["api-docs.deepseek.com"],
      "seed_urls": ["https://api-docs.deepseek.com/api/list-models/"],
      "gap_query": "site:api-docs.deepseek.com/api/list-models model IDs 2026-08-14"
    }
  ]
}

evidence_must_include is a normalized substring postcondition, not a semantic entailment judge. Do not put the unknown answer itself into a required phrase merely to confirm the model's guess.

Failure behavior

The plugin is designed to fail closed or stay explicitly unresolved.

  • Invalid hostname allowlists, credential-bearing URLs, unsafe redirects, non-public resolved addresses, unsupported media, malformed charset declarations, invalid UTF-8, and resource-limit violations fail visibly.
  • Structured JSON operations reject invalid JSON, duplicate keys, excessive nesting, invalid pointers, missing fields, unsupported numeric projection, row/tie/output limits, and unavailable exact number lexemes.
  • Discovery may skip known binary paths. An explicitly supplied unsupported binary seed fails visibly instead of being silently reinterpreted.
  • Provider or fetch timeouts abort bounded work and preserve the evidence gap.
  • allClaimsCovered, complete: true, or truncated: false describe the declared bounded operation only; they do not prove source freshness, semantic entailment, publisher authenticity, feed completeness, or exhausted pagination.

Trust and security boundary

The plugin can enforce that returned structured sources match an explicit hostname allowlist after local filtering. The experimental full-page reader additionally restricts retrieval to bounded public HTTPS targets with DNS/IP validation, pinned transport, redirect checks, supported text/JSON media types, charset validation, and byte/time limits.

It does not prove that:

  • the provider's private candidate pool or generated prose used only allowed domains;
  • the provider did not retrieve another page or follow a redirect outside the allowlist;
  • the upstream index contains the newest page or ranks time correctly;
  • a retained phrase entails the requested claim or handles negation correctly;
  • a caller-selected seed URL is canonical, first-party, or authoritative;
  • an API response is authentic, complete, unpaginated, correctly ordered, or factually correct;
  • text from a public page is safe to follow as instructions.

Search queries are durable Harness session data. Never put secrets, signed URLs, or private data in a query. See [SECURITY.md](SECURITY.md) for private reporting and the detailed threat boundary.

Verification snapshot

The pinned experimental snapshot records:

  • source commit: c29b531a6c2e52200d454aa9ded42214ba8c0014;
  • push CI: passed on Ubuntu and Windows across Node 22.19.x and 24.x;
  • HonestCI baseline: 250 tests, 0 failures, 0 errors, 0 skipped;
  • frozen offline corpus: 42/42 cases;
  • registered offline result digest: sha256:3002001da02d0b8501bcc97ee867109f1bfbf0e1a227d87845db81da658ea5c0;
  • committed lib/ and package-content reproducibility checks;
  • external independent validation: absent.

Machine-readable lifecycle, runtime, capability, and architecture facts live in [capabilities.json](capabilities.json) and [architecture.json](architecture.json). The evaluation method is documented in [docs/OFFLINE_EVALUATION.md](docs/OFFLINE_EVALUATION.md), [docs/PROPERTY_TESTING.md](docs/PROPERTY_TESTING.md), and [docs/HONEST_CI_DOGFOOD.md](docs/HONEST_CI_DOGFOOD.md).

Observed evaluation

![Observed completion improvement on two difficult official-source tasks](docs/assets/benchmark.svg)

Two frozen-ledger live tasks were observed under a 600-second outer cap:

TaskBefore the fixesExperimental workflowTerminal time
Go supported releases, security scope, and Linux artifact provenance0/88/8317 s
EU AI Act amended timeline and GPAI transition dates0/86/8307 s
Combined0/1614/16 (87.5%)

All 14 answered requested fields had retained official-source evidence; the other two stayed unresolved. These are single observed runs, not a standardized benchmark, statistical estimate, latency target, or release guarantee. Both successful terminal runs exceeded 240 seconds, so timeout and latency work remains important.

Configuration

The bundle can read DEEPSEEK_API_KEY from the Harness credential service or launch environment. Optional configuration fields include:

AreaFields
ProviderapiKeyEnv, apiKey, baseURL, model, apiVersion
Search limitsmaxTokens, maxUses, maxResults, searchTimeoutMs
Experimental researchresearchTimeoutMs, researchMaxResults

researchMaxResults defaults to 24, is constrained to 4–32, and must be at least the declared claim count for the call. Treat configuration changes as compatibility and resource-boundary changes, not merely tuning.

Development and full verification

pnpm install --frozen-lockfile --ignore-scripts
pnpm run check
pnpm test
pnpm run build
pnpm run evaluate:offline
npm pack --dry-run --ignore-scripts --json
git diff --check
git diff --exit-code -- lib

The second build must not create a new lib/ diff. A changed frozen offline digest is a behavior-change signal; do not update the expected digest merely to make CI green.

Documentation

  • [Architecture and ownership boundaries](docs/ARCHITECTURE.md)
  • [Compatibility contract](docs/COMPATIBILITY.md)
  • [Frozen offline evaluation](docs/OFFLINE_EVALUATION.md)
  • [Property-testing contract](docs/PROPERTY_TESTING.md)
  • [HonestCI dogfooding evidence](docs/HONEST_CI_DOGFOOD.md)
  • [Serial single-maintainer roadmap](docs/ROADMAP.md)
  • [Maintenance rules](MAINTENANCE.md)
  • [Security policy](SECURITY.md)
  • [Change history](CHANGELOG.md)

Relationship to the upstream core fix

This repository is a deployable compatibility layer. The provider-neutral Harness core change remains ce4d0455c. If the official project ships equivalent bounded capabilities, this plugin can move to an additional verification mode or retire with a documented migration path.

Security reporting

Use this repository's private GitHub security-advisory interface for a suspected credential leak, allowlist bypass, or unsafe page-fetch path. Do not paste API keys, signed URLs, private queries, private excerpts, or raw session logs into a public issue.

License

MIT