- Accueil
- Plugins
- Outils et capacités
- dsh-zhouli
dsh-zhouli
scp-cn-1059/dsh-zhouli
Fournit le preset agent Zhouli, avec une session en trois phases (déclarer les rôles au début, citer les autorités pendant le travail, auto-audit de six points à la clôture). Un outil propose sept actions sur le corpus 《周礼》 intégré de 49 384 caractères, renvoie chaque passage avec coordonnée stable 篇序.职官序, index des effectifs par poste et collation de deux témoins Kanripo.
Installer
dsh plugin --profile web add github:scp-cn-1059/dsh-zhouliREADME
dsh-zhouli · 周礼

圖:編鐘在左,編磬在右,王居其中。《周礼·春官宗伯》3.30 磬師「掌教擊磬,擊編鍾」,3.31 鍾師「掌金奏」。此為示意圖,非文物影像。
《周礼》六篇,凡四万九千三百八十四字。此篇使之可为 agent 所检索、所引证。
设官二,分职各有所掌:
一曰 「周礼模式」 —— 凡会话之始终,皆依六官法度而行;
二曰 zhouli —— 掌《周礼》全文之检索、职官之考据、两本之比勘。
凡 zhouli 所出,条条系以坐标 篇序.职官序,如 1.1 即〈大宰〉,引证作《周礼·天官冢宰》1.1。
所以然者:所引须可覆按于原文,不得凭记忆而诵经。 此非饰辞,是设此官之本意。
DSH / Cordis 之 dsh-plugin。
周礼模式(预设)
preset-zhouli 为一行声明,书于本包 cordis.patch.yml,随包入 profile 之 layer stack。
无须拷贝目录——自 0.2 起,亦无目录可拷。
常驻 persona(order 0,遮蔽部署人设)立三段之法:
一曰 开篇·设官分职 —— 《周礼·天官冢宰》云「惟王建國,辨方正位,體國經野,設官分職,以為民極」。 接手任何任务,先以一两行辨方正位、设官分职,而后动手。
二曰 事中·依典援据 —— 先定六典之属;凡遇判断关口,依八法自查 (官屬·官職·官聯·官常·官成·官法·官刑·官計);做工依《考工記》「審曲面埶,以飭五材,以辨民器」。
三曰 收尾·岁终之会 —— 每条会话以「会」收束:所职、所据、六计自陈 (廉善·廉能·廉敬·廉正·廉法·廉辨)、未竟、周礼背书(注明坐标)。
其硬约束:六计有做不到者照实写明;未验证者不得称为已验;引文必须真实存在。
自带 zhouli 技能 —— 载坐标系统、工具用法、引证格式,及一份已逐条核实之引文库。此技能
以 customSkillDirs 锚定于包内 skills/,与预设同行,装包即在。
置之。预设与工具同出一包:下节装毕、重启该 profile,新建会话时「周礼模式」自现于预设之列。
旧版迁移:0.2 以前之预设为目录式(
~\.dsh\.agent-presets\zhouli\),今已无人读取。 曾装旧版者,径删此目录即可;不删亦无害。
置官(安装)
# 自 npm 取之
dsh plugin --profile web add dsh-zhouli
或径自 GitHub 取之:
dsh plugin --profile web add github:SCP-CN-1059/dsh-zhouli
dsh plugin 转发于 pnpm,故本机须有 pnpm 在 PATH。装毕重启该 profile,zhouli 即入工具之列。
本包于 package.json 中自陈 dsh.bundle.patch,故 dsh plugin add 之后自动入该 profile 之
layer stack,无须手改 composition;zhouli 工具与「周礼模式」预设,皆由这一行声明带来。
若二者未现:查该 profile 之 dsh.profile.bundles 是否已含 dsh-zhouli。harness 只在
「本次新增之依赖」上做 reconcile,已装之包再 add 一次不会补录。此时于插件管理器中启用此项
(plugin_manager {action:"set_bundle", target:"dsh-zhouli", enabled:true})即可,其效同于手改
composition。
不愿为一 profile 置之,亦可于自设预设中自立一行:
- id: tool-zhouli
name: dsh-zhouli
config:
dataDir: '' # 可省,默认用包内自带 data/
maxResults: 20 # 可省,单次返回之上限
职掌(用法)
工具一入口,以 action 辨事:
zhouli(action, query?, coordinate?, chapter?, limit?)
| 事 | 所掌 | 所须 |
|---|---|---|
search | 掌全文检索,繁体优先,简体兜底 | query 必与;chapter、limit 可省 |
para | 掌按坐标取一段原文,繁体简体并列 | coordinate 必与,形如 1.1 |
zhiguan | 掌考某官职之员额与职掌 | query 为职官名;省之则列其全 |
list | 掌列某篇(或全部)之职官名 | chapter、limit 可省 |
chapter | 掌列某篇之段落原文 | chapter 必与;limit 可省 |
jiaokan | 掌查底本与郑玄注本之异文,供引用时据实说明 | coordinate(查某段)或 query(查某句)或 chapter(列某篇);皆省则报各篇之数 |
stats | 掌报语料之数与底本所出 | 无 |
chapter 受繁体篇名、简体篇名、或序号 1–6,三者同功。
凡三事,可为常式:
zhouli(action:"para", coordinate:"1.1")
→ 《周礼·天官冢宰》1.1 §2
繁体:大宰之職,掌建邦之六典,以佐王治邦國:……
简体:大宰之职,掌建邦之六典,以佐王治邦国:……
zhouli(action:"zhiguan", query:"大宰")
→ 职官:大宰(简体 大宰) 所属:天官冢宰
【天官冢宰 1.1】
员额:卿一人
职掌:大宰之職,掌建邦之六典……
zhouli(action:"search", query:"六計", chapter:"天官冢宰")
→ 命中 1 处(限 天官冢宰)……
坐标
凡段皆有坐标 篇序.职官序。
篇序 1–6,依次为天官冢宰、地官司徒、春官宗伯、夏官司馬、秋官司寇、冬官考工記。
职官序 .0 为该篇叙官,列全官之员额编制;.1 及以下,各官之职掌条文。
例:1.0 天官叙官,1.1〈大宰〉,1.2〈小宰〉,3.21〈大司樂〉,6.1〈輪人〉。
引证之式:《周礼·天官冢宰》1.1。
六官(语料库)
| 篇 | 6 |
| 汉字 | 49,384(不计标点) |
| 段 | 383 |
| 职官 | 377(去重 374) |
| 互校 | Kanripo 两本之间 567 条异文 |
data/ 下四篇 JSON —— zhouli.json 主数据、zhiguan.json 职官索引、jiaokan.json 校勘记、
stats.json 统计 —— 为插件所读;data/text/ 下为同一语料之人可读文本。
法度(授权)
二分,各有所属。
- 代码(插件、预设、脚本)—— MIT,见
LICENSE。 - 语料(
data/)—— 底本出自 Kanripo 漢籍リポジトリ (京都大学人文科学研究所)KR1d0001《周禮》正文与KR1d0002《周禮》鄭玄注, 为 CC BY-SA 4.0。转发或改写者,须存其署名,并以相同方式共享。 《周礼》本文属公有领域;此许可所覆者,是其现代数字化之成果。
本仓库不收殆知阁古代文献之二本(其上游仓库未声明任何许可证),亦不收由其派生之校勘结果。
scripts/fetch_corpus.py --with-daizhige 可为本地自用取之;取与不取、随之而来的授权问题,
由取者自决。
其详在 NOTICE。
考工(开发)
以下诸事,皆于本仓库检出目录中行之,不在已装之包内。
(npm 以 files 定发布之内容:lib/ data/ skills/ scripts/ 检索.ps1 随包而去,test/ 唯在仓库。)
# 取原始素材(Kanripo,凡 21 件)
python scripts\fetch_corpus.py
# 构建 data/ 之语料(--kanripo-only 只用 CC BY-SA 之 Kanripo 两本)
python scripts\build_corpus.py --kanripo-only
# 冒烟测试:三十五事,含回查引文库与 persona 所引是否真在语料之中
npm test
npm test 须 @deepseek-ai/{cordis,dsh-tools,schemastery} 可解析(本地软链或 npm install 皆可)。
测试会取 skills/zhouli/SKILL.md 之引文库与 cordis.patch.yml 之 persona 引文,
逐条回查语料 —— 故引文库与语料,不得各自漂移。
打包与依赖上的两处讲究
一、files 不可写整目录。 .gitignore 只约束 git,对 npm 毫无作用;写 "data"
会把 data/raw/ 里未获授权的上游文本一并打进 tarball。故 files 收紧到
data/*.json 与 data/text,并以 scripts/check-pack.mjs 逐条核对 dry-run 清单,
挂在 prepublishOnly 上 —— 不通过则发不出去。
二、@deepseek-ai/dsh-tools 的 peer 范围须以 || 枚举各版本元组。
semver 只在范围中存在「major.minor.patch 元组相同、且自身带预发布标签」的比较符时
才放行预发布版本。拿当时已发布的 20 个版本实测:
| 写法 | 未覆盖 |
|---|---|
^0.1.2-rc.1 | 19/20 |
>=0.0.1-rc.1 <0.1.0 || >=0.1.0-rc.1 <0.2.0-0(某规范所举范例) | 11/20 |
>=0.0.1-rc.1 <0.2.0 | 16/20 |
| 本包采用:逐元组枚举 | 4/20(仅四个远古 0.0.1-rc.*) |
代价是这项维护不会自己结束。 semver 无法表达「任意 0.x 含其预发布版」,
所以 harness 每发一个新的预发布元组,就得为它添一个 || 分支 —— 否则用户
npm install 时会撞上 ERESOLVE。
这不是假设。0.1.1 发布后半个月,dsh-tools 从 21 个版本涨到 30 个,
新增 0.1.6-*、0.1.7-*、0.2.0-rc.* 三个元组,本包的范围一个都没覆盖到;
而同期 DSH Desktop 更新,harness 实际用的正升到了 0.1.7-rc.2。
0.1.2 即为补上这三个元组而发。
scripts/check-peers.js 把这件事变成可执行的检查:
node scripts\check-peers.js # 退出码非 0 即表示有版本落在范围外
它按「不低于声明下限者须全部覆盖」判定 —— 低于下限的旧版本被排除是语义正确的, 不算遗漏,否则会把有意的取舍误报成缺陷。harness 每次发新版后重跑它。
命令行检索(与插件共用同一份 data/):
.\检索.ps1 检索 六典
.\检索.ps1 职官 大宰
.\检索.ps1 段落 1.1
.\检索.ps1 叙官 天官冢宰
.\检索.ps1 校勘 -篇 天官冢宰
检索.ps1须以「带 BOM 之 UTF-8」存之。 Windows PowerShell 5.1 于无 BOM 时,按系统 ANSI 代码页解.ps1,其中文命令名立成乱码,脚本不可解析。若改毕而报语法错,先验其 BOM:$p = '.\检索.ps1' $t = Get-Content $p -Raw -Encoding UTF8 [IO.File]::WriteAllText($p, $t, (New-Object Text.UTF8Encoding($true)))
Plugins associés
archify (deepseek-harness)
tt-a1i/archify
next-ai-draw-io (dsh-plugin)
dayuanjiang/next-ai-draw-io
WeKnora (dsh-weknora)
tencent/weknora
weknora
tencent/weknora