🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

生态扫描器 121212165/dsh-plugin-eco-scan

DeepSeek Harness
12121216517 天前有提交已提供中文文档扫描:含敏感能力

dsh 插件:扫描 dsh 插件生态系统——按插件收集 stars/npm 下载量/发布资产,细分市场,根据快照计算增长增量,并呈现高增长插件和细分领域。

30.8/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/17 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add 121212165/dsh-plugin-eco-scan
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
dsh 原生插件 · tool
装得上吗
静态安装检查有提示项,装前建议看一眼 README
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 17 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意

未发布到 npm registry,仅可从源码安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包dsh-plugin-eco-scan(未发布到 npm,仅可源码安装)
✓Node 引擎要求 >=22.18 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/3 12:27:21

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件发起外部网络请求
查看扫描证据(共 50 处,展示前 50 条)
  • 写入本地文件
    lib/eco/snapshot.js:22
    mkdirSync(this.dataDir, { recursive: true });
  • 写入本地文件
    lib/eco/snapshot.js:23
    appendFileSync(this.fileFor(date), `${JSON.stringify(record)}\n`, 'utf8');
  • 读取本地文件
    lib/eco/snapshot.js:29
    if (!existsSync(this.dataDir))
  • 读取本地文件
    lib/eco/snapshot.js:31
    for (const name of readdirSync(this.dataDir).filter(validName).sort()) {
  • 读取本地文件
    lib/eco/snapshot.js:32
    for (const line of readFileSync(join(this.dataDir, name), 'utf8').split(/ ? /)) {
  • 写入本地文件
    lib/core/db.js:148
    mkdirSync(dirname(path), { recursive: true });
  • 读取本地文件
    lib/core/defaults.js:102
    if (existsSync(path))
  • 写入本地文件
    lib/core/defaults.js:104
    mkdirSync(dirname(path), { recursive: true });
  • 写入本地文件
    lib/core/defaults.js:105
    writeFileSync(path, content, 'utf8');
  • 写入本地文件
    lib/core/defaults.js:108
    mkdirSync(paths.exportDir, { recursive: true });
  • 发起网络请求
    lib/core/http.js:117
    const result = await this.request(url, options);
  • 读取本地文件
    lib/core/segmentation.js:31
    const stat = statSync(this.filePath, { throwIfNoEntry: false });
  • 读取本地文件
    lib/core/segmentation.js:38
    this.load(readFileSync(this.filePath, 'utf8'));
  • 读取本地文件
    lib/core/segmentation.js:89
    const stat = statSync(path, { throwIfNoEntry: false });
  • 读取本地文件
    lib/core/segmentation.js:93
    const stat = statSync(path, { throwIfNoEntry: false });
  • 读取本地文件
    lib/core/segmentation.js:97
    return readFileSync(path, 'utf8');
  • 写入本地文件
    lib/core/exporters.js:44
    mkdirSync(dir, { recursive: true });
  • 写入本地文件
    lib/core/exporters.js:47
    writeFileSync(path, content, 'utf8');
  • 读取本地文件
    lib/core/alerts.js:37
    return parseAlertRules(readFileSync(path, 'utf8'));
  • 读取本地文件
    lib/core/migrate.js:9
    if (!existsSync(dir))
  • 读取本地文件
    lib/core/migrate.js:11
    return readdirSync(dir)
  • 读取本地文件
    lib/core/migrate.js:52
    const lines = readFileSync(file, 'utf8').split(/ ? /);
  • 读取本地文件
    lib/core/scan.js:131
    const awesomeText = options.awesomePath && existsSync(options.awesomePath) ? readIfPresent(options.awesomePath) : null;
  • 读取本地文件
    lib/core/scan.js:275
    if (!existsSync(path))
  • 读取本地文件
    lib/core/scan.js:278
    return readFileSync(path, 'utf8');
  • 读取本地文件
    src/core/alerts.ts:64
    return parseAlertRules(readFileSync(path, 'utf8'));
  • 写入本地文件
    src/core/db.ts:162
    if (path !== ':memory:') mkdirSync(dirname(path), { recursive: true });
  • 读取本地文件
    src/core/defaults.ts:116
    if (existsSync(path)) continue;
  • 写入本地文件
    src/core/defaults.ts:117
    mkdirSync(dirname(path), { recursive: true });
  • 写入本地文件
    src/core/defaults.ts:118
    writeFileSync(path, content, 'utf8');
  • 写入本地文件
    src/core/defaults.ts:121
    mkdirSync(paths.exportDir, { recursive: true });
  • 写入本地文件
    src/core/exporters.ts:75
    mkdirSync(dir, { recursive: true });
  • 写入本地文件
    src/core/exporters.ts:78
    writeFileSync(path, content, 'utf8');
  • 发起网络请求
    src/core/http.ts:171
    const result = await this.request(url, options);
  • 读取本地文件
    src/core/migrate.ts:29
    if (!existsSync(dir)) return [];
  • 读取本地文件
    src/core/migrate.ts:30
    return readdirSync(dir)
  • 读取本地文件
    src/core/migrate.ts:68
    const lines = readFileSync(file, 'utf8').split(/ ? /);
  • 读取本地文件
    src/core/scan.ts:191
    const awesomeText = options.awesomePath && existsSync(options.awesomePath) ? readIfPresent(options.awesomePath) : null;
  • 读取本地文件
    src/core/scan.ts:336
    if (!existsSync(path)) return null;
  • 读取本地文件
    src/core/scan.ts:338
    return readFileSync(path, 'utf8');
  • 读取本地文件
    src/core/segmentation.ts:56
    const stat = statSync(this.filePath, { throwIfNoEntry: false });
  • 读取本地文件
    src/core/segmentation.ts:61
    this.load(readFileSync(this.filePath, 'utf8'));
  • 读取本地文件
    src/core/segmentation.ts:108
    const stat = statSync(path, { throwIfNoEntry: false });
  • 读取本地文件
    src/core/segmentation.ts:113
    const stat = statSync(path, { throwIfNoEntry: false });
  • 读取本地文件
    src/core/segmentation.ts:116
    return readFileSync(path, 'utf8');
  • 写入本地文件
    src/eco/snapshot.ts:43
    mkdirSync(this.dataDir, { recursive: true });
  • 写入本地文件
    src/eco/snapshot.ts:44
    appendFileSync(this.fileFor(date), `${JSON.stringify(record)}\n`, 'utf8');
  • 读取本地文件
    src/eco/snapshot.ts:51
    if (!existsSync(this.dataDir)) return { records, skipped };
  • 读取本地文件
    src/eco/snapshot.ts:52
    for (const name of readdirSync(this.dataDir).filter(validName).sort()) {
  • 读取本地文件
    src/eco/snapshot.ts:53
    for (const line of readFileSync(join(this.dataDir, name), 'utf8').split(/ ? /)) {
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-base@deepseek-ai/schemastery@deepseek-ai/dsh-tools
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 扫描插件生态数据
  • 计算增长增量
  • 呈现高增长赛道

README

由 DeepSeek 最新模型翻译生成
dsh-plugin-eco-scan 🧩 dsh 插件家族(22 件):总目录 dsh-plugin-family | 明星插件:ide-hub 跨 IDE 统一管理 · task-forge 跨窗口无损交接 · quota 实时用量仪表 EN · dsh 插件生态的市场扫描:按仓库统计星标、npm 周下载量和 release 资产下载量,划分细分赛道,增长按每日快照之间的差值计算,而不是从单日数据推断(/eco-scan)。· 12 个 node --test 全部通过 · 在本机扫描了真实 GitHub + npm 数据 · npm 包与仓库的匹配启发式未做穷尽校验。 DeepSeek Harness (dsh) 插件:插件生态市场扫描器。抓取 dsh 插件生态(GitHub topic: dsh-plugin / dsh-plugins)的全部仓库,采集星标、npm 周下载、release 资产下载量三类真实数据,按细分赛道归类,把每日扫描写入快照,用差值算增长,找出高增长插件与高增长赛道。 适合回答:"dsh 生态里哪个赛道在涨?哪些插件是高增长标的?我下个插件该卡哪个位?
展开完整文档(README 剩余 1 节)
dsh-plugin-eco-scan

🧩 dsh 插件家族(22 件):总目录 dsh-plugin-family | 明星插件:ide-hub 跨 IDE 统一管理 · task-forge 跨窗口无损交接 · quota 实时用量仪表

EN · dsh 插件生态的市场扫描:按仓库统计星标、npm 周下载量和 release 资产下载量,划分细分赛道,增长按每日快照之间的差值计算,而不是从单日数据推断(/eco-scan)。· 12 个 node --test 全部通过 · 在本机扫描了真实 GitHub + npm 数据 · npm 包与仓库的匹配启发式未做穷尽校验。

DeepSeek Harness (dsh) 插件:插件生态市场扫描器。抓取 dsh 插件生态(GitHub topic: dsh-plugin / dsh-plugins)的全部仓库,采集星标、npm 周下载、release 资产下载量三类真实数据,按细分赛道归类,把每日扫描写入快照,用差值算增长,找出高增长插件与高增长赛道。

适合回答:"dsh 生态里哪个赛道在涨?哪些插件是高增长标的?我下个插件该卡哪个位?"

同系列:price-aware · cost-ledger · relay-quota · transcript · transcript-search · obsidian-push · session-insights。

用法

- /eco-scan / eco_scan 工具:执行一次扫描,输出:
1. 生态规模(仓库数)
2. 细分赛道表:成本预算 / 遥测分析 / 记忆上下文 / UI 客户端 / 工具开发 / 搜索知识 / 归档导出 / 框架运行时——各赛道的仓库数、星标、周下载、中位星标
3. 高增长 Top N:按 增长率 × √规模 评分排序(速度主导、体量加权),只收正增长
4. 细分赛道增长中位:哪个赛道整体在涨
- 快照差值:每次扫描写入 ~/.dsh/eco-scan/snapshots-YYYY-MM.jsonl,同日重扫覆盖,跨日差值即增长。第一天只有规模,从第二天起才有增长判断。

细分规则

按仓库名 + 描述关键词,规则有序、首个命中生效:cost-budget → telemetry-analytics → memory-context → ui-client → archive-export → search-knowledge → tools-devx → framework-runtime → other。

增长口径(诚实声明)

GitHub 没有仓库级下载量。本插件用三个可得的代理指标,按可用性择优:
1. npm 周下载(api.npmjs.org/downloads/point/last-week,与生态关键词匹配的包)
2. release 资产下载计数(GitHub Releases API 求和)
3. 星标(感知度,不是下载)

npm 包与仓库的匹配是名称启发式(dsh-plugin-<x> ↔ 仓库 <x>),可能有漏配——这是已知局限。

配置

| 字段 | 默认 | 说明 |
| tokenEnv | [GITHUB_TOKEN, GH_TOKEN] | GitHub token(无 token 60 次/小时限流,建议设置) |
| dataDir | ~/.dsh/eco-scan | 快照目录 |
| topGrowth | 15 | 高增长榜行数 |

安装

三步,实测于 @deepseek-ai/dsh@0.1.7-alpha.1(需 pnpm 在 PATH 上):

① 装进 profile:dsh plugin 把参数原样转发给 pnpm,git 包会自动跑 prepare 构建 lib/
dsh plugin --profile web add github:121212165/dsh-plugin-eco-scan

② 把本仓库根目录 cordis.patch.yml 的内容并进 $DSH_HOME/profiles/web/cordis.patch.yml。
该文件默认是 [],所以要么整份替换,要么把 insert 条目并进同一个数组;不要直接追加——追加会形成两个 YAML 文档,启动即报 failed to parse overlay ... end of the stream or a document separator is expected(本机实测踩过)。

③ 重启 dsh。配置层与 client 半都要重启才生效(客户端按 boot 时算出的内容 rev 下发,硬刷新浏览器没用)。
自检挂载:dsh --profile web --dump-config | grep dsh-plugin-eco-scan,应看到该条目。

验证状态

- 细分/增长/快照为纯函数,12 个 node --test 全绿。
- 真实扫描已在本机执行(结果见本仓库 early scan 记录)。
- npm 包-仓库匹配启发式未全面校验。

借鉴来源与差异(非盲目复制)

| 借鉴来源 | 借鉴了什么 | 我们的差异 |
| AdamPlatin123/dsh-plugin-radar(1466★) | 「dsh 生态雷达」这个方向本身 | radar 是重基建(2.1 万候选、k8s 运行级实测、15 分钟快照);本插件是轻量在 harness 内的细分市场分析器:赛道关键词细分、npm 周环比 live 榜、增长率×√规模评分、本地快照差值。数据口径与排名算法为独立设计,未参考其代码 |
| OpenRouter npm range API | 用 downloads/range 做周环比的数据源用法 | — |
预览分享卡片长什么样 ↓121212165/dsh-plugin-eco-scan
分享 · DeepSeek Harness Hub
121212165/dsh-plugin-eco-scan

dsh 插件:扫描 dsh 插件生态系统——按插件收集 stars/npm 下载量/发布资产,细分市场,根据快照计算增长增量,并呈现高增长插件和细分领域。

这是你的仓库?认领条目

回到顶部