Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 23 additions & 9 deletions docs/ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -587,7 +587,15 @@ conversationId,Fork/编辑重发建立新 conversation;恢复不再次提
共享消息解析依赖基础校验,基础校验不反向调用总解析器。两种模型协议共用
`customModelValues` 的常量、类型与校验规则,消息格式和公开解析入口保持不变。

### SDK 0.9.1 设置与恢复
### SDK 0.10.0 设置与恢复

Process transport 直接收发 `JsonRpcMessage` 对象,不重复 JSON 编解码。
普通 compact 保留原会话与租约,清除旧分页窗口后重读历史;显式 `/handoff` 使用 SDK
handoff 创建后继会话,才写入 lineage 并迁移绑定。原地压缩保留会话累计与上一轮用量。
Spec 交接仅接受规划会话下的 `spec_handoff_session_created.newSessionId`,并等待用户
批准 `proceed_new_session`;不再从其他会话的 turn-completed 通知猜测后继。
Script 权限作为一个批次批准或拒绝,展示子调用、位置与风险,超长内容明确标记截断;
RecommendMission 复用任务确认卡。默认设置仍只开放应用现有字段,不随 SDK 扩展自动开放云同步设置。

模型元数据由 Runtime 的正式 `listModels` 目录投影到共享契约,禁用检查保留在 Host
应用边界,Webview 只负责显示与交互。系统提示使用独立请求/确认消息和 Host 用户配置
Expand Down Expand Up @@ -674,7 +682,7 @@ SuggestionManager 的单个待接受项。Tab 先跳转再接受,editor.edit
`DroidRuntime` 是 Host 面对的接口,`FactoryDroidRuntime` 管理执行和 session 适配。
SDK 负责 transport/RPC/协议转换;项目只在以下已知边界补充产品所需行为。

