智能代码审查插件DeepSeek Harness
32.3/100
综合分
3
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/18 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查有告警:npm 同名包「dsh-code-review」归属 past-events-sifenruwu/deepseek-harness-electron,装到的可能不是本插件。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Nicholas023/dsh-code-review该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · dev
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 13 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意npm 同名包「dsh-code-review」归属 past-events-sifenruwu/deepseek-harness-electron,装到的可能不是本插件
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包dsh-code-review @ 0.1.2
✓Node 引擎要求 >=20 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/18 00:25:44
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 58 处,展示前 52 条)
- 发起网络请求client.js:135
return window.fetch(CONFIG_API, { - 发起网络请求client.js:607
const res = await window.fetch(TASKS_API, { - 读取本地文件src/file-config.js:130
if (!existsSync(PLUGIN_CONFIG_FILE)) return Object.create(null); - 读取本地文件src/file-config.js:131
const parsed = JSON.parse(readFileSync(PLUGIN_CONFIG_FILE, 'utf8')); - 写入本地文件src/file-config.js:157
mkdirSync(dirname(PLUGIN_CONFIG_FILE), { recursive: true }); - 写入本地文件src/file-config.js:164
writeFileSync(tmp, JSON.stringify(next, null, 2), 'utf8'); - 写入本地文件src/file-config.js:165
renameSync(tmp, PLUGIN_CONFIG_FILE); - 删除本地文件src/file-config.js:170
rmSync(tmp, { force: true }); - 读取本地文件src/set-config-tool.js:173
&& (!existsSync(candidate) || !statSync(candidate).isFile())) { - 读取本地文件src/set-config-tool.js:173
&& (!existsSync(candidate) || !statSync(candidate).isFile())) { - 读取本地文件src/set-config-tool.js:175
if (existsSync(withExe) && statSync(withExe).isFile()) candidate = withExe; - 读取本地文件src/set-config-tool.js:175
if (existsSync(withExe) && statSync(withExe).isFile()) candidate = withExe; - 读取本地文件src/set-config-tool.js:177
if (!existsSync(candidate) || !statSync(candidate).isFile()) { - 读取本地文件src/set-config-tool.js:177
if (!existsSync(candidate) || !statSync(candidate).isFile()) { - 执行外部命令固定命令src/runner.js:65
const r = spawnSync('git', ['-C', repoPath, ...args], { encoding: 'utf8', timeout: 15_000, windowsHide: true }); - 读取本地文件src/runner.js:137
if (existsSync(candidate.bin)) return candidate; - 执行外部命令来自配置/变量src/runner.js:152
const r = spawnSync(probe, [cmd], { stdio: 'ignore', shell: false, windowsHide: true }); - 执行外部命令来自配置/变量src/runner.js:275
child = spawn(bin, args, { - 执行外部命令固定命令src/runner.js:344
spawnSync('taskkill', ['/pid', String(child.pid), '/T', '/F'], { stdio: 'ignore', windowsHide: true }); - 读取本地文件src/model-provider.js:89
entries = readdirSync(profilesRoot, { withFileTypes: true }).sort((a, b) => { - 读取本地文件src/model-provider.js:101
if (!existsSync(patch)) continue; - 读取本地文件src/model-provider.js:103
const doc = yaml.load(readFileSync(patch, 'utf8')); - 写入本地文件src/task-book.js:51
mkdirSync(TASKS_ROOT, { recursive: true }); - 写入本地文件src/task-book.js:97
writeFileSync(tmp, JSON.stringify(task, null, 2), 'utf8'); - 写入本地文件src/task-book.js:98
renameSync(tmp, file); - 删除本地文件src/task-book.js:102
rmSync(tmp, { force: true }); - 删除本地文件src/task-book.js:204
rmSync(taskFileOf(id), { force: true }); - 读取本地文件src/task-book.js:216
if (!id || !existsSync(file)) return null; - 读取本地文件src/task-book.js:218
return JSON.parse(readFileSync(file, 'utf8')); - 读取本地文件src/task-book.js:243
if (!existsSync(TASKS_ROOT)) return []; - 读取本地文件src/task-book.js:244
return readdirSync(TASKS_ROOT) - 读取本地文件src/task-book.js:250
return JSON.parse(readFileSync(join(TASKS_ROOT, f), 'utf8')); - 读取本地文件src/task-book.js:287
if (!existsSync(PID_FILE)) return false; - 执行外部命令来自配置/变量src/task-book.js:320
child = spawn(process.execPath, [entry], { - 删除本地文件src/task-book.js:349
if (existsSync(PID_FILE)) rmSync(PID_FILE); - 读取本地文件src/task-api.js:126
entries = readdirSync(TASKS_ROOT); - 读取本地文件src/task-api.js:134
const st = statSync(join(TASKS_ROOT, name)); - 写入本地文件src/report.js:120
await mkdir(dirname(path), { recursive: true }); - 写入本地文件src/report.js:121
await writeFile(path, body, 'utf8'); - 读取本地文件src/credentials.js:67
if (!existsSync(file)) return null; - 读取本地文件src/credentials.js:68
return parseCredentialsText(readFileSync(file, 'utf8'), name); - 删除本地文件src/serve-entry.js:49
rmSync(STOP_FILE, { force: true }); - 读取本地文件src/serve-entry.js:98
const n = Number.parseInt(readFileSync(file, 'utf8').trim(), 10); - 读取本地文件src/serve-entry.js:117
mtime = statSync(file).mtimeMs; - 写入本地文件src/serve-entry.js:136
renameSync(file, stale); - 删除本地文件src/serve-entry.js:142
rmSync(stale, { force: true }); - 删除本地文件src/serve-entry.js:274
rmSync(lockPath, { force: true }); - 读取本地文件src/serve-entry.js:295
files = readdirSync(TASKS_ROOT); - 删除本地文件src/serve-entry.js:331
if (statSync(STOP_FILE).mtimeMs < bootAt) rmSync(STOP_FILE, { force: true }); - 读取本地文件src/serve-entry.js:331
if (statSync(STOP_FILE).mtimeMs < bootAt) rmSync(STOP_FILE, { force: true }); - 读取本地文件src/serve-entry.js:345
if (existsSync(STOP_FILE)) { - 写入本地文件src/serve-entry.js:412
writeFileSync(STOP_FILE, new Date().toISOString(), 'utf8');
扫描于 2026/10/31(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
README
由 DeepSeek 最新模型翻译生成dsh-code-review
智能代码审查插件(DeepSeek Harness / DSH Cordis 插件)。
对代码仓库执行评审:调用引擎 codecheck(阿里 open-code-review 的 fork 改造,Apache-2.0),读取 git diff 或做全目录扫描,由评审模型按三个固定视角挑刺:
1. 安全与脱敏 —— 硬编码密钥/口令/PII/内部信息泄露 + 安全漏洞;
2. 找 bug —— 逻辑/边界/异常/并发缺陷;
3. 冗余与任务无关代码 —— scope creep / 死代码。
结果双给:会话内完整问题清单(文件 + 行号 + 类型 + 严重度 + 建议);同步落一份报告文件(按日期/仓库存放)留档,作为「发 GitHub 前已审过」的凭证。
展开完整文档(README 剩余 1 节)
dsh-code-review 智能代码审查插件(DeepSeek Harness / DSH Cordis 插件)。 对代码仓库执行评审:调用引擎 codecheck(阿里 open-code-review 的 fork 改造,Apache-2.0),读取 git diff 或做全目录扫描,由评审模型按三个固定视角挑刺: 1. 安全与脱敏 —— 硬编码密钥/口令/PII/内部信息泄露 + 安全漏洞; 2. 找 bug —— 逻辑/边界/异常/并发缺陷; 3. 冗余与任务无关代码 —— scope creep / 死代码。 结果双给:会话内完整问题清单(文件 + 行号 + 类型 + 严重度 + 建议);同步落一份报告文件(按日期/仓库存放)留档,作为「发 GitHub 前已审过」的凭证。 双入口 | 入口 | 方式 | 用途 | | 原生工具 code_review | 会话里说「审一下当前改动」自动触发 | 日常主力 | | 斜杠命令 /review | 手动精确传参:分支/提交/目录/重点 | 需要指定范围时 | 评审模型 - 默认沿用会话模型(DSH 官方默认的 deepseek-flash / DeepSeek-V41-Flash,凭据走 DSH 既有通道,无需手工配置); - 另选评审模型(异构评审:写代码的模型与审查的模型不同,「错」不一起错):用原生工具 code_review_set_config(会话里说「把评审模型改成 X」自动触发)写入插件自有配置文件 ~/.dsh/dsh-code-review/plugin-config.json,写入即生效(无需重启);模型标识 = DSH 模型配置里已有的模型名(选项动态读取 DSH 模型配置体系—— 官方账号与副账号等已配置的 providers/models,含 thinkingFormat;其他模型需先在 DSH 侧配好,不硬编码)。 - ⚠️ 设置面板「智能代码审查」分区的 review_model / report_dir / engine_bin / first_run 字段暂不生效(2026-10-13 实测:0.2.0 宿主「面板保存」对第三方 bundle 插件只写组合树文件、不回传运行层)——这些字段保留注册,宿主回传通道修复后自动启用;当前以 code_review_set_config 工具 / 插件配置文件为运行真源。 - 并发评审 / 并发广度两字段为例外(2026-10-14 迭代):面板保存时插件经自有 POST /api/code-review/config 写通道把值直落运行真源 ~/.dsh/dsh-code-review/plugin-config.json, 正常生效——关闭(默认)= 单线顺序审查(引擎显式 --concurrency 1);开启即展开「并发广度」(1–32,默认 8),并行审查大幅提速,但 token 消耗随之成倍增加(成本由用户侧控制)。 喂参机制(OCR-managed):插件运行时把评审模型解析成 OCR_LLM_URL / OCR_LLM_TOKEN / OCR_LLM_MODEL / OCR_LLM_PROTOCOL / OCR_LLM_TIMEOUT 五个环境变量注入引擎子进程(key 解析顺序:~/.dsh/.credentials.yaml 的 refs 条目 → 同名环境变量 —— 存储凭据优先于导出变量,与 DSH 0.2.1 的 stored-credentials-precedence 口径一致;key 只进子进程环境,不落盘、不进日志)。若用户已在 ~/.opencodereview/config.json 显式完整配置 provider,引擎按其自身优先序使用用户配置(期望行为);插件注入作为引擎侧未配置时的默认通道。 敏感文件点名 引擎内置敏感路径保护会静默排除敏感文件(内容不送审,防二次泄露);插件层额外自检待提交清单,命中敏感模式(.env、私钥、pem、token、credentials 等)的每个文件点名列入报告与会话结果(类型=敏感文件),提示人工确认是否该提交——不许静默。 待提交清单默认自动收集(git ls-files --others --exclude-standard + git diff --name-only + git diff --cached --name-only 并集去重),也支持经工具参数 pending_paths 显式传入;点名只涉及文件名,不读取文件内容(内容由引擎侧排除,双保险)。 安装(热装,免重启) 1. 把本包目录 junction 进 profile 的 node_modules(或以 npm 方式安装依赖): node scripts/link-deps.mjs # 开发期:连接本机 schema 依赖 npm install # 发布安装:正式依赖 2. 经 DSH 插件管理页把本包加入 profile(读取 cordis.patch.yml 注入组合树),或手工在 profile 的 cordis.patch.yml 追加: - insert: - id: dsh-code-review name: 'dsh-code-review' 3. 引擎 codecheck:把编译产物放到插件包 bin/codecheck(.exe),或经工具 code_review_set_config 的 engine_bin 指定绝对路径。 开发 node scripts/link-deps.mjs # 连接开发期依赖(junction,幂等) npm run check # 全部 js 语法检查 npm run unit # 确定性模块自检(28 项,不联网) npm run smoke # Cordis 入口冒烟自检(挂载前提验证) npm run e2e-engine # 引擎侧端到端(真实 DeepSeek 官方评审,需本机凭据) npm run e2e-plugin # 插件管道端到端(model-provider→credentials→runner) npm run e2e-switch # 切模型端到端(默认取本机 DSH 配置中的任一模型 id,实证「另选模型也通」) npm run e2e-sensitive # 敏感文件点名层端到端(判据⑥:含 .env 仓库 → 报告点名) npm run selfcheck # unit + smoke 全量 e2e 会调用真实评审 API(约 10-50s / 次、数千 token),在 CI/无凭据环境会自动判失败并给出明确原因。切模型实证默认模型可经命令行参数替换:node scripts/switch-model-e2e.mjs <模型id> (模型 id 以本机 DSH 配置为准,即 code_review_set_config 的 review_model 取值)。 兼容性(DSH 版本) - 适配目标:DeepSeek Harness 0.2.1(npm next 线,如 0.2.1-rc.2);同时兼容本插件原基线 0.2.0(如桌面端 0.2.0-rc.2)。 - 兼容区间由 package.json 的 engines.dsh(>=0.2.0-rc.2 <0.3.0)声明 —— DSH 0.2.1 起插件版本兼容性以该字段优先判定(docs/upgrade-guide/v0.2.1-alpha.3/plugin-engines-dsh)。 - 插件 API 面(工具注册 / 设置域 configForms / 客户端模块协议 / dsh.bundle.patch 组合注入)在 0.2.1 保持稳定;0.2.1 的差异集中在数据语义(凭据优先级、模型目录)与命令服务(复数 commands 服务,此前用的单数 command 服务不存在),本插件已逐条对齐 —— 详见 CHANGELOG.md 的 Unreleased 小节。 许可与上游归属 本仓库以 Apache-2.0 发布(完整文本见 LICENSE)。 评审引擎是对 open-code-review 的 fork 改造,按 Apache-2.0 §4 履行归属与修改声明义务: - 上游项目:alibaba/open-code-review - 上游版权:Copyright 2026 alibaba/open-code-review Contributors - 上游许可:Apache License 2.0(完整文本见 engine/LICENSE) - fork 说明、构建方法与版本口径见 engine/FORK_NOTES.md(engine/README.md 同目录,含上游改造点清单) - 修改声明:本仓库对引擎源码(engine/)做了 fork 改造(Windows 子进程隐藏窗口、跨平台进程树终止、敏感内容排除、R1–R8 评审整改等);引擎每个源文件头保留上游 SPDX-License-Identifier: Apache-2.0 与版权声明。 - 引擎内嵌图标的上游归属声明保留于 engine/internal/viewer/static/icons/NOTICE。 完整第三方归属声明见根目录 NOTICE。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
Nicholas023/dsh-code-review
智能代码审查插件DeepSeek Harness
相关插件 · 开发 / 工程
隐私简历生成器reactive-resume/reactive-resume
Reactive Resume 已迁至 GitHub 上的…
★ 45,125已汉化MCP
71.7
AI 架构文档生成器sopaco/deepwiki-rs
🚀 Litho 已进化为 Terrain —— 给你的 AI 智能体一张会呼吸的代码库地图。
★ 3,157已汉化DSH
70.8
长时任务执行闭环AMAP-ML/LongHorizon-Harness
面向 Computer-Use Agent 的 Loop Engineering
★ 1,764已汉化DSH
70.5
AI 编程纪律方法包GanyuanRan/Aegis
让 AI 编程 agent 变得可信:少返工、更安全、说“完成”前先给证据。
★ 1,384已汉化DSH
69.6
多代理编排运行时Enderfga/claw-orchestrator
面向编程智能体的运行时。把 Claude Code、Codex、Antigravity、Grok…
★ 586已汉化MCP
69.4
记忆进化插件csyangwen/dsh-memory-evolve
dsh-memory-evolve 使用场景指南
★ 461已汉化DSH
67.9