@lutisure/cyrene-dsh-plugin 0.2.1 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/README.md +83 -9
  2. package/package.json +6 -3
package/README.md CHANGED
@@ -30,16 +30,30 @@
30
30
  ```
31
31
  cyrene-agent/ 对话 agent
32
32
  worldbook/ 132 条设定条目。关键词命中 + 优先级 + 每轮预算(3 条 / 1400 字)
33
- persona-soul.md 她的人格正文(51,178 字节 ≈ 50 KB)
33
+ persona.yaml 人设数据 —— 你「投喂」她的地方,改完跑一次构建就生效
34
+ persona-soul.md 由 persona.yaml 生成的人格正文(51,178 字节 ≈ 50 KB)
34
35
  memory / corrections 长期记忆与说话方式修正,都在 DSH home 下,跨会话保留
36
+ dmae.mjs 设定条目的激活度:随对话涨落,久没人提的沉下去
37
+ receipts-logic.mjs 报账:这一轮注入了哪几条,用上了没有
35
38
  tools/eval.mjs 三层评测台 + 接地核查 + 行尾检查 + 预设结构检查
36
- test/ 349 个测试
39
+ test/ 339 个测试
37
40
 
38
41
  dsh-theme-cyrene/ 客户端主题(壁纸、粒子、桌宠、表情、音乐、打字音)
39
42
  cyrene-guard/ 写文件后自动跑一遍的本地安全规则
43
+ setup/ 装机和打包脚本(PowerShell)
40
44
  tools/ 仓库自己的工具:分享副本生成、会话导出、移植补丁
45
+ UPREPORT.md 这个项目怎么做出来的 —— 写过程,不写用法
41
46
  ```
42
47
 
48
+ 几处名字容易看错的:
49
+
50
+ | 看起来像 | 其实是 |
51
+ |---|---|
52
+ | `persona.yaml` 和 `persona-soul.md` 都叫人设 | 前者是你改的输入,后者是构建产物 —— **改 `persona-soul.md` 会被下一次构建覆盖** |
53
+ | `dmae.mjs` 像离线评测 | 它是运行期的东西:给每条设定算激活度,久没人提的就沉下去 |
54
+ | `receipts-logic.mjs` 像日志 | 它只回答一个问题 —— 注入的那几条,这一轮用上了没有。没有它,「白给」的条目只能靠感觉淘汰 |
55
+ | `UPREPORT.md` 像更新日志 | 它是[过程记录](UPREPORT.md):做了什么、哪里做错过、为什么那样选 |
56
+
43
57
  几条值得一提的做法:
44
58
 
45
59
  - **世界书条目有出处。**377 处引文逐条回到游戏原文里核过,98% 找得到。剩下 6 处 `check-grounding.mjs` 每次都会列出来 —— 那些还等着逐条核:是引用就补出处,是转述就把引号去掉。
@@ -102,27 +116,87 @@ tools/ 仓库自己的工具:分享副本生成、会话导出、
102
116
 
103
117
  ### 五、怎么和昔涟聊天
104
118
 
105
- **两条路,都用同一份人格**(源头是 `persona-soul.md`,所以两边不会说两套话):
119
+ ![新会话时,在预设列表里选「昔涟」](dsh-theme-cyrene/brand/screenshots/chat-preset.webp)
120
+
121
+ **装完之后,预设列表里会多出「昔涟」和「昔涟(研发)」两项** —— 就是上图里那两条,和 DSH 自带的标准模式、PTC 模式排在一起。
106
122
 
107
- | | 什么时候用 | 怎么开 |
123
+ | 选哪个 | 什么时候用 | 怎么开 |
108
124
  |---|---|---|
109
- | **Chat 模式** | 你想**和她说话** —— 她常驻,工具也在 | 开一个 chat 会话 |
110
- | **`/cyrene` 技能** | 你**在干活**,想让她搭话 —— 任意会话里叫她出来 | 敲 `/cyrene` |
125
+ | **昔涟** | 你想**和她说话** —— 人格常驻,工具也在 | 新会话时在预设里选「昔涟」 |
126
+ | **昔涟(研发)** | 你要**调她本人** —— 完整人格 + 全套工具,跑评测和调试用 | 同一个列表里的最后一项 |
127
+ | **`/cyrene` 技能** | 你**在干活**,只想让她搭句话 —— 任意会话里都能叫她出来 | 敲 `/cyrene` |
111
128
 
112
- **技能那条不带工具** —— 她给你一段人格,然后你继续干活。**要她动手,用 Chat 模式。**
129
+ **技能那条不带工具** —— 她给你一段人格,然后你继续干活。**要她动手,就用预设。**
130
+
131
+ #### 推理档位:选 `High`,别用 `Max`
132
+
133
+ 输入框右下角那一栏可以点开换档。**和昔涟聊天时选 `High`。**
134
+
135
+ 同一句话,两个档位各问一遍,实测是这样:
136
+
137
+ | 档位 | 思考量 | 回答字数 |
138
+ |---|---|---|
139
+ | `Max` | 91,124 字,用了 213 秒 | 433 字 |
140
+ | `High` | 6,510 字 | 308 字 |
141
+
142
+ **`Max` 多出来的十四倍思考,没有变成十四倍好的回答。** 它多半花在斟酌措辞和格式上 —— 那 91,124 字的最后一段,是在反复决定要不要空行。回答的字数几乎一样,等待的时间差出几十倍。
143
+
144
+ 角色扮演吃的是语气和分寸,那是 `High` 就够用的活。**`Max` 留给真正难的推理题更值。**
145
+
146
+ > 聊过几句之后档位的影响会小下去 —— 会话自己会带着节奏走。但**第一句是档位决定的**,而第一句常常就是她对你的第一印象。
113
147
 
