连接数据库或表格,用自然语言只读查数
28.1/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/18 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add tieveto666-code/dsh-data-mode该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
dsh 原生插件 · tool
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 72 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件发起外部网络请求
查看扫描证据(共 47 处,展示前 43 条)
- 读取本地文件src/catalog/demo-sqlite.ts:32
await access(dest) - 写入本地文件src/catalog/demo-sqlite.ts:35
await mkdir(join(dshHome, DATA_MODE_DIR), { recursive: true }) - 写入本地文件src/catalog/demo-sqlite.ts:36
await copyFile(packagedDemoPath(), dest) - 读取本地文件src/catalog/demo-xlsx.ts:32
await access(dest) - 写入本地文件src/catalog/demo-xlsx.ts:35
await mkdir(join(dshHome, DATA_MODE_DIR), { recursive: true }) - 写入本地文件src/catalog/demo-xlsx.ts:36
await copyFile(packagedDemoPath(), dest) - 读取本地文件src/catalog/load-catalog.ts:84
return await readFile(path, 'utf8') - 写入本地文件src/catalog/load-catalog.ts:138
await mkdir(join(options.workspaceRoot, '.dsh', DATA_MODE_DIR), { recursive: true }) - 写入本地文件src/catalog/load-catalog.ts:161
await writeFile(workspacePath, body, 'utf8') - 读取本地文件src/catalog/secrets.ts:13
const text = await readFile(secretsPath(dshHome), 'utf8') - 写入本地文件src/catalog/secrets.ts:31
await mkdir(join(dshHome, DATA_MODE_DIR), { recursive: true }) - 写入本地文件src/catalog/secrets.ts:33
await writeFile(path, stringify({ secrets }), { encoding: 'utf8', mode: 0o600 }) - 写入本地文件src/catalog/secrets.ts:35
await chmod(path, 0o600) - 删除本地文件递归src/catalog/secrets.ts:60
await rm(join(workspaceRoot, '.dsh', DATA_MODE_DIR, 'uploads', sourceId), { recursive: true, force: true }) - 读取本地文件src/catalog/selection.ts:18
const text = await readFile(selectionPath(dshHome), 'utf8') - 读取本地文件src/catalog/selection.ts:44
const text = readFileSync(selectionPath(dshHome), 'utf8') - 写入本地文件src/catalog/selection.ts:66
await mkdir(join(dshHome, DATA_MODE_DIR), { recursive: true }) - 写入本地文件src/catalog/selection.ts:67
await writeFile(selectionPath(dshHome), stringify(doc), 'utf8') - 写入本地文件src/catalog/store.ts:148
await mkdir(join(options.workspaceRoot, '.dsh', DATA_MODE_DIR, 'uploads', id), { recursive: true }) - 写入本地文件src/catalog/store.ts:149
await writeFile(abs, input.bytes) - 发起网络请求src/client/api.ts:69
return parse(await fetch(`${API_PREFIX}/state${qs({ sessionId, workspaceId })}`, { credentials: 'same-origin' })) - 发起网络请求src/client/api.ts:80
return parseJson<PreviewPayload>(await fetch(`${API_PREFIX}/preview`, { - 发起网络请求src/client/api.ts:108
return parse(await fetch(`${API_PREFIX}/connect`, { - 发起网络请求src/client/api.ts:123
return parse(await fetch(`${API_PREFIX}/upload`, { - 发起网络请求src/client/api.ts:136
return parse(await fetch(`${API_PREFIX}/select`, { - 发起网络请求src/client/api.ts:149
return parse(await fetch(`${API_PREFIX}/remove`, { - 写入本地文件src/duckdb-engine.ts:207
await mkdir(join(home, 'extensions'), { recursive: true }) - 删除本地文件递归src/duckdb-engine.ts:234
await rm(dir, { recursive: true, force: true }).catch(() => undefined) - 删除本地文件递归src/duckdb-engine.ts:378
await rm(dir, { recursive: true, force: true }).catch(() => undefined) - 读取本地文件src/install-preset.ts:24
const raw = await readFile(originPath(directory), 'utf8') - 读取本地文件src/install-preset.ts:44
await readFile(join(dest, 'agent.cordis.yml'), 'utf8') - 写入本地文件src/install-preset.ts:46
await mkdir(join(options.dshHome, '.agent-presets'), { recursive: true, mode: 0o700 }) - 写入本地文件src/install-preset.ts:54
await writeFile( - 读取本地文件src/knowledge-store.ts:70
const text = readFileSync(knowledgePath(dshHome, sourceId), 'utf8') - 读取本地文件src/knowledge-store.ts:80
const text = await readFile(knowledgePath(dshHome, sourceId), 'utf8') - 写入本地文件src/knowledge-store.ts:90
await mkdir(knowledgeDir(dshHome), { recursive: true, mode: 0o700 }) - 写入本地文件src/knowledge-store.ts:91
await writeFile( - 删除本地文件src/knowledge-store.ts:162
await rm(knowledgePath(dshHome, sourceId), { force: true }) - 读取本地文件src/sqlite-runtime.ts:44
await access(path) - 读取本地文件src/workspace-files.ts:56
entries = await readdir(dir, { withFileTypes: true }) - 读取本地文件src/xlsx-runtime.ts:175
const buffer = await readFile(absPath) - 写入本地文件src/xlsx-runtime.ts:271
await mkdir(dir, { recursive: true }) - 写入本地文件src/xlsx-runtime.ts:280
await writeFile(absPath, `${lines.join('\n')}\n`, 'utf8')
扫描于 2026/11/3(1 天前) · 范围 全包扫描(包内未声明入口) · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-home-paths@deepseek-ai/dsh-system-prompt@deepseek-ai/dsh-tools给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 连接数据库或表格
- 自然语言只读查数
- 按数据源管理业务知识
DSH 数据模式插件:在原版 DeepSeek Harness 上增加只读问数。连接数据库或上传 CSV/Excel,用自然语言查数,并支持按数据源管理业务知识。
README
由 DeepSeek 最新模型翻译生成dsh-data-mode
一个 DeepSeek Harness (DSH) 插件,新增 Data Mode 会话类型,用于在聊天中进行只读分析。
连接 PostgreSQL、MySQL 或 SQLite,或上传 CSV / Excel 文件。用自然语言提问。智能体会检查 schema、预览行,并运行只读 SQL。你还可以为每个数据源附加业务定义(指标、别名、公式),让回答遵循你的术语体系。
该插件面向原版 DSH(Web UI)。它不会改变内置的 Standard、PTC、Minimal 或 Creative 预设,这些会话也永远不会看到 SQL 工具。新聊天仍默认使用 Standard Mode。数据源面板已本地化为中文和英文。
预览
Data Mode 使用知识定义的指标进行回答:
Data Mode 使用业务知识回答
注册并选择数据源,然后预览表:
数据源注册表和表预览
维护每个数据源的知识(名称、描述、BM25 召回):
数据源的知识管理
为什么需要它
DSH 擅长编码智能体。Data Mode 面向另一类任务:在不离开对话的情况下,向你自己的表提问,并且不授予模型对数据库的写权限。
典型用途:
- “上个月按类别划分的订单情况如何?”
- “哪些 SKU 库存不足?”
- “使用我们对 GMV 的定义,而不是猜测。
展开完整文档(README 剩余 1 节)
dsh-data-mode 一个 DeepSeek Harness (DSH) 插件,新增 Data Mode 会话类型,用于在聊天中进行只读分析。 连接 PostgreSQL、MySQL 或 SQLite,或上传 CSV / Excel 文件。用自然语言提问。智能体会检查 schema、预览行,并运行只读 SQL。你还可以为每个数据源附加业务定义(指标、别名、公式),让回答遵循你的术语体系。 该插件面向原版 DSH(Web UI)。它不会改变内置的 Standard、PTC、Minimal 或 Creative 预设,这些会话也永远不会看到 SQL 工具。新聊天仍默认使用 Standard Mode。数据源面板已本地化为中文和英文。 预览 Data Mode 使用知识定义的指标进行回答: Data Mode 使用业务知识回答 注册并选择数据源,然后预览表: 数据源注册表和表预览 维护每个数据源的知识(名称、描述、BM25 召回): 数据源的知识管理 为什么需要它 DSH 擅长编码智能体。Data Mode 面向另一类任务:在不离开对话的情况下,向你自己的表提问,并且不授予模型对数据库的写权限。 典型用途: - “上个月按类别划分的订单情况如何?” - “哪些 SKU 库存不足?” - “使用我们对 GMV 的定义,而不是猜测。” 能力 数据源注册表 从编辑器中的 Data source 控件(仅在 Data Mode 中可见): - 连接 PostgreSQL、MySQL 或 SQLite - 将 CSV 或 XLSX 表上传到工作区(当 DuckDB 可用时,查询引擎也可以读取 CSV / Parquet / XLSX) - 在提问前预览表和示例行 - 为当前会话精确选择一个数据源(未选择的数据源对智能体不可见) - 移除已注册的数据源(其知识文件也会随之移除) 密码存储在 $DSH_HOME/data-mode/secrets.yaml 中,而不是目录中。 当目录为空时,会出现内置演示 demo-sqlite 和 demo-xlsx,因此你可以立即试用该流程。 知识管理 每个数据源都有自己的知识列表(键 → 一个或多个值)。用它来定义指标、业务术语和计算规则。 - 在面板中创建、编辑、搜索、分页、批量删除并导出为 XLSX - 同一个键可以有多个值 - 限制:键 ≤ 100 个字符,值 ≤ 1000 个字符,每个数据源 200 条 - 每次提问时,会召回匹配的键(问题中精确出现的键始终命中;否则对键进行 BM25 检索),并作为口径注入系统提示 - 知识永远不会替代真实的表名或列名;智能体在编写 SQL 之前仍必须描述 schema Ask-data 智能体 仅在你选择数据源之后可用。工具: | 工具 | 作用 | | list_data_sources | 仅返回已选择的数据源(在你选择之前为空) | | describe_schema | 在查询这些表之前必需 | | preview_rows | 小样本(默认 20 行) | | run_sql | 只读 SELECT / WITH / EXPLAIN / SHOW / DESCRIBE / PRAGMA | 如果 SQL 不是只读的、LIMIT 超过 5000(默认 200),或者引用的表未事先描述,则 SQL 会被拒绝。 路由: - 离题 / 编码 → 不使用 SQL 工具直接回答;建议使用标准模式 - 指标、排名、占比、趋势、极值 → data-qa 技能 - 归因、预测、长报告 → data-attribution 技能,且当分析步骤多于一步时使用计划模式 数值答案应说明该轮使用的公式、时间范围、粒度和过滤条件。没有单独的认证指标目录。 工作原理 Composer(仅数据模式) └─ 数据源按钮 ├─ catalog HTTP API (/api/dsh-data-mode) ├─ catalog.yaml (已注册的数据源) ├─ selections.yaml (会话 → sourceId) └─ knowledge/*.json (每个数据源的术语) Agent 会话(预设 id:dsh-data) ├─ 系统提示:选定的数据源 + 召回的 knowledge ├─ 工具:list / describe / preview / run_sql (隔离到此预设) └─ 查询引擎:DuckDB(每个数据源一个内存数据库)回退:node:sqlite、用于 XLSX 的内存 SQLite 1. 安装插件会在 web profile 上注册一个宿主 registrar(宿主上没有模型工具),并在缺失时将用户预设 dsh-data 复制到 $DSH_HOME/.agent-presets/。 2. 为新会话选择 数据模式 时,SQL 工具、DuckDB provider、SQL guard 和提示上下文仅在该会话中挂载。 3. Web 客户端在 composer 上挂载数据源控件。如果宿主提供专用的 datasource seat,按钮就放在那里;否则它使用原版 composer 工具行,这样原版 DSH 仍能获得可用的控件。 4. 选择数据源会写入 selections.yaml。Agent 和这四个工具只能看到该数据源。 5. 问题在用户消息被存储之前组装上下文:选定的数据源加上 BM25 召回的 knowledge。 6. 查询针对每个数据源隔离的内存 DuckDB 运行(因此表名不会冲突)。当本地 sqlite scanner 扩展已存在时,SQLite 会附加(插件不会自动下载扩展)。纯 XLSX 会作为内存表加载。PostgreSQL SSL 会添加 sslmode=require;MySQL 不使用 sslmode。 安装 需要 DSH web(dsh web)、Node ^22.19.0 || >=24,以及安装后的新聊天。 dsh plugin --profile web add github:tieveto666-code/dsh-data-mode 或安装 release tarball(包含编译后的 lib/): dsh plugin --profile web add ./dsh-data-mode-0.1.0.tgz 本地检出: dsh plugin --profile web add link:/path/to/dsh-data-mode 重启 dsh web。打开一个新会话并选择 数据模式。现有的标准会话不会显示该按钮或 SQL 工具。 DuckDB 原生插件 duckdb 是可选的。使用原生插件时,SQLite、XLSX、CSV、Parquet、PostgreSQL 和 MySQL 都通过 DuckDB 处理。不使用它时,SQLite 和纯 XLSX 仍可通过 Node 回退方案正常工作。 pnpm 10+ 可能会询问是否编译 duckdb。请在 dsh plugin add 之前回答,否则命令将一直挂起: pnpm config set allowBuilds.duckdb true # CSV / Parquet / Postgres / MySQL pnpm config set allowBuilds.duckdb false # SQLite / XLSX demos only 或者在该 web profile 的 pnpm-workspace.yaml 中: allowBuilds: duckdb: true 用法 1. 新建会话 → Data Mode。 2. 打开 Data source,注册或选择一个数据库/文件。在选定某个数据源之前,list_data_sources 为空,agent 不得凭空编造 catalog id。 3. 提出问题。可选:为该数据源添加 knowledge keys,使指标名称与你的业务语言一致。 磁盘上的文件 | 路径 | 用途 | | $DSH_HOME/data-mode/catalog.yaml | 进程级数据源注册表 | | /.dsh/data-mode/catalog.yaml | 工作区覆盖层(相同 id 优先) | | $DSH_HOME/data-mode/selections.yaml | 会话 → 选定的 sourceId | | $DSH_HOME/data-mode/secrets.yaml | 数据库密码 | | $DSH_HOME/data-mode/knowledge/.json | 该数据源的 knowledge | | $DSH_HOME/.agent-presets/dsh-data/ | 复制的用户预设(缺失时创建,永不覆盖) | Catalog 字段说明:examples/catalog.yaml。上传的文件存放在工作区的 .dsh/data-mode/uploads/ 目录下。 隔离 安装不会: - 更改 agent-presets.default - 修改宿主 agent-presets 名单行 - 在 Standard、PTC、Minimal 或 Creative 上注册 run_sql / list_data_sources - 覆盖本包未安装的现有 dsh-data 预设目录 安装会: - 在 web profile 上挂载注册器和 catalog HTTP API - 在缺失时复制 Data Mode 预设 - 仅在 dsh-data 会话中暴露 SQL 工具和 Data source 控件 卸载 dsh plugin --profile web remove dsh-data-mode 可选:删除 $DSH_HOME/.agent-presets/dsh-data。原生预设保持不变。 问题反馈:github.com/tieveto666-code/dsh-data-mode/issues 限制 - 仅支持只读 SQL;agent 无法执行 INSERT / UPDATE / DELETE / DDL - 没有经过认证的语义层(metrics.yaml / 编译口径) - 不支持 MongoDB、Oracle、SQL Server、Snowflake、仪表盘、行级安全或流式 OLAP - Knowledge 是基于键的词法检索,而非完整的文档搜索引擎 许可证 MIT © Changsheng Tie (tieveto666-code) 参见 LICENSE。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
tieveto666-code/dsh-data-mode
连接数据库或表格,用自然语言只读查数
相关插件 · 工具 / 效率
破甲管控台kingcharleslzy-ai/dsh-purge
dsh-purge Community · DeepSeek Harness 社区维护版:宿主兼容、状态诊断、提示词管理、更新与本机备份回滚。基于小杨 / YuJunZhiXue 的 dsh-purge。
★ 4,330已汉化DeepSeek 客户端
74.5
网文长卷lingfengQAQ/webnovel-writer
基于 Claude Code 的长篇网文辅助创作系统,解决 AI 写作中的「遗忘」和「幻觉」问题,支持 200…
★ 7,636已汉化DSH
72.2
多智能体协作HKUDS/AutoSwarm
AutoSwarm: Unify Your Agents. Unify Your Context (Codex · Claude Code · DeepSeek Harness · Muse · Grok · WorkBuddy· nanobot · and more)
★ 2,349已汉化DSH
71.6
Vox 拼贴视频生成Alisa0808/vox-director
🎬 Vox Director拼贴动效导演
★ 2,129已汉化DSH
71.4
Agent 演化引擎Q00/ouroboros
智能体 OS:智能体自己变聪明,我们只守住底线:面试准入、分阶段评估、带预算的进化循环。MCP 服务器,14 种运行时:Claude Code、Codex CLI、Gemini CLI、OpenCode、Copilot、Kiro 等。
★ 6,311已汉化DSH
71.4
智能体运行框架路由HarnessRouter/harnessrouter
智能体 harness 的统一接口。
★ 3,984已汉化DSH
71.3
这是你的仓库?认领条目