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
latestis 0.4.0)
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 callmcp__qcc-company__get_company_by_query/mcp__qcc-company__get_company_registration_infoper 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 bothconfirmPaidCalls:trueand a uniqueidempotencyKey; 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.
Links
More in this category
Tencent/WeKnora#dsh-weknora★ 21308
Four read-only tools over a WeKnora knowledge base: list knowledge bases, hybrid passage search, reassemble one document's chunks in order, and WeKnora's own cited RAG or ReAct-agent answer with a resumable session id.
superdesigndev/treg★ 1158
Tool catalog for agents: search ~2,600 external endpoints (SEO and SERP, backlinks, social, people and company enrichment, ad libraries, scraping) by the task you want done, read each one's parameters and per-call price, then call it with the credential injected server-side. Ships the skill plus an MCP row that stays disabled until TREG_TOKEN is set.
anysearch-team/anysearch-dsh★ 399
AnySearch-powered real-time web and vertical search provider for DeepSeek Harness.
EthanYoQ/Invoice-Downloader#dsh-invoice-downloader★ 375
Local IMAP invoice download, OCR, archive, and Excel reimbursement summaries for DeepSeek Harness.
omdsh-dev/dsh-data-agent★ 184
Let the AI connect to databases and write SQL for you.
zhaoolee/notes#dsh-plugin★ 158
Export DSH conversations as Smartisan Notes-style PNGs, or create and update Markdown notes in a configured account-scoped workspace.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.