← 返回列表
需源码安装
为 DeepSeek Harness 提供的按需代码审查。
暂不能直接安装(需源码编译或环境不满足):仓库 package.json 标记 private,未发布到 npm,需从源码安装。 · 最近上游提交 2026/9/23 · 已提供中文文档
DeepSeek Harness 的按需代码审查。
综合分
30
GitHub 分
30
用户评分
—
★ Stars
0
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add SeanTolstoyevski/dsh-code-review仓库 package.json 标记 private,未发布到 npm,需从源码安装,改用 GitHub 源安装
信任档位:已验证本站已于 1 天前真实安装成功
- 是什么
- dsh 原生插件 · tool
- 装得上吗
- 本站已真实安装成功(非静态推断)
- 安全吗
- 本站尚未对该插件做风险分级(暂未覆盖,不等同于无风险)
- 还在维护吗
- 活跃:最近一次提交在 3 天前
档位由下列信号合成:本站实装验证(真实安装,当前最高到 L4)· 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。下方各区块是它的证据明细。 验证判据与等级说明 →
🟢实装验证通过· 2026/9/24
由本站实装验证器在真实 dsh 环境安装成功,非静态推断。
数据截至 2026/9/23(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查需源码安装
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包@local/dsh-code-review(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
仓库 package.json 标记 private,未发布到 npm,需从源码安装
验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/23 08:33:58
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动
README
由 DeepSeek 最新模型翻译生成dsh-code-review
为 DeepSeek Harness 提供的按需代码审查。
/review 会使用审查模型审计工作区中未提交的更改,并将报告以卡片形式呈现在对话中。
它只做一件事:审查代码更改。它不审查聊天回答,不运行命令,也从不自行编辑工作区。
报告只属于你。 默认情况下,agent 不会被告知审查的存在:不会启动任何回合,不会向它的上下文读取任何内容,也不会有任何代码更改。你阅读报告,判断哪些内容重要,然后用自己的话给 agent 下达指令。notifyAgent 可以让 agent 参与进来;默认值为 off。
安装
一个用于 DeepSeek Harness 配置文件的 bundle。无需构建,也无需随它安装任何东西:该包是纯 JavaScript,没有任何依赖。
1. 将它安装到你的配置文件中。在会话中,请求 bundle 安装器 ——
plugin_manager、action: install_bundle、target: github:SeanTolstoyevski/dsh-code-review。
从克隆目录安装效果相同:传入你克隆到的目录的绝对路径,而不是 GitHub 规格。
或者使用 web ui > plugin manager > 粘贴 url 并安装。
2. 重启 dsh web。首次安装的 bundle 可以通过加载器激活,但被替换的包需要新的模块生成,之后其 JavaScript 才会再次被加载。
3. 在浏览器中重新加载页面。客户端产物每个页面只获取一次,因此重新加载才能使卡片更新到最新状态。
4. 在你想审查的会话中输入 /review。
使用
/review [full|session] [provider=] [model=] [language=] [gitRev=] [source=auto|git|session] [ignored=] [focus message]
- /review 或 /review full —— 仓库中相对于 gitRev(默认 HEAD)的每一处未提交更改,包括未跟踪文件。本会话写入或编辑过的文件会被标记为 primary,其余标记为 not by this session;
- /review session —— 仅限本会话写入或编辑过的文件;
- ignored=[,…] —— 本次运行的忽略模式,在内置列表和配置文件之上追加;重复该键可添加更多,并在模式前加 ! 可将某路径重新纳入(/review ignored=fixtures/,!dist/);
- ignoreDefaults=false / respectGitIgnore=false —— 在本次运行中放弃内置列表,或不再遵循仓库自身的忽略规则;
- 参数之后的所有内容都是 focus message:这是审查者唯一会看到的你的文本(/review session board.go satır 13)。
审查者从不读取对话。你的聊天消息不会传给它。
忽略的路径
审查针对的是某人编写的代码,因此没人希望被审查的路径会被排除在外 —— 在构建 diff 之前、在读取文件之前,以及在 maxFiles 预算被它们消耗之前。
- 内置标准列表。 依赖树(node_modules/、vendor/、
bower_components/、Pods/),构建输出(dist/、build/、target/、
out/、.next/、_build/),缓存与覆盖率(.cache/、__pycache__/、
coverage/、.pytest_cache/、.terraform/),生成的打包文件(.min.js、
.js.map、.tsbuildinfo),编辑器与操作系统噪音(.idea/、.vscode/、
.DS_Store、Thumbs.db),日志与本地状态(.log、.tmp、.sqlite、
.db),以及没人会提交的环境文件(.env、.env. —— 但
.env.example 之类的文件会被放回)。这份列表就是
index.js 中的 DEFAULT_IGNORE,ignoreDefaults: false 会将其关闭;
- config.json 中的 ignored 以及命令行上的 ignored=,以 gitignore 语法
添加模式: 和 ? 在 / 处停止, 跨越目录,开头或中间的 / 将该模式
锚定在变更集的根目录,结尾的 / 表示目录,# 是注释;
- 仓库自身的忽略规则,包括已跟踪的文件:一个曾经被提交过的
node_modules 仍然是 node_modules。未跟踪的已忽略文件根本不会到达插件,
因为 git status 会省略它们。
respectGitIgnore: false 会关闭这一层。
最后匹配的模式生效,因此一个 !pattern —— 无论是在配置中还是在
/review 之后输入的 —— 会把先前规则排除掉的任何内容放回来:
/review ignored=!dist/ 毕竟还是要审查 dist/
/review ignored=fixtures/,!dist/ 把 fixtures/ 排除在外,审查 dist/
/review ignored=! 什么都不忽略,审查所有内容
/review ignoredDefaults=false 本次运行不使用内置列表
不会有任何内容被悄无声息地丢弃:报告会说明规则排除了多少个已更改文件,
并最多列出其中五个文件以及各自背后的规则,审查者也会被告知同样的信息,
而一个完全被忽略的变更集会如实报告,而不是报告为干净的树。session
范围只统计会话自身的文件 —— 当规则移除了其中某个文件时,运行会说明是哪个
文件以及哪条规则排除了它,而不是报告该会话没有更改任何内容。审查者的
只读工具在同一套规则下作答,因此被忽略的文件无法被搜索、读回、作为证据
引用或在发现中被提及。
在卡片上
| 控件 | 作用 |
|---|---|
| Copy report | 整份 Markdown 报告,可直接粘贴到别处 |
| Copy(每个发现) | 那一条发现,使用报告自身的措辞 |
卡片显示报告并复制它。它没有任何发送内容的控件:
审查是一种决策辅助,而不是工作指令,而决策 —— 以及随之而来的
指令 —— 由你来给出。
工作原理
1. 收集变更 —— 优先使用 git,否则使用会话自身记录的
变更 —— 并在构建 diff 之前丢弃忽略规则覆盖的所有内容;
2. 在 maxFiles 和 maxDiffChars 范围内构建统一 diff;
3. 当仅凭 diff 无法解决某个问题时,审查者可以使用只读工具读取
工作区;
4. 每条发现都必须通过证据门,否则会被扣留;
5. 报告即卡片。除非你另有说明,流程到此为止。
来源。 git 将工作树与 gitRev 进行比较;session 读取 Host 仍为此会话提供的最新 workspace/changes 记录;auto(默认)先尝试 git,失败后回退到该记录。该记录仅存在于 Host 进程中,因此重启后只有 git 仍能看到这些工作。
证据门。 审查者必须引用能证明每条发现的那一行,说明它导致什么(impact)以及如何触发(trigger)。如果引用的内容未出现在 diff 或读取工具返回的内容中,该引用将被丢弃,对应的发现也随之丢弃。任何未通过的内容都会被扣留,绝不会被悄悄丢弃:会显示数量,并列出每条主张及其原因。结论会根据存留下来的发现重新计算。
读取工具。 read_file、list_dir 和 search,在本插件内部实现。没有命令、没有 shell、没有写入、没有网络。路径会被解析到其真实目标,并且必须留在工作区内部,因此无法利用符号链接读取工作区之外的内容,本次运行的忽略规则同样适用于它们。读取受 maxToolCalls、maxReadBytes、maxSearchResults 和 toolDeadlineRatio 限制;达到限制时会告知审查者,并且必须作答。若仅审查 diff,请设置 projectAccess: false。
配置
DSH_HOME/code-review/config.json —— harness 主目录,当 $DSH_HOME 已设置且非空白时即为该变量,否则为 ~/.dsh。它绝不是当前工作目录:dsh web 是从你碰巧所在的任何位置启动的,从那里读取的配置会悄无声息地变成根本没有配置。每个键都是可选的,并且每次运行都会重新读取该文件——调优既不需要重启也不需要重新加载,而且每次运行都会记录它读取的文件以及生效的值。
{
"provider": "",
"model": "",
"language": "",
"source": "auto",
"gitRev": "HEAD",
"notifyAgent": "off",
"projectAccess": true,
"maxToolCalls": 30,
"maxReadBytes": 524288,
"toolDeadlineRatio": 0.8,
"maxSearchResults": 40,
"maxFiles": 25,
"maxDiffChars": 150000,
"maxHintChars": 600,
"maxTokens": 50000,
"temperature": 0.1,
"timeoutMs": 600000,
"ignored": [],
"ignoreDefaults": true,
"respectGitIgnore": true
}
| 键 | 含义 |
|---|---|
| provider、model | 审查者路由。两者都为空则复用 agent 自身的。 |
| language | 报告语言。为空则镜像焦点消息;没有焦点消息时报告为英文。 |
| source、gitRev | 变更集来自哪里,以及 git 与什么进行比较。 |
| notifyAgent | off(默认):只有你能看到报告。steer 将其作为通知交给 agent,这会启动一轮;inject 将其放入 agent 的上下文而不启动一轮。只有在你希望 agent 参与循环时才设置其中之一。 |
| projectAccess | 将上述只读工具提供给审查者。 |
| maxToolCalls、maxReadBytes、maxSearchResults、toolDeadlineRatio | Reader 预算。 |
| maxFiles、maxDiffChars | 已审查的文件和总 diff 大小;其余文件列为被略过。 |
| maxHintChars | 你输入的 focus 消息的上限。 |
| ignored | 额外的忽略模式(一个数组,或一个用逗号或换行分隔的字符串),叠加在内置标准列表之上。在模式前加 ! 可将路径重新纳入。 |
| ignoreDefaults | true(默认):应用内置标准列表。false 会像对待其他内容一样审查依赖树和构建输出。 |
| respectGitIgnore | true(默认):仓库自身的忽略规则也会被遵守,包括已跟踪的文件。false 会审查它们。 |
| maxTokens、temperature、timeoutMs | 输出上限、采样以及整个运行的预算。首次调用失败时会重试一次,不带项目访问权限,并将输出上限降低到 8192,或降低到配置值(当该值更小时);报告会说明该次运行已降级。 |
Findings
类别:correctness、concurrency、error-handling、security、
api-misuse、performance、tests、consistency。严重级别:blocker、
major、minor、nit。当 blocker 或 major 通过证据门禁时,判定为 fail;
仅有 minor 或 nit 时为 warn,否则为 pass。
二进制、过大或超出预算的文件会报告为 left out,而被忽略规则覆盖的文件会报告为 excluded as ignored,并附上匹配的规则——两者都不会被静默丢弃。无法解析的输出会以原始文本大声失败,而不是报告一个虚假的通过。
Limits
- 审查器会读取工作区,但无法运行任何内容,因此构建和测试结果在构造上就不在其触及范围内。
- 由 shell 命令更改的文件无法归因到会话;它们会出现在 full 下。
- 当证据位于变更集之外的文件中时(调用方、定义),finding 可以引用该文件;其提示中的可达性规则仍会将其与变更集关联起来。
- 忽略模式会与路径匹配,命名目录的模式会连同其下所有内容一并匹配;因此,一个与这类模式完全同名的文件(build/)会被视为该名称的目录。
- respectGitIgnore 会为 git 源查询仓库的规则;会话记录源则由内置列表、配置文件和你的输入进行过滤。
Package layout
| File | Role |
|---|---|
| index.js | Host 半部分:/review 命令、变更收集、审查器调用。 |
| client.js | Client 半部分:报告卡片及其复制操作。 |
| cordis.patch.yml | Bundle 补丁:插入 code-review 插件行。 |
| selftest.mjs | node selftest.mjs 驱动两半并断言每条路径。 |
Host 半部分会在报告中的
之后追加一个机器可读的 payload,作为一个围栏 JSON 块(schema: code-review/1);
卡片会解析它,并在无法解析时回退到原始报告文本。
许可证
MIT