-
Notifications
You must be signed in to change notification settings - Fork 1
Session Query zh
上游会话搜索和查询系统在 Edge 中的适配。
上游参考:会话查询文档
会话查询提供跨会话语料库的全文搜索。由两个包组成:
-
dsh-session-query — 服务定义:查询词汇表、搜索文档提取(
buildSessionEventSearchDocuments)、session/event 过滤和关系追踪。 - dsh-session-query-sqlite — SQLite FTS 提供者:维护随每个事件更新的全文索引,支持带游标分页的跨 session 排名搜索。
ctx.sessionQuery 服务由 apiproxy 层的 session.search 消费,后者处理结果去重、过期代重启和逐提供者页大小探测。
Edge 没有安装上游的 SessionQueryEngine 或 SQLite FTS 提供者。searchApiSessions() 实现了有界线性扫描:
- 扫描最近 32 个 session(
MAX_SEARCH_SESSIONS) - 每个 session 加载最多 512 个事件(
MAX_SEARCH_EVENTS_PER_SESSION)或 256 KB - 使用上游的
buildSessionEventSearchDocuments()提取搜索文档 - 与规范化查询字符串匹配
复用了上游的文本提取逻辑,但完全绕过了 FTS 索引。
- 搜索文档提取
buildSessionEventSearchDocuments()— 上游逻辑,原样复用 - 搜索结果 schema(带 snippet 的
SessionSearchItem)— 上游格式 - 暴露给客户端的
session.searchAPI 契约
每次搜索最多扫描 32 session × 512 事件 = 16,384 个事件。事件从 DO SQL(活跃 session)或持久化(冷 session)加载。线性扫描无索引——延迟随 session 数量和大小缩放。对于只有几十个 session 的典型部署,在几十毫秒内完成。
超过 512 事件的 session 被完全跳过(标记为 hasMore)。仅搜索最近 32 个 session。没有跨 session 排名——结果按 session 时间倒序返回,不按相关性排序。
| 组件 | 分类 | Edge 代码 |
|---|---|---|
| 文本提取 | 复用 | 上游 buildSessionEventSearchDocuments() |
| 搜索引擎 | 替换 | searchApiSessions() 线性扫描 |
| FTS 索引 | 未安装 | — |
关键观察:Edge 用简单性换搜索质量。避开了 FTS 索引及其 SQLite 依赖;对于 session 数量有限的个人单用户部署,搜索"够用"。文本提取是上游代码,后续升级到完整 FTS 只需安装提供者插件。
**评估 DO SQL FTS。**Durable Objects 支持 SQLite(含 FTS5)。上游的 dsh-session-query-sqlite 提供者可能可以直接安装,前提是其 SQLite 访问模式与 DO 的 SQL API 兼容。这将用索引搜索替换线性扫描,解除 32 session 和 512 事件的限制。
- Home
- Architecture
- Core & Scope
- Session & Persistence
- Model & Context
-
Execution & Tools
- Tools
- Bash
- Subprocess 🚫
- PTY Session 🚫
- Background Jobs 🚫
- Filesystem
- LSP Navigation 🚫
- Code Runtime 🚫
-
Web Access
⚠️ -
Skills
⚠️ - Workflow 🚫
- Subagent 🚫
-
Policy & Interaction
- Goal
- Approval 🚫
- Permission Presets 🚫
-
Sandbox
⚠️ - Plan Mode 🚫
- User Interaction 🚫
- Commands 🚫
- Schedule 🚫
- Message Feedback 🚫
- Platform & Access
- Development
- 首页
- 架构
- 核心与作用域
- 会话与持久化
- 模型与上下文
- 执行与工具
- 策略与交互
- 平台与接入
- 开发