114
148
  ## 怎么跑
115
149
 
116
150
  ```bash
117
151
  cd cyrene-agent
118
152
  npm install
153
+ node tools/deploy-embedding.mjs --download # 向量模型,23 MB,不入库(可跳过)
119
154
  node build.mjs # 生成 dist/:提示词、设定库、技能文件
120
- node --test # 349 个测试
121
- node tools/eval.mjs --sources # 评测台:L0 材料 / L1 检索,共 59 条
155
+ node --test # 339 个测试
156
+ node tools/eval.mjs --sources # 评测台:L0 材料 / L1 检索,共 57 条
122
157
  ```
123
158
 
159
+ 模型那一步**可以跳过**。它是 23 MB 的单个二进制,从 HuggingFace 拉,六个文件的 sha256 钉在 `tools/embedding-manifest.mjs` 里。npm 包和分享副本都带着它,所以只有拿源码的人才需要这一步。跳过的话检索退回纯字面(二元组 + 专名闸),那条向量测试会 skip 并打印原因 —— 不会假装通过。
160
+
124
161
  `build.mjs` 会读 **你自己的** `~/.dsh/cyrene-agent/memory.md` 和 `corrections.md`。新机器上那两个文件是空的,所以构建出来的技能不带任何记忆 —— **这个 agent 一开始不认识你。**
125
162
 
163
+ ## 已知问题
164
+
165
+ 这几条是**量出来、还没修完**的。写在这里,而不是塞进某段注释。
166
+
167
+ ### 还有 6 处引文找不到出处
168
+
169
+ [`check-grounding.mjs`](cyrene-agent/tools/check-grounding.mjs) 每次都列 377 处引文里剩下的 6 处:
170
+
171
+ | 条目 | 那一句 |
172
+ |---|---|
173
+ | `no-fabrication` | 「这个我真的不知道……没有公开的部分我不该猜」 |
174
+ | `memory-growth-chain` | 「幼芽绽放出『记忆的花』」 |
175
+ | `how-she-judges` | 「不要乘人之危!而且人家能感觉到她没有说谎,还是让我们事情搞清楚再说吧」 |
176
+ | `castorice-who` | 「现在,我是奥赫玛的『入殓师』……但在过去,我是哀地里亚的『督战圣女』。」 |
177
+ | `hysilens-people` | 「你为何要让先锋军贸然出击,让他们白白牺牲?!」 |
178
+ | `tribbie-bargain` | 「当然,泰坦。就让这预言将我打碎——好让我为这濒毁的世界,开辟出万千道路!」 |
179
+
180
+ 修法只有两种:是引用就补出处,是转述就把引号去掉。**没有第三条** —— 留着引号又指不到原文,读到的人分不清那是她说的,还是我们编的。
181
+
182
+ ### 风格对照的样本太小
183
+
184
+ [`eval/samples/probe-answers.txt`](cyrene-agent/eval/samples/probe-answers.txt) 只有 **16 句**,基线是 2054 句。16 句去比中位数、比比例,噪声比信号大。
185
+
186
+ 所以 [`tools/style-stats.mjs`](cyrene-agent/tools/style-stats.mjs) 的 `--compare` 现在给每一行算 **95% bootstrap 区间**,样本不到 100 句时报告的头尾各警告一次。区间跨过目标的那些会标 `≈`:
187
+
188
+ ```
189
+ 带语气词的句子 88% [69–100] ← 下限 69%,上限 100%,说明不了什么
190
+ ```
191
+
192
+ **这 16 句的比例现在只能看方向,不能当结论。**
193
+
194
+ ### 漂移报告的窗口是旧的
195
+
196
+ [`eval/samples/drift-report.txt`](cyrene-agent/eval/samples/drift-report.txt) 是旧版按**轮次**等分跑出来的 —— 四个窗口分别装了 71 / 41 / 29 / 80 句。决定窗口边界的不是内容,是轮的区间。
197
+
198
+ 工具已经改成按**累计字数**等分,两个人分开量,超过 400 字的回复单独标出来。可那份报告生成时用的会话文件已经没了,**没法用新算法重跑**。要看漂移,得拿一份自己的会话重新跑一遍。
199
+
126
200
  ## 授权
127
201
 
128
202
  本项目自己的代码是 **MIT**(见 [LICENSE](LICENSE))。
package/package.json CHANGED
@@ -1,9 +1,12 @@
1
1
  {
2
2
  "name": "@lutisure/cyrene-dsh-plugin",
3
- "version": "0.2.1",
3
+ "version": "0.2.3",
4
4
  "description": "昔涟 · DSH 插件整合包:角色 agent、客户端主题、本地安全扫描,装这一个就有全部。",
5
5
  "license": "MIT",
6
6
  "type": "module",
7
+ "engines": {
8
+ "node": "^22.19 || >=24"
9
+ },
7
10
  "homepage": "https://github.com/Lutisure/cyrene-dsh-plugin",
8
11
  "repository": {
9
12
  "type": "git",
@@ -25,9 +28,9 @@
25
28
  }
26
29
  },
27
30
  "dependencies": {
28
- "@lutisure/cyrene-agent": "^0.12.0",
31
+ "@lutisure/cyrene-agent": "^0.12.2",
29
32
  "@lutisure/cyrene-guard": "^0.1.1",
30
- "@lutisure/dsh-theme-cyrene": "^0.17.2"
33
+ "@lutisure/dsh-theme-cyrene": "^0.17.3"
31
34
  },
32
35
  "files": [
33
36
  "package.json",