面向 agent 的优化证据:找出复杂度热点,并检验所提议的改动是否值得实施。
41.2/100
综合分
17
GitHub 星标
67
npm 周下载
—/5
用户评分
数据截至 2026/10/13 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add smokinggunnpm 源 · smokinggun 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · dev
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 22 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包smokinggun @ 5.0.0
✓Node 引擎要求 >=22.18 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/11/1 20:23:40
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件
查看扫描证据(共 33 处,展示前 33 条)
- 读取本地文件dist/scan/repository.js:48
if ((await lstat(root)).isSymbolicLink()) - 读取本地文件dist/scan/repository.js:50
const rootInfo = await stat(root); - 读取本地文件dist/scan/repository.js:407
const rootInfo = await stat(root); - 读取本地文件dist/scan/repository.js:428
const entries = await readdir(directory, { withFileTypes: true }); - 读取本地文件dist/scan/repository.js:438
const target = await stat(path).catch(() => undefined); - 读取本地文件dist/scan/repository.js:499
const info = await stat(root); - 读取本地文件dist/scan/inventory.js:38
const rootEntries = await readdir(root, { withFileTypes: true }).catch(() => []); - 写入本地文件dist/investigations/store.js:135
await mkdir(directory, { recursive: true }); - 写入本地文件dist/investigations/store.js:155
await mkdir(snapshots, { recursive: true }); - 写入本地文件dist/investigations/store.js:166
await mkdir(snapshots, { recursive: true }); - 写入本地文件dist/investigations/store.js:251
await writeFile(path, bytes, { flag: "wx" }); - 删除本地文件dist/investigations/store.js:291
await unlink(path).catch(() => undefined); - 删除本地文件dist/investigations/store.js:297
await unlink(path).catch(() => undefined); - 读取本地文件dist/investigations/store.js:318
const info = await stat(path).catch(() => undefined); - 写入本地文件dist/investigations/store.js:335
await rename(path, quarantine); - 删除本地文件dist/investigations/store.js:336
await rm(quarantine, { force: true }); - 写入本地文件dist/artifacts/store.js:18
await mkdir(directory, { recursive: true }); - 删除本地文件dist/artifacts/store.js:50
await rm(temporary, { force: true }); - 删除本地文件dist/artifacts/store.js:53
await rm(temporary, { force: true }).catch(() => undefined); - 读取本地文件dist/artifacts/store.js:77
if ((await lstat(path)).isSymbolicLink()) - 读取本地文件dist/scanners/typescript-semantic.js:33
if (!existsSync(fileURLToPath(workerUrl))) - 读取本地文件dist/scanners/typescript-semantic.js:48
if (!existsSync(fileURLToPath(workerUrl))) - 读取本地文件dist/tool-identity.js:4
const packageMetadata = packageMetadataSchema.parse(JSON.parse(readFileSync(new URL("../package.json", import.meta.url), "utf8"))); - 写入本地文件dist/files.js:7
await mkdir(dirname(path), { recursive: true }); - 写入本地文件dist/files.js:10
await writeFile(temporary, data); - 写入本地文件dist/files.js:11
await rename(temporary, path); - 删除本地文件dist/files.js:14
await rm(temporary, { force: true }).catch(() => undefined); - 写入本地文件dist/cli/context.js:41
await mkdir(root, { recursive: true }); - 写入本地文件dist/cli/context.js:53
await mkdir(root, { recursive: true }); - 读取本地文件dist/commands/doctor.js:19
const lock = await readFile(new URL("../../grammar.lock.json", import.meta.url), "utf8").catch(() => "{}"); - 读取本地文件dist/config.js:135
const canonical = await realpath(existing); - 读取本地文件dist/config.js:169
await stat(candidate); - 读取本地文件dist/config.js:183
await stat(userConfig);
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 定位复杂度热点
- 检验改动是否值得实施
帮你的智能体找到它们要的关键证据。面向智能体的优化证据:定位复杂度热点。
最近更新
在 GitHub 查看全部 →v5.0.02026-08-29
· 变更内容
· chore(deps):web-tree-sitter 从 0.26.11 升到 0.26.12,由 @dependabot[bot] 提交
· chore(deps):@bufbuild/protobuf 从 2.13.0 升到 2.14.0,由 @dependabot[bot] 提交
· chore(deps):pprof-format 从 2.3.0 升到 2.3.1,由 @dependabot[bot] 提交
· chore(deps-dev):@types/node 从 24.13.3 升到 26.2.0,由 @dependabot[bot] 提交
· chore(deps-dev):verdaccio 从 6.9.2 升到 6.10.0,由 @dependabot[bot] 提交
· 统一 C 和 C++ 源文件扩展名的处理
· 限制配置和适配器清单的读取范围
· 限制对比产物的读取范围
· chore(deps):@oclif/core 从 4.13.3 升到 4.14.0,由 @dependabot[bot] 提交
· 接受已取消的单参数缩放点
· 拒绝格式错误的 pyperf 和 JMH 观测数据
· fix:拒绝不安全的 pprof 数值
· fix:集中管理测量兼容性检查
· 拒绝为不存在的调查导入测量数据
· 从保留的字节处理 Perfetto 跟踪
· 阻止无效 SARIF URI 中断导入
· 拒绝为不存在的调查导入上下文
· 保留产物前先校验适配器结果
· fix:对部分解析诊断去重
· fix:拒绝格式错误的 UTF-8 输入文件
· fix:探测完整的适配器命令
· 将已完成的扫描 SARIF 调用标记为成功
· 阻止跨不同测量主体的提升
· 校验仓库清单内容摘要
· 拒绝非规范的 SCIP 文档路径
· 忽略非文件的包清单条目
· 区分用户配置与项目配置的作用域
· 扫描默认使用运行时源文件候选
· 发布包,由 @github-actions[bot] 提交
· 新贡献者
· @dependabot[bot] 在以下提交中首次贡献
完整变更日志:
v4.0.02026-08-12
· 变更内容
· 重置证据权威与 SmokingGun 公开契约
· 由 @github-actions[bot] 发布软件包,见
完整变更日志:
v3.0.02026-08-10
· 变更内容
· 采用 npm 命令行和共享的 footgun 技能
· 由 @github-actions[bot] 在以下链接发布软件包
· 执行已配置的适配器前要求授权
· 限制解压后的 pprof 配置档大小
· 将唯一的 SARIF 结果路径计为已分析文件
· 输出前校验报告调查
· 复用匹配的仅计划调查
· 扫描包含未跟踪源码时标记为脏
· 将 JMH 吞吐量归一化为每次操作耗时
· 在比较标识中包含产物摘要
· 将未验证的嵌套循环发现校准为中等严重级别
· 报告已安装的 SmokingGun 工具标识
· 披露被截断的扫描发现并保留 fail-on 策略
· 测量前拒绝不支持的主机资源限制
· 校验并保留适配器原始产物摘要
· 刷新 Rust 语法以支持原始标识符
· 添加有界多参数缩放网格
· 将调查证据绑定到已存储的扫描产物
· 校验现有内容寻址产物字节
· 保留缩放隔离来源以便晋升
· 阻止跨不同 Node 运行时的比较
· 将 TypeScript 语义发现限定到 --only 选择
· 在扫描覆盖中报告跳过的源码符号链接
· 对照扫描证据校验聚焦调查 ID
· 测量执行前校验调查
· 将严格协议契约硬迁移到 V2
· 在解析边界强制协议状态不变量
· 限制 TypeScript 语义工作进程内存
· 由 @github-actions[bot] 在以下链接发布软件包
· 新贡献者
· @morluto 在以下链接完成首次贡献
· @github-actions[bot] 在以下链接完成首次贡献
完整变更日志:
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。
README
由 DeepSeek 最新模型翻译生成SmokingGun
面向 agent 的优化证据:找出复杂度热点,并检验所提议的改动是否值得实施。
它将静态发现、估算、导入的测量数据和行为证据区分开来,以便 agent 决定下一步调查什么。
安装 agent 技能
可选的 smokinggun 技能会教兼容的 agent 宿主如何使用该 CLI。使用共享的 Skills CLI 安装:
npx skills add https://github.com/morluto/smokinggun --skill smokinggun
Skills CLI 负责技能放置、冲突处理和更新。SmokingGun 不会修改 agent 配置,也不会自行安装技能。
安装 CLI
npm install -g smokinggun
或者无需全局安装即可引导执行一次扫描:
npx --yes --package=smokinggun -- smokinggun scan .
此命令可能会访问 npm registry。SmokingGun 需要 Node 22.18 或更高版本。
展开完整文档(README 剩余 1 节)
SmokingGun 面向 agent 的优化证据:找出复杂度热点,并检验所提议的改动是否值得实施。 它将静态发现、估算、导入的测量数据和行为证据区分开来,以便 agent 决定下一步调查什么。 安装 agent 技能 可选的 smokinggun 技能会教兼容的 agent 宿主如何使用该 CLI。使用共享的 Skills CLI 安装: npx skills add https://github.com/morluto/smokinggun --skill smokinggun Skills CLI 负责技能放置、冲突处理和更新。SmokingGun 不会修改 agent 配置,也不会自行安装技能。 安装 CLI npm install -g smokinggun 或者无需全局安装即可引导执行一次扫描: npx --yes --package=smokinggun -- smokinggun scan . 此命令可能会访问 npm registry。SmokingGun 需要 Node 22.18 或更高版本。 使用 CLI 扫描一个仓库: smokinggun scan . smokinggun scan . --format markdown smokinggun scan . --format sarif --output smokinggun.sarif smokinggun scan . --source-profile all 报告包含热点、支撑证据、覆盖范围、假设以及接下来所需的验证。 默认的 runtime 配置会抑制来自测试、文档、示例和 fixture 的发现,同时将这些文件保留在仓库清单中。使用 --source-profile all 扫描所有受支持的源文件,或使用 --only 明确聚焦于某个辅助区域。 静态扫描是只读、离线的,不会执行仓库代码或修改源文件。发现只是候选,而非证据。SmokingGun 从现有基准测试工具导入测量证据;它不会启动工作负载或重写代码。 语义扫描器直接消费捕获的源代码快照。基准测试、性能剖析和测量产物跨越导入边界,但不会被授予工作负载执行权限。有关这些选择背后的归属规则,请参阅权限架构。 输入要求 文本输入——包括配置、报告和 JSON 证据产物——必须是有效的 UTF-8。SmokingGun 会拒绝格式错误的字节序列,而不是静默替换它们,因为替换文本将不再代表所捕获的证据。诸如 gzip 压缩的 pprof 剖析文件等二进制格式在其格式解码器处理之前保持二进制形式。 pprof 数值字段必须落在 JavaScript 的精确整数范围内(Number.MIN_SAFE_INTEGER 到 Number.MAX_SAFE_INTEGER)。SmokingGun 会拒绝超出该范围的值,而不是对标识符或测量值进行舍入。 关于 SmokingGun 的权威路径是:不可变捕获、基于快照的扫描、真实的覆盖范围、内容寻址的报告,以及显式的证据导入。SARIF、SCIP、基准测试、性能剖析和测量数据仍属于外部输入。缺失或失败的覆盖范围会保持可见,而不会变成一次干净的扫描。 开发 需要 Node 22+ 和 pnpm 11.20.0。 pnpm install pnpm typecheck && pnpm test && pnpm build 质量门禁:pnpm lint(oxlint)、pnpm format:check(oxfmt)、pnpm knip、pnpm check:boundaries 和 pnpm test:coverage。运行 pnpm changeset 记录发布变更意图。pnpm test:cli 和 pnpm test:package 对构建后的包进行端到端测试。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
morluto/smokinggun
面向 agent 的优化证据:找出复杂度热点,并检验所提议的改动是否值得实施。
相关插件 · 开发 / 工程
隐私简历生成器reactive-resume/reactive-resume
Reactive Resume 已迁至 GitHub 上的…
★ 45,288已汉化MCP
71.7
长时任务执行闭环AMAP-ML/LongHorizon-Harness
面向 Computer-Use Agent 的 Loop Engineering
★ 1,764已汉化DSH
70.5
多代理编排运行时Enderfga/claw-orchestrator
面向编程智能体的运行时。把 Claude Code、Codex、Antigravity、Grok…
★ 586已汉化MCP
69.4
记忆进化插件csyangwen/dsh-memory-evolve
dsh-memory-evolve 使用场景指南
★ 461已汉化DSH
67.9
原生编程智能体paean-ai/deeptide
由 DeepSeek 打造,为 DeepSeek 而生。
★ 1,107已汉化DSH
67.7
多引擎接力台emo-xiaoyu/harness-mix
macOS/Linux 已加入源码构建与启动适配;目标系统的完整桌面验收仍需在对应机器执行。安装方式、Linux…
★ 419已汉化DSH
66.8
这是你的仓库?认领条目