lume-dsh-plugin 0.7.3 → 0.8.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 +460 -0
- package/README.md +245 -275
- package/lib/client.js +242 -181
- package/lib/core/card.js +11 -9
- package/lib/core/citations.js +235 -0
- package/lib/core/coverage.js +149 -0
- package/lib/core/dialogue-mining.js +49 -11
- package/lib/core/knowledge.js +165 -0
- package/lib/core/leak-detector.js +1 -3
- package/lib/core/ledger.js +129 -18
- package/lib/core/manifest.js +3 -1
- package/lib/core/memory-id.js +105 -0
- package/lib/core/metrics.js +270 -0
- package/lib/core/persona-limits.js +25 -0
- package/lib/core/scope.js +124 -0
- package/lib/core/signals.js +285 -5
- package/lib/core/task-memory.js +143 -0
- package/lib/core/text.js +45 -3
- package/lib/host/backfill.js +218 -0
- package/lib/host/bootstrap.js +130 -0
- package/lib/host/boundary.js +1 -3
- package/lib/host/clauses.js +180 -0
- package/lib/host/config.js +7 -0
- package/lib/host/diag.js +44 -7
- package/lib/host/distill-prompt.js +365 -0
- package/lib/host/distill.js +22 -348
- package/lib/host/extraction.js +11 -3
- package/lib/host/host-context.js +1 -0
- package/lib/host/host-events.js +100 -0
- package/lib/host/identity.js +12 -29
- package/lib/host/inbound.js +133 -0
- package/lib/host/injection.js +2 -6
- package/lib/host/llm-aux.js +130 -0
- package/lib/host/llm-route.js +3 -0
- package/lib/host/methods.js +182 -11
- package/lib/host/metrics-log.js +169 -0
- package/lib/host/notices.js +62 -0
- package/lib/host/project-access.js +210 -0
- package/lib/host/project.js +153 -2
- package/lib/host/prompt-blocks.js +113 -0
- package/lib/host/protocol.js +144 -11
- package/lib/host/reflection.js +28 -5
- package/lib/host/registry.js +0 -4
- package/lib/host/requirements-scan.js +108 -0
- package/lib/host/rpc-bridge.js +23 -4
- package/lib/host/rpc.js +1 -1
- package/lib/host/sections.js +48 -0
- package/lib/host/session-deps.js +27 -0
- package/lib/host/session-events.js +371 -0
- package/lib/host/session-runtime.js +18 -5
- package/lib/host/thinking.js +10 -1
- package/lib/host/tools.js +367 -0
- package/lib/host/triggers.js +30 -6
- package/lib/host/turn-boundary.js +116 -0
- package/lib/host/wiring.js +280 -0
- package/lib/host/workspace-map.js +81 -0
- package/lib/index.js +334 -836
- package/package.json +13 -4
package/README.md
CHANGED
|
@@ -1,384 +1,354 @@
|
|
|
1
|
-
|
|
1
|
+
# Lume · 微光
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**不替模型思考,只让它手边的事实到位。**
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
给 DSH Desktop 加四样东西——三层能力,加一块仪表盘:
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
| 层 | 管什么 | 一句话 |
|
|
8
|
+
| ---------- | -------------- | ------------------------------------------------------------------ |
|
|
9
|
+
| **纪律层** | 这一轮该怎么干 | 判断请求类型、划清"能不能动手"的边界、交付前对账 |
|
|
10
|
+
| **方法层** | 干活的产出物 | 契约 / 改动台账 / 假设台账 / 设计决策 / 项目知识——可检查、可跨会话 |
|
|
11
|
+
| **仪表盘** | 到底有没有用 | 路由判定、触发器命中、外部结果信号落盘,`lume_metrics` 随时可查 |
|
|
12
|
+
| **人设层** | 用什么风格说话 | 从真实素材蒸馏具名角色,长期记忆与风格随对话演进 |
|
|
8
13
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
- **自适应协议分层**——闲聊走短版、任务走完整版、推理型模型走精简版,按请求类型与模型能力分流,不为闲聊支付完整工作协议的 token
|
|
12
|
-
- **意图路由**——问答 / 查找 / 讨论 / 诊断 / 执行五类先行分流:诊断不越权修复,讨论不提前收敛,只有执行才改动状态
|
|
13
|
-
- **证据时效**——引用日志、历史、旧报错前先核对时间戳与因果:历史里存在的错误不等于当前问题的原因
|
|
14
|
-
- **真实工具结果验证**——监听工具成败与结果未知;失败或未知不允许报完成,交付时区分「已验证 / 未验证 / 推测有效」
|
|
15
|
-
- **会话内自愈与复盘回环**——相同请求连续失败自动注入归因纠偏;跨会话聚合反思评分,对持续低分的维度定向提醒
|
|
16
|
-
- **上下文压缩感知**——压缩发生后重锚状态,提醒模型摘要不是完整历史,细节依赖先确认
|
|
17
|
-
- **文档能力感知**——按当前环境探测文档工具:有就要求先读后写、交付前回读验证;没有就如实说明边界,不用文本读取或脚本硬解二进制办公文件
|
|
18
|
-
|
|
19
|
-
### 能力二:人设系统(人设即人)
|
|
20
|
-
|
|
21
|
-
塑造「以何种风格表达」:具名角色、长期记忆、随对话演进:
|
|
22
|
-
|
|
23
|
-
- **素材蒸馏**——从聊天记录、小说、剧本、人物设定文档蒸馏角色卡,语气、口头禅与回复篇幅锚定真实素材统计
|
|
24
|
-
- **长期记忆与生命周期**——事件记忆 + 故事记忆;相对时间的临时记忆自动过期,长期事实不受影响
|
|
25
|
-
- **双向反馈闭环**——负面反馈自动转成风格约定,被认可的回复摘录为语料,语气随使用收敛
|
|
26
|
-
- **记忆星图与角色卡导入导出**——可视化记忆、行内编辑,卡片可分享迁移
|
|
27
|
-
|
|
28
|
-
人设只影响自然语言表达,不介入任务执行,也不影响代码、命令与工具调用的结果。
|
|
29
|
-
|
|
30
|
-
[](https://github.com/cayan0x/Lume/actions/workflows/ci.yml)
|
|
31
|
-
[](./CHANGELOG.md)
|
|
32
|
-
[](./LICENSE)
|
|
33
|
-
|
|
34
|
-
*人设系统:内置角色卡、蒸馏与管理入口,以及记忆星图*
|
|
35
|
-
|
|
36
|
-
</div>
|
|
14
|
+
约束**按需注入**:闲聊轮不会背上整份工作协议的成本。人设只影响自然语言表达,不介入代码、命令与工具调用的结果——你选"不使用人设"时,纪律层照样生效。
|
|
37
15
|
|
|
38
16
|
---
|
|
39
17
|
|
|
40
|
-
##
|
|
41
|
-
|
|
42
|
-
这是可公开复用的工程工作协议,不是模型隐藏思维链。协议注入每个会话;无论选择哪个人设(包括「不使用人设」),都始终生效。
|
|
43
|
-
|
|
44
|
-
| 层 | 防范目标 | 规则 |
|
|
45
|
-
|---|---|---|
|
|
46
|
-
| **上下文管理** | 上下文衰减 | 保留目标、约束、已完成事项、关键决策、错误与已排除假设 |
|
|
47
|
-
| **任务分解** | 复杂任务失控 | 拆成可验证步骤,优先处理阻塞项和高风险项 |
|
|
48
|
-
| **自适应投入** | 简单问题过度分析或复杂问题草率处理 | 低风险问题快速收敛;复杂、高风险或不确定问题增加调研、比较与验证 |
|
|
49
|
-
| **信息路由** | 在无关内容上浪费上下文 | 优先定位高影响入口和数据流;无依赖的只读检查可并行 |
|
|
50
|
-
| **阶段门控** | 未调研即动手 | 先理解和只读检查,再执行写入 |
|
|
51
|
-
| **变更保护** | 覆盖用户状态 | 修改前完整读取,最小范围变更,保护用户已有改动和数据 |
|
|
52
|
-
| **验证闭环** | 修改后不确认 | 测试、类型检查、构建或最小复现;失败先归因再重试 |
|
|
53
|
-
| **振荡预防** | 修改—回滚循环 | 连续失败后更换方案,不重复已排除假设,不制造假成功 |
|
|
54
|
-
| **结果复核** | 把部分完成说成完成 | 对照需求、边界、兼容性和数据保留,明确已实现与仍有限制 |
|
|
55
|
-
|
|
56
|
-
### 意图路由与长会话护栏
|
|
18
|
+
## 摘要
|
|
57
19
|
|
|
58
|
-
|
|
20
|
+
**在会话里补上"事实到位"这一步。** 它不替模型思考,只让模型手边的事实到位;约束按需注入,闲聊轮不额外加 token。(这一段与[插件市场简介](docs/hub-registration.md)同源。)
|
|
59
21
|
|
|
60
|
-
-
|
|
61
|
-
-
|
|
62
|
-
-
|
|
63
|
-
-
|
|
64
|
-
-
|
|
22
|
+
- **纪律层**:按这一句话加最近几轮轨迹判定请求类型(问答 / 查找 / 讨论 / 诊断 / 执行)并划清边界——问答轮不改文件、诊断轮不越权修复;引用本次没打开过的代码行、对没见过的符号下否定断言、需求条目与交付物对不上、把「我没查」包装成「待你定」,都会被当场点出;上下文占用到 75% / 90% 预警并导出结构化会话记忆(目标 / 已拍板 / 未决 / 关键定位),新会话开局注入,续接一句「继续」即可;历史会话(含已撑满聊不动的)启动时自动补蒸馏出跨会话知识,幂等不重复。
|
|
23
|
+
- **方法层(可检查的产出)**:任务契约(目标 / 范围 / 数量先估后回填 / 完成判据 / 非目标)、改动台账(每处改动自动入账并记下验证方式,未验证的条目在交付时点出)、假设台账(含已排除项;下结论必须带证据、裁决方式与反例检查)、设计决策(决策点 / 选择 / 放弃理由 / 影响面)、按工作目录跨会话累积的项目知识(带编号、可点名删除,只收句子并拦截密钥)。
|
|
24
|
+
- **行为触发器(按轨迹纠偏,不看措辞)**:撒网不收敛、连写不验、死路重撞、契约缺失、设计缺失、假设过期、判据漂移、知识未记、未读就改——每条带具体数字,同类两轮内不重复。
|
|
25
|
+
- **仪表盘**:路由判定、触发器命中、块装配与外部结果信号写本机 `lume-metrics.jsonl`,`lume_metrics` 可查触发器效能(口径为命中后 3 轮内出现真验证命令或载具从无到有,明确标注观察性;无机械口径的标未判定且不计入分母)。
|
|
26
|
+
- **人设层**:从聊天记录、小说、剧本、人物设定文档蒸馏具名角色(语气、口头禅、回复篇幅锚定真实素材统计);以人设为键的长期记忆,以及 30 天后自动过期的临时记忆;纠正自动转风格约定、认可的回复摘录为语料;切换人设后按签名词做词法泄漏检测;记忆星图可视化与角色卡导出导入。
|
|
65
27
|
|
|
66
|
-
|
|
28
|
+
---
|
|
67
29
|
|
|
68
|
-
|
|
30
|
+
## 它解决什么问题
|
|
69
31
|
|
|
70
|
-
|
|
32
|
+
_(下面用一个跟你业务无关的小例子:一个自己写着玩的跑步记录 App——单页前端加一个本地 SQLite。)_
|
|
71
33
|
|
|
72
|
-
|
|
34
|
+
同一个需求:「给跑步记录加个『配速』列,历史数据也要补算」。
|
|
73
35
|
|
|
74
|
-
|
|
75
|
-
- **即时对齐纠偏** —— 用户说“不是这个意思”“你理解错了”或重复提出相近请求时,本轮立即要求先复述目标、检查上一轮是否答非所问,不沿用旧假设,也不原样重复上一轮。
|
|
76
|
-
- **反思回环** —— 会话结束后的协议复盘会保存在本地。最近多个会话中某一项持续低分时,下一会话只注入一条针对性提醒;表现恢复后自动淡出。反思摘要不会把完整历史日志带入上下文。
|
|
77
|
-
- **模型感知** —— 普通闲聊使用短版协议;复杂任务按模型能力选择协议长度。已确认具备推理能力的模型保留变更保护、验证、失败归因和结果复核,减少重复的计划说明;无法确认模型类型时使用完整协议作为安全回退。
|
|
36
|
+
**没有 Lume**:它直接改了列表页那个表格。你问"迁移脚本写了吗",它说"已处理"——但它从没打开过建表那一份。你出门跑了半小时步,回来换个窗口继续,它又问你"这个项目怎么启动"。上下文撑满以后,进度就留在那个窗口里了。
|
|
78
37
|
|
|
79
|
-
|
|
38
|
+
**有 Lume**:
|
|
80
39
|
|
|
81
|
-
|
|
40
|
+
- 开工前把你的原话**逐字**记下来,并落一份契约:目标、范围、**数量先估**(探索后回填实际值)、完成判据、非目标;
|
|
41
|
+
- 每处改动**自动**进台账(不用它自觉调用工具),交付时把**还没验证的条目**列出来,而不是说一句"已完成";
|
|
42
|
+
- 它引用了没打开过的代码行、对没见过的符号断言"不存在"、把两个需求数成三个、把"我没查"包装成"待你定"——都会被当场点出来;
|
|
43
|
+
- 下结论(confirmed / excluded)要过闸:证据、裁决方式、反例检查三项缺一不可;
|
|
44
|
+
- 换个窗口说一句"继续",它带上目标、已拍板、未决、关键定位接着干;
|
|
45
|
+
- 觉得"好像没起作用"时,有数据可看:`lume_metrics` 会告诉你这一路的判定、命中与纠正率。
|
|
82
46
|
|
|
83
|
-
|
|
47
|
+
**它不做的事**:
|
|
84
48
|
|
|
85
|
-
|
|
49
|
+
- 不偷偷改文件——问答轮不改文件,诊断轮不越权修复,只有执行轮才动状态;
|
|
50
|
+
- 不发起网络请求——除了调用你自己配置的模型档做记忆提取、反思与人设蒸馏;
|
|
51
|
+
- 不给闲聊加固定开销——协议与台账是按需注入的;
|
|
52
|
+
- 不替你下结论——机械判据只保证"有没有证据",判断对错仍在模型自己。
|
|
86
53
|
|
|
87
|
-
|
|
54
|
+
---
|
|
88
55
|
|
|
89
|
-
|
|
56
|
+
## 安装与升级
|
|
90
57
|
|
|
91
|
-
|
|
92
|
-
- [x] 诊断不越权修复,讨论不提前替用户拍板
|
|
93
|
-
- [x] 用户纠正和重复提问的即时对齐纠偏
|
|
94
|
-
- [x] 相同请求连续失败后的归因纠偏与换方案提醒
|
|
95
|
-
- [x] 第 6 轮起的长会话护栏与当前目标锚点
|
|
96
|
-
- [x] 执行任务的“已完成 / 已验证 / 未验证 / 副作用”交付清单
|
|
97
|
-
- [x] 上一轮执行回复缺少验证证据时的后续复核提醒
|
|
98
|
-
- [x] 任务阶段状态机:回答 / 查找 / 讨论 / 归因 / 执行 / 验证 / 交付
|
|
99
|
-
- [x] 真实工具证据:区分工具成功、失败和结果未知,不把工具调用本身当作目标完成
|
|
100
|
-
- [x] 证据时效:引用日志/历史/旧报错前核对时间戳与因果,不用旧错误填空
|
|
101
|
-
- [x] 记忆生命周期:相对时间记忆标记为临时记忆,30 天后自动失效;旧记忆无感兼容
|
|
102
|
-
- [x] 反思日志跨会话反馈、旧字段迁移和模型感知协议
|
|
103
|
-
- [x] 上下文压缩感知:识别宿主压缩检查点,压缩后重锚状态并提醒“摘要不是完整历史”
|
|
104
|
-
- [x] 文档能力感知:探测文档工具并按需注入——有工具要求先读后写与回读验证,没工具要求如实说明边界、不硬解二进制
|
|
105
|
-
- [x] 系统提示词轮内稳定:意图冻结(只认真实用户消息)+ 会变的内容走 runtime-context 通道,一轮只产生一份系统提示词
|
|
106
|
-
- [x] 注入分层:system 段在会话内逐字节恒定(协议/契约/身份/纪律),记忆、语料、播报与任务指令全部走对话尾部快照——每一步都吃住前缀缓存
|
|
107
|
-
- [x] 任务载具:任务契约(数量先估后回填、交付按原始判据对账)+ 改动台账 + 假设台账(含已排除项)+ 跨会话项目知识
|
|
108
|
-
- [x] 行为触发器:按轨迹纠偏——撒网不收敛 / 连写不验 / 死路重撞(环境类给验证降级阶梯)/ 契约对账 / 项目知识采集
|
|
109
|
-
- [x] 方法层:文档编辑方法(结构 → 最小编辑 → 一致性 → 回读)、改动影响面清单、结构定位提示
|
|
110
|
-
- [x] 反思日志第五维「诊断深度与假设管理」:跨会话提醒能指向思维方式而非只有纪律
|
|
111
|
-
- [x] 角色卡算法自动升级且保留记忆、风格和认可语料
|
|
58
|
+
前置:已安装 DSH Desktop。
|
|
112
59
|
|
|
113
|
-
|
|
60
|
+
```bash
|
|
61
|
+
# npm(推荐)
|
|
62
|
+
dsh plugin add lume-dsh-plugin
|
|
114
63
|
|
|
115
|
-
|
|
64
|
+
# GitHub(备选)
|
|
65
|
+
dsh plugin add github:cayan0x/Lume#v0.8.0
|
|
116
66
|
|
|
117
|
-
|
|
67
|
+
# 指定版本 / 最新
|
|
68
|
+
dsh plugin add lume-dsh-plugin@0.8.0
|
|
69
|
+
dsh plugin add lume-dsh-plugin@latest
|
|
70
|
+
```
|
|
118
71
|
|
|
119
|
-
|
|
72
|
+
**升级**:重复执行同一条命令即可。若当初是用**本地源码目录**装的(依赖里是 `link:`),在源码目录执行:
|
|
120
73
|
|
|
121
|
-
|
|
74
|
+
```bash
|
|
75
|
+
git pull && npm install --legacy-peer-deps && npm run build
|
|
76
|
+
```
|
|
122
77
|
|
|
123
|
-
|
|
124
|
-
- **性格随对话演进** —— 内置风格契约是基础盘;对话中提出的语气要求(「少用 emoji」「自称改为 XX」)会固化为该人设的「习得的风格约定」,跨会话生效,与基础盘冲突时以习得层为准
|
|
125
|
-
- **切换带接班播报与持续纠偏** —— 切换人设时,新任人设在回复开头明确接替;此后逐轮检测回复是否残留旧人设的口头禅与称呼(零 token 的词法检测),检出即重新注入升级版纠偏播报——长对话中切换同样可靠
|
|
126
|
-
- **双通道记忆写入** —— 主通道为模型主动调用工具(`lume_remember` / `lume_update_style` / `lume_create_persona`),随对话发生、零额外调用;安全网为被动提取,经三道门(关键词正则 → 相似去重 → 冷却)过滤后仅对触发轮调用模型,绝大多数轮次零消耗
|
|
127
|
-
- **对话创建** —— 对当前人设说明「想建一个新的人设」,模型将通过访谈收集设定(名字、性格、说话方式、称呼)后保存,新的人设立即出现在菜单中
|
|
78
|
+
**装完必须完全重启 DSH(含托盘进程)**——插件在宿主启动时加载,DSH 没有热重载。
|
|
128
79
|
|
|
129
|
-
|
|
80
|
+

|
|
130
81
|
|
|
131
|
-
|
|
82
|
+
---
|
|
132
83
|
|
|
133
|
-
|
|
84
|
+
## 一、纪律层:这一轮该怎么干
|
|
134
85
|
|
|
135
|
-
|
|
86
|
+
### 1.1 先判类型,再划边界
|
|
136
87
|
|
|
137
|
-
|
|
88
|
+
每一轮先用**这一句话 + 最近几轮轨迹**判定请求类型,判定结果与命中的判据都写进注入块(也进度量):
|
|
138
89
|
|
|
139
|
-
|
|
90
|
+
| 模式 | 允许做什么 |
|
|
91
|
+
| -------- | ------------------------------------------------------------------------------- |
|
|
92
|
+
| **问答** | 直接回答;只读核实该做就做,不改文件、不替你做决定 |
|
|
93
|
+
| **查找** | 收集并区分已知 / 未知 / 推断;未经授权不改外部状态 |
|
|
94
|
+
| **讨论** | 比较选项、取舍与风险;不把探讨中的方案当成已定方案 |
|
|
95
|
+
| **诊断** | 说明现象、证据、根因与验证办法;除非你明确要求修复,不越权动手 |
|
|
96
|
+
| **执行** | 确认目标与完成标准,做最小变更;交付时列清已完成 / 已验证 / 未验证 / 残留副作用 |
|
|
140
97
|
|
|
141
|
-
|
|
98
|
+
轨迹只在**证据足够**时补判:纠正后按被纠正前那句话重算、在途任务对承接式追问有粘性、连问两句不算任务;带了疑问特征的句子一律不抬档。证据不足时回落到单句判定,绝不猜。
|
|
142
99
|
|
|
143
|
-
|
|
100
|
+
进入执行后还有阶段推进(answer → research → discuss → diagnose → execute → verify → deliver),阶段决定这一轮是"先给方案"还是"可以动手"。
|
|
144
101
|
|
|
145
|
-
1.
|
|
146
|
-
2. **证据约束的契约合成**:每条稳定特征都要求原话/情境证据、触发场景和频率,避免把单一场景脑补成固定人格
|
|
147
|
-
3. **语料合成**:聊天记录优先使用全时段真实对话对;小说、剧本和设定文档也按“场景→行为→原声”组织示例,优先复用原句,禁止中和为通用回复
|
|
102
|
+
### 1.2 证据核对:该拿事实说话的地方
|
|
148
103
|
|
|
149
|
-
|
|
104
|
+
| 核对 | 什么时候响 | 每会话上限 |
|
|
105
|
+
| -------------- | ------------------------------------------------------ | ---------- |
|
|
106
|
+
| **引用核对** | 回答里写了 `文件:行`,但这段本次没打开过 | 3 |
|
|
107
|
+
| **断言核对** | 对没见过的符号下"没映射 / 不存在 / 不支持"这类否定断言 | 2 |
|
|
108
|
+
| **需求漂移** | 有契约在手,进展却偏离了契约的判据(含压缩之后) | 2 |
|
|
109
|
+
| **覆盖核对** | 写出文档产物之后:把需求原句与交付物里的句子并列对账 | 2 |
|
|
110
|
+
| **提问核对** | 一轮抛出超过 2 条「待你定」,或问题带着"我没查 / 我猜" | 2 |
|
|
111
|
+
| **载具缺口** | 已经动了代码,但契约与设计都还空着 | 2 |
|
|
112
|
+
| **上下文预警** | 上下文占用到 75% / 90% | 3 |
|
|
113
|
+
| **度量自校** | 本会话路由被反复纠正(≥2 次) | 2 |
|
|
150
114
|
|
|
151
|
-
|
|
115
|
+
上限不是"省着用",是**防噪音**:同一个提醒反复顶,模型会开始躲词而不是解决问题。所以每个槽有自己的用量上限与冷却,多数槽还有"清空条件"——你补上了它就不再提。
|
|
152
116
|
|
|
153
|
-
|
|
117
|
+
### 1.3 行为触发器:不看你怎么说,看轨迹
|
|
154
118
|
|
|
155
|
-
|
|
119
|
+
协议文本管不了"在压力下不执行"——实测症状是连续几十次广度探查不收敛、连续十几次改动不验证、在同一个坏环境上撞十几次。这类症状是**轨迹**的,所以判据也在轨迹上:
|
|
156
120
|
|
|
157
|
-
|
|
121
|
+
| 触发器 | 判据(可配阈值) | 命中后给什么 |
|
|
122
|
+
| ------------------- | ----------------------------------------- | -------------------------------------------------- |
|
|
123
|
+
| `converge` | 连续只读探查 ≥ 12 步仍无产出 | 停止撒网,先复述链路并落台账 |
|
|
124
|
+
| `verify-as-you-go` | 连续改动 ≥ 4 步(或台账未验证项 ≥ 4) | 先跑一次最小验证,再把台账推进到 verified |
|
|
125
|
+
| `dead-path` | 同一验证连续失败 ≥ 3 次 | 环境类给"验证降级阶梯",其余要求先归因写假设台账 |
|
|
126
|
+
| `hypothesis-stale` | 诊断轮出现验证失败,但假设台账没更新 | 把失败归因落成假设,标出下一步验哪条 |
|
|
127
|
+
| `contract-missing` | 已经动手,但还没写契约 | 补一份契约(目标 / 范围 / 数量 / 判据 / 非目标) |
|
|
128
|
+
| `design-missing` | 设计型任务摸了 ≥ 6 处代码仍无设计记录 | 写`lume_design`:决策点 / 选择 / 放弃理由 / 影响面 |
|
|
129
|
+
| `criteria-drift` | 有契约,且距上次对账 ≥ 3 轮(或刚压缩过) | 拿契约逐条对账,防止判据随进展漂移 |
|
|
130
|
+
| `knowledge-capture` | 工具步数 ≥ 20 且本会话还没提醒过 | 若有稳定事实(命令 / 链路 / 约定 / 死路)就记下来 |
|
|
131
|
+
| `unfounded-change` | 改的是**已存在但本会话没读过**的文件 | 二选一:先做最便宜的核实,或落成带验证方式的假设 |
|
|
158
132
|
|
|
159
|
-
|
|
160
|
-
- 素材经 RPC 以任务制交由宿主后台蒸馏(约 10~90 秒),不进入对话上下文,不影响当前会话;蒸馏过程中弹窗不可误关,关闭需二次确认并会中止任务
|
|
161
|
-
- 素材上限 20,000 字;素材按不可信文本处理,其中出现的任何指令不会被执行
|
|
162
|
-
- 蒸馏路由可通过 `distillProvider` / `distillModel` 指定专用模型档,默认跟随主对话模型
|
|
133
|
+
规矩:一次只顶**一条**(按紧急度排序,同时堆三条会互相稀释)、每类每轮最多一次、同类两轮内不重复、文本里带**具体数字**("已连续 14 次只读探查")——让提醒可被核对,而不是空洞训话。
|
|
163
134
|
|
|
164
|
-
|
|
135
|
+
---
|
|
165
136
|
|
|
166
|
-
|
|
137
|
+
## 二、方法层:把量化落成能检查的产出
|
|
167
138
|
|
|
168
|
-
|
|
139
|
+
### 2.1 十个工具
|
|
169
140
|
|
|
170
|
-
|
|
141
|
+
模型丢的通常不是"不知道要量化",而是**没有一个地方放量化结果**。任务侧七个:
|
|
171
142
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
143
|
+
| 工具 | 做什么 |
|
|
144
|
+
| --------------------- | ------------------------------------------------------------------------------------- |
|
|
145
|
+
| `lume_contract` | 任务契约:目标 / 范围 / 数量(先估后回填)/ 完成判据 / 非目标 / 待确认 |
|
|
146
|
+
| `lume_change` | 改动台账:改什么 → 为什么 → **怎么验证的** → 状态;只推进状态时可只传 target + status |
|
|
147
|
+
| `lume_hypothesis` | 假设台账:open / testing / confirmed / excluded;含被推翻的已排除项 |
|
|
148
|
+
| `lume_design` | 设计决策:决策点 → 选择 → 被放弃的方案与理由 → 影响面 |
|
|
149
|
+
| `lume_project_note` | 记一条稳定的项目事实(按工作目录跨会话累积) |
|
|
150
|
+
| `lume_project_forget` | 按编号删掉一条过时或记错的项目知识 |
|
|
151
|
+
| `lume_metrics` | 读运行时度量:路由判定 / 外部结果信号 / 块装配 / 触发器效能 |
|
|
177
152
|
|
|
178
|
-
|
|
179
|
-
<p align="center">
|
|
180
|
-
<img src="docs/screenshots/manage-edit.png" width="560" alt="编辑契约:显示名、键名只读、简介、风格契约与只读示例对话">
|
|
181
|
-
</p>
|
|
153
|
+
人设侧三个:`lume_remember`(一条持久事实)· `lume_update_style`(一条风格约定)· `lume_create_persona`(访谈后新建人设)。
|
|
182
154
|
|
|
183
|
-
|
|
155
|
+
### 2.2 契约长这样
|
|
184
156
|
|
|
185
|
-
|
|
157
|
+
```
|
|
158
|
+
lume_contract({
|
|
159
|
+
goal: "跑步记录新增「配速」列:列表展示 + 历史记录补算 + 导出可用",
|
|
160
|
+
scope: "run_record 表与迁移脚本、列表页组件、CSV 导出",
|
|
161
|
+
expectCount: 6, // 先估:6 个改动点,探索后回填实际值
|
|
162
|
+
criteria: ["新记录能自动算出配速", "历史记录已补算", "导出的 CSV 里含配速列"],
|
|
163
|
+
nonGoals: ["不改 CSV 既有的列顺序", "不动手机端的同步逻辑"],
|
|
164
|
+
open: [] // 默认 0 个待确认——能自己核实的不许抛回来
|
|
165
|
+
})
|
|
166
|
+
```
|
|
186
167
|
|
|
187
|
-
|
|
168
|
+
### 2.3 核心机制不靠模型自觉
|
|
188
169
|
|
|
189
|
-
|
|
190
|
-
- **日期筛选** —— 顶部支持 全部 / 最近 7 天 / 30 天 / 90 天 过滤
|
|
191
|
-
- **行内编辑与删除** —— 点击卡片展开详情面板,可即时修改记忆文本或删除整条记忆,经 `updateMemory` / `deleteMemory` 持久化写入存储
|
|
170
|
+
这是刻意的取舍:只靠提醒的机制会退化成"提醒了很多次,一次都没落地"。所以这些是插件**机械完成**的,模型调用工具只是为了补充细节:
|
|
192
171
|
|
|
193
|
-
|
|
172
|
+
- **改动台账自动入账**:`mutate` 类工具一被调用,就从入参里记一条(标注"(自动)");
|
|
173
|
+
- **需求锚点**:用户原话逐字留存,供覆盖核对与漂移检查;
|
|
174
|
+
- **项目知识自动沉淀**:不依赖模型调 `lume_project_note`(实测它三次全部落空);
|
|
175
|
+
- **覆盖核对、引用核对、断言核对**:纯词法 + 本会话证据索引,零额外模型调用。
|
|
194
176
|
|
|
195
|
-
|
|
177
|
+
### 2.4 下结论要过闸
|
|
196
178
|
|
|
197
|
-
|
|
179
|
+
假设台账的 `confirmed` / `excluded` 是**裁决**,不是备注:证据(≥8 字,写清观察)、裁决方式(用哪条命令 / 工具、看什么结果)、反例检查(找过哪些反例)三项缺一即拒。证据里出现的路径引用必须**本会话真的打开过**,否则点名报错。
|
|
198
180
|
|
|
199
|
-
|
|
181
|
+
理由很直白:真机里这两个状态曾经只带一句"已验证 / 无"——无法复核的结论,等于把猜测固化成跨轮次的事实。
|
|
200
182
|
|
|
201
|
-
|
|
202
|
-
- **定性分析** —— 积攒数周后读取存储文件即可复盘对话质量,无需猜测
|
|
203
|
-
- **可关闭** —— 配置项 `reflectionEnabled` 默认 `true`,置为 `false` 即停用
|
|
183
|
+
### 2.5 项目知识:越用越强的那部分
|
|
204
184
|
|
|
205
|
-
|
|
185
|
+
- **按工作目录归属**跨会话累积;需求特有的结论带"(本需求)"标记,只在同一需求内可见,换项目不会串;
|
|
186
|
+
- **带编号**,可以在对话里点名删除(`lume_project_forget`);
|
|
187
|
+
- **有形状闸**:只收句子,不收测试输出行、代码片段、表格行、复制粘贴的命令行;宁窄勿宽——宁可漏记,也不要把仓库开发过程的产物灌进知识库;
|
|
188
|
+
- **有敏感拦截**:带值的密钥、连接串、私钥一律不入库(项目知识是明文跨会话存储);
|
|
189
|
+
- **历史补蒸馏**:启动时扫最近 7 天的会话(**包括已经撑满、聊不动的那些**)补出跨会话知识,分片执行、幂等不重复。
|
|
206
190
|
|
|
207
|
-
|
|
191
|
+
---
|
|
208
192
|
|
|
209
|
-
|
|
210
|
-
- **导入校验** —— 解析时校验格式、版本、键名合法性,内置人设名受保护,不可覆盖
|
|
211
|
-
- **跨设备迁移** —— 一张卡片即可还原人设的完整身份(记忆、风格、档案名),无需额外配置
|
|
193
|
+
## 三、仪表盘:它到底有没有起作用
|
|
212
194
|
|
|
213
|
-
|
|
195
|
+
装了约束和提醒之后,最该回答的问题不是"机制在不在",而是"命中之后行为真的变了吗"。所以 v0.8 起先装仪表盘:
|
|
214
196
|
|
|
215
|
-
|
|
197
|
+
- **记什么**:路由判定(模式 + 命中判据 + 证据来源)、触发器命中(带命中当时的计数器快照)、块装配(留下 / 丢弃 / 字符数 + 本轮加权了哪几条条款)、每轮状态快照(契约 / 设计 / 台账 / 假设)、外部结果信号(用户纠正 / 重复请求 / 问答轮改动 / 执行轮零动作 / 出现真验证命令);
|
|
198
|
+
- **落在哪**:`<DSH_HOME>/harness/lume-metrics.jsonl`,一行一条 JSON,可以直接看、直接删;
|
|
199
|
+
- **怎么看**:对话里调 `lume_metrics`,或在 DSH 的插件配置里关闭 `metrics`(关掉只是不记录,不影响任何行为);
|
|
200
|
+
- **效能口径**:命中后 **3 轮**内是否出现**机械可判**的预期变化——真验证命令、或对应载具(契约 / 设计 / 台账 / 假设)从无到有;没有机械口径的机制直接标"未判定",**不计入分母**。
|
|
216
201
|
|
|
217
|
-
|
|
218
|
-
|---|---|---|---|
|
|
219
|
-
| **任务契约** | `lume_contract` | 目标 / 范围 / **数量(先估后回填)** / 完成判据 / 非目标 / 待确认 | 会话内;交付轮自动切成**对账口径**——对照的是开工时写下的原始判据,防「判据漂移」 |
|
|
220
|
-
| **改动台账** | `lume_change` | 文件·符号·章节 → 改什么 → 为什么 → 怎么验 → 状态 | 会话内;文档任务用章节名当 target,形成分节记账 |
|
|
221
|
-
| **假设台账** | `lume_hypothesis` | 假设 + 证据 + 状态(含**已排除**) | 会话内;已排除项照常回显,避免重复验证同一个假设 |
|
|
222
|
-
| **项目知识** | `lume_project_note` | 构建/测试命令、模块链路、仓库约定、死路记录 | **跨会话**,按工作目录归属 |
|
|
202
|
+
两条诚实声明写在这里,也写在报表里:效能是**观察性**的,不是因果;纠正率是代理指标(用户纠正次数 / 判定次数),不是真值。样本不够时,`0/1` 可能只是"没被触发过",不代表机制无效——它代表**还没有证据**。
|
|
223
203
|
|
|
224
|
-
|
|
204
|
+
---
|
|
225
205
|
|
|
226
|
-
##
|
|
206
|
+
## 四、长会话:上下文不是记忆的载体
|
|
227
207
|
|
|
228
|
-
|
|
208
|
+
- **压力预警**:上下文占用到 75% / 90% 时提醒收尾并开新会话,**先把会话记忆落盘**;
|
|
209
|
+
- **会话记忆**:每轮机械导出(目标 / 已拍板 / 未决 / 关键定位 / 改动与验证状态),新会话开局注入,说一句"继续"即可续接;
|
|
210
|
+
- **不要指望旧窗口还能继续**:宿主压缩失败时它会彻底聊不动,而会话记忆已经把该带的带走了。
|
|
229
211
|
|
|
230
|
-
|
|
231
|
-
|---|---|---|
|
|
232
|
-
| 收敛提醒 | 连续 ≥12 次只读探查且尚未写契约 | 停止撒网,先复述「入口 → 数据流 → 影响面」并写台账 |
|
|
233
|
-
| 增量验证 | 连续 ≥6 次改动没有任何验证动作 | 改一处验一处,先验证前一批 |
|
|
234
|
-
| 死路重撞 | 同一验证连续失败 ≥3 次 | 环境类占多数 → **验证降级阶梯**(编译器 → 语法检查 → 静态交叉引用 → 手工走读 + 风险清单);否则要求先归因并写假设台账 |
|
|
235
|
-
| 假设维护 | 诊断模式下验证失败但假设未更新 | 更新假设状态,标出已排除项 |
|
|
236
|
-
| 契约对账 | 有契约且每 3 轮 / 压缩后 | 用原始判据逐项对账,标注已验证 / 未验证 / 偏离 |
|
|
237
|
-
| 项目知识采集 | 无契约且步数 ≥20(每会话一次) | 提醒把稳定项目事实记下来 |
|
|
212
|
+
### token 与缓存
|
|
238
213
|
|
|
239
|
-
|
|
214
|
+
Lume 每轮都往对话里加东西(模式、需求原话、台账、提醒),这些内容按"变不变"分两处放:
|
|
240
215
|
|
|
241
|
-
|
|
216
|
+
- **系统段**只放会话内逐字节不变的内容(人设契约、身份名、纪律);
|
|
217
|
+
- **易变段**(记忆 top-k、语料示例、切换播报、本轮重点条款、提醒)交给宿主的 runtime-context 通道,渲染成对话尾部快照。
|
|
242
218
|
|
|
243
|
-
|
|
244
|
-
- **执行轮**:改动影响面清单(谁调用它、被谁实现、配置与 SQL 映射、前端引用)+ 每处改动的验证方式
|
|
245
|
-
- **有结构分析工具时**:建议用符号级定位替代通篇 read
|
|
219
|
+
这样只有**重启、且插件本身变了**时才需要重算一次上下文;平时长对话的前缀缓存不会被每一步作废。宿主不支持 `systemPrompt.context` 时自动退回旧行为(全部挤在 system 段)——丢前缀缓存,不丢功能,启动日志会写 warn。
|
|
246
220
|
|
|
247
|
-
|
|
221
|
+
---
|
|
248
222
|
|
|
249
|
-
|
|
223
|
+
## 五、人设系统
|
|
250
224
|
|
|
251
|
-
|
|
252
|
-
|---|---|---|---|
|
|
253
|
-
| **恒定段** | system prompt(`lume:thinking` order 1 / `lume:persona` order 10000) | 任务协议正文、人设契约、身份、行为纪律 | 会话内**逐字节不变**(只有人设切换时 +1 份) |
|
|
254
|
-
| **易变段** | runtime-context(`lume:runtime` / `lume:persona-runtime` / `lume:boundary`,渲染成对话尾部的一条快照消息) | 路由、任务阶段、长会话护栏、目标锚点、即时对齐、交付复核、压缩重锚、文档能力指引、记忆 top-k、风格约定、语料示例、切换播报 | 每步可变,但只花自己那几百 token |
|
|
225
|
+
人设不是"换个语气",是换一段关系。
|
|
255
226
|
|
|
256
|
-
|
|
227
|
+
- **内建人设**:萝莉 `loli`(噜噜)/ 御姐 `senpai`(晚晴)/ 管家 `butler`(沈砚)/ 毒舌傲娇 `tsundere`(江野)/ 不使用人设 `none`;
|
|
228
|
+
- **人设蒸馏**:从聊天记录、小说、剧本、人物设定文档里提炼具名角色——语气、口头禅、回复篇幅都**锚定真实素材的统计**,而不是凭想象编;
|
|
229
|
+
- **语气泄漏纠偏**:内置卡带"签名词"(自称 / 称呼 / 口头禅),切换后逐轮做**纯词法**检测;检出泄漏就重开纠偏窗口,一轮干净就自动解除;
|
|
230
|
+
- **长期记忆**:以人设为主键,跨会话、跨项目持久;身份称呼类记忆(core)恒注入,其余按与当前消息的相关度取 top-k;
|
|
231
|
+
- **风格收敛**:你的纠正自动转成风格约定,你认可的回复摘录为语料,语气随使用收敛;
|
|
232
|
+
- **记忆星图**:把记忆与关联可视化,可筛选、可编辑、可删除;
|
|
233
|
+
- **角色卡导出 / 导入**:一张卡带走完整身份(记忆 + 风格 + 档案名)。
|
|
257
234
|
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
| 工具定义 ×3 | 恒定 | ~600 | ~450 | description 精简 |
|
|
264
|
-
| 语料示例 | 易变 | 6 条 ~600 | 稳态 2 条 ~200 | 少样本衰减 `max(2, 6−轮数)` |
|
|
265
|
-
| 记忆 | 易变 | 15 条 ~350 | core + top5 ~120 | 相关性检索(本地分词 + mini-IDF,零成本) |
|
|
266
|
-
| 风格层 | 易变 | 10 条 ~250 | top5 ~120 | 同上 |
|
|
267
|
-
| 任务指令(路由/阶段/护栏/锚点) | 易变 | ~600 | 按需 | 6 轮前不注入护栏与锚点,闲聊不注入任务条款 |
|
|
268
|
-
| 文档能力指引 | 易变 | 常驻 ~120 | 文档任务轮 ~120,其余 0 | 工具能力探测 + 按轮触发 |
|
|
269
|
-
| 任务载具(契约 / 台账 / 假设 / 项目知识) | 易变 | 0 | 任务轮 ~150-400,**只在内容变化时付费** | 模型主动写入;尾部快照按内容差异提交 |
|
|
270
|
-
| 方法块(文档方法 / 影响面 / 结构提示) | 易变 | 常驻 ~400 | 按形态 80-200 | 文档轮 / 执行轮 / 有分析工具时才注入 |
|
|
271
|
-
| 触发器提醒 | 易变 | 0 | 触发时 80-120 | 六类行为模式 + 轮级冷却 |
|
|
235
|
+

|
|
236
|
+

|
|
237
|
+

|
|
238
|
+

|
|
239
|
+

|
|
272
240
|
|
|
273
|
-
|
|
274
|
-
- 易变段稳态约 **700~1,200 tok/步**,全部落在对话尾部:改它只花自己那点 token,不动前面的任何前缀
|
|
275
|
-
- 静态内容前置于易变内容,叠加 DeepSeek 前缀缓存后,有效成本可再降约一个数量级
|
|
241
|
+
### 记忆的两类与生命周期
|
|
276
242
|
|
|
277
|
-
|
|
243
|
+
- **叙述与真实事件**:故事、背景、共同经历、对方身份事实、约定分别归类;叙述有 **1600 字上限**,避免人设卡被闲聊撑爆;
|
|
244
|
+
- **临时记忆 30 天过期**:带过期时间的记忆到点自动不再注入——"我下周出差"这类会被自然清掉,不需要你手动删;
|
|
245
|
+
- **同主题去重**:同一主题算同一条,相似度判重后合并,避免"换句话就多一条";
|
|
246
|
+
- **蒸馏带算法版本**:角色卡记录蒸馏算法版本,升级后旧卡按新算法重蒸(启动时后台做,失败留痕)。
|
|
278
247
|
|
|
279
|
-
|
|
248
|
+
---
|
|
280
249
|
|
|
281
|
-
##
|
|
250
|
+
## 六、配置
|
|
251
|
+
|
|
252
|
+
在 DSH 的插件配置里改(键名与 `src/host/config.ts` 一致):
|
|
253
|
+
|
|
254
|
+
| 配置 | 默认 | 说明 |
|
|
255
|
+
| ---------------------------------------------- | ---------------- | ---------------------------------------------------------- |
|
|
256
|
+
| `layeredInjection` | `true` | 分层注入;关掉则易变内容回到 system 段(丢缓存,不丢功能) |
|
|
257
|
+
| `projectMemory` | `true` | 跨会话项目知识与载具台账 |
|
|
258
|
+
| `behaviorTriggers` | `true` | 行为触发器(按轨迹纠偏) |
|
|
259
|
+
| `metrics` | `true` | 运行时度量落盘与 `lume_metrics` |
|
|
260
|
+
| `reflectionEnabled` | `true` | 会话结束反思:四项能力各打 0-2 分并留痕 |
|
|
261
|
+
| `extractionEnabled` / `extractionCooldownMs` | `true` / 10 分钟 | 自动记忆提取开关与冷却 |
|
|
262
|
+
| `extractionProvider` / `extractionModel` | 回落主对话 | 记忆提取专用模型档(可只配其一) |
|
|
263
|
+
| `distillProvider` / `distillModel` | 回落主对话 | 人设蒸馏专用模型档(可只配其一) |
|
|
264
|
+
| `triggerInspectStreak` / `triggerChangeStreak` | `12` / `4` | 收敛提醒 / 增量验证提醒的步数阈值 |
|
|
265
|
+
| `triggerDeadPathFails` | `3` | 同一验证连续失败多少次判定死路 |
|
|
266
|
+
| `sampleCount` / `sampleMin` | `6` / `2` | 语料少样本注入条数与下限 |
|
|
267
|
+
| `memoryInject` / `styleInject` | `12` / `5` | 记忆与风格约定的注入条数上限 |
|
|
268
|
+
| `injectionStrategy` | `"topk"` | 检索策略(`topk` / `full`) |
|
|
269
|
+
| `switchBoundaryTurns` | 内置常量 | 切换人设后的播报窗口轮数 |
|
|
270
|
+
| `personaOrder` | 内置顺序 | 人设菜单排序 |
|
|
282
271
|
|
|
283
|
-
|
|
284
|
-
|---|---|---|
|
|
285
|
-
| `sampleCount` / `sampleMin` | 6 / 2 | 语料少样本基数与保底值(随轮数衰减) |
|
|
286
|
-
| `memoryInject` / `styleInject` | 12 / 5 | 记忆与风格注入条数(top-k) |
|
|
287
|
-
| `injectionStrategy` | `"topk"` | `"topk"` 相关性检索 / `"full"` 全量注入 |
|
|
288
|
-
| `personaOrder` | 10000 | 人设契约段(恒定段)在 system prompt 中的排序:贴着对话历史的注意力最强位 |
|
|
289
|
-
| `layeredInjection` | `true` | 分层注入:system 段只留会话恒定文本,易变内容走 runtime-context(对话尾部快照)。置 `false` 退回旧行为做对照;宿主不支持该通道时自动降级 |
|
|
290
|
-
| `projectMemory` | `true` | 项目知识(构建/测试命令、模块链路、约定、死路)按工作目录跨会话累积;与人格记忆分开存放 |
|
|
291
|
-
| `behaviorTriggers` | `true` | 行为触发器:撒网不收敛 / 连写不验 / 死路重撞 / 判据漂移的按轨迹提醒 |
|
|
292
|
-
| `triggerInspectStreak` / `triggerChangeStreak` / `triggerDeadPathFails` | 12 / 6 / 3 | 三类触发器的阈值(只读探查连击 / 改动连击 / 验证失败连击) |
|
|
293
|
-
| `switchBoundaryTurns` | 2 | 切换播报边界窗口(按用户轮计) |
|
|
294
|
-
| `extractionEnabled` | `true` | 被动提取开关 |
|
|
295
|
-
| `extractionCooldownMs` | 600000 | 被动提取冷却(毫秒) |
|
|
296
|
-
| `extractionProvider` / `extractionModel` | 回落主对话 | 提取专用模型档(可仅配置其一) |
|
|
297
|
-
| `distillProvider` / `distillModel` | 回落主对话 | 蒸馏专用模型档(可仅配置其一) |
|
|
298
|
-
| `reflectionEnabled` | `true` | 会话结束时运行任务执行协议反思评估,写入 `lume_reflection` 域 |
|
|
272
|
+
---
|
|
299
273
|
|
|
300
|
-
##
|
|
274
|
+
## 七、数据与隐私
|
|
301
275
|
|
|
302
|
-
-
|
|
303
|
-
-
|
|
304
|
-
-
|
|
305
|
-
-
|
|
306
|
-
-
|
|
276
|
+
- 数据全部在**本机**:人设与记忆、项目知识、反思、会话选择各走宿主的存储域(明文 JSON,DSH 数据目录下,可直接查看 / 备份 / 删除);会话原文由 DSH 自己管理;
|
|
277
|
+
- 度量单独一条线:`<DSH_HOME>/harness/lume-metrics.jsonl`,一行一条事实;
|
|
278
|
+
- 插件自身**不发起网络请求**(除调用你配置的模型档做提取 / 反思 / 蒸馏);
|
|
279
|
+
- 自动沉淀有**敏感内容拦截**:带值的密钥、连接串、私钥、加密串一律不入库;
|
|
280
|
+
- 想彻底清空:停用插件后删除上述存储域文件与 `lume-metrics.jsonl` 即可。
|
|
307
281
|
|
|
308
|
-
|
|
282
|
+
---
|
|
309
283
|
|
|
310
|
-
|
|
311
|
-
- **插件不会拖垮宿主**:`apply()` 外层有兜底 try/catch,插件内部的任何异常都降级为「部分功能不可用 + `logger.error`」,不再阻断 DSH 启动。
|
|
312
|
-
- **peer 声明只留宿主运行时保证提供的包**:`@deepseek-ai/dsh-client-ui-primitives` 这类前端包由宿主模块图在运行时提供,**不声明为 peer**——新版桌面安装器做严格 peer 闭包校验,声明它会连带检查它自己的 peer(`dsh-client-runtime`),导致安装/更新被拒绝(desktop 会写进 `.generations-deferred.json` 并冻结整个 profile 迁移)。它仍在 `devDependencies`(tsc 类型与 tsdown external 需要)。
|
|
284
|
+
## 八、常见问题
|
|
313
285
|
|
|
314
|
-
|
|
286
|
+
**这轮它怎么没按纪律来?**
|
|
287
|
+
先看这一轮被归成了哪类:问答轮不会硬塞任务方法块(否则就是自相矛盾)。想让它按执行纪律走,把话说明确("开始改")。
|
|
315
288
|
|
|
316
|
-
|
|
289
|
+
**为什么工具没被调用?**
|
|
290
|
+
因为核心机制**不需要**它调用:改动台账、需求锚点、知识沉淀、覆盖核对都是插件自己机械完成的。模型主动调用只是补充细节。
|
|
317
291
|
|
|
318
|
-
|
|
292
|
+
**知识为什么没落盘?**
|
|
293
|
+
四种可能,日志里都能看见:① 工作目录还没拿到(新会话第一轮偶发,第二轮补上);② 候选没通过判据(要求有证据锚点:路径 / 文件名 / 表名字段 / 命令);③ 形状闸把它当成了代码 / 测试输出 / 表格行 / 命令行;④ 命中了敏感内容拦截。
|
|
294
|
+
日志关键词:`自动沉淀候选` / `项目知识补落盘` / `工作目录已解析`。
|
|
319
295
|
|
|
320
|
-
|
|
296
|
+
**提醒怎么变少了?**
|
|
297
|
+
设计如此:每个提示槽有用量上限,触发器有轮级冷却,一次只顶最紧急的一条。提醒变噪音就没人读了。
|
|
321
298
|
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
```
|
|
299
|
+
**度量里为什么是 0 和"未判定"?**
|
|
300
|
+
0 往往意味着**没被触发过**,不是机制失效;"未判定"是明确排除在比例外的机制(没有机械口径)。看效能要同时看命中次数——命中 0 次的比例没有意义。
|
|
325
301
|
|
|
326
|
-
|
|
302
|
+
**上下文快满时怎么办?**
|
|
303
|
+
按提醒收尾当前这一步,然后**开新会话**——会话记忆已经存好,新会话开局会带上"目标 / 已拍板 / 未决 / 关键定位"。
|
|
327
304
|
|
|
328
|
-
|
|
305
|
+
**换项目 / 换工作目录,知识会串吗?**
|
|
306
|
+
不会。项目知识按**工作目录**归属;需求特有的结论还会带"(本需求)"标记。
|
|
329
307
|
|
|
330
|
-
|
|
331
|
-
dsh plugin add github:cayan0x/Lume#v0.7.0
|
|
332
|
-
```
|
|
308
|
+
---
|
|
333
309
|
|
|
334
|
-
|
|
310
|
+
## 九、已知局限
|
|
335
311
|
|
|
336
|
-
|
|
312
|
+
**局限(不藏)**:
|
|
337
313
|
|
|
338
|
-
|
|
314
|
+
1. **有一部分只能真机验证**:宿主 RPC 注册、注入作用域、事件形状、装配时序——单测抓不到,所以提供了 `npm run verify:live` 把真机清单做成一条命令;门禁里的产物断言也只能保证"已知的坑不再犯"。
|
|
315
|
+
2. **机械判据只管"有没有证据",管不了"判断对不对"**:语义层的对错仍在模型自己。
|
|
316
|
+
3. **效能是观察性的**:3 轮窗口内的共现不等于因果;样本少时读不出结论,别把 0/1 当判决。
|
|
317
|
+
4. **宿主侧与客户端侧同一个包**:任一侧坏了都可能让 Harness 起不来,所以门禁里有产物解析断言。
|
|
318
|
+
5. **旧宿主降级**:不支持 `systemPrompt.context` 的宿主会把易变段并回 system 段——丢前缀缓存,不丢功能,启动日志会写 warn。
|
|
339
319
|
|
|
340
|
-
|
|
341
|
-
dsh plugin add lume-dsh-plugin # npm(推荐)
|
|
342
|
-
# 或
|
|
343
|
-
dsh plugin add github:cayan0x/Lume#v0.7.0 # GitHub(备选)
|
|
344
|
-
```
|
|
320
|
+
**兼容性**:
|
|
345
321
|
|
|
346
|
-
|
|
322
|
+
| 项 | 说明 |
|
|
323
|
+
| -------- | ------------------------------------------------------------------------------------------------------- |
|
|
324
|
+
| 宿主 | DSH Desktop;插件以 `dsh.bundle.patch` 声明入口,`dependencies` 为空,只声明官方包的 `peerDependencies` |
|
|
325
|
+
| RPC 通道 | 优先走 `connection.rpc.handle`,失败则自注册 webServer 路由(两条路径都有诊断日志) |
|
|
326
|
+
| 打包内容 | `lib/`、`cordis.patch.yml`、`assets/`、`CHANGELOG.md`(构建产物不入库,`release:check` 会先 build) |
|
|
347
327
|
|
|
348
|
-
|
|
328
|
+
---
|
|
349
329
|
|
|
350
|
-
|
|
330
|
+
## 十、开发与验证
|
|
351
331
|
|
|
352
332
|
```bash
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
333
|
+
npm install --legacy-peer-deps # DSH 生态包与若干 rc 存在 peer 冲突,需要这个开关
|
|
334
|
+
npm test # 跑全量用例(条数以当场输出为准)
|
|
335
|
+
npm run lint # 架构规则 + 类型检查 + 机制覆盖 + 格式检查
|
|
336
|
+
npm run build # 产出 lib/(构建产物不入库)
|
|
337
|
+
npm run release:check # 发布门禁:对着产物断言,每条绑一个历史事故
|
|
338
|
+
npm run verify:live # 真机清单(重启后跑:加载行 / 能力行 / RPC / 补蒸馏 / 知识 / 注入块)
|
|
339
|
+
npm run format # 全仓格式化
|
|
357
340
|
```
|
|
358
341
|
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
## 开发
|
|
342
|
+
**三层护栏**:
|
|
362
343
|
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
npm run build # tsc(宿主 lib/index.js)+ tsdown(客户端 lib/client.js)
|
|
367
|
-
npm run watch # 客户端 bundle 增量构建
|
|
368
|
-
```
|
|
344
|
+
- **架构规则**:分层(core 不得依赖 host / client)· ESM 扩展名 · 禁 `console.*` · 静默失败必须写理由 · 抑制必须写理由 · 类型边界(裸 `any` 只允许在装配点)· 禁 `as any` · 依赖必须真的被使用 · 文档引用必须存在;
|
|
345
|
+
- **机制覆盖**:从代码里枚举出全部机制(提示槽 / 触发器 / 工具 / 注入块),每一个都必须有"能跑出行为"的测试;
|
|
346
|
+
- **发布门禁**:对**构建产物**断言,含"客户端产物可解析""无重复顶层声明"这类一旦退化就会让 Harness 起不来的检查。
|
|
369
347
|
|
|
370
|
-
|
|
348
|
+
工程约定与分层原因见 [ARCHITECTURE.md](ARCHITECTURE.md);发布流程见 [RELEASING.md](RELEASING.md);市场登记块见 [docs/hub-registration.md](docs/hub-registration.md);版本变更见 [CHANGELOG.md](CHANGELOG.md)。
|
|
371
349
|
|
|
372
|
-
|
|
373
|
-
src/index.ts 宿主入口:注入 + RPC + 工具 + 事件接线
|
|
374
|
-
src/core/ 纯逻辑:种子采样、检索打分、衰减、对话挖掘、manifest 解析、文本组装
|
|
375
|
-
src/host/ 存储(选择/身份/项目)、蒸馏管线、提取器、工具、协议与文档能力、任务载具、行为触发器、RPC、注册表
|
|
376
|
-
src/client/ 前端:人设菜单、蒸馏弹窗、管理弹窗(插槽 conversation.input.left)
|
|
377
|
-
lib/ 构建产物(随仓库提交,GitHub 安装路径依赖它)
|
|
378
|
-
test/ vitest 单元测试 + storage 栈集成测试(含带数据重开域回归)
|
|
379
|
-
docs/screenshots/ README 截图
|
|
380
|
-
```
|
|
350
|
+
---
|
|
381
351
|
|
|
382
352
|
## License
|
|
383
353
|
|
|
384
|
-
|
|
354
|
+
MIT © cayan0x
|