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
DSH Lattice V1 provider adapter for the DeepSeek Harness public seam.
This package is an independent community adapter, part of the
DSH Lattice facade project. It is not
affiliated with, endorsed by, or sponsored by DeepSeek AI, and it does not
import the upstream @deepseek-ai/dsh-root package.
| Module | Responsibility |
|---|---|
capabilities |
Capability detection: required-vs-observed comparison that fails loud (ECC-V1.0 §12, §22.2) |
session-mapping |
Canonical agentId ↔ session mapping, identity kinds, explicit SessionLink lineage, compatibility fingerprints (§10, §16.3) |
events |
Lattice/audit events with REQUIRED tenantId, secret redaction <redacted:kind/name>, leak scan (§19.3, §19.4) |
manifest |
Adapter manifest validation; credentialRef references only — values are never inlined (§12, §19.3) |
adapter |
DshAdapter implementing the Lattice adapter contract over a minimal SubagentsSeam |
import { createDshAdapter } from "@dsh-lattice/adapter-dsh";
const adapter = createDshAdapter({
id: "dsh-sdk",
descriptor: {
name: "dsh-sdk",
package: "@dsh-lattice/adapter-dsh",
adapterVersion: "1.0.0",
requiredCapabilities: ["continuation", "directMessage", "structuredOutput", "progress"],
observedCapabilities: ["continuation", "directMessage", "structuredOutput", "progress", "oneShot"],
credentialRef: { kind: "env", name: "DSH_SDK_TOKEN" },
},
seam: harnessCtx.subagents, // the live ctx.subagents object
});
// Fail-loud gate before a run starts:
const preflight = adapter.preflight(["continuation", "artifacts"]);
if (!preflight.ok) {
// capability_mismatch: missing [artifacts]
}
const envelope = await adapter.runOneShot({
prompt: "review this diff",
tenantId: "tenant_1",
runId: "run_1",
taskId: "tsk_1",
assignmentId: "asn_1",
idempotencyKey: "idem_...",
});
requiredCapabilities come from the project config; observedCapabilities
come from the adapter manifest plus a runtime probe refreshed on every
startup. If observed ⊉ required the adapter emits
lattice/adapter/capability_mismatch and the run is rejected — never
silently degraded.
| Provider kind | canonical agentId |
lifetime |
|---|---|---|
| local in-process | canonical name + DSH sessionId |
durable |
| ACP subprocess | adapter-assigned name + ACP session id | durable |
| A2A remote | cardId#a2aTaskId |
durable |
| one-shot (Codex/Claude Code) | canonical name | ephemeral — run-scoped only |
Identity changes (fork/resume/handoff) are recorded only via explicit
SessionLink pointers — never implicit.
See SECURITY.md. Highlights: no shell, capability
fail-loud, credentialRef indirection (presence-only resolution), secret
redaction on every event, explicit lineage.
Facts below were checked against the upstream repository checkout in this
workspace (deepseek-harness/, as of this writing):
@deepseek-ai/dsh-root 0.1.0-rc.5, "type": "module", pnpm-managed, and is Cordis-based (scripts verify-cordis-config,
gen-cordis-catalog, gen-cordis-api; cordis.patch.yml files in
packages/bundle/*).ctx.subagents with
registerProvider(...), start(providerId, options),
startContinuable(...), interrupt(...), and listChildren(...)
(see packages/sdk/server/tests/server.spec.ts,
packages/subagent/subagent/README.md, and the subagent capability-seam
notes). DshAdapter depends only on this documented subset via the
SubagentsSeam interface, so it can be wired to a real harness context
without a hard upstream dependency.send_message / interrupt_agent are parent-child limited. The tools
live in packages/subagent/tool-subagent-control/src/index.ts; list_agents
documents that only depth-1 direct children are send_message candidates
and deeper entries are interrupt_agent-only. The Lattice agent_message
shim preserves this constraint (see the aggregator package).\n-terminated line (packages/sdk/protocol/README.md) — this
is the framing the @dsh-lattice/transports ACP client mirrors.@dsh-lattice/transports is therefore a
Lattice-owned boundary, not an upstream feature.pnpm install # offline-capable from the pnpm store
pnpm build # tsc → dist/
pnpm typecheck
pnpm test # vitest
pnpm coverage
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。