dsh-data-cleaning-agent 0.9.1 → 0.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/README.en.md +3 -3
- package/README.md +6 -4
- package/docs/COMPATIBILITY.md +14 -0
- package/install.sh +1 -0
- package/lib/better-sidebar-adapter.js +1 -1
- package/lib/client.js +1 -1
- package/lib/install-preflight.js +11 -10
- package/package.json +7 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,13 @@
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [0.9.2] - 2026-09-10
|
|
8
|
+
|
|
9
|
+
- Better Sidebar 改为可选 peer;缺失侧栏不阻断基础安装、原生会话和本地清洗/补全/画像工具。
|
|
10
|
+
- 基础预检与 `--workbench` 预检分离;已安装的已知不兼容组合仍明确阻断。
|
|
11
|
+
- 工作台缺失提示明确可用边界,保留草稿与任务,不创建私有抽屉。
|
|
12
|
+
- 隔离真实 Host 验证无侧栏工具执行、兼容侧栏 XLSX 闭环及已知不兼容阻断;真实计费 MCP、OCR 与四产品共存不在本次验收范围。
|
|
13
|
+
|
|
7
14
|
## [0.9.1] - 2026-09-10
|
|
8
15
|
|
|
9
16
|
- 新宿主 uiWorkspace 生命周期适配:新会话不再复用清洗空会话,普通草稿与菜单隔离。
|
package/README.en.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# dsh-data-cleaning-agent
|
|
2
2
|
|
|
3
|
-
> 0.9.
|
|
3
|
+
> 0.9.2 upgrade: Better Sidebar is an optional workbench dependency. Base tools and conversations remain available without it. The workbench requires `targetedOpen` and `stateSubscription`; no private drawer fallback is created. See the [compatibility record](docs/COMPATIBILITY.md).
|
|
4
4
|
|
|
5
5
|
Data cleaning and data enrichment for CSV/XLSX/JSON enterprise lists in DeepSeek Harness, including spreadsheet cleaning, deduplication, profiling, optional Qichacha MCP and exports.
|
|
6
6
|
|
|
@@ -10,7 +10,7 @@ Related agents: [数据清洗补全](https://github.com/duhu2000/dsh-data-cleani
|
|
|
10
10
|
|
|
11
11
|
> 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.
|
|
12
12
|
>
|
|
13
|
-
> Current source version / 当前源码版本: **0.9.
|
|
13
|
+
> Current source version / 当前源码版本: **0.9.2** (stable release)
|
|
14
14
|
|
|
15
15
|
This release unifies spreadsheet previews, column mapping, and enrichment scope across the prompt wizard and workbench. Mapping statuses use color and text; mapped fields automatically enter the scope, with optional extra fields collapsed. Multiple confirmed output columns may share a non-identity field while preserving non-empty values. It fixes saved drafts resetting the scope to five defaults and detects stale Host versions. Preparing a draft does not query QCC; sending starts execution. Fully restart DSH after upgrading. Existing download artifacts are not rewritten.
|
|
16
16
|
|
|
@@ -72,7 +72,7 @@ temporary files. The local server uploads the explicitly submitted file to the Q
|
|
|
72
72
|
Both use the current customer's own QCC account and quota. Without the local connector,
|
|
73
73
|
image intake fails closed with actionable guidance; text and spreadsheet paths remain available.
|
|
74
74
|
|
|
75
|
-
|
|
75
|
+
Better Sidebar is optional and is not automatically installed. Native conversations and the clean/complete/profile engine tools work without it; interactive import, mapping confirmation, workbench preview/export and navigation do not. Workbench entry explains the limitation without deleting drafts/tasks or creating a private drawer. For the workbench, use the tested DSH `0.1.2-rc.1` + Sidebar `0.18.1` pair; an exact optional peer is not a general compatibility claim. Existing incompatible sidebar installations still block preflight. Context is optional; an existing `0.36.0` must be upgraded to `0.48.0`. Use `node lib/install-preflight.js <profile> <dsh-executable> --workbench` for workbench checks; base checks permit a missing sidebar. Runtime capabilities are checked separately. No global host upgrades are performed.
|
|
76
76
|
|
|
77
77
|
Run from a full checkout or unpacked npm package with the actual `dsh` CLI (streamed shell installation is no longer supported):
|
|
78
78
|
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# dsh-data-cleaning-agent
|
|
2
2
|
|
|
3
|
-
> 0.9.
|
|
3
|
+
> 0.9.2 升级说明:Better Sidebar 是可选工作台依赖;缺失时基础工具和会话仍可用。工作台需要兼容的 `dsh-better-sidebar`(`targetedOpen`、`stateSubscription`),不回退到自有抽屉;验证边界见 [兼容记录](docs/COMPATIBILITY.md)。
|
|
4
4
|
|
|
5
5
|
本版统一向导与工作台的 Host 执行闭环:发送后自动生成新 Excel,原文件不修改,工作台入口可恢复;发布记录见 [发布说明](docs/RELEASE-0.8.22.md)。
|
|
6
6
|
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
数据清洗补全智能体:面向 Excel/CSV/JSON 企业名单,提供数据清洗、表格清洗、清洗补全、去重、企业数据补全与字段补全,支持企查查 MCP 和结果导出。
|
|
10
10
|
|
|
11
11
|
```sh
|
|
12
|
-
dsh plugin --profile web add dsh-data-cleaning-agent@0.9.
|
|
12
|
+
dsh plugin --profile web add dsh-data-cleaning-agent@0.9.2
|
|
13
13
|
```
|
|
14
14
|
|
|
15
15
|
请先满足下文的 DSH、连接器及侧边栏依赖要求;安装后完整停止并重启对应 Profile。
|
|
@@ -27,7 +27,7 @@ dsh plugin --profile web add dsh-data-cleaning-agent@0.9.1
|
|
|
27
27
|
|
|
28
28
|
> 在 DeepSeek Harness 中清洗、补全、画像企业名单数据的智能体插件:本地 CSV/XLSX/JSON 引擎 + 可选企查查(Qichacha/QCC)MCP 企业数据补全,由企查查(Qichacha/QCC)团队发起并维护。
|
|
29
29
|
>
|
|
30
|
-
> 当前源码版本 / Current source version: **0.9.
|
|
30
|
+
> 当前源码版本 / Current source version: **0.9.2**(正式版本)
|
|
31
31
|
|
|
32
32
|
本版上传表格后展示完整清单及空白数量,用绿色、琥珀色、红色及文字区分已通过、待确认和未匹配映射。已映射字段自动纳入补全范围,额外字段默认折叠;多个原列可经确认使用同一非主体字段,分别补空并保留非空原值。修复 Host 草稿重置为默认五字段的问题,增加前后端版本错配提示。生成说明不查询,发送才执行;升级后需完整重启 DSH,历史下载文件不自动改写。
|
|
33
33
|
|
|
@@ -81,7 +81,9 @@ Composer 图片附件,因此不支持视觉输入的文本模型也能调度 A
|
|
|
81
81
|
或分发凭据。本地服务会把用户明确提交的图片上传到企查查文档解析网关;未连接本地服务时功能会
|
|
82
82
|
fail closed,并明确提示配置要求,文本与 Excel 流程不受影响。
|
|
83
83
|
|
|
84
|
-
|
|
84
|
+
基础安装不需要 Better Sidebar,也不会自动安装它。交互工作台才需要完整 DSH `0.1.2-rc.1` + 可选 Better Sidebar `0.18.1`;optional peer 的精确版本不代表其它配对均兼容。context 不是必装依赖;若已装 `0.36.0`,需先升级到 `0.48.0`。已安装不兼容侧栏仍会阻断预检。
|
|
85
|
+
|
|
86
|
+
无侧栏可用:原生会话、`data_clean_rows`、`data_complete_rows`、`data_profile` 引擎工具。不可用:交互工作台的表格导入、映射确认、结果预览/下载及流程导航;点击入口显示原因并保留草稿/任务,不创建私有抽屉。不要把会话可打开等同于完整清洗流程可用。基础预检默认允许侧栏缺失;如需校验工作台安装,运行 `node lib/install-preflight.js <Profile目录> <dsh可执行文件> --workbench`,运行时再探测 capabilities。预检不会升级全局宿主。
|
|
85
87
|
|
|
86
88
|
从完整源码或解压的 npm 包运行安装脚本(需要实际 `dsh` CLI;不再支持流式脚本):
|
|
87
89
|
|
package/docs/COMPATIBILITY.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# 兼容性 / Compatibility
|
|
2
2
|
|
|
3
|
+
## 0.9.2:可选侧栏验收
|
|
4
|
+
|
|
5
|
+
Node v25.9.0,完整 DSH 0.1.2-rc.1;使用 npm pack 产物、独立 DSH_HOME 和端口,未修改生产 Profile 或调用计费 MCP。
|
|
6
|
+
|
|
7
|
+
| 组合 | 实测结果 |
|
|
8
|
+
| --- | --- |
|
|
9
|
+
| 无 Sidebar / 无 context | 基础预检允许;Host 启动、原生会话、缺失提示及草稿保留通过。真实 tools.execute 执行 data_clean_rows、data_complete_rows、data_profile 合成数据成功。工作台不可用。 |
|
|
10
|
+
| Sidebar 0.18.1 / context 0.48.0 | Host 与浏览器无 pageErrors;合成 XLSX 导入、映射确认、本地清洗/补全、导出回读、HTTP 预览及普通会话草稿通过。 |
|
|
11
|
+
| Sidebar 0.17.1 | 基础预检仍阻断;隔离启动复现 settingsNamespace 缺失,不因 optional 忽略冲突。 |
|
|
12
|
+
|
|
13
|
+
基础安装不强装侧栏;`--workbench` 模式在侧栏缺失时阻断,运行时另检 targetedOpen/stateSubscription。工具未发现 session.events/snapshotEvents 依赖,不套用其他产品补丁。无侧栏不支持交互导入、映射确认、结果预览下载与工作台导航,不等于完整工作流可用。
|
|
14
|
+
|
|
15
|
+
验收脚本:scripts/host-no-sidebar-smoke.cjs、scripts/host-rc1-smoke.cjs。测试数据为合成数据;真实 QCC、OCR、多候选确认和四产品完整共存仍未验证。以下章节是历史版本证据,不覆盖这些未测能力。
|
|
16
|
+
|
|
3
17
|
## 0.9.0:Session 单例 Tab
|
|
4
18
|
|
|
5
19
|
工作台通过可选 `ctx.inject(['betterSidebar'], ...)` 接入 Provider,探测 `targetedOpen` 与 `stateSubscription`;缺失时保留会话和 Host 工具,不提供私有抽屉回退。当前仅完成隔离模拟服务与 Chromium 回归,尚未实装组合验收;旧版本的 Host/UI 验证不自动覆盖此次迁移。详见 [采用记录](UI-V1.5.0-ADOPTION.md)。
|
package/install.sh
CHANGED
|
@@ -28,6 +28,7 @@ if [ ! -f "$SCRIPT_DIR/lib/install-preflight.js" ]; then
|
|
|
28
28
|
exit 1
|
|
29
29
|
fi
|
|
30
30
|
node "$SCRIPT_DIR/lib/install-preflight.js" "$PROFILE_DIR"
|
|
31
|
+
echo "==> 基础智能体安装:不会强制安装侧栏;交互工作台需兼容 Better Sidebar,可用 --workbench 单独预检。"
|
|
31
32
|
|
|
32
33
|
# ── 1) 安装依赖 ──
|
|
33
34
|
if command -v dsh >/dev/null 2>&1; then
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/** Public Better Sidebar seam. No business task creation, cancellation or geometry. */
|
|
2
2
|
export const CLEANING_TAB_ID = 'dsh-data-cleaning-agent:workbench';
|
|
3
|
-
export const SIDEBAR_DEPENDENCY_MESSAGE = '
|
|
3
|
+
export const SIDEBAR_DEPENDENCY_MESSAGE = '交互工作台暂不可用;基础清洗、规则补全、画像工具和原生会话仍可使用。启用工作台请安装或升级兼容的 dsh-better-sidebar 并重启 DSH(需要 targetedOpen 和 stateSubscription 能力),然后重新点击流程按钮。现有任务和文件不会删除。';
|
|
4
4
|
|
|
5
5
|
export function sidebarCompatibility(service) {
|
|
6
6
|
const methods = ['registerTab', 'openTab', 'isTabEnabled', 'getSnapshot', 'subscribeState'];
|
package/lib/client.js
CHANGED
|
@@ -4209,7 +4209,7 @@ body:has(.dcAgentPromptBackdrop) { overflow: hidden; }
|
|
|
4209
4209
|
// BEGIN generated Better Sidebar adapter (source: lib/better-sidebar-adapter.js)
|
|
4210
4210
|
/** Public Better Sidebar seam. No business task creation, cancellation or geometry. */
|
|
4211
4211
|
const CLEANING_TAB_ID = 'dsh-data-cleaning-agent:workbench';
|
|
4212
|
-
const SIDEBAR_DEPENDENCY_MESSAGE = '
|
|
4212
|
+
const SIDEBAR_DEPENDENCY_MESSAGE = '交互工作台暂不可用;基础清洗、规则补全、画像工具和原生会话仍可使用。启用工作台请安装或升级兼容的 dsh-better-sidebar 并重启 DSH(需要 targetedOpen 和 stateSubscription 能力),然后重新点击流程按钮。现有任务和文件不会删除。';
|
|
4213
4213
|
|
|
4214
4214
|
function sidebarCompatibility(service) {
|
|
4215
4215
|
const methods = ['registerTab', 'openTab', 'isTabEnabled', 'getSnapshot', 'subscribeState'];
|
package/lib/install-preflight.js
CHANGED
|
@@ -5,7 +5,7 @@ import { createRequire } from 'node:module';
|
|
|
5
5
|
import { fileURLToPath } from 'node:url';
|
|
6
6
|
import { execFileSync } from 'node:child_process';
|
|
7
7
|
|
|
8
|
-
export function assessCombination({ host, sidebar, context }) {
|
|
8
|
+
export function assessCombination({ host, sidebar, context, workbench = false }) {
|
|
9
9
|
const errors = [], warnings = [];
|
|
10
10
|
if (host === '0.1.2-rc.1' && sidebar === '0.17.1') errors.push('DSH 0.1.2-rc.1 与 Better Sidebar 0.17.1 不兼容:缺少 settingsNamespace;请升级侧边栏到 0.18.1。');
|
|
11
11
|
if (!host) errors.push('无法识别实际 DSH CLI 版本;请先安装完整 DSH,再重新预检。');
|
|
@@ -14,15 +14,15 @@ export function assessCombination({ host, sidebar, context }) {
|
|
|
14
14
|
errors.push('Better Sidebar 0.18.1 不兼容此旧宿主。备份后由宿主管理者升级完整 @deepseek-ai/dsh@0.1.2-rc.1;不要只升级 Session 子包。');
|
|
15
15
|
} else warnings.push('此宿主与 Better Sidebar 0.18.1 组合未验证。');
|
|
16
16
|
}
|
|
17
|
-
if (!sidebar) errors.push('
|
|
18
|
-
else if (sidebar !== '0.18.1') warnings.push('此侧边栏版本未验证;仍需 targetedOpen 和 stateSubscription 能力。');
|
|
17
|
+
if (!sidebar) (workbench ? errors : warnings).push('未安装可选 dsh-better-sidebar:基础引擎、工具与原生会话可用;交互工作台不可用。如需工作台,请配套安装 0.18.1 与完整 DSH 0.1.2-rc.1。');
|
|
18
|
+
else if (sidebar !== '0.18.1' && !(host === '0.1.2-rc.1' && sidebar === '0.17.1')) warnings.push('此侧边栏版本未验证;仍需 targetedOpen 和 stateSubscription 能力。');
|
|
19
19
|
if (host === '0.1.2-rc.1' && context === '0.36.0') errors.push('已安装的 dsh-context 0.36.0 使用旧 settingsNamespace;先升级该插件到 0.48.0。context 并非本产品必装依赖。');
|
|
20
20
|
else if (context && context !== '0.48.0') warnings.push('已安装的 context 版本尚未做共存验证。');
|
|
21
21
|
if (host && host !== '0.1.2-rc.1' && !warnings.length && !errors.length) warnings.push('此宿主组合未验证。');
|
|
22
|
-
return { host, sidebar, context, errors, warnings, ok: errors.length === 0 };
|
|
22
|
+
return { host, sidebar, context, mode: workbench ? 'workbench' : 'base', errors, warnings, ok: errors.length === 0 };
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
export function inspectProfile(profile, host) {
|
|
25
|
+
export function inspectProfile(profile, host, workbench = false) {
|
|
26
26
|
const req = createRequire(resolve(profile, 'package.json'));
|
|
27
27
|
const version = name => {
|
|
28
28
|
let path;
|
|
@@ -33,16 +33,17 @@ export function inspectProfile(profile, host) {
|
|
|
33
33
|
if (dirname(dir) === dir) return null;
|
|
34
34
|
}
|
|
35
35
|
};
|
|
36
|
-
return assessCombination({ host, sidebar: version('dsh-better-sidebar'), context: version('dsh-context') });
|
|
36
|
+
return assessCombination({ host, sidebar: version('dsh-better-sidebar'), context: version('dsh-context'), workbench });
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
if (process.argv[1] && resolve(process.argv[1]) === fileURLToPath(import.meta.url)) {
|
|
40
|
-
const
|
|
41
|
-
|
|
40
|
+
const positional = process.argv.slice(2).filter(arg => arg !== '--workbench');
|
|
41
|
+
const profile = positional[0];
|
|
42
|
+
if (!profile) { console.error('Usage: node lib/install-preflight.js <profile-directory> [dsh-executable] [--workbench]'); process.exitCode = 2; }
|
|
42
43
|
else {
|
|
43
44
|
let host = null;
|
|
44
|
-
try { host = execFileSync(
|
|
45
|
-
const report = inspectProfile(profile, host);
|
|
45
|
+
try { host = execFileSync(positional[1] || 'dsh', ['--version'], { encoding: 'utf8', timeout: 15000 }).match(/\b\d+\.\d+\.\d+(?:-[\w.]+)?\b/)?.[0] ?? null; } catch { /* reported below */ }
|
|
46
|
+
const report = inspectProfile(profile, host, process.argv.includes('--workbench'));
|
|
46
47
|
console.log(JSON.stringify(report, null, 2));
|
|
47
48
|
process.exitCode = report.ok ? 0 : 1;
|
|
48
49
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-data-cleaning-agent",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.2",
|
|
4
4
|
"description": "Data cleaning and data enrichment for CSV/XLSX/JSON enterprise lists in DeepSeek Harness, including spreadsheet cleaning, deduplication, profiling, optional Qichacha MCP and exports.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "lib/index.js",
|
|
@@ -123,11 +123,17 @@
|
|
|
123
123
|
"xlsx": "^0.18.5"
|
|
124
124
|
},
|
|
125
125
|
"peerDependencies": {
|
|
126
|
+
"dsh-better-sidebar": "0.18.1",
|
|
126
127
|
"@deepseek-ai/dsh-client-ui-conversation": "*",
|
|
127
128
|
"@deepseek-ai/dsh-client-ui-layout": "*",
|
|
128
129
|
"react": "^18.2.0",
|
|
129
130
|
"react-dom": "^18.2.0"
|
|
130
131
|
},
|
|
132
|
+
"peerDependenciesMeta": {
|
|
133
|
+
"dsh-better-sidebar": {
|
|
134
|
+
"optional": true
|
|
135
|
+
}
|
|
136
|
+
},
|
|
131
137
|
"dsh": {
|
|
132
138
|
"bundle": {
|
|
133
139
|
"patch": "./cordis.patch.yml"
|