dsh-instruction-memory 1.0.17 → 1.1.0
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.
- package/CHANGELOG.md +60 -0
- package/README.md +35 -3
- package/lib/client.js +670 -47
- package/lib/index.js +465 -26
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,66 @@
|
|
|
7
7
|
> 1.0.13 起由 CI 经 OIDC Trusted Publishing 发布(首个带 provenance 的版本)。
|
|
8
8
|
> 这些历史 tag **不应回填**——npm 上的版本号已被占用。
|
|
9
9
|
|
|
10
|
+
## [1.1.0] — 2026-10-13
|
|
11
|
+
|
|
12
|
+
### 新增
|
|
13
|
+
|
|
14
|
+
- **用户形象(关于用户本人的画像)**:设置页新增「用户形象」分区,可维护若干关于**用户本人**的信息
|
|
15
|
+
(身份背景、喜好、性格、长期追求等),每张卡片可单独勾选「使用该形象」——支持不使用、使用一个或
|
|
16
|
+
同时使用多个(多个作为同一画像的不同侧面综合)。这与"要求 AI 怎么做"的指令条目是两类数据:
|
|
17
|
+
- Host 新增可选 `profiles: [{ id, name, content, enabled, updatedAt }]`(与 `entries` 平级,存储格式
|
|
18
|
+
仍为 v1,旧记忆无该字段即按空数组加载,无需迁移);名称单行 ≤40 字符、内容 ≤4000 字符、最多 50 个,
|
|
19
|
+
名称与内容同时为空或超限时载入会剔除并明确披露,名称缺失时取内容前 20 字符。
|
|
20
|
+
- 注入时形象段以「## 关于用户(用户形象)」抬头输出在指令块**之前**,抬头自带优先级护栏:仅供 AI
|
|
21
|
+
在保证回答正确、完整、客观且扣题的前提下调整详略/举例/建议侧重,不得为迎合而改变事实、省略风险
|
|
22
|
+
提示或偏离问题,无关时忽略;形象不是让 AI 扮演的角色。
|
|
23
|
+
- 形象段**不参与指令字数预算裁剪**,始终完整注入;快照的 `injection` 新增 `profiles` / `profileChars`
|
|
24
|
+
/ `entryChars`(指令用量条只计量指令部分,不被形象体积顶高)。
|
|
25
|
+
- 新增 `save-profile` / `delete-profile` 路由(复用 rev 乐观锁、原子写盘、未来版本拒绝、写盘失败
|
|
26
|
+
回滚与 SSE 多窗口同步);导入/导出支持 `profiles`,导入仍为只增合并(同 id 或同名+同内容去重),
|
|
27
|
+
指令与形象在同一事务内落盘;空形象拒绝保存;请求体上限推导纳入形象容量。
|
|
28
|
+
- 设置页新增形象卡片列表(勾选开关、展开/收起、编辑、删除确认)、独立编辑器与已启用形象合计字符
|
|
29
|
+
提示;旧宿主不发布形象字段时客户端自动按无形象处理,两侧均向前/向后兼容。
|
|
30
|
+
|
|
31
|
+
### 测试
|
|
32
|
+
|
|
33
|
+
- `smoke-test.mjs` 新增形象清洗与注入语义断言(0 个时与旧块逐字节一致、1/多个抬头与顺序、停用/空内容
|
|
34
|
+
不注入、仅有形象时仍注入、总开关同时关闭两段、形象不受预算裁剪、确定性)。
|
|
35
|
+
- `contract-test.mjs` 新增独立形象验证块:经真实路由断言保存/更新/删除(rev 恰好 +1、no-op 不写盘)、
|
|
36
|
+
空形象拒绝、stale rev 冲突、快照与 preview 字段、勾选/取消勾选的注入变化、50 个上限、混合导入一次
|
|
37
|
+
事务与去重、仅含形象的导入文件有效。
|
|
38
|
+
- `verify.mjs` 新增形象双语文案键断言,以及预算用量条在形象宿主上只取 `entryChars` 的接缝断言。
|
|
39
|
+
- `docs/demo.html` 演示数据加入 3 个形象(含停用示例),演示宿主支持 `save-profile`/`delete-profile`
|
|
40
|
+
并实时计算形象注入段。
|
|
41
|
+
|
|
42
|
+
## [1.0.18] — 2026-10-13
|
|
43
|
+
|
|
44
|
+
### 新增
|
|
45
|
+
|
|
46
|
+
- **标签分组(F2)**:每条指令可维护若干标签(编辑器内回车/逗号/分号提交的 chips,最多 8 个、
|
|
47
|
+
单个不超过 24 字符;去空白、折叠连续空白、去重)。标签只服务于设置页,**不会进入注入文本**,
|
|
48
|
+
`buildBlock`/`planInjection` 的输出与决策不受其影响。条目新增可选 `tags: string[]`(格式仍为 v1,
|
|
49
|
+
旧记忆无该字段即按无标签加载)。
|
|
50
|
+
- **多维筛选与排序(F2)**:列表可按标签(chips)、生效方式(始终/按需)、启用状态组合筛选,
|
|
51
|
+
并在按优先级 / 按更新时间 / 按标题之间切换排序;关键词搜索与这些筛选叠加且覆盖标签文本。
|
|
52
|
+
排序仅影响列表展示,宿主侧注入顺序不变。筛选无结果时给出独立空态文案。
|
|
53
|
+
- **批量操作(F3)**:设置页新增多选模式,可一次性启用、停用、设置优先级、加标签或删除;
|
|
54
|
+
全选只作用于当前筛选/搜索后的可见条目,批量删除需确认。Host 新增 `batch` 路由
|
|
55
|
+
(`set-enabled` / `set-priority` / `add-tags` / `remove-tags` / `delete` 五个 op):
|
|
56
|
+
整批在**单次事务**内完成(一次落盘、rev 只 +1、一次 SSE 推送),先纯计算变更计划,
|
|
57
|
+
全部条目已是目标状态或只涉及不存在 id 时不写盘,部分命中会在消息中注明未找到的条数;
|
|
58
|
+
复用未来版本拒绝、rev 冲突、写盘失败回滚等既有保护。批量元数据调整不重盖 `updatedAt`。
|
|
59
|
+
- 请求体上限推导纳入标签字段,继续保证「本插件导出的文件必能导回」。
|
|
60
|
+
|
|
61
|
+
### 测试
|
|
62
|
+
|
|
63
|
+
- `smoke-test.mjs` 新增标签规范化与「标签不进注入文本/计划」断言。
|
|
64
|
+
- `contract-test.mjs` 新增独立 `batch` 验证块:经真实路由断言五个 op、单次事务(rev 恰好 +1)、
|
|
65
|
+
no-op 不写盘、部分命中计数、非法 op/value/空 ids 拒绝、stale rev 冲突、标签不进 preview。
|
|
66
|
+
- `verify.mjs` 新增客户端 `__parseTagInput` 断言(分隔符、空白折叠、去重、上限、非字符串输入)
|
|
67
|
+
与 F2/F3 双语文案键存在性;`draftIsDirty` 对 `tags` 缺省/`[]` 归一比较,旧条目不被误判为已修改。
|
|
68
|
+
- `docs/demo.html` 演示数据加入标签,演示宿主支持 `batch` 路由与标签编辑/筛选/排序/批量操作。
|
|
69
|
+
|
|
10
70
|
## [1.0.17] — 2026-10-12
|
|
11
71
|
|
|
12
72
|
### 新增
|
package/README.md
CHANGED
|
@@ -59,8 +59,24 @@ dsh plugin --profile web remove dsh-instruction-memory
|
|
|
59
59
|
标注橙色「本轮不注入」(悬停可见原因),极端情况下首条被迫截断时标注红色「已截断」。
|
|
60
60
|
调高上限或调整优先级后标记实时变化。这些数据只是对注入取舍的**展示**,不改变注入文本本身;
|
|
61
61
|
存储格式不变,旧宿主/旧客户端对新字段一律忽略,互不影响。
|
|
62
|
-
|
|
63
|
-
|
|
62
|
+
- **标签、筛选与排序**:每条指令可加若干**标签**(回车或逗号添加,最多 8 个、单个不超过 24 字符)。
|
|
63
|
+
标签只用于设置页分组与筛选,**不会进入注入文本**;标签缺失的旧记忆照常加载(等同无标签)。
|
|
64
|
+
列表可按标签、生效方式(始终/按需)、启用状态组合筛选,并在「按优先级 / 按更新时间 / 按标题」
|
|
65
|
+
之间切换排序;列表排序纯为查看方便,不改变宿主侧的注入顺序。
|
|
66
|
+
- **批量操作**:点「批量操作」进入多选,可对勾选条目一次性启用、停用、设置优先级、加标签或删除;
|
|
67
|
+
多选与上方的筛选/搜索叠加(「全选」只作用于当前可见条目)。整批修改在宿主侧是**单次写入**
|
|
68
|
+
(只产生一次落盘、一次修订号递增与一次同步推送),全部条目已是目标状态时不写盘;批量删除需确认。
|
|
69
|
+
批量的启停/优先级/标签调整不重盖更新时间,因此不会改变同优先级下的注入先后。
|
|
70
|
+
- **用户形象**:除了"要求 AI 怎么做"的指令,你还可以记录**关于你本人**的信息(身份背景、喜好、性格、
|
|
71
|
+
长期追求等),每张形象卡片可单独勾选「使用该形象」——可以一个都不用、只用一个、或同时勾选多个
|
|
72
|
+
(多个会作为同一画像的不同侧面综合)。启用后,形象段会以「## 关于用户(用户形象)」为抬头注入在
|
|
73
|
+
指令块**之前**,抬头明确把它限定为"仅供调整回答侧重":AI 应在**保证回答正确、完整、客观且扣题**的
|
|
74
|
+
前提下据此调整解释深浅、详略、举例与建议方向,**不得为了迎合而改变事实、省略风险提示或偏离问题本身**,
|
|
75
|
+
无关时直接忽略。形象不是让 AI 扮演的角色。形象段独立于指令字数上限,始终完整注入、不做预算裁剪;
|
|
76
|
+
页面会显示已启用形象的合计字符数,便于你权衡提示词体积。总开关关闭时形象与指令一起停用。
|
|
77
|
+
|
|
78
|
+
总开关关闭时,该提示词段落(指令与用户形象)**整个注销**,系统提示词与未安装本插件时逐字节一致;
|
|
79
|
+
总开关开启但没有任何生效指令、也没有启用形象时,段落同样不出现。
|
|
64
80
|
|
|
65
81
|
## 存储
|
|
66
82
|
|
|
@@ -437,6 +453,16 @@ Package → Settings → Trusted publishing → Add trusted publisher
|
|
|
437
453
|
"when": "",
|
|
438
454
|
"priority": 1,
|
|
439
455
|
"enabled": true,
|
|
456
|
+
"tags": ["沟通"],
|
|
457
|
+
"updatedAt": 1700000000000
|
|
458
|
+
}
|
|
459
|
+
],
|
|
460
|
+
"profiles": [
|
|
461
|
+
{
|
|
462
|
+
"id": "pf-xxxx",
|
|
463
|
+
"name": "职业背景",
|
|
464
|
+
"content": "有 8 年后端开发经验,技术问题可跳过入门概念。",
|
|
465
|
+
"enabled": true,
|
|
440
466
|
"updatedAt": 1700000000000
|
|
441
467
|
}
|
|
442
468
|
]
|
|
@@ -444,4 +470,10 @@ Package → Settings → Trusted publishing → Add trusted publisher
|
|
|
444
470
|
```
|
|
445
471
|
|
|
446
472
|
`mode` 为 `always` | `auto`;`priority` 为 `2` 高 / `1` 普通 / `0` 低。`rev` 是存储修订号,
|
|
447
|
-
由插件在每次成功写入时递增,**无需手填**(缺失视为 0
|
|
473
|
+
由插件在每次成功写入时递增,**无需手填**(缺失视为 0)。`tags` 为可选的短标签字符串数组
|
|
474
|
+
(最多 8 个、单个不超过 24 字符,仅用于设置页筛选,不参与注入);缺失或非数组一律按无标签处理,
|
|
475
|
+
非法项会被剔除、超长会被截断、重复项会去重,格式版本号仍为 `1`。
|
|
476
|
+
|
|
477
|
+
`profiles` 为可选的**用户形象**数组(缺失按空数组处理,旧记忆无需迁移):`name` 单行不超过 40 字符,
|
|
478
|
+
`content` 不超过 4000 字符,最多 50 个;`enabled` 控制是否使用该形象。名称与内容同时为空的形象会在
|
|
479
|
+
载入时剔除并明确披露;名称为空时自动取内容前 20 字符。形象保存在同一文件、同一格式版本 `1` 中。
|