- SDK 0.9.1 通过公开 `DaemonSessionController`、`MultiSessionStateManager` 连接,
- SDK 0.10.0 通过公开 `DaemonSessionController`、`MultiSessionStateManager` 连接,
不访问 `.sessions.controller`。`sessionHandle.ts` 管理 attached handle、替换与 detach;
权限路由缺 handler 默认取消。detach 不等于关闭 backend,关闭失败不报告成功。
- `windowDaemonPool.ts` 给每个主聊天分配 daemon/IDE relay,`routedDaemon.ts` 按
Expand Down Expand Up @@ -704,13 +712,19 @@ SDK 负责 transport/RPC/协议转换;项目只在以下已知边界补充产
- `ideDaemonFeatures.ts` 为 CLI 0.228 生成独立 feature snapshot,覆盖
`shared_process_agents=false` 以保留 IDE 初始化;全局缓存不改,其他 flags/configs
在该 daemon 生命周期内一起冻结,登记移除才清文件。依赖 CLI 私有行为,升级必须复核。
- `persistedSessionMessages.ts` 只读已核实的 version-2 JSONL,以固定边界/文件身份
验证并复用 SDK 转换。未知格式/不稳定读取回退 daemon 分页/Process,不改原文件。
`asyncHistoryProjection.ts` 让出长投影执行;持久历史 `SessionHistoryReader` 在复用 Worker 中
读取、解析、修复并投影,只回传受限展示数据与分段耗时;目录 `SessionCatalogReader` 复用 Worker,
不增结果缓存。持久日志中的同步工作在历史 Worker 执行;不支持格式的 API 回退仍有
单消息解析成本,不能承诺固定延迟上界。历史先以只读状态展示,连接握手与恢复
检查点完成后才 ready;页面等待遮罩只覆盖尚未收到目标历史的阶段。
- daemon 聊天历史使用官方 `getMessagesPage` 的 `messages/hasMore/nextCursor`,
默认只读最近 100 条原始消息;超出展示预算的页缩小官方请求大小,不先扫完整日志。
controller 设置 `defaultMessageLimit: 100`,同时保留 `loadAllMessages: false` 兼容补丁:
SDK 0.10.0 非 CLI 加载仍默认要求完整消息,单改页大小不能替代该补丁。
`SessionHistoryWindow` 保留至多三页阅读窗口,缓存按六页/32 MiB 淘汰非窗口页,
保留页位置供向上、向下重新读取;工具结果跨页按调用 ID 定位来源页并补齐。
`asyncHistoryProjection.ts` 继续负责让出长投影与隐私筛选;消息 ID 不依赖分页内下标。
Host 的 `history.window` 与实时 transcript 分离,版本、请求代次和会话身份隔离迟到响应。
压缩/交接前驱按需续页,导出和子任务证据显式遍历分页;子任务查看限定已确认调用的原始消息 ID。
阅读错误保留当前窗口并提供重试,不自动切换 JSONL 或 Process。
Process 模式保留独立快照读取;`persistedSessionMessages.ts` 只服务按需操作证据与目录定位,
已删除聊天专用历史 Worker,不改写或迁移官方历史文件。目录 Worker 不变。
历史先以只读状态展示,连接握手与恢复检查点完成后才 ready。
- Context meter 的系统提示调整取自已核对 CLI,SDK 未提供同等公共常量;
最近调用用量与字符估算分开,压缩只有明确 SDK 阶段才显示,自动压缩仍属于 Droid。
- Rewind 已写文件而 attach 失败时只重试接管后继,避免二次恢复;待接管标记仅在
Expand Down
10 changes: 8 additions & 2 deletions docs/DESIGN.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,11 @@
- 添加模型上限一行的模型选择器随名称收紧,与 Token 输入框及添加按钮整体靠右;
空余宽度不分配给短模型名,长名称仍受可用空间约束。
- 正文和操作分层;工具详情按需展开,不为单个省略号、状态或说明额外占一行。
提示只说明当前行动需要知道的内容,错误保留可恢复原因。主聊天顶部的历史裁剪说明与“显示更早的消息”合并为两端渐隐的单行细分割线,内联展开动作平时与辅助文字同色,悬停时通过轻量胶囊底色、微光边与上箭头缓动过渡,不使用底边下划线或全宽按钮。
提示只说明当前行动需要知道的内容,错误保留可恢复原因。聊天与只读查看器接近已加载顶部时自动读取旧页,
不使用“显示更早的消息”或 60/+120 本地窗口;过程列表也不再通过该按钮隐藏已加载项目。
历史状态区只显示加载中、失败重试或已到最早消息,不把未读取历史称为丢失/截断。
插入或卸载页以稳定消息 ID 和视口偏移保持阅读位置,沿用现有虚拟列表;单页安全预算不充当会话访问上限。
历史窗口与实时回复分离,阅读旧页时不自动跳到新回复;向下续读或主动返回最新消息后才接回实时尾部。
- 主聊天的运行与停止状态(“Droid 正在工作/回答”、停止中 `Stopping…`、压缩与等待子代理提示)显示在底部 Composer 输入框的占位提示位置:激活且未输入内容时旋转显示,输入草稿时自动隐藏,结束后消失并恢复“继续提问”占位文字。恢复文件、未发送草稿、附件准备、引用和临时运行提示继续使用 `TranscriptView.statusContent`;切换会话清除旧会话回执,具体工具错误仍附在对应工具结果中。
- 最新活动独立显示在历史下方,后续活动到达时旧条目进入历史,不重复显示或计数;只有一条时不显示空历史入口。
“执行过程”标题后紧接历史数量,保留更早仍运行工具的计数。AI 正文按时间顺序留在过程组之间,正文前的组全部归入历史。
Expand Down Expand Up @@ -108,8 +112,10 @@
不清除范围外的已选值。继承项存在时不重复堆空列表说明;加载失败不能伪装成无结果。
- 搜索保留空格编辑、IME、方向键、Tab 与 Escape。菜单开合和焦点返回交给 Radix。
主聊天、计划、BTW 模型及“+”菜单搜索框聚焦时保持分隔线原色,不加亮底线。
- Fast、Context 不复制参考产品的开关。SDK 0.9.1 的压缩模型无独立推理强度;升级后
- Fast、Context 不复制参考产品的开关。SDK 0.10.0 的压缩模型无独立推理强度;升级后
以该操作实际契约重新核对,不从模型名称推断能力。
- `/compact` 与 `/compress` 在当前会话原地压缩;`/handoff` 明确创建后继会话。
只有后继身份变化才切换绑定,原地压缩不重置会话累计与上一轮用量。

## 管理页

Expand Down
5 changes: 5 additions & 0 deletions docs/PLAN.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,12 +72,17 @@

- 连接:旧后台登记、PID 复用、长时间空闲、短断流、运行中重载与连续切换。
分别记录目录、历史、IDE 握手与页面渲染,确认同一请求只提交一次。
SDK 0.10.0 升级保留 IDE feature snapshot 与有界历史加载补丁;后续按实际 CLI
行为复核能否移除,以及上下文预留量是否仍匹配。当前未证明这些兼容措施已过时。
- 多聊天:当前同工作区执行互斥;等待其他会话时的状态提示仍需处理。
不将当前串行限制直接改成并发执行,需先确定调度与文件归属。
- 恢复与停止:Stop 未确认时保留锁定和重试;Restore 成功而后继会话接管失败时,
重试只接管、不重复恢复。跨 Reload 的待接管状态仍需验证。
- 聊天体验:长内容、离底阅读、吸顶问题、嵌套滚动、IME、附件与队列草稿;
BTW 的关闭重开、图片/独立模型、接受后清稿和超时未确认。
- 历史分页:当前 daemon 1.2.0 的静态长会话与新增消息后旧游标续读已实测;
新分支仍需在运行新版 Host 的真实页面验收连续双向翻页、图片/折叠高度变化、
压缩/回退及长时间生成中切换。不得用旧版 Host 页面或 DOM 单测冒充该验收。
- Review:真实操作归因、缺补丁、长 Diff、迟到读取与版本失效;Undo 的内容冲突、
多文件失败补偿、Restore 与 Git Commit 按明确目标在隔离数据上验证。
- Mission 与管理写操作:Worker 生命周期、原审批保留、模型发现/保存/验证、
Expand Down
Loading