Repository navigation
Releases
v1.8.2
1.8.2
- 定位:优先等目标会话真正上屏(
chatSnapshot)再动 DOM;归档会话先unarchiveSession再打开,避免“定位成功后弹回新会话页” - 定位:会话未真正显示时不再谎报「已定位并高亮」
- 定位:按距离大跳滚动,远端轮次不再原地打转;
loadThrough复查覆盖范围 - 定位:上下文注入只匹配 context 行,不再落到同轮的用户气泡
- 搜索:开启长文时改为内联扫描,避免把大语料克隆进 Worker(5.8s → 亚秒)
- 索引:
INDEX_VERSION=5,旧分片强制重建,分类修复才会真正生效 - 界面:「清空全部」改为可见按钮;长文单独成行;面板不透明
- 测试:新增
run-tests.mjs,按退出码判定,任一失败整体非 0
v1.8.1
v1.8.0
v1.7.1
v1.7.0
v1.6.1
• 修复以下问题
| 报告项 | 处理 | 测试兜底 |
|---|---|---|
| P1 session/event 参数 | 取 session.id + 非字符串防御 | test-events.mjs(旧代码必挂) |
| P1 用户输入/思考链定位 | 改为“最小包含 needle 的元素”通用叶子匹配,不再依赖标签名 | 定位场景 21 → 23(新增 div 气泡、div 思考体) |
| P2 读失败的会话被永久缓存为空 | 错误壳带 retryAt 指数退避重试 | 真实语料测试 |
| P2 jump.turnOnly 缺 key | 内联 ZH/EN 补齐 | test-i18n.mjs(108 keys 全命中) |
| P2 test-anchor 常量漂移 | 引用 __test.MAX_CHUNKS | 真实语料 21 会话 / 12 967 docs 全过(之前 4 条失败) |
| P2 短查询双次小写+indexOf | 合并为一次扫描 | core/stress |
| P2 同名文件跨轮去重 | 改为按 Turn 去重 | core |
| P2 只删会话仍重写全部分片 | 空 dirty 只写 manifest | 代码 |
| P3 Worker 空数组返回 [] | 数量校验 | worker 测试 |
| P3 turn:null 变 Turn 0 | 显式 null 判断 | 代码 |
| P3 每次搜索 await 42KB 写盘 | 改 saveStateSoon | 代码 |
| P3 resolveSaved 丢行、total 不变 | dropped 计数修正 | 代码 |
| 无 CI / locale 死文件 / files 里的 logo.png | 加 GitHub Actions、删死文件、修 files | CI |
• 完整更新日志v1.5.0...v1.6.1
v1.6.0
v1.5.0
首个公开版本V1.5.0发布
FlashAnchor / 闪电锚点
A DSH Web GUI plugin that searches the entire stored corpus of every session:
assistant reasoning, answer text, tool calls and results, output files, user
prompts, and input files. Clicking a hit jumps to the block that contains it
(paragraph, code fence, file card, or tool card), expands folded disclosures,
and highlights only that block.
Features
- Block anchors: every result carries
{turn, step, messageId, toolCallId, blockIndex, seatIndex, blockKind, chunk}; the client computes the chat node
key instead of guessing from text. - Sharded Worker pool: the thread slider (1-8) selects the number of
worker_threads; each worker owns a slice of the corpus. A worker crash or
OOM (256 MB heap cap) degrades to the single-threaded scan. - Materialized views: saved searches persist only result IDs, per-session
sequence snapshots, and page metadata (no body text). Pages are rebuilt from
the document index; history and snapshots share one id, so deleting a row
drops the snapshot and its in-memory page. LRU cap: 50. - Near-memory search: an identical query signature returns from memory for
60 s and aborts an in-flight request. - Session scope: search all sessions or one session; the selection can be
cleared. Query already matches file names, so there is no separate suffix
filter. - Appearance: adjustable frosted-glass blur/density, persisted locally.
Install
From this directory:
node --check index.js
node test-core.mjs
$env:npm_config_cache = "$PWD/.npm-cache"
npm pack
# install the resulting flash-anchor-*.tgz into your DSH profile's node_modules
# and add flash-anchor to the profile bundle list, then restart DSH DesktopThe Host half needs a DSH restart (the client bundle reloads with the page).
Architecture
| File | Role |
|---|---|
index.js |
Host plugin: session surface index, search, materialized views, state |
search-core.js |
Shared matching/scoring/snippet + doc address |
search-pool.js |
Worker pool, sharding, OOM/timeout degradation |
worker.js |
One corpus shard, scans on request |
client.js |
Dialog, settings, results deck, scroll router |
locale/*.json |
UI dictionaries |
All indexing stays on the local Host. The plugin never sends queries or session
content to a network service, contains no API keys, and writes its index under
$DSH_HOME/flash-anchor/.
Tests
node test-core.mjs
node test-state.mjs
node test-prefs.mjs
node test-order.mjs
node test-worker.mjs
node --expose-gc test-memory.mjs
node test-locate.mjs
node test-anchor.mjs # skips when no session store is present
node test-stress.mjsDevelopment
Designed and implemented by DeepSeek-V4.1-Flash-1017, an AI coding agent
running in DeepSeek Harness, for BR-PC. Product direction, review, and
acceptance testing were done by BR-PC. The repository contains only plugin
source and tests.
License
MIT. See LICENSE.
Full Changelog: https://github.com/BR-PC/dsh-flash-anchor/commits/v1.5.0