DeepSeek Harness Plugin

duhu2000/dsh-data-cleaning-agent

Stars ★ 1 Downloads (30d) 0 Category Tools & Capabilities Added 2026-09-02 npm dsh-data-cleaning-agent

Clean, complete, profile, and deduplicate CSV/XLSX/JSON enterprise lists in DeepSeek Harness, with optional Qichacha MCP enrichment.

Install

# from npm (prebuilt)

dsh plugin --profile web add dsh-data-cleaning-agent

# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)

dsh plugin --profile web add github:duhu2000/dsh-data-cleaning-agent

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 — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).

README

A data cleaning & completion agent plugin for DeepSeek Harness: local CSV/XLSX/JSON engine plus optional Qichacha (QCC) MCP enterprise-data enrichment. Initiated and maintained by the Qichacha (QCC) team.

Current source version / 当前源码版本: 0.4.0 (released; npm latest is 0.4.0)

CI

Overview

dsh-data-cleaning-agent is a DeepSeek Harness plugin (DSH Bundle plugin) for the common "customer gave us a messy list of company names / table data" task. Upload CSV / XLSX / JSON, clean name / phone / amount columns (trim, phone normalization, drop missing-required / negative-amount / duplicate rows), deterministically complete gaps, profile the batch, and export clean CSV.

The model only ever receives aggregate summaries, never raw detail rows. Details are only viewed and exported in the same-origin web UI, keeping customer raw data out of model context by construction.

Quick start

dsh plugin --profile web add dsh-data-cleaning-agent

Fully restart DeepSeek Harness afterwards (stop and re-run dsh web). Then say "help me clean this batch of company list data" and the plugin loads its built-in Skill and drives the clean / complete / profile tools.

Without the dsh CLI, use the install script:

bash <(curl -fsSL https://raw.githubusercontent.com/duhu2000/dsh-data-cleaning-agent/main/install.sh)

Or let an agent install it for you:

Install this plugin for me: https://github.com/duhu2000/dsh-data-cleaning-agent

Capability matrix

Capability Tool / entry Notes
Clean data_clean_rows trim, phone normalization, drop missing-required / negative-amount / duplicate rows
Complete data_complete_rows fill empty amount with 0, empty name with placeholder, report incomplete items
Profile data_profile column overview and amount distribution
Parse web /data-cleaning/api/mvp/parse CSV / XLSX / JSON
Async jobs web /data-cleaning/api/mvp/jobs job state machine + persistent storage
UI web /data-cleaning/ upload → clean/complete → export
Skill data-cleaning guides the model through the workflow
QCC Skill enrichment enterprise-enrichment 0.4.0: company panorama, ownership, governance, and historical registration
0.4.0 preflight web /data-cleaning/api/phase2/capabilities Read-only 16+4 dynamic-tool check; makes no QCC or paid calls
QCC Host Bridge web /data-cleaning/api/g5/* 0.4.0: real OAuth/QCC path, natural-expiry refresh, and fault injection verified

Qichacha MCP enrichment (status and roadmap)

Besides local deterministic completion, the plugin supports Qichacha MCP enterprise-data enrichment:

  • Plan A (model-mediated, first): after the user connects Qichacha with qcc-dsh-mcp-oauth, the Skill guides the model to call mcp__qcc-company__get_company_by_query / mcp__qcc-company__get_company_registration_info per company name and feed the fresh registration data back into the completion tool.
  • Plan B (programmatic, 0.4.0): the Host Bridge supports batch enrichment, idempotency, explicit candidate-resolution resume, manual retry of retryable failures, and metadata-only auditing through the public ctx.tools.execute() runtime. Paid endpoints require both confirmPaidCalls:true and a unique idempotencyKey; ambiguous candidates are never auto-selected. A loopback-only, fail-closed E2E runner is ready. On 2026-09-01 an isolated rc.2 Host passed real OAuth, restart recovery, and 400 QCC calls across 20 public companies. Natural-expiry token refresh, dynamic-tool recovery, a post-refresh real call, and 401/429/quota fault injection also passed.

The Bridge accepts both the documented mcp__qcc-company__* names and the legacy mcp__company__* names observed from qcc-dsh-mcp-oauth@0.1.7. A fresh rc.2 profile must also install the matching @deepseek-ai/dsh-mcp-client explicitly; see the compatibility guide.

See the 0.4.0 release record for scope, validation gates, and rollback steps.

See docs/PLAN-OSS.md for details.

Local development

Node.js 20 or later. DSH runtime services (ctx.tools / ctx.skills / ctx.jobs / ctx.storageDomain / webServer / webRuntime) are provided by the Host; locally you only install xlsx:

npm install --legacy-peer-deps
npm run check

npm run check runs lint, documentation version consistency, pack whitelist verification and unit tests. Real G5 validation must be enabled explicitly according to the E2E runbook; npm run e2e:g5 refuses to run by default.

Configuration

The plugin registers itself as a bundle via cordis.patch.yml; dsh plugin add adds the package to the profile's dsh.profile.bundles automatically.

Documentation

Security & privacy

  • Model tools return summaries only; raw detail rows never enter model context.
  • Detail data is delivered only via same-origin (127.0.0.1 / localhost) web endpoints; untrusted cross-origin requests are rejected.
  • Never put tokens, API keys, cookies, OAuth credentials, or real business data in issues, PRs, logs, screenshots, or test fixtures.

License

MIT © 2026 dsh-data-cleaning-agent plugin contributors

Get involved

If the plugin helps you clean company lists faster, consider starring the repository, filing an issue, or contributing a fix.

Content from the project README on GitHub ↗

Links

More in this category

View the whole category →

Community comments

Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.