🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

条款立场核对 PerryLink/dsh-contract-stance

DeepSeek Harness
PerryLink26 天前有提交已提供中文文档扫描:含敏感能力

检查条款立场登记表是否完整自洽

30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/9 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add PerryLink/dsh-contract-stance
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么
dsh 原生插件 · tool
装得上吗
实装验证未通过(unknown),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 26 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
⚠︎ 实装验证未通过(unknown · 2026/11/3) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件
查看扫描证据(共 1 处,展示前 1 条)
  • 读取本地文件
    samples/quickstart/run.mjs:7
    const material = await readFile(join(here, 'input', "CS-001-unsafe.json"), 'utf8')
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-package-manifest@deepseek-ai/dsh-tools@deepseek-ai/schemastery
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 核对条款立场登记表
  • 检查完整性与自洽性
  • 仅提示差异

合同条款立场核对:依据《中华人民共和国民法典》。仅提示差异,不作出定性结论。

README

由 DeepSeek 最新模型翻译生成
dsh-contract-stance — 条款立场登记表的完整性与自洽性检查 dsh-contract-stance 读取一份条款立场登记表——合同头部加上每条条款一行——检查这份登记表自身的完整性与自洽性:每条条款的文本是否记录在案,你的立场是否出自你自己的词表,风险等级是否同样出自词表,必保条款是否同时记录了退让底线和负责人,条款编号是否唯一,登记表是否写明合同名称和你方身份,以及条款文本里是否还残留未替换的占位符。 它能回答什么 | 你问 | 它回答 | | 某条条款行填了主题,但条款文本那一列是空的。这会被报出来吗? | 会。CS-001 要求每一行都有 text 列:没有措辞,就无法拿立场去对照它所针对的内容。这条规则只检查措辞是否记录在案——它不判断该条款该不该接受,也不判断它有没有法律风险。 | | 立场和风险等级都填了,可每一行返回的都是 skipped。为什么? | 两个取值列表出厂时都是空的。CS-002 只接受来自它自己那份配置列表的立场,CS-003 对风险等级同理;没有配置列表,两条规则都跑不起来,于是各自把自己报进 skipped,而不是悄悄通过。CS-002 只检查取值是否在你的列表上,不检查立场是否恰当;CS-003 只检查等级是否在你的列表上,不判断该条款的实际风险有多高。 | | 某条条款标了必保,但没人写我们能让到哪一步、由谁拍板。
展开完整文档(README 剩余 1 节)
dsh-contract-stance — 条款立场登记表的完整性与自洽性检查

dsh-contract-stance 读取一份条款立场登记表——合同头部加上每条条款一行——检查这份登记表自身的完整性与自洽性:每条条款的文本是否记录在案,你的立场是否出自你自己的词表,风险等级是否同样出自词表,必保条款是否同时记录了退让底线和负责人,条款编号是否唯一,登记表是否写明合同名称和你方身份,以及条款文本里是否还残留未替换的占位符。

它能回答什么

| 你问 | 它回答 |
| 某条条款行填了主题,但条款文本那一列是空的。这会被报出来吗? | 会。CS-001 要求每一行都有 text 列:没有措辞,就无法拿立场去对照它所针对的内容。这条规则只检查措辞是否记录在案——它不判断该条款该不该接受,也不判断它有没有法律风险。 |
| 立场和风险等级都填了,可每一行返回的都是 skipped。为什么? | 两个取值列表出厂时都是空的。CS-002 只接受来自它自己那份配置列表的立场,CS-003 对风险等级同理;没有配置列表,两条规则都跑不起来,于是各自把自己报进 skipped,而不是悄悄通过。CS-002 只检查取值是否在你的列表上,不检查立场是否恰当;CS-003 只检查等级是否在你的列表上,不判断该条款的实际风险有多高。 |
| 某条条款标了必保,但没人写我们能让到哪一步、由谁拍板。 | CS-004 读登记表自己的必保列:对于标了 是、Y、yes、true、必保 或 √ 的行(这些取值由 conditionValues 设定),它要求 fallback 和 owner 两列都填上。它只检查这两列填没填,不判断退让底线是否合理;哪些条款算必保完全取决于项目,这条规则从不替你做这个决定。 |
| 同一个条款编号出现在两行上,一版谈判稿一行。这算问题吗? | CS-005 会报出重复的条款编号,比较时忽略空白。编号重复,就没法精确指向某一条条款。同一条条款每版各出现一次是正常形态:在版本列里区分它,别复用编号。没有哪条规则要求条款编号必须唯一——唯一性正是登记表可被引用的前提。 |
| 头部没写这是哪份合同,也没写我们是哪一方。 | CS-006 要求材料的头部写明 contractName 和 party:缺了这两项,立场就无法追溯到具体的交易和当事方。如果你的表单为谈判稿带了版本列,把它加进这条规则的 fields。这条规则只检查头部有没有声明这两项。 |
| 条款文本直接从模板表单复制,仍然带着【】或 TBD。 | CS-007 报告条款文本里仍留着占位词——【、】、{{、}}、XXX、xxx、待填、待补充、TBD、todo、示例——这些词可以按你自己的模板调整。参照模板表单没问题,危险的是把模板占位符当成已经审过的措辞。这条规则只在 text 列里找这些词,不看条款本身。 |

遵循的标准

| 文件 | 编号 | 引用它的规则 |
| 《中华人民共和国民法典》 | 现行版本与条号本次未核实 | CS-001, CS-002, CS-003, CS-004, CS-005, CS-006, CS-007 |

边界: 这个插件检查的是合同条款立场台账,看一份台账能被要求做到什么——每条条款的文本都记下来了,你的立场来自你自己的词表,风险等级也来自它,必备条款同时记下退让立场和负责人,条款编号不重复,台账写明合同名称和你这一方,没有占位符残留。它不判断某条条款该不该接受、某个风险能不能承受、要不要签字、谈判策略是否站得住。这些取决于交易本身、对方的筹码和你自己的风险偏好。

⚠️ 引用依据是什么——以及这个插件绝不能拿到的一样东西

《中华人民共和国民法典》是拿到并逐字读过的,rules/evidence/clause-verification.md 记录了引用的内容:第四百六十五条(依法成立的合同受法律保护)、第四百七十条(合同内容一般包括当事人、标的、数量、质量、价款、履行条款和违约责任)、第五百零九条、第五百七十七条(违约的后果)和第五百八十四条(损害赔偿包括可得利益,但以可预见性为上限)。

合同编并不规范谈判台账。 它管的是成立、效力、履行和责任;台账的列来自你企业自己的合同管理规定。所以 excerpt 字段仍然写着「本次未取得」,每条规则也仍然是 warn 或 info:「这一列是空的」不能读成「这违反了民法典」。 另外注意,第四百七十条说的是一般包括,不是应当包括——这也是 CS-001 不主张直接义务的又一个原因。

⚠️ 不要给这个插件加诉讼时效规则。 民法典确实定了数字——第一百八十八条规定三年时效(最长二十年),第二百零三条规定期间从法定节假日顺延——这让「直接比日期」看起来很诱人。但在这里行不通:期间从债权人知道或应当知道损害和债务人之日起算,这是事实认定,台账并不记录;期间还会中止(第一百九十四条)和中断(第一百九十五条),第一百九十六条又列出了根本不适用时效的请求权。日期算术规则会把一个事实把「发现」当成计算,恰恰是这一类插件要避免的过度断言。

这个插件在任何地方都不对条款的实质内容做判断。 它只读你自己的列,检查这些列是否填好、是否取自你的词表。有两份词表出厂时是空的 ——立场清单(CS-002)和风险等级(CS-003)—— 所以什么都没配置时,这两条规则会在 skipped 里报告自己,而不是悄悄通过。

兼容性

| 层面 | 状态 |
| Harness | 对等版本范围 >=0.1.2-rc.1 <0.2.0 \|\| >=0.2.0-0 <0.3.0 —— 已验证同时接受 0.2.0-rc.2 和 0.2.1-alpha.1。刻意不声明 engines.dsh:它没有读取方,也无法拒绝宿主 |
| Node | ^22.19.0 || >=24.0.0 |
| 平台 | 全部(纯 ESM;无原生代码、无网络、不调用模型) |
| 工具模式 | 在 native、ptc 和 both 下都能用;要拿到完整契约请用 ptc |

它做什么

注册 contract_stance 工具。它读取一份条款位置登记表 —— 合同抬头,加上每条条款一行 —— 套用带版本的规则包,返回一份报告。

| 规则 | 检查内容 | 严重级别 | 依据类型 |
| CS-001 | 每条条款的原文都已记录 | warn | principle |
| CS-002 | 立场取自你的词表(默认关闭) | info | principle |
| CS-003 | 风险等级取自你的词表(默认关闭) | info | direct |
| CS-004 | 必保条款记录了退让方案和负责人 | warn | direct |
| CS-005 | 条款号唯一 | warn | principle |
| CS-006 | 登记表写明了合同和你方 | warn | direct |
| CS-007 | 条款原文里没有未替换的占位符 | warn | principle |

安装

dsh plugin --profile <name> add dsh-contract-stance
dsh --profile <name> --dump-config | grep 'dsh-contract-stance'

配置

| 键 | 类型 | 默认值 | 说明 |
| rulesFile | string | rules/contract-stance.yaml | 规则包路径,相对于包根目录 |
| disabledRules | string[] | [] | 要停止运行的规则 id;每一条都会出现在 skipped 里 |
| onlyRules | string[] | [] | 只运行这些规则 id;留空则运行全部规则 |
| skipNotes | string | "" | 附加到每条 skipped 原因后面的备注 |
| timeoutMs | number | 120000 | 协作式工具超时预算 |

几个值得了解的规则级参数:

- CS-002 values —— 你的立场词表,例如 [坚持, 可谈, 接受, 须删除]。留空表示不检查。
- CS-003 values —— 你的风险等级,例如 [高, 中, 低]。留空表示不检查。
- CS-004 conditionValues —— 你的「是否必保」列里标记条款必保的取值,默认是 [是, Y, yes, true, 必保, √]。
- CS-007 terms —— 要查找的占位符。

素材格式

工具接受 JSON 或 YAML:

contractNo: HT-2026-018
contractName: 某某设备采购合同 party: 某某公司 version: 第 3 轮谈判稿 rows:
- { 条款号: 第 8.2 条, 条款主题: 逾期付款违约金,
条款原文: 买方逾期付款的,每逾期一日按未付金额的万分之五向卖方支付违约金。, 本方立场:可谈,风险等级:中,风险说明:违约金比例高于本方惯例且未设上限,退让底线:比例可降至万分之三,须增加总额不超过合同额 5% 的上限,是否必保:是,谈判责任人:王经理 }

列名匹配不区分大小写,并忽略空格、下划线和连字符;登记表自身的列名会保留,因此每条发现都会指明它读取的是哪一列。

规则来源

规则数据放在 rules/contract-stance.yaml。包头部完整说明了引用缺口,每条规则的 note 会重复该规则相关的部分。加载时的守卫通常要求「摘录必须是至少八个字符的真实引用」,但它分不清引用和描述——所以这个包靠头部、每条规则的 note,以及一个测试来兜底,该测试断言每个 excerpt 都承认这个缺口。

故障排查

- CS-002 或 CS-003 报告自己被跳过。 它的词表是空的。立场和风险的措辞是你所在机构的惯例,插件不会去猜。
- CS-004 在标记为必保的条款上触发。 它没有记录退让底线,也没有记录责任人。必保条款若没写明底线,就无法当场谈判。
- CS-001 触发,但该条款在别处已被引用。 text 列本身是空的。这项检查读的是登记表,不是合同文档。
- CS-005 对同一条款触发两次。 跨谈判轮次时这是合理的——请在版本列中区分这些行,而不是复用条款编号。
- 插件装上了,但工具始终不出现。 检查 main 是否指向 lib/index.mjs,以及 pnpm run build 是否生成了它;main 写错会让加载器静默跳过入口。
- dsh plugin add 以不兼容为由拒绝该包。 peer 范围覆盖 0.1.x 和 0.2.x;如果你的运行时不在其中,请显式授予豁免: dsh plugin --profile <name> allow-version dsh-contract-stance@0.1.0 --dsh-version <runtime> --accept-risk
- check 报告 manifest-peers 失败。 静态检查器比对的是一个硬编码的 peer 范围,它早于 0.2 系列。运行时会在安装时强制校验 peer 兼容性,所以声明的范围是正确的;这是 dsh-plugin-dev 中已知的上游问题。

开发

pnpm install
pnpm run typecheck # tsc --noEmit
pnpm test # vitest, the shared table-plugin suite plus paired fixtures
pnpm run build # tsdown -> lib/index.mjs + lib/index.d.mts
node ../scripts/sync-shared.mjs dsh-contract-stance # refresh src/shared from ../_shared

这个插件是纯数据的:src/model.ts 声明表结构,共享套件提供读取器和检查引擎,规则包声明每一项检查。

许可证

Apache License 2.0 © 2026 dsh-contract-stance contributors。
预览分享卡片长什么样 ↓PerryLink/dsh-contract-stance
分享 · DeepSeek Harness Hub
PerryLink/dsh-contract-stance

检查条款立场登记表是否完整自洽

这是你的仓库?认领条目

回到顶部