@jjh32456/dsh-longlive 1.6.6 → 1.6.8
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 +40 -4
- package/QUICKSTART.md +10 -10
- package/README.en.md +4 -3
- package/README.md +10 -4
- package/SPEC.md +2 -2
- package/cordis.patch.yml +9 -0
- package/docs/ARCHITECTURE.md +3 -2
- package/docs/CONFIG.md +33 -6
- package/docs/DEV.md +3 -3
- package/docs/FAQ.md +4 -4
- package/docs/FEATURES.md +36 -5
- package/docs/OPERATIONS.md +1 -1
- package/docs/QUICKSTART.md +3 -3
- package/docs/README.en.md +3 -2
- package/docs/TROUBLESHOOTING.md +3 -3
- package/package.json +13 -8
- package/src/activity/index.js +649 -0
- package/src/activity/model.js +341 -0
- package/src/activity/store.js +625 -0
- package/src/compaction/engine-core.js +144 -97
- package/src/config.js +29 -2
- package/src/features.js +26 -0
- package/src/heartbeat.js +156 -23
- package/src/identity/handover.js +52 -1
- package/src/live.js +22 -2
- package/src/recall/privacy.mjs +105 -16
- package/src/router/service/board.mjs +95 -15
- package/src/router/service/hint.mjs +14 -0
- package/src/router/service/service.mjs +27 -11
- package/test/activity-realtime.test.mjs +959 -0
- package/test/activity-stream.test.mjs +512 -0
- package/test/autobind.test.mjs +25 -11
- package/test/config-schema.test.mjs +6 -0
- package/test/feature-flags.test.mjs +17 -0
- package/test/fixtures/activity-append-child.mjs +29 -0
- package/test/hot-truncate.test.mjs +113 -0
- package/test/live.test.mjs +6 -3
- package/test/packaging.test.mjs +7 -5
- package/test/router-background/router.test.mjs +44 -12
- package/test/run-rc.mjs +16 -0
- package/test/safety-defaults.test.mjs +5 -3
- package/test/state-truth.test.mjs +937 -0
- package/test/version-consistency.test.mjs +286 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,12 +1,48 @@
|
|
|
1
|
-
## 1.6.6
|
|
2
|
-
|
|
3
|
-
- 热截断修复:去掉 skipPast 永久钉死(aborted/interrupted 轮只要有 turn/end 就整轮可切);段首 system/message 永不进切段,中途注入的 system 副本随旧前缀归档。修复后真实会话一次可切 35 个 closed 轮(约 46 万 tokens),上下文回到最近 4 轮量级。
|
|
4
|
-
|
|
5
1
|
# 变更记录
|
|
6
2
|
|
|
7
3
|
本文件从 0.7.6 开始记录;更早的版本没有随包维护变更日志(0.7.5 及以前的 tarball 里没有
|
|
8
4
|
CHANGELOG)。
|
|
9
5
|
|
|
6
|
+
## 1.6.8 — 2026-11-06
|
|
7
|
+
|
|
8
|
+
**共享大脑活动流 + 共享板状态诚实性。** 在 1.6.7 之上并入此前 1.6.1-rc.1 批次的活动流,
|
|
9
|
+
并修复 shared board / status / live 三处投影不一致;热截断行为与 1.6.7 相同。
|
|
10
|
+
|
|
11
|
+
### 共享大脑活动流(`sharedBrain.activity`,默认关闭)
|
|
12
|
+
|
|
13
|
+
- 事件级写入:工具/轮次事件用本地规则(不调 LLM)生成 ≤140 字活动行,写进
|
|
14
|
+
`<memoryRoot>/.longlive/board/activity.jsonl`;同 key ≤1 条/10s 节流;turn/end 写结论行。
|
|
15
|
+
- 判重/蒸馏:同会话最近 10 条内 key 相同或文本相似度 ≥0.8 合并(count+1);同 key 连续 3 次 /
|
|
16
|
+
累计 10 次压成「阶段」行;500 条窗口 + 月度归档。
|
|
17
|
+
- 增量注入:每会话游标 `.longlive/bridge/<sessionId>.activity.json`;`agent/pre-step` 只注入
|
|
18
|
+
其他会话 `seq > lastSeenSeq` 的新增,最多 5 条 / 整条 ≤300 字,无新增零 token、零写盘。
|
|
19
|
+
- 隐私门复用 `src/recall/privacy.mjs`;写盘跨进程锁 + tmp/fsync/rename;失败静默,不影响 turn。
|
|
20
|
+
- 默认 `enabled: false`(代码默认 / Config schema / 包内 `cordis.patch.yml` 三处一致),与
|
|
21
|
+
`presenceBus` 完全独立。
|
|
22
|
+
|
|
23
|
+
### 共享板状态诚实性
|
|
24
|
+
|
|
25
|
+
- `pulse.running` 取有效活跃会话数,`board.json` 与 `status.json` 同字段一致。
|
|
26
|
+
- focus 行给出「目标写入时间」,过期或与最近动作明显不符时标 stale,不再拿心跳冒充更新时间。
|
|
27
|
+
- live 行 state/turn 在 turn 开始/结束时正确切换;开机卡带「状态卡写于 X 分钟前」。
|
|
28
|
+
|
|
29
|
+
### 兼容与升级
|
|
30
|
+
|
|
31
|
+
- 版本面同步:`package.json`、README/QUICKSTART/SPEC/docs、CHANGELOG、`cordis.patch.yml`、
|
|
32
|
+
`test/packaging.test.mjs` 与新增 `test/version-consistency.test.mjs` 的断言一致。
|
|
33
|
+
- 面板是独立包 `@jjh32456/dsh-longlive-panel@0.2.6`,与 1.6.8 配套提供(活动流面板页仍不在
|
|
34
|
+
0.2.6 内,留待面板 0.2.7);1.6.8 安装集 = `dist/jjh32456-dsh-longlive-1.6.8.tgz`(本包,
|
|
35
|
+
npm pack 产出)+ `dist/jjh32456-dsh-longlive-panel-0.2.6.tgz`(面板原样包)。
|
|
36
|
+
|
|
37
|
+
## 1.6.7
|
|
38
|
+
|
|
39
|
+
- 热截断加固:turn===0 / 无 turn 记录的组不再永久屏障(含 system/developer 指令的原地保留,只含普通消息的随旧前缀整组归档);中段缺 turn/end 的轮只有最后启动的当前轮不可切;新增 onNoPlan 拒绝原因通道,切不了会写 'hot-truncate: 未切(reason)',杜绝静默零进展。
|
|
40
|
+
|
|
41
|
+
## 1.6.6
|
|
42
|
+
|
|
43
|
+
- 热截断修复:去掉 skipPast 永久钉死(aborted/interrupted 轮只要有 turn/end 就整轮可切);段首 system/message 永不进切段,中途注入的 system 副本随旧前缀归档。修复后真实会话一次可切 35 个 closed 轮(约 46 万 tokens),上下文回到最近 4 轮量级。
|
|
44
|
+
|
|
45
|
+
|
|
10
46
|
## 1.6.5 — 2026-11-06
|
|
11
47
|
|
|
12
48
|
**热截断热修复:被宿主重启中断过的会话不再永久失去自动切刀。**
|
package/QUICKSTART.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# QUICKSTART — 五步跑通(1.6.
|
|
1
|
+
# QUICKSTART — 五步跑通(1.6.8)
|
|
2
2
|
|
|
3
3
|
目标:在一台新机器上,5 步内让 `@jjh32456/dsh-longlive` 装好、能用、能回滚、能卸干净。
|
|
4
4
|
完整背景见 [README.md](README.md),逐码排错见 [docs/ERRORS.md](docs/ERRORS.md),
|
|
@@ -42,7 +42,7 @@ $DSH = '<DSH 安装目录>\resources\runtime\cli\bin\dsh.cmd'
|
|
|
42
42
|
先把包放到固定目录,核对 sha256,再装进一个**新 profile**:
|
|
43
43
|
|
|
44
44
|
```powershell
|
|
45
|
-
$TGZ = 'C:\path\to\jjh32456-dsh-longlive-1.6.
|
|
45
|
+
$TGZ = 'C:\path\to\jjh32456-dsh-longlive-1.6.8.tgz'
|
|
46
46
|
Get-FileHash -Algorithm SHA256 $TGZ # 对照同目录的 .tgz.sha256
|
|
47
47
|
|
|
48
48
|
$LLPROFILE = 'fresh0723b'
|
|
@@ -54,7 +54,7 @@ $LLPROFILE = 'fresh0723b'
|
|
|
54
54
|
& $DSH plugin --profile $LLPROFILE list --depth 0
|
|
55
55
|
```
|
|
56
56
|
|
|
57
|
-
`list` 应出现 `@jjh32456/dsh-longlive@1.6.
|
|
57
|
+
`list` 应出现 `@jjh32456/dsh-longlive@1.6.8`。`dsh plugin --profile <新名字> add` 自己也会初始化
|
|
58
58
|
profile,但那样只带 `@deepseek-ai/dsh-base`;要网页 UI 和与本文一致的验证,先用
|
|
59
59
|
`--from-default-profile web` 建模板 profile。
|
|
60
60
|
|
|
@@ -67,8 +67,8 @@ profile,但那样只带 `@deepseek-ai/dsh-base`;要网页 UI 和与本文一
|
|
|
67
67
|
```powershell
|
|
68
68
|
Set-Location <仓库根目录>
|
|
69
69
|
& $NODE test\run.mjs
|
|
70
|
-
& $NODE scripts\pack.mjs --expect-version 1.6.
|
|
71
|
-
# 产物:dist\jjh32456-dsh-longlive-1.6.
|
|
70
|
+
& $NODE scripts\pack.mjs --expect-version 1.6.8
|
|
71
|
+
# 产物:dist\jjh32456-dsh-longlive-1.6.8.tgz(+ .sha256)
|
|
72
72
|
```
|
|
73
73
|
|
|
74
74
|
`pack.mjs` 只负责打包,不跑测试;`--expect-version` 会在版本不匹配时拒绝出包。
|
|
@@ -79,13 +79,13 @@ Set-Location <仓库根目录>
|
|
|
79
79
|
宿主正在跑、且当前 profile 就是目标 profile 时:
|
|
80
80
|
|
|
81
81
|
```
|
|
82
|
-
plugin_manager action=install_bundle target="file:C:/path/to/jjh32456-dsh-longlive-1.6.
|
|
82
|
+
plugin_manager action=install_bundle target="file:C:/path/to/jjh32456-dsh-longlive-1.6.8.tgz"
|
|
83
83
|
```
|
|
84
84
|
|
|
85
85
|
目标必须是**绝对路径**,且需要上面说的权限。装完按宿主提示重载(或重启该 profile)。
|
|
86
86
|
|
|
87
87
|
> 不要用 `npm install` 当安装方式:本包未发布到 npm registry;`file:` 必须指向刚打出来的
|
|
88
|
-
> **1.6.
|
|
88
|
+
> **1.6.8 tgz**,指向旧版 tgz 会装回旧行为。
|
|
89
89
|
|
|
90
90
|
### 1D. 装完第一件事:可选依赖自检与 `--setup`
|
|
91
91
|
|
|
@@ -231,7 +231,7 @@ dsh: warning: 1 entry did not activate
|
|
|
231
231
|
session-longlive (dsh-session-longlive): Error: cannot get property "version" without inject
|
|
232
232
|
```
|
|
233
233
|
|
|
234
|
-
说明跑的是 0.7.3 的旧代码(19 个工具都不会注册);升级到 1.6.
|
|
234
|
+
说明跑的是 0.7.3 的旧代码(19 个工具都不会注册);升级到 1.6.8,或按第 4 步回滚到 0.6.0。
|
|
235
235
|
|
|
236
236
|
> **新 profile 要启动两次再下结论。** 新建 profile 的第一次启动会做一次准备性加载,
|
|
237
237
|
> 可能不进入 Cordis runtime,从而掩盖这个错误;第二次启动才是稳定状态。两次 stderr 都干净才算过。
|
|
@@ -330,13 +330,13 @@ Remove-Item -Recurse -Force $profileDir
|
|
|
330
330
|
|
|
331
331
|
| 现象 | 大概率原因 | 处理 |
|
|
332
332
|
| --- | --- | --- |
|
|
333
|
-
| `dsh: warning: 1 entry did not activate` + `cannot get property "version" without inject` | 0.7.3 的激活回归 | 升级到 1.6.
|
|
333
|
+
| `dsh: warning: 1 entry did not activate` + `cannot get property "version" without inject` | 0.7.3 的激活回归 | 升级到 1.6.8,或回滚 0.6.0(第 4 步) |
|
|
334
334
|
| `--dump-config` 里两条同 id 的 `session-longlive` | 在 profile 层照抄了 `- insert:` | 改成 `- id: session-longlive` + `config:`(第 2 步) |
|
|
335
335
|
| `E_MEMORY_ROOT_MISSING` | 显式 `memoryRoot` 目录不存在 | 先建目录,或改用默认根(第 2 步) |
|
|
336
336
|
| `plugin_manager` 安装/卸载被自动拒绝 | 缺少 danger-full-access 或审批 | 用 CLI,或对本次调用批准(第 0 步) |
|
|
337
337
|
| `node` 不是内部或外部命令 | 干净机器 PATH 没有 Node | 用 `$NODE`(第 0 步) |
|
|
338
338
|
| 起会话报 `MISSING_CREDENTIAL` / `ACCOUNT_SIGN_IN_REQUIRED` | 新 profile 没有模型凭据 | 用 3A/3B 验证;这是环境问题,不是插件 |
|
|
339
|
-
| 设置页找不到「久视 · 功能开关」 | 1.6.0 起才有设置页伴侣;旧宿主或没有 webServer 的 profile 不注册路由 | 确认装的是 1.6.
|
|
339
|
+
| 设置页找不到「久视 · 功能开关」 | 1.6.0 起才有设置页伴侣;旧宿主或没有 webServer 的 profile 不注册路由 | 确认装的是 1.6.8 且宿主 Web GUI 可用;没有路由时直接改 `cordis.patch.yml` |
|
|
340
340
|
|
|
341
341
|
出问题先看 [docs/ERRORS.md](docs/ERRORS.md);Windows 专属部分(PowerShell 探测、`request` 模式、
|
|
342
342
|
`Stop-Process` 硬杀关闭)在非 Windows 上会降级而不是崩溃。
|
package/README.en.md
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
# @jjh32456/dsh-longlive (Longlive)
|
|
2
2
|
|
|
3
3
|
A DeepSeek Harness plugin that keeps a long session healthy: **inspect it, back it up, and shrink it safely** before the context window fills up. No standalone UI; no network requests or telemetry in the default configuration (Router / RouterFace / embedding call the provider you configure, only after you enable them).
|
|
4
4
|
## What you get
|
|
5
5
|
|
|
6
6
|
- **22 tools** for session health/backup/compaction/truncation, on-demand original-text fetch, memory cards, workers (fan-out is unavailable until `workers.enabled: true`), and the live-session registry.
|
|
7
7
|
- A memory store at `<DSH home>/longlive-memory` (on Windows: `%USERPROFILE%\.dsh\longlive-memory`), created on first start.
|
|
8
|
-
- Optional: the separate read-only panel `@jjh32456/dsh-longlive-panel@0.2.
|
|
8
|
+
- Optional: the separate read-only panel `@jjh32456/dsh-longlive-panel@0.2.6` adds a sidebar named **潜望镜 (Periscope)**. The plugin itself ships no UI.
|
|
9
|
+
- Optional and **off by default**: `sharedBrain.activity` (added in 1.6.8) writes activity rows from events (throttled to one row per key per 10 s, plus a conclusion row per turn/end) to `.longlive/board/activity.jsonl` and injects only unseen rows from other sessions (max 5 rows / 300 chars, zero tokens when nothing is new). It is independent of `presenceBus`.
|
|
9
10
|
- Optional and **off by default**: `d2.enabled` trims oversized tool output (the full text is archived), `d6.enabled` freezes a per-task tool allowlist and registers `tool_search`. See [docs/FEATURES.md](docs/FEATURES.md) and [docs/CONFIG.md](docs/CONFIG.md) for enabling, budget and rollback.
|
|
10
11
|
|
|
11
12
|
## Install (3 commands)
|
|
@@ -13,7 +14,7 @@ A DeepSeek Harness plugin that keeps a long session healthy: **inspect it, back
|
|
|
13
14
|
```powershell
|
|
14
15
|
$DSH = '<DSH install>\resources\runtime\cli\bin\dsh.cmd'
|
|
15
16
|
$NODE = '<DSH install>\resources\runtime\primary-runtime\dependencies\node\bin\node.exe'
|
|
16
|
-
& $DSH plugin --profile desktop add "file:C:/path/jjh32456-dsh-longlive-1.6.
|
|
17
|
+
& $DSH plugin --profile desktop add "file:C:/path/jjh32456-dsh-longlive-1.6.8.tgz"
|
|
17
18
|
& $DSH plugin --profile desktop list --depth 0
|
|
18
19
|
& $NODE "$env:USERPROFILE\.dsh\profiles\desktop\node_modules\@jjh32456\dsh-longlive\scripts\longlive-doctor.mjs" --profile desktop
|
|
19
20
|
```
|
package/README.md
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
|
-
|
|
1
|
+
# @jjh32456/dsh-longlive(久视)
|
|
2
2
|
|
|
3
3
|
> 1.6.0 起包名由 `dsh-session-longlive` 改为 `dsh-longlive`;1.6.4 起发布名改为 scoped 包
|
|
4
4
|
> `@jjh32456/dsh-longlive`(npm 包名),显示名仍是「久视」(英文 Longlive);
|
|
5
5
|
> 1.6.3 在 1.6.0 基线上新增**热截断**(cut-only 压缩引擎,见下文「版本与边界」),这一项是 1.5.0
|
|
6
6
|
> 没有的能力;1.6.4 把热截断默认值收到 **300k 触发 / 保留 4 轮**,并修复 D6 重启后首轮冻结
|
|
7
7
|
> (G3)与可移植性收口。升级步骤见 [docs/MIGRATION-1.6.0.md](docs/MIGRATION-1.6.0.md)。
|
|
8
|
+
>
|
|
9
|
+
> 1.6.8 在 1.6.7 之上并入**共享大脑活动流**(`sharedBrain.activity`,默认关闭,与
|
|
10
|
+
> `presenceBus` 解耦,见 [docs/FEATURES.md](docs/FEATURES.md))与共享板状态诚实性修复
|
|
11
|
+
> (running 计数、焦点新鲜度、turn 状态、开机卡时效);热截断行为不变。
|
|
8
12
|
|
|
9
13
|
**一句话**:一个大脑,多双手脚——把「我」从会话里搬出来,让人格与记忆长久化。
|
|
10
14
|
|
|
@@ -81,7 +85,7 @@ $NODE = '<DSH 安装目录>\resources\runtime\primary-runtime\dependencies\node\
|
|
|
81
85
|
|
|
82
86
|
```powershell
|
|
83
87
|
# 1. 安装本地 tgz(用 plugin add,不要用 npm install)
|
|
84
|
-
& $DSH plugin --profile desktop add "file:C:/path/jjh32456-dsh-longlive-1.6.
|
|
88
|
+
& $DSH plugin --profile desktop add "file:C:/path/jjh32456-dsh-longlive-1.6.8.tgz"
|
|
85
89
|
|
|
86
90
|
# 2. 确认版本
|
|
87
91
|
& $DSH plugin --profile desktop list --depth 0
|
|
@@ -110,7 +114,7 @@ $NODE = '<DSH 安装目录>\resources\runtime\primary-runtime\dependencies\node\
|
|
|
110
114
|
被裁掉的工具)。打开方式、预算与回退见 [docs/FEATURES.md](docs/FEATURES.md) 和
|
|
111
115
|
[docs/CONFIG.md](docs/CONFIG.md)。
|
|
112
116
|
- 默认记忆目录:`%USERPROFILE%\.dsh\longlive-memory`(首次启动自动创建)。
|
|
113
|
-
- **没有自带界面**。另装可选的只读面板 `@jjh32456/dsh-longlive-panel@0.2.
|
|
117
|
+
- **没有自带界面**。另装可选的只读面板 `@jjh32456/dsh-longlive-panel@0.2.6` 后,侧栏才会出现「潜望镜」,里面有七个页签:六层视图、截断记录、过滤器决策、影子记录、常驻 Router、本轮想起(另有「使用说明」)。面板是独立可选包,不装就没有这个侧栏。
|
|
114
118
|
|
|
115
119
|
## 第一次使用
|
|
116
120
|
|
|
@@ -129,8 +133,10 @@ $NODE = '<DSH 安装目录>\resources\runtime\primary-runtime\dependencies\node\
|
|
|
129
133
|
|
|
130
134
|
## 版本与边界
|
|
131
135
|
|
|
132
|
-
- 本套文档对应 **1.6.
|
|
136
|
+
- 本套文档对应 **1.6.8** 的本地 tgz(1.6.0 起包名由 `dsh-session-longlive` 改为 `dsh-longlive`;
|
|
133
137
|
1.6.4 起发布名改为 scoped 包 `@jjh32456/dsh-longlive`)。
|
|
138
|
+
**1.6.8 并入活动流**:默认关闭的 `sharedBrain.activity`(事件级活动写入 +
|
|
139
|
+
只注入其他会话新增、整条 ≤300 字;写盘跨进程锁、失败静默),与热截断互不影响。
|
|
134
140
|
**1.6.3 起新增热截断**:一个不调 LLM 的 cut-only 压缩引擎,通过 bundle patch 关掉宿主 stock
|
|
135
141
|
`compaction-basic` 行并插入 `compaction-hot-truncate`;只切「已完成、且早于保留窗口(默认 4 轮 /
|
|
136
142
|
8000 token)」的整轮,切前先把原文归档到 `<memoryRoot>/.longlive/hot-truncate/`,再用一条覆盖率指针
|
package/SPEC.md
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
> 1.6.0–1.6.3 为 `dsh-longlive`),显示名「久视」(英文 Longlive)。原名
|
|
5
5
|
> `dsh-session-longlive`(2026-10-30 定),1.6.0 起迁移;拼写是 longlive,不是 longevity。
|
|
6
6
|
>
|
|
7
|
-
> 当前版本:**1.6.
|
|
8
|
-
>
|
|
7
|
+
> 当前版本:**1.6.8**(1.6.0 改名基座 + 1.6.3 热截断 + 1.6.4 的 300k 触发 / 保留 4 轮 + 1.6.7 热截断加固 +
|
|
8
|
+
> 1.6.8 共享大脑活动流与共享板状态诚实性;D2/D6 默认关闭;安装包 `dist/jjh32456-dsh-longlive-1.6.8.tgz`)。
|
|
9
9
|
|
|
10
10
|
## 零、安全性承诺(2026-10-30 要求:不能出错,出错就死了)
|
|
11
11
|
|
package/cordis.patch.yml
CHANGED
|
@@ -79,3 +79,12 @@
|
|
|
79
79
|
presenceBus:
|
|
80
80
|
enabled: false
|
|
81
81
|
pollMs: 3000
|
|
82
|
+
# 1.6.8: shared-brain activity stream (event-level writes, merged from the
|
|
83
|
+
# 1.6.1-rc.1 batch). Off by default and independent of presenceBus. When on,
|
|
84
|
+
# activity events append rows to <memoryRoot>/.longlive/board/activity.jsonl
|
|
85
|
+
# and agent/pre-step injects only rows newer than this session's lastSeenSeq.
|
|
86
|
+
sharedBrain:
|
|
87
|
+
activity:
|
|
88
|
+
enabled: false
|
|
89
|
+
injectMaxChars: 300
|
|
90
|
+
maxItems: 5
|
package/docs/ARCHITECTURE.md
CHANGED
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
| 压缩分析 | `src/compaction.js` | `shadowedEvents` / `stillStored` / `reclaimed`(磁盘回读才算) | 宿主内(只读) |
|
|
59
59
|
| live 保护 | `src/live-target.js` | 三路判定"会话是否还在跑";`SESSION_IS_RUNNING`(工具层只 import 其中的 id 辅助函数,不做三路探测) | 宿主内(仅 id 判定)+ CLI |
|
|
60
60
|
| live 注册表 | `src/live.js` | 行读写、effectiveState、prune | 宿主内 |
|
|
61
|
-
| 心跳 | `src/heartbeat.js` | turn
|
|
61
|
+
| 心跳 | `src/heartbeat.js` | turn 边界状态机维护 state/turn + 15s 定时/tool touch 刷新已绑定行;`0` 只关定时与 touch | 宿主内 |
|
|
62
62
|
| 记忆存储 | `src/memory/*.js` | 卡片、索引、巩固、遗忘、程序卡、检索 | 宿主内 |
|
|
63
63
|
| 路径解析 | `src/memory/paths.js` | memoryRoot 五级优先、越界检查、严格模式 | 宿主内 |
|
|
64
64
|
| R1 运行时 | `src/router/runtime.js` | off/shadow/on;只拦 4 个 memory 工具;fail-closed | 宿主内 |
|
|
@@ -66,7 +66,8 @@
|
|
|
66
66
|
| runner | `scripts/auto-truncate-run.ps1` | 校验→关应用→切→验证→重启;退出码 0/2/3/4/5/6 | **宿主外** |
|
|
67
67
|
| CLI | `scripts/truncate-cli.mjs` | 无工具层的最小切口;自带 live 拒绝 | **宿主外** |
|
|
68
68
|
| doctor | `scripts/longlive-doctor.mjs` | 可选依赖/版本/安装计划;默认只读 | **宿主外** |
|
|
69
|
-
| 面板 | `@jjh32456/dsh-longlive-panel@0.2.
|
|
69
|
+
| 面板 | `@jjh32456/dsh-longlive-panel@0.2.6` | 六层视图/截断记录/过滤器决策(未并入,显示样例)/影子记录/常驻 Router,只读 | 独立可选插件 |
|
|
70
|
+
| 共享大脑活动流 | `src/activity/*`(`sharedBrain.activity`,默认关闭) | 事件级写活动行(同 key ≤1 条/10s;turn/end 写结论行)到 `.longlive/board/activity.jsonl`;agent/pre-step 只注入其他会话的增量(判重/蒸馏/500 条窗口);与 `presenceBus` 解耦 | 宿主内(只写记忆根) |
|
|
70
71
|
| 校验器 | `<tools-dir>\ops\tools\verify-truncation.mjs`(本机示例,不在包内) | V1–V7 结构验收;不写不修 | **宿主外** |
|
|
71
72
|
|
|
72
73
|
---
|
package/docs/CONFIG.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
# CONFIG.md — @jjh32456/dsh-longlive(久视)配置手册
|
|
2
2
|
|
|
3
|
-
适用版本:**1.6.
|
|
3
|
+
适用版本:**1.6.8**(以包内 `package.json` 的 `version` 为准)。所有默认值以该源码树为准。
|
|
4
4
|
读者:会改 YAML、会看日志,但没参与开发的人。
|
|
5
5
|
|
|
6
6
|
---
|
|
@@ -81,7 +81,7 @@ autoTruncate:
|
|
|
81
81
|
|---|---|---|---|---|---|
|
|
82
82
|
| `keepEvents` | integer | `20000` | ≥ 1 | 是 | 只作为 `session_truncate` 的默认 `keepEvents`(`src/index.js:199`)。切点还会被"第一条可见消息"夹住,见 `planTruncation` `src/truncate.js:103-152` |
|
|
83
83
|
| `recentWriteWindowMs` | integer | `60000` | ≥ 0 | 是 | 最近写窗口;窗口内拒绝截断(`SESSION_RECENT_WRITE`)。runner 走 CLI 时显式传 0,因为它假定宿主已退出 |
|
|
84
|
-
| `heartbeatMs` | integer | `15000` | 有限正数;`0`
|
|
84
|
+
| `heartbeatMs` | integer | `15000` | 有限正数;`0` 只关定时心跳与工具调用触发的写 | 是 | `0` **不关 turn 边界状态机**:turn/start 与 turn/end 仍维护 live 行 state/turn;也不影响自动截断:`onTurnEnd` 在 `enabled` 门之前触发(`src/heartbeat.js:169`)。给 1 这种极小值 = 高频写盘,别这么干;无上限校验 |
|
|
85
85
|
| `recoverOnStart` | boolean | `true` | `true` / `false` | 是 | 启动时扫 `.truncate-visible-inflight.json` 并收尾/回滚(`src/index.js:230-236` + `sweepInflight`)。只有排障时才建议关 |
|
|
86
86
|
| `originalFetchMaxBytes` | integer | `65536` | 1024..4194304(超范围夹回) | 否 | 仅 `session_original` 的单次返回上限(UTF-8 字节);超出按 `offset` 分页。隐私门先扫全量,调大它不会绕过隐私拦截 |
|
|
87
87
|
| `touchLiveSession` / `now` / `defineTool` | 内部 | — | — | 是 | 测试注入缝(`src/index.js:160,193-195,205`),不是给部署用的稳定配置;**待核实**未来版本是否保留 |
|
|
@@ -200,7 +200,7 @@ d6:
|
|
|
200
200
|
- **回退**:`d6.enabled: false`(或删除整个 `d6` 块)后重启;没有数据迁移。运行中选择、
|
|
201
201
|
`restrict()` 或组装任一步抛错、或裁剪后工具集为空,也一律回到全量工具面,不阻断会话。
|
|
202
202
|
|
|
203
|
-
### 1.5 面板(@jjh32456/dsh-longlive-panel@0.2.
|
|
203
|
+
### 1.5 面板(@jjh32456/dsh-longlive-panel@0.2.6,独立可选插件)
|
|
204
204
|
|
|
205
205
|
面板的配置**不继承**上面插件的 `memoryRoot`,它有自己的两个键(`src/server.js:2103-2109`):
|
|
206
206
|
|
|
@@ -209,7 +209,7 @@ d6:
|
|
|
209
209
|
| `memoryRoot` | string | `~/.dsh/longlive-memory` | 目录 | 是 | 面板只读这个目录。插件配了显式根(本机示例 `<memory-root>`)而面板没配 → **面板显示 0 卡**(它读的是默认空目录),不是记忆丢了 |
|
|
210
210
|
| `sessionsRoot` | string | `~/.dsh/sessions` | 目录 | 是 | "截断记录"页读这里的 `<会话目录>/truncate.json`、`truncate-visible.json`(宿主可见对话截断账本)和 `backups.json`(并 stat 账本里记的备份文件);两份截断账合并后按时间倒序列出。指错 → 该页空白 |
|
|
211
211
|
|
|
212
|
-
面板也可以用环境变量 `DSH_LONGLIVE_MEMORY_ROOT` / `DSH_MEM` 覆盖 `memoryRoot`。0.2.
|
|
212
|
+
面板也可以用环境变量 `DSH_LONGLIVE_MEMORY_ROOT` / `DSH_MEM` 覆盖 `memoryRoot`。0.2.6 是配套本版的「六层视图活体行排序 + 已归档折叠(按需物化)」与红队 v1 回执修复版;本机 `desktop` profile 之前装的是旧版面板,升级到 0.2.6 的装法/验证/卸载见包内 `INSTALL.md`,装完或改配置后必须重启宿主。
|
|
213
213
|
|
|
214
214
|
**1.6.0 新增:插件自带的设置页伴侣**(不是上面的面板包)。`package.json` 的 `./client` +
|
|
215
215
|
`src/ui/*` 在宿主设置页的插件行注册 `plugins.row.config`,标题「久视 · 功能开关」,提供 7 个
|
|
@@ -219,6 +219,32 @@ slot key 为 `@jjh32456/dsh-longlive#session-longlive`(包名已改,row id
|
|
|
219
219
|
的 profile 不注册 `/api/longlive/flags`,插件照常加载。`workers.enabled` 不在 7 个面板开关里,
|
|
220
220
|
需要直接改配置。
|
|
221
221
|
|
|
222
|
+
### 1.5b 共享大脑活动流 `sharedBrain.activity`(默认关闭)
|
|
223
|
+
|
|
224
|
+
```yaml
|
|
225
|
+
sharedBrain:
|
|
226
|
+
activity:
|
|
227
|
+
enabled: true # 字面 true 才开启;与 presenceBus 无关
|
|
228
|
+
injectMaxChars: 300 # 每轮注入总字符上限(含固定头尾,60–2000)
|
|
229
|
+
maxItems: 5 # 每轮最多注入条数(1–10)
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
| 键 | 类型 | 默认值 | 合法值 / 范围 | 改了要重启? | 风险与说明 |
|
|
233
|
+
|---|---|---|---|---|---|
|
|
234
|
+
| `enabled` | boolean | `false` | `true` / `false` | 是 | 开启后:按事件写活动行(同 key ≤1 条/10s 节流)到 `<memoryRoot>/.longlive/board/activity.jsonl`;`agent/pre-step` 只注入 `seq > lastSeenSeq` 的其他会话活动。失败静默,不影响 turn |
|
|
235
|
+
| `injectMaxChars` | number | `300` | 60–2000 | 是 | 渲染后的整条提示(含 `【共享大脑活动】` 头与 `【活动结束】` 尾)不超过此值;预算不够时先裁条目标题、再少注入几条 |
|
|
236
|
+
| `maxItems` | number | `5` | 1–10 | 是 | 最多条数;blocked 优先 |
|
|
237
|
+
|
|
238
|
+
- 判重:同会话最近 10 条内 `key` 相同或文本相似度 ≥0.8 → 合并,`count+1`、`last_at` 更新、正文保留首条。
|
|
239
|
+
- 蒸馏:同 key 连续 3 次(`count`)或累计 10 次 → 旧行 `archived:true`,新增一条
|
|
240
|
+
`阶段:<key>(N 次,最近 …)`。500 条窗口外的最旧行归档到 `activity-YYYYMM.jsonl`。
|
|
241
|
+
- 每会话游标:`<memoryRoot>/.longlive/bridge/<sessionId>.activity.json`(`lastSeenSeq`)。
|
|
242
|
+
与 A1 结论桥的 `<sessionId>.json` 分开,互不覆盖;删掉该文件只会让该会话下次重新看到最近 5 条。
|
|
243
|
+
- 隐私门:写盘前与注入前都调 `src/recall/privacy.mjs`;`local_only` 的活动不写、不注入。
|
|
244
|
+
- 回退:`enabled: false` 并重启;已写文件保留,可手动删除。
|
|
245
|
+
- 面板:活动流的「谁在干什么」页**不在 1.6.8 配套的面板 0.2.6 内**(面板侧后续版本 0.2.7 提供);
|
|
246
|
+
longlive 包只负责写盘与增量注入。
|
|
247
|
+
|
|
222
248
|
### 1.6 Router 1.1.0(默认关闭,50 键)
|
|
223
249
|
|
|
224
250
|
全部键都在插件 `config` 里,`routerEnabled` 只认字面 `true`;改完重启宿主才生效。
|
|
@@ -380,7 +406,8 @@ config:
|
|
|
380
406
|
|---|---|---|---|---|
|
|
381
407
|
| `workers.enabled` | boolean | `false` | `true` / `false` | 关闭时三个 worker 工具都返回 unavailable;打开后仍受宿主 `subagents` 服务是否存在约束 |
|
|
382
408
|
|
|
383
|
-
整块不在 `src/config.js` 的 Config schema
|
|
409
|
+
整块不在 `src/config.js` 的 90 节点 Config schema 里(1.6.0 为 80;1.6.4 的 `hotTruncate`
|
|
410
|
+
块 +5,本次活动流 `sharedBrain.activity` 再 +5;透传键保持 schema 面稳定),属于透传配置;Cordis
|
|
384
411
|
的 schema 校验保留未知键,运行时由 `src/tools.js` 的注册包装读取。
|
|
385
412
|
|
|
386
413
|
---
|
package/docs/DEV.md
CHANGED
|
@@ -11,12 +11,12 @@
|
|
|
11
11
|
五步版见 [QUICKSTART.md](../QUICKSTART.md)。最短路径(tgz 已在手,CLI 不需要会话权限):
|
|
12
12
|
|
|
13
13
|
```powershell
|
|
14
|
-
& $DSH plugin --profile <profile> add "file:C:/path/to/jjh32456-dsh-longlive-1.6.
|
|
15
|
-
& $DSH plugin --profile <profile> list --depth 0 # 应显示 @1.6.
|
|
14
|
+
& $DSH plugin --profile <profile> add "file:C:/path/to/jjh32456-dsh-longlive-1.6.8.tgz"
|
|
15
|
+
& $DSH plugin --profile <profile> list --depth 0 # 应显示 @1.6.8
|
|
16
16
|
```
|
|
17
17
|
|
|
18
18
|
`$DSH` 指 DSH 安装目录里的 `resources\runtime\cli\bin\dsh.cmd`(干净机器的 PATH 里通常没有它)。
|
|
19
|
-
从源码安装则先 `& $NODE scripts\pack.mjs --expect-version 1.6.
|
|
19
|
+
从源码安装则先 `& $NODE scripts\pack.mjs --expect-version 1.6.8`;`$NODE` 指 DSH 安装目录里的
|
|
20
20
|
`resources\runtime\primary-runtime\dependencies\node\bin\node.exe`(>=20)。
|
|
21
21
|
会话内也可以 `plugin_manager action=install_bundle target="file:<绝对路径>"`,但那需要
|
|
22
22
|
danger-full-access 或逐次批准。
|
package/docs/FAQ.md
CHANGED
|
@@ -8,13 +8,13 @@
|
|
|
8
8
|
|
|
9
9
|
大概率是正常的。这个插件**没有自带界面**,默认 `mode: "log"` 也只会在后台写一行评估日志,不会弹窗、不会剪东西。
|
|
10
10
|
|
|
11
|
-
按顺序确认:`dsh plugin --profile desktop list --depth 0` 有 `@jjh32456/dsh-longlive@1.6.
|
|
11
|
+
按顺序确认:`dsh plugin --profile desktop list --depth 0` 有 `@jjh32456/dsh-longlive@1.6.8`;doctor 没有硬错误(退出码 0,或只有 engram 缺失导致的 1);重启后新会话里能数到 22 个工具;聊到超过阈值后,`%USERPROFILE%\.dsh\longlive-memory\.longlive\logs\auto-truncate.log` 才出现评估行(默认阈值 300000,所以短时间内没有是正常的)。
|
|
12
12
|
|
|
13
13
|
如果这四样都没有,先看宿主启动 stderr 有没有 `1 entry did not activate`。
|
|
14
14
|
|
|
15
15
|
## 2. 侧栏没有「潜望镜」?
|
|
16
16
|
|
|
17
|
-
「潜望镜」不是 longlive 本体自带的,它来自独立可选包 `@jjh32456/dsh-longlive-panel@0.2.
|
|
17
|
+
「潜望镜」不是 longlive 本体自带的,它来自独立可选包 `@jjh32456/dsh-longlive-panel@0.2.6`。不装那个包,就永远不会有这个侧栏——这不是故障。
|
|
18
18
|
|
|
19
19
|
装了还没有,按顺序查:
|
|
20
20
|
|
|
@@ -86,13 +86,13 @@
|
|
|
86
86
|
& $DSH plugin --profile desktop remove @jjh32456/dsh-longlive
|
|
87
87
|
```
|
|
88
88
|
|
|
89
|
-
然后重启宿主,`list` 里不再出现即成功。卸载**不会**删 `longlive-memory`、会话的 `.bak-YYYYMMDD`、`session.v4.jsonl.zstd.archive/` 和 `.longlive/` 状态文件;要清就自己确认后手动删。面板是独立可选包 `@jjh32456/dsh-longlive-panel@0.2.
|
|
89
|
+
然后重启宿主,`list` 里不再出现即成功。卸载**不会**删 `longlive-memory`、会话的 `.bak-YYYYMMDD`、`session.v4.jsonl.zstd.archive/` 和 `.longlive/` 状态文件;要清就自己确认后手动删。面板是独立可选包 `@jjh32456/dsh-longlive-panel@0.2.6`,得单独 `remove @jjh32456/dsh-longlive-panel`。
|
|
90
90
|
|
|
91
91
|
## 10. 怎么确认它真的生效了,而不是「装了个寂寞」?
|
|
92
92
|
|
|
93
93
|
四个独立证据,至少看到两个:
|
|
94
94
|
|
|
95
|
-
1. `plugin list` 显示 `@1.6.
|
|
95
|
+
1. `plugin list` 显示 `@1.6.8`;
|
|
96
96
|
2. doctor 没有硬错误(0,或只有 engram 缺失导致的 1);
|
|
97
97
|
3. 新会话能调用 `session_health`,返回里有 `sessionPath` / `events` / `visibleMessages`;
|
|
98
98
|
4. 聊到超过阈值后,`auto-truncate.log` 出现评估行(`action` 是 `planned` / `dryrun-planned` / `none` 都算插件在评估)。
|
package/docs/FEATURES.md
CHANGED
|
@@ -1,7 +1,16 @@
|
|
|
1
|
-
# 1.6.
|
|
1
|
+
# 1.6.8 可选能力与开关
|
|
2
2
|
|
|
3
|
-
1.6.
|
|
4
|
-
|
|
3
|
+
1.6.8 在 1.6.7 之上并入**共享大脑活动流**(`sharedBrain.activity`,默认关闭,与
|
|
4
|
+
`presenceBus` 解耦)与**共享板状态诚实性修复**(board/status/live 的 running 计数、焦点
|
|
5
|
+
新鲜度、turn 状态、开机卡时效)。热截断行为与 1.6.7 相同。
|
|
6
|
+
|
|
7
|
+
1.6.7 是热截断加固版:turn===0 / 无 turn 记录的组不再永久屏障(含 system/developer 指令的
|
|
8
|
+
原地保留,只含普通消息的随旧前缀整组归档);中段缺 turn/end 的轮只有最后启动的当前轮不可切;
|
|
9
|
+
新增 onNoPlan 拒绝原因通道,切不了会写 `hot-truncate: 未切(reason)`,不再静默零进展。
|
|
10
|
+
1.6.5 / 1.6.6 的热截断热修复(被宿主重启中断的会话不再永久失去自动切刀)继续生效;其余行为与 1.6.4 相同。
|
|
11
|
+
|
|
12
|
+
1.6.8 的活动流默认关闭、失败静默,与 `presenceBus` 完全独立;开关、预算与回退见下文
|
|
13
|
+
「`sharedBrain.activity`」与 [CONFIG.md](CONFIG.md) §1.5b。
|
|
5
14
|
|
|
6
15
|
1.6.4 在 1.6.0 改名基座之上加入**热截断**(cut-only `CompactionEngine`:只切已完成且早于
|
|
7
16
|
保留窗口的整轮,不调 LLM,原始事件不动,只追加一条覆盖率指针;默认 `mode=cut`,自动切达到
|
|
@@ -11,7 +20,8 @@
|
|
|
11
20
|
|
|
12
21
|
1.6.0 是**改名 + 普适化 + 设置页 + 安全默认**版:包名 `dsh-session-longlive` →
|
|
13
22
|
`@jjh32456/dsh-longlive`,显示名「久视」(英文 Longlive)。在这条改名基座上并入可移植记忆根、
|
|
14
|
-
Config schema(1.6.0 为 80 节点,1.6.4 增加 `hotTruncate` 块后为 85
|
|
23
|
+
Config schema(1.6.0 为 80 节点,1.6.4 增加 `hotTruncate` 块后为 85,本次活动流
|
|
24
|
+
`sharedBrain.activity` 再 +5 为 90)与设置页客户端,并把 `autoTruncate` / `routerRuntime` / `worker_*`
|
|
15
25
|
三个默认值收到发布口径(见下文与 [CONFIG.md](CONFIG.md))。迁移步骤见
|
|
16
26
|
[MIGRATION-1.6.0.md](MIGRATION-1.6.0.md)。22 个工具的默认表面不变;D2/D6 仍默认关闭。
|
|
17
27
|
全量测试 **1063 passed / 0 failed / 9 skipped**。
|
|
@@ -66,6 +76,7 @@ fail-closed 到「不重复注入」并只 warn 一次;30 天以上的 marker
|
|
|
66
76
|
| `autoRecall.enabled` | `false` | `agent/pre-step` + `session/event` + `session/disposed` | 从 memoryRoot 的卡片里挑相关段落,作为一条不可见上下文注入本轮 |
|
|
67
77
|
| `identityCard.enabled` | `false` | `agent/pre-step` | 把 `<memoryRoot>/STATE.md` 的开机卡插到第一条真人消息之后 |
|
|
68
78
|
| `presenceBus.enabled` | `false` | `session/event` | 在 turn/end(completed)时消费本会话的 bus 收件箱并落 spool |
|
|
79
|
+
| `sharedBrain.activity.enabled` | `false` | `session/event` + `agent/pre-step` | turn/end 写一条本回合活动到 `.longlive/board/activity.jsonl`;pre-step 只把其他会话新增的活动注入本轮(≤5 条 / 整条 ≤300 字,无新增零 token) |
|
|
69
80
|
| `autoMaintenance.enabled` | `false` | 一条 unref 定时器(无 turn hook) | 每日本地日期变化时跑 consolidate 报告 + forget dry-run 待确认清单 |
|
|
70
81
|
| `metrics.enabled` | `true` | `session/event` | 每轮 turn/end 写一行四层账到 `.longlive/metrics/turns.jsonl`;只度量,不裁剪 |
|
|
71
82
|
| `routerEnabled` | `false` | RouterService + 4 个 `router_*` 工具(`routerProposalEnabled` 时再 +3) | 进程内后台服务:tick、预算账本、提案闸门、L1/L2 活体板、L4 归并、可选唤醒 |
|
|
@@ -103,6 +114,11 @@ config:
|
|
|
103
114
|
presenceBus:
|
|
104
115
|
enabled: false
|
|
105
116
|
pollMs: 3000
|
|
117
|
+
sharedBrain:
|
|
118
|
+
activity:
|
|
119
|
+
enabled: false
|
|
120
|
+
injectMaxChars: 300
|
|
121
|
+
maxItems: 5
|
|
106
122
|
autoMaintenance:
|
|
107
123
|
enabled: false
|
|
108
124
|
consolidate: true
|
|
@@ -154,6 +170,21 @@ config:
|
|
|
154
170
|
对每条消息 ack。写 spool 失败就不 ack,宁可重放也不丢消息。
|
|
155
171
|
- 可用 `presenceBus.root` 显式指定 bus 根目录(测试用)。
|
|
156
172
|
|
|
173
|
+
### `sharedBrain.activity`(共享大脑活动流,默认 `false`)
|
|
174
|
+
|
|
175
|
+
- 工具/轮次事件到达时用本地规则(不调 LLM)从「本轮用户实质消息 + 助手结论 + 最近工具动作」
|
|
176
|
+
生成一条 ≤140 字的活动,写进 `<memoryRoot>/.longlive/board/activity.jsonl`;同 key ≤1 条/10s;
|
|
177
|
+
- 同会话最近 10 条内 `key` 相同或文本相似度 ≥0.8 时只 `count+1` / 更新 `last_at`;
|
|
178
|
+
同 key 连续 3 次或累计 10 次压成一条「阶段:…(N 次,最近 …)」;
|
|
179
|
+
- 每个会话在 `.longlive/bridge/<sessionId>.activity.json` 记 `lastSeenSeq`,每次
|
|
180
|
+
`agent/pre-step` 只注入 `seq > lastSeenSeq` 的**其他会话**活动,最多 5 条、总长
|
|
181
|
+
≤300 字(含固定头尾);没有新增就**零 token、零写盘**;blocked 优先;
|
|
182
|
+
- 失败静默,不影响 turn;隐私门复用 `src/recall/privacy.mjs`;写盘用跨进程锁 +
|
|
183
|
+
tmp/fsync/rename,两个会话并发写不会丢行或撞 seq;
|
|
184
|
+
- 与 `presenceBus` 完全独立,关掉一个不影响另一个;回退:`enabled: false` 后重启;
|
|
185
|
+
- 面板:活动流的「谁在干什么」页不在 1.6.8 配套的面板 0.2.6 内(面板侧后续版本 0.2.7 提供);
|
|
186
|
+
longlive 包只负责写盘与增量注入。
|
|
187
|
+
|
|
157
188
|
### `autoMaintenance`(B1/B2,默认 `false`)
|
|
158
189
|
|
|
159
190
|
- 打开后只注册一条 `unref` 的单次 `setTimeout`,指向下一个**本地**午夜(+1s);
|
|
@@ -211,7 +242,7 @@ config:
|
|
|
211
242
|
`superseded`;每会话每日 1 次、全局每日 5 次。
|
|
212
243
|
- **唤醒**:`routerWakeEnabled` 默认 false;只对 idle/waiting 根会话,600s 冷却、每日
|
|
213
244
|
20 次、`recentWakeIds` 去重,写 `wake-ready.jsonl` 交给外部消费。
|
|
214
|
-
- **面板只读**:`@jjh32456/dsh-longlive-panel@0.2.
|
|
245
|
+
- **面板只读**:`@jjh32456/dsh-longlive-panel@0.2.6` 只读 status/board,不做 approve/apply/propose。
|
|
215
246
|
|
|
216
247
|
Router 的 50 个配置键见 [CONFIG.md](CONFIG.md);契约测试在 `test/router-1100/` 与
|
|
217
248
|
`test/router-l1-l2.contract.test.mjs`。
|
package/docs/OPERATIONS.md
CHANGED
|
@@ -273,7 +273,7 @@ Copy-Item -LiteralPath $BAK -Destination $S -Force
|
|
|
273
273
|
| 应用 exe | 不要假设应用装在固定目录 | `autoTruncate.appExe` 写本机实际路径;runner 也会用 `request.app.exe` |
|
|
274
274
|
| node | 本机 `node` 可能不在 PATH | runner 依次找 `DSH_NODE`、应用运行时目录、PATH;手工调 CLI 时用应用自带 node |
|
|
275
275
|
| sessions 根 | runner 默认 `$DSH_HOME/sessions`,否则 `%USERPROFILE%\.dsh\sessions` | 自定义过就用 `-SessionsRoot`;越界会 `SESSION_PATH_OUTSIDE_ROOT`(exit 2) |
|
|
276
|
-
| 面板(@jjh32456/dsh-longlive-panel@0.2.
|
|
276
|
+
| 面板(@jjh32456/dsh-longlive-panel@0.2.6) | 插件配了 `memoryRoot` ≠ 面板读同一个根 | 面板单独配 `memoryRoot`/`sessionsRoot`,或用 `DSH_LONGLIVE_MEMORY_ROOT` |
|
|
277
277
|
| 路径分隔符 | YAML 双引号里的 `\` 是转义 | 用 `/` 或单引号 |
|
|
278
278
|
|
|
279
279
|
跨机器复制记忆库时:先停两边应用,复制后跑 `memory_index`(dry-run)+ `memory_recall` 冒烟;
|
package/docs/QUICKSTART.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
**读完你会得到什么**:从一台已经装好 DSH 的 Windows 机器出发,装好 longlive,用 `dryrun` 看它「打算怎么剪」,再切到 `request`,最后安全地完成第一次真截断,并且知道怎么退回去。
|
|
4
4
|
|
|
5
|
-
> 适合谁:第一次拿到 `jjh32456-dsh-longlive-1.6.
|
|
5
|
+
> 适合谁:第一次拿到 `jjh32456-dsh-longlive-1.6.8.tgz` 的人。全程约 20 分钟,其中真截断那一步应用会自己关闭再打开(VM 实测约 31.5 秒),请挑你不用电脑的时候做。
|
|
6
6
|
>
|
|
7
7
|
> 本文默认 DSH home 是 `%USERPROFILE%\.dsh`;如果你设过 `DSH_HOME`,把命令里的这段整体换掉。
|
|
8
8
|
|
|
@@ -25,14 +25,14 @@ $NODE = '<DSH 安装目录>\resources\runtime\primary-runtime\dependencies\node\
|
|
|
25
25
|
## 1. 装插件:三条命令
|
|
26
26
|
|
|
27
27
|
```powershell
|
|
28
|
-
$TGZ = 'C:/path/jjh32456-dsh-longlive-1.6.
|
|
28
|
+
$TGZ = 'C:/path/jjh32456-dsh-longlive-1.6.8.tgz' # 换成真实绝对路径
|
|
29
29
|
|
|
30
30
|
& $DSH plugin --profile desktop add "file:$TGZ"
|
|
31
31
|
& $DSH plugin --profile desktop list --depth 0
|
|
32
32
|
& $NODE "$env:USERPROFILE\.dsh\profiles\desktop\node_modules\@jjh32456\dsh-longlive\scripts\longlive-doctor.mjs" --profile desktop
|
|
33
33
|
```
|
|
34
34
|
|
|
35
|
-
**你应该看到**:`list` 里出现 `@jjh32456/dsh-longlive@1.6.
|
|
35
|
+
**你应该看到**:`list` 里出现 `@jjh32456/dsh-longlive@1.6.8`;doctor 打印一张表,最后是「全部可选依赖已启用。」或只有 engram 缺失的提示。
|
|
36
36
|
|
|
37
37
|
**报错了怎么办**:
|
|
38
38
|
- `ENOENT` → `file:` 后面必须是**真实存在的绝对路径**,用正斜杠;不要把 `~` 写进去。
|
package/docs/README.en.md
CHANGED
|
@@ -6,7 +6,8 @@ A DeepSeek Harness plugin that keeps a long session healthy: **inspect it, back
|
|
|
6
6
|
- **22 tools** for session health/backup/compaction/truncation, on-demand original-text fetch, memory cards, workers (fan-out is unavailable until `workers.enabled: true`), and the live-session registry.
|
|
7
7
|
- A built-in settings-page companion: `plugins.row.config` under `@jjh32456/dsh-longlive#session-longlive` with seven feature switches (D2/D6/auto-recall/presence bus/background face/daily maintenance/Router). Profiles without a Web server simply get no route.
|
|
8
8
|
- A memory store at `<DSH home>/longlive-memory` (on Windows: `%USERPROFILE%\.dsh\longlive-memory`), created on first start.
|
|
9
|
-
- Optional: the separate read-only panel `@jjh32456/dsh-longlive-panel@0.2.
|
|
9
|
+
- Optional: the separate read-only panel `@jjh32456/dsh-longlive-panel@0.2.6` adds a sidebar named **潜望镜 (Periscope)**. The plugin itself ships no UI.
|
|
10
|
+
- Optional and **off by default**: `sharedBrain.activity` writes one local-rule activity row per turn and injects only unseen rows from other sessions (max 5 rows / 300 chars; zero tokens when nothing is new). Independent of `presenceBus`.
|
|
10
11
|
- Optional and **off by default**: `d2.enabled` trims oversized tool output (the full text is archived), `d6.enabled` freezes a per-task tool allowlist and registers `tool_search`. See [FEATURES.md](FEATURES.md) and [CONFIG.md](CONFIG.md) for enabling, budget and rollback.
|
|
11
12
|
|
|
12
13
|
## Install (3 commands)
|
|
@@ -14,7 +15,7 @@ A DeepSeek Harness plugin that keeps a long session healthy: **inspect it, back
|
|
|
14
15
|
```powershell
|
|
15
16
|
$DSH = '<DSH install>\resources\runtime\cli\bin\dsh.cmd'
|
|
16
17
|
$NODE = '<DSH install>\resources\runtime\primary-runtime\dependencies\node\bin\node.exe'
|
|
17
|
-
& $DSH plugin --profile desktop add "file:C:/path/jjh32456-dsh-longlive-1.6.
|
|
18
|
+
& $DSH plugin --profile desktop add "file:C:/path/jjh32456-dsh-longlive-1.6.8.tgz"
|
|
18
19
|
& $DSH plugin --profile desktop list --depth 0
|
|
19
20
|
& $NODE "$env:USERPROFILE\.dsh\profiles\desktop\node_modules\@jjh32456\dsh-longlive\scripts\longlive-doctor.mjs" --profile desktop
|
|
20
21
|
```
|
package/docs/TROUBLESHOOTING.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# TROUBLESHOOTING.md — 按症状查(1.6.
|
|
1
|
+
# TROUBLESHOOTING.md — 按症状查(1.6.8)
|
|
2
2
|
|
|
3
3
|
用法:先看「症状」,对不上再看「最可能原因」。每条只给**一条**验证命令——先确认判断,再动手。
|
|
4
4
|
「什么时候该停手」比「怎么修」更重要:结构一旦不对,继续重试只会扩大损失。
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
|
|
44
44
|
**症状**:Web GUI 左侧看不到面板入口。
|
|
45
45
|
|
|
46
|
-
**最可能原因**:面板是**独立可选包** `@jjh32456/dsh-longlive-panel@0.2.
|
|
46
|
+
**最可能原因**:面板是**独立可选包** `@jjh32456/dsh-longlive-panel@0.2.6`,这一轮根本没装;
|
|
47
47
|
或者只 `plugin add` 了、没加进 profile 的 `dsh.profile.bundles`,bundle patch 不生效;
|
|
48
48
|
或者当前 profile 不是 `desktop`、宿主没重启。
|
|
49
49
|
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
```
|
|
55
55
|
|
|
56
56
|
**修法**:
|
|
57
|
-
1. 安装独立可选包 `@jjh32456/dsh-longlive-panel@0.2.
|
|
57
|
+
1. 安装独立可选包 `@jjh32456/dsh-longlive-panel@0.2.6`(装法见该包的 `INSTALL.md`);
|
|
58
58
|
2. 在 `$P\package.json` 的 `dsh.profile.bundles` 里加入 `@jjh32456/dsh-longlive-panel`;
|
|
59
59
|
3. 重启宿主,刷新页面。
|
|
60
60
|
(两步缺一不可;只装不加 bundles,patch 不会应用。)
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jjh32456/dsh-longlive",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.8",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"description": "久视(longlive):一个磁盘上的共享大脑,让每个会话都是同一个你——记忆卡、状态卡、开机卡让新会话接上同一段关系与未完成的事;配套会话卫生(热截断/备份/D2/D6 裁剪)与记忆工具(巩固/召回/程序性记忆)。1.6.
|
|
5
|
+
"description": "久视(longlive):一个磁盘上的共享大脑,让每个会话都是同一个你——记忆卡、状态卡、开机卡让新会话接上同一段关系与未完成的事;配套会话卫生(热截断/备份/D2/D6 裁剪)与记忆工具(巩固/召回/程序性记忆)。1.6.8 在 1.6.7 之上并入共享大脑活动流(sharedBrain.activity:事件级活动写入、判重/蒸馏、只带新增的增量注入,默认关闭)与共享板状态诚实性修复(running 计数、焦点新鲜度、turn 状态、开机卡时效);热截断与 1.6.7 相同。",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"dsh",
|
|
8
8
|
"deepseek-harness",
|
|
@@ -55,6 +55,7 @@
|
|
|
55
55
|
},
|
|
56
56
|
"files": [
|
|
57
57
|
"src/*.js",
|
|
58
|
+
"src/activity/*.js",
|
|
58
59
|
"src/compaction/*.js",
|
|
59
60
|
"src/ui/*.js",
|
|
60
61
|
"lib/client.js",
|
|
@@ -142,6 +143,10 @@
|
|
|
142
143
|
"test/packaging.test.mjs",
|
|
143
144
|
"test/v4-hardening.test.mjs",
|
|
144
145
|
"test/feature-flags.test.mjs",
|
|
146
|
+
"test/activity-stream.test.mjs",
|
|
147
|
+
"test/activity-realtime.test.mjs",
|
|
148
|
+
"test/state-truth.test.mjs",
|
|
149
|
+
"test/version-consistency.test.mjs",
|
|
145
150
|
"test/maintenance-schedule.test.mjs",
|
|
146
151
|
"test/host-engine-status.test.mjs",
|
|
147
152
|
"test/metrics.test.mjs",
|
|
@@ -189,11 +194,6 @@
|
|
|
189
194
|
"!runbook.md.bak-*",
|
|
190
195
|
"!**/*.bak-*"
|
|
191
196
|
],
|
|
192
|
-
"scripts": {
|
|
193
|
-
"test": "node test/run-rc.mjs",
|
|
194
|
-
"test:080": "node test/run.mjs",
|
|
195
|
-
"pack": "node scripts/pack.mjs"
|
|
196
|
-
},
|
|
197
197
|
"dependencies": {},
|
|
198
198
|
"optionalDependencies": {
|
|
199
199
|
"onnxruntime-node": "~1.16.3"
|
|
@@ -207,5 +207,10 @@
|
|
|
207
207
|
"@kenz1117/dsh-engram": {
|
|
208
208
|
"optional": true
|
|
209
209
|
}
|
|
210
|
+
},
|
|
211
|
+
"scripts": {
|
|
212
|
+
"test": "node test/run-rc.mjs",
|
|
213
|
+
"test:080": "node test/run.mjs",
|
|
214
|
+
"pack": "node scripts/pack.mjs"
|
|
210
215
|
}
|
|
211
|
-
}
|
|
216
|
+
}
|