@charlesqin/dsh-pi-review
Read-only Pi Agent review of Git changes for DeepSeek Harness
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:win4r/dsh-pi-review说明文档
阅读完整 README ↗配置 Pi 认证与模型
默认以只读快照方式加载 Pi 的 ~/.pi/agent/auth.json 和 ~/.pi/agent/models.json;认证刷新和模型目录更新只保存在 Worker 内存中,不会写锁文件或回写 Pi 目录。可先在交互式 Pi 中执行 /login:
npx -y @earendil-works/pi-coding-agent@0.84.2
建议在 cordis.patch.yml 中显式配置 provider/model-id:
- insert:
- id: pi-review
name: '@charlesqin/dsh-pi-review'
config:
authority: direct-human
model: kimi-coding/k3
thinkingLevel: high
timeoutMs: 300000
maxDiffBytes: 524288
maxFiles: 200
maxOutputBytes: 524288
maxDiagnosticBytes: 65536
disposeGraceMs: 3000
requireFullSandbox: true
Bundle patch 的同 ID config 是整对象替换语义。覆盖 pi-review 行时,应重写希望保留的完整配置。
优先使用 Pi auth.json 中的字面 API key、OAuth,或显式环境变量引用,避免把密钥直接写入 Harness 配置。Worker 不执行 Pi 配置中的 !command:命令型认证 Provider 会被标记为不可用,其他安全 Provider 仍可使用;models.json 的 apiKey、header 或 env 中出现命令值则整个模型配置 fail closed。若认证或模型必须引用环境变量,可通过 forwardEnvironment 显式传入变量名;默认一个也不传。不要转发无关凭据。
自定义 Pi 目录可以用绝对路径配置:
agentDir: /absolute/path/to/pi-agent-dir
forwardEnvironment:
- MY_MODEL_API_KEY
例如,可在 auth.json 使用 "key": "$MY_MODEL_API_KEY",再只转发 MY_MODEL_API_KEY。Worker 固定设置 PI_OFFLINE=1,关闭 Pi 的启动更新、包更新和遥测网络操作;模型请求本身仍需要访问所配置的 Provider。Windows 上当前仍可使用内置 Pi 模型和认证,但 v0.1 不加载自定义 models.json。
使用
安装并重启 Profile 后,在顶层对话中要求 Agent 调用 pi_review_diff。例如:
请调用 pi_review_diff,以 working-tree 范围审查当前仓库全部未提交改动,
按严重度汇总 finding,并明确结果是否 stale。
工具参数:
| 参数 | 说明 |
|---|---|
scope: unstaged | 工作区相对 index 的未暂存改动,并包含 untracked 文件 |
scope: staged | index 相对 HEAD 的已暂存改动,不包含 untracked 文件;为避免混入未暂存内容,只开放冻结 diff,不开放当前文件读取/搜索 |
scope: working-tree | 整个工作区相对 HEAD,包含 staged、unstaged 与 untracked 文件 |
scope: base | 工作区相对解析后的 base_ref commit;必须提供 base_ref |
paths | 可选、非空的仓库相对路径过滤列表 |
base_ref 只接受普通 ref 或对象 ID,不接受 HEAD~2、A..B 等 revision expression。它会先解析为不可变 commit,再执行与当前工作区的比较;本版本不会自动计算 merge base。
成功结果包含:
verdict:clean或findingsassessment与按严重度排序的结构化findingssnapshot.head、可选base、diffHash、变更路径与stale- 实际沙箱 enforcement、Pi 模型 ID 与耗时
若审查期间仓库发生变化,插件仍返回冻结快照上的结果,但把 snapshot.stale 标为 true;应在新快照上重新审查。
配置参考
| 字段 | 默认值 | 说明 |
|---|---|---|
authority | direct-human | 只允许由当前顶层人类消息驱动;root-turn 可放行插件/定时来源的顶层轮次 |
model | Pi 当前可用默认模型 | 可选的 provider/model-id |
thinkingLevel | high | off 至 xhigh |
timeoutMs | 300000 | 整个快照与审查事务的截止时间 |
maxDiffBytes | 524288 | diff 上限;超限直接失败,不截断 |
maxFiles | 200 | 变更文件上限 |
maxOutputBytes | 524288 | Worker stdout 上限 |
maxDiagnosticBytes | 65536 | Worker stderr 上限 |
disposeGraceMs | 3000 | 子进程终止宽限期 |
requireFullSandbox | true | 平台只能提供 partial enforcement 时拒绝运行;设为 false 会允许较弱隔离,是不安全的部署级 opt-out |
agentDir | ~/.pi/agent | 可选绝对 Pi 配置目录 |
forwardEnvironment | [] | 显式传给 Worker 的环境变量名 |
authority: root-turn 会让 Cron、Plugin 等非人类来源的顶层轮次也能触发审查,适用于自动化,但扩大了调用权限。子 Agent、过期 Agent、无活动 driver、空闲状态或已结束轮次仍然不能调用。