先访谈定计划,再拦住越界写入并核验测试证据
30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/30 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add atshv/Polier该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
dsh 原生插件 · security
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 2 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件
查看扫描证据(共 12 处,展示前 12 条)
- 读取本地文件adapters/dsh/index.mjs:109
const data = JSON.parse(readFileSync(path.join(String(folder), '.polier-slot'), 'utf8')) - 读取本地文件adapters/dsh/index.mjs:622
if (!existsSync(script)) throw toolMissing('pl_next', 'dispatch.py') - 读取本地文件adapters/dsh/index.mjs:651
if (!existsSync(script)) throw toolMissing('pl_state', 'state.py') - 读取本地文件adapters/dsh/index.mjs:797
if (!existsSync(script)) return { kind: 'error', text: 'pl next needs tools/dispatch.py, which this Polier package does not ship.' } - 读取本地文件adapters/dsh/index.mjs:842
const text = readFileSync(file, 'utf8') - 读取本地文件adapters/dsh/lib/policy.mjs:99
text = readFileSync(file, 'utf8') - 读取本地文件adapters/dsh/lib/policy.mjs:578
names = readdirSync(folder).filter((name) => name.endsWith('.json')).sort() - 读取本地文件adapters/dsh/lib/policy.mjs:585
const record = JSON.parse(readFileSync(path.join(folder, name), 'utf8')) - 执行外部命令固定命令adapters/dsh/lib/project.mjs:56
return execFileSync('git', ['-C', String(root), ...args], { - 读取本地文件adapters/dsh/lib/project.mjs:109
if (existsSync(path.join(dir, 'board.json'))) return dir - 读取本地文件adapters/dsh/lib/project.mjs:119
const board = JSON.parse(readFileSync(path.join(root, 'board.json'), 'utf8')) - 执行外部命令来自配置/变量adapters/dsh/lib/run.mjs:63
execFile(argv[0], argv.slice(1), {
扫描于 2026/10/31(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-commands@deepseek-ai/dsh-skill@deepseek-ai/dsh-system-prompt@deepseek-ai/dsh-tools给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
在写第一行代码前先规划 AI 编码项目,之后让智能体按计划推进:每个任务写保护规则、记录测试证据、设检查点和审批。DeepSeek Harness 插件,带 Claude Code 钩子。
README
由 DeepSeek 最新模型翻译生成Install · Start ·示例项目 · FAQ ·更新日志 ·版本发布
Polier 以插件形式配合 DeepSeek Harness 使用,也以钩子形式配合 Claude Code 使用。它会先访谈你,写出一页架构说明和任务计划,等你批准后再搭建项目。智能体干活时,它拦截当前任务之外的文件写入,只认有记录的测试运行作为证据,并把每一次尝试、批准和评审轮次都提交成记录。
为什么需要它
| 没有 Polier | 有了 Polier |
| 智能体「顺手修一下」属于别的任务的文件 | 写入守卫拦截任务清单之外的每个文件 |
| 「测试通过了」只是聊天里的一句话 | 只有带退出码和日志哈希的关卡运行记录才算数 |
| 任务没评审就标记完成 | done 需要一次通过的评审、一次交接和关卡记录 |
| 上一个任务还没做完,下一个就开工了 | 依赖未关闭时,in_progress 会被拒绝 |
| 智能体卡住后无限重试,烧光 token | 尝试次数和 token 预算都有上限,到顶就升级处理 |
| 智能体会话里冒出 git push 或 npm publish | 所有角色一律拒绝,发布只在 CI 里由 tag 触发 |
| 事后没人知道当初为什么这么决定 | 运行记录、批准和评审都随任务一起提交 |
工作原理
展开完整文档(README 剩余 1 节)
Install · Start ·示例项目 · FAQ ·更新日志 ·版本发布 Polier 以插件形式配合 DeepSeek Harness 使用,也以钩子形式配合 Claude Code 使用。它会先访谈你,写出一页架构说明和任务计划,等你批准后再搭建项目。智能体干活时,它拦截当前任务之外的文件写入,只认有记录的测试运行作为证据,并把每一次尝试、批准和评审轮次都提交成记录。 为什么需要它 | 没有 Polier | 有了 Polier | | 智能体「顺手修一下」属于别的任务的文件 | 写入守卫拦截任务清单之外的每个文件 | | 「测试通过了」只是聊天里的一句话 | 只有带退出码和日志哈希的关卡运行记录才算数 | | 任务没评审就标记完成 | done 需要一次通过的评审、一次交接和关卡记录 | | 上一个任务还没做完,下一个就开工了 | 依赖未关闭时,in_progress 会被拒绝 | | 智能体卡住后无限重试,烧光 token | 尝试次数和 token 预算都有上限,到顶就升级处理 | | 智能体会话里冒出 git push 或 npm publish | 所有角色一律拒绝,发布只在 CI 里由 tag 触发 | | 事后没人知道当初为什么这么决定 | 运行记录、批准和评审都随任务一起提交 | 工作原理 规则只写一份,放在 core/(Python,仅用标准库)。DeepSeek Harness 插件和 Claude Code 钩子只做一件事:把宿主的事件翻译成对它的调用。tools/ 里的命令行工具在任何 shell 里都能用。 效果预览 每张截图都是参考项目 examples/monorepo-mini 的真实输出。 写入守卫会在智能体碰到任务范围外的第一个文件时拦住它,被拒绝的命令对所有角色都保持拒绝。 检查点会拒绝没有证据支撑的状态,并说明哪条命令能产出证据。 调度计划显示现在可以启动什么、什么在等待以及为什么等、哪些审批还没处理。 调研会把每个锁定版本拿到 npm 和 PyPI 上核对,并把带日期的结论存进 docs/research/。 状态页一眼看全整个项目:阶段、每个任务及其尝试次数、gate 记录、评审结论,以及 token 与预算的对比。render_status.py --html 把它写成一个文件,不需要服务器。图中的 token 数是示例值。 安装 要求:DeepSeek Harness 或 Claude Code、git、Python 3.9+。 git clone https://github.com/atshv/polier.git dsh plugin --profile web add ./polier 把 web 换成你自己的配置档名,然后重启 harness。要更新,先在克隆目录里跑 git pull,再跑一遍同样的 add 命令,然后重启。 Claude Code: 运行 ./install.sh claude,再把 adapters/claude-code/settings.example.json 里的钩子加到 .claude/settings.json。角色与设置见 adapters/claude-code/README.md。 只要技能、不要插件: 运行 ./install.sh,以后用 ./update.sh。 开始 在空文件夹里开一个新会话,写下: Plan a new project: a command-line tool that stores my bookmarks locally and finds them again. Polier 会提问,给出计划等你批准,写好项目文件,再把第一个任务的提示词交给你。从这以后,每个任务都走检查点,而不是靠手工编辑的任务板。 命令 以下命令在 DeepSeek Harness 里使用。Claude Code 改用环境变量 POLIER_ROLE 和 POLIER_TASK。 | 命令 | 作用 | | /pl lead | 本会话可以写所有内容(规划、看板、合并) | | /pl worker | 回到当前任务的文件(默认) | | /pl reviewer | 本会话只能写 reviews/ 下的内容 | | /pl off | 为本会话关闭守卫 | | /pl task M03 | 把本会话绑定到一个任务并认领;/pl task 释放认领 | | /pl status | 显示角色、任务和允许的文件 | | /pl next | 显示调度计划 | | /pl policy | 显示当前生效的策略 | | /pl render | 重新生成 STATUS.md(仅 lead) | 插件还会给智能体提供这些工具:pl_status、pl_gate、pl_scope_check、pl_check、pl_next 和 pl_state。 命令行工具 | 工具 | 用途 | | tools/check.py | 检查生成的项目:文件、看板、任务简报、预算、阶段、证据、策略、运行记录、审批、漂移 | | tools/state.py | 对任务状态执行 show、check、set;状态只由它写入 | | tools/gate.py | 运行单个门禁,锁定共享资源,写入带校验和的记录 | | tools/approve.py | 对审批记录执行 request、grant、deny、list、check | | tools/dispatch.py | 调度计划:波次、阻塞任务、冲突、待审批 | | tools/audit.py | 按策略、运行记录、门禁和评审查看每个任务的合规情况 | | tools/research.py | 依赖、对照 npm 和 PyPI 检查的版本、带来源的研究笔记 | | tools/usage.py | 每个任务的 token 用量,对照 budget.max_tokens_per_task | | tools/render_status.py | 重新生成 STATUS.md;加 --html 还会生成状态页 STATUS.html | | tools/scope_check.py | 对照任务范围检查改动文件,并检测外部改动 | | tools/claim.py · slot.py · worktree.py | 每个任务一个活动会话,每个工作树分配端口和测试数据库,任务检出 | | tools/boundaries.py · contracts.py | 导入边界和契约 schema(配置档 L) | | tools/release_check.py · smoke.py | 干净的带标签发布,部署后冒烟检查 | | tools/drift.py · manifest.py | 对比项目本地副本与发布清单 | 项目文件 my-project/ ├── ARCHITECTURE.md rules every module follows, one page ├── AGENTS.md commands and rules for agents ├── board.json tasks, dependencies, allowed files, status ├── policy.json limits, approvals, protected paths, denied commands ├── STATUS.md progress, generated, never edited by hand ├── tasks/ briefs for the next 3–5 tasks ├── runs/ one execution record per task: attempts, events ├── reviews/ reviews, gate records, approvals ├── docs/ module map, orchestration, quality, versions, research └── packages/ services/ apps/ profile L only Polier 不是什么 - 不是智能体。 它不写代码。它规划工作,并让你已经在用的智能体始终待在这个规划里。 - 不是服务器。 所有内容都是你仓库里的文件,外加几个 Python 脚本。没有东西在后台运行,也不需要数据库或账号。 - 不是沙箱。 守卫拦的是无心之失,不是攻击者;下面列出了它的缺口。 - 不是遥测。 Polier 不向任何地方发送数据。唯一的网络调用是 research.py versions --lookup 的注册表查询,而且只在你运行它时才发生。 守卫不覆盖的范围 守卫让守规矩的智能体不跑偏;它不是沙箱。展开看已知缺口。 守卫让守规矩的智能体不跑偏;它不是沙箱。已知缺口: - 审批是协作式证据,不是身份认证。 reviews/approvals/AP-NNN.json 没有签名,也不校验身份。谁能写这个文件,谁就能伪造一条已批准的记录,而 shell 写入在守卫之外。把审批提交上去,像审代码一样审它。 - 运行记录可以伪造。 runs/<ID>.json 是文本文件,手动编辑或 shell 写入改它,和改工具一样容易;tools/audit.py 拿它跟看板和证据文件夹比对,而不是跟实际发生的事比对。一个 done 任务如果运行记录被改过,只能以矛盾的形式暴露出来。 - 命令匹配是静态的。 策略里的拒绝模式和仅限主控模式,是在剥掉引号、heredoc、赋值和包装器之后,对 shell 片段做匹配,所以 git push 能被抓到。由变量、eval、解释器或脚本文件拼出来的命令抓不到。 - 策略就是个文件。 谁能写 policy.json,谁就能放宽规则。像保护看板一样保护它,改动要审;守卫只读它,不拥有它。 - 看不见的 shell 写入。 DeepSeek Harness 在写入前只检查自己的文件工具。Claude Code 也检查 Bash,但只看静态扫描命令能看出来的部分(重定向、tee、cp/mv、rm、touch、sed -i、perl -i、dd of=、bash -c)。看不到的有:解释器和脚本(python -c、node -e、./build.sh)、构建工具和包管理器、git 命令(checkout、restore、stash、apply、commit)、xargs、find -exec/-delete、patch,以及带变量、通配符或 $(...) 的路径。这些写入只能靠停止检查兜底。 - 停止检查只看 git status。 已提交的改动、被忽略的文件(.gitignore、.git/info/exclude)和仓库外的文件都看不见。提醒达到 maxStopReminders(DSH)/ POLIER_MAX_STOP_REMINDERS(Claude Code)次后它就放弃,而且在多个任务同时进行、主控或评审会话、没有 git、或它自身失败时都不运行。 - 每次调用都会读看板。 守卫看不见的 shell 写入可以改 board.json(任务状态、scope_write),从而放宽或关掉守卫。停止检查会报告看板变化,但只在一个任务仍处于 in_progress 时;tools/audit.py 会显示运行记录不支持的状态。 - 路径按文本比较。 不跟随符号链接,所以作用域内的链接可以指向作用域外。macOS 和 Windows 的文件系统忽略大小写,比较时也忽略;在区分大小写的文件系统上,两种不同拼写就是两个不同路径。受保护路径的匹配规则用同一套比较。 - 项目从会话文件夹定位。 会话在项目外启动,或在某个 worktree 中启动、而该 worktree 的 board.json 仍把任务标为 pending,都不受保护,直到绑定到任务(DSH 中用 /pl task,Claude Code 中用 POLIER_TASK)。 - 认领是协作式的。 活跃认领会拦住第二个使用认领工具的会话,并指出持有者;从不认领的会话不会被认领本身拦住。认领不是文件锁。 - 门禁记录可以伪造。 reviews/evidence/ 始终可写,智能体可以自己写日志和对应的记录;门禁命令是自由文本。审查者必须把记录的命令与 AGENTS.md 对照。 - 失败时放行。 Python 缺失或钩子出错,写入照常通过。角色存在内存里(DSH)或环境变量里(Claude Code);能改设置的人就能解除它们。 - 终止警告只是提醒。 kill、pkill 和 killall 从不拦截命令:DSH 发消息,Claude Code 询问。要真正防止停掉别的会话的进程,只有沙箱。 - Claude Code 的特殊之处。 只检查 Write、Edit、MultiEdit、NotebookEdit 和 Bash,不检查 MCP 或其他写文件的工具。Bash 在项目外写 /tmp、临时文件夹或 /dev 不检查;删除 git 未跟踪的文件是允许的(等于撤销一次写入)。 要硬性限制,就把 worker 放进沙箱或容器,只给任务文件的写权限。 FAQ 需要会编程吗? 不需要。你用大白话描述项目,回答访谈,批准计划。智能体写代码;Polier 让它不偏离计划。 支持哪些智能体? DeepSeek Harness 用完整插件(/pl 命令和 pl_* 工具),Claude Code 通过两个钩子接入。命令行工具在任何 shell 里都能用,所以其他智能体也能用,只是没有自动防护。 能给已有项目加 Polier 吗? 可以。访谈有棕地模式,先读仓库(阶段 B),再根据现状规划下一阶段。 token 预算有什么用? policy.json 里的 budget.max_tokens_per_task 限制单个任务在所有尝试中最多花多少。Claude Code 自动记录用量;到 80 % 工具会警告,到 100 % 任务未经所有者批准不能再次启动。 更新 Polier 会怎样? 运行中的项目保留自己的 generator_version。changelog 说明每个版本要求项目改什么;在阶段之间更新,绝不要在任务进行中更新。 免费吗? 免费,MIT 协议。 包结构 | 文件夹 | 内容 | | core/ | 全部规则:看板、写入守卫、停止检查、门禁、认领、槽位、锁、边界、策略、运行、审批、状态、调度、审计;测试在 core/tests/ | | adapters/dsh/ | DeepSeek Harness 插件;见 adapters/README.md | | adapters/claude-code/ | Claude Code 钩子(PreToolUse、Stop) | | tools/ | 上面那些命令行工具 | | templates/ | 看板 schema、策略、AGENTS、任务简报、编排、研究笔记、版本、契约、发布、门禁 | | prompt/ | 流程(generator.md)、编排模型、评分标准、DeepSeek Harness 映射 | | guide/ | 分步检查清单 | | examples/ | minimal-cli(配置档 S)和 monorepo-mini(配置档 L);CI 会检查这两个 | 跑全部测试用 npm test;只跑 core 用 python3 -m unittest discover -s core/tests -t .。 新变化 1.3 为每个任务加上 token 预算(tools/usage.py,在 Claude Code 里自动记录),并新增状态页 STATUS.html。1.2 新增 tools/research.py、一个检查点(任务依赖未完成前先挂起)和自动发布。1.1 加入编排:policy.json、检查点、运行记录、审批、调度和审计。1.0 加入看板 schema 1.0、运行时槽位、独占门禁、认领、工作树和配置档 L。 详细说明和迁移步骤:CHANGELOG.md 和 Releases。 发布 发布是自动的。要发新版本: 1. 在 VERSION 里写上新版本号(例如 1.3.0)。 2. 在 CHANGELOG.md 顶部加一节 ## 1.3.0,写明改了什么、怎么迁移。 3. 把这两个文件推送到 main 或上传到 main。 之后工作流 .github/workflows/release.yml 会同步 package.json 和 tools/manifest.json,跑测试,创建标签 v1.3.0,并发布 GitHub Release,把 changelog 里那一节作为发布说明。如果缺 changelog 小节,它会停下来并给出明确提示,而且绝不会覆盖已有的发布。 许可证 MIT
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
atshv/Polier
先访谈定计划,再拦住越界写入并核验测试证据
相关插件 · 安全 / 权限
智能体逆向工程morluto/rea
用智能体逆向工程任何东西,从应用行为到原生二进制。
★ 415,267已汉化DSH
73.3
智能体集群框架ruvnet/ruflo
面向 Claude Code 与 Codex 的智能体元基座meta-harness。
★ 80,414已汉化MCP
71.9
WorkBuddy 模型接入corrinehu/dsh-workbuddy-connect
2026 年 10 月 20 日起,WorkBuddy…
★ 1,604已汉化DSH
71.7
破甲一键通z91772524-ai/pojia-next
十五个 AI…
★ 967已汉化DSH
71.6
AI 代理虚拟终端strukto-ai/mirage
Mirage 是给 AI 智能体用的虚拟终端:一层 shell,统管数据、命令行和运行时。Unix…
★ 3,756已汉化DSH
70.8
Agent 操作层agentic-os-org/ANOLISA
ANOLISA(Agentic Nexus Operating Layer & Interface System Architecture)|智能体操作系统,带运行时、安全、可观测性,以及 Tokenless 响应压缩,降低 token 用量与成本。
★ 649已汉化DSH
70.7