系统优化专项
系统优化专项

系统优化专项

优化清单 · 方案 · 优先级 · 严格区分【已实现/具备基础/建议补齐】

📑 返回索引:项目文档索引

优化总览表

序号 优化方向 当前状态 证据强度 文档价值 系统适配方向 推荐优先级
1 Session 运行态持久化 具备基础条件 高(源码 TODO 明确) 高 可靠性优先 S
2 Provider 重试与重复工具调用上界 具备基础条件 高(源码 TODO 明确) 高 稳定性 S
3 Session Drain 集群化(多节点 ownership) 建议补齐 高(源码 TODO 明确) 高 平台化 A
4 事件流断线自动重连 具备基础条件 中(设计决策明确拒绝自动重连) 中 可用性 A
5 Cache Policy 协议覆盖扩展 具备基础条件 中 中 成本优化 A
6 Managed Tool Output 保留策略治理 已实现 高(truncate.ts) 中 工程治理 B
7 旧版 SDK 迁移收尾 具备基础条件 高(sdk-next 注释) 中 工程治理 A
8 会话列表大页查询与索引优化 建议补齐 低(未发现专项优化) 中 性能优化 B
9 Provider 兼容性测试扩展 具备基础条件 中(仅部分协议有测试) 高 生态中立 S
10 嵌入式 Host 多实例支持 建议补齐 中(CONTEXT.md 开放问题) 中 平台化 B

单条优化文档

优化点 1:Session 运行态持久化

  • 优化分类:稳定性优化 | 当前状态:【具备基础条件】 | 优先级:S
  • 原始问题:进程崩溃后无法区分”中断的 drain”与”正常空闲”,恢复时只能依赖 admitted/promoted seq 推断,busy/retrying/interrupted 等运行态丢失。
  • 现有源码情况:packages/core/src/session/runner/llm.ts 注释明确列出未落地项:”Mark busy, retrying, idle, interrupted, or terminal-failure status durably”;SessionExecution 的 drain 无持久身份。
  • 完整优化方案:为 Session 增加 durable 运行态字段(status + 上次活动 seq),在 Drain 生命周期关键点(启动/完成/中断/失败)原子更新;恢复流程读取运行态决定续接或空闲。
  • 方案取舍:以每次状态写入代价换取崩溃恢复准确性;可用”状态变更事件 + 投影”方式减少直写。
  • 文档标准描述:可表述为”建议将运行态纳入持久化,以支撑更精确的崩溃恢复语义”。不可声称”已支持多节点故障转移”。
  • 局限与风险:需同步演进 SessionExecution 接口与投影逻辑,改动面较大。

优化点 2:Provider 重试与重复工具调用上界

  • 优化分类:稳定性优化 | 当前状态:【具备基础条件】 | 优先级:S
  • 原始问题:同一 Provider 轮次无限重试、重复相同工具调用可能造成失控循环(费用/时间爆炸)。
  • 现有源码情况:packages/core/src/session/runner/llm.ts TODO:”Bound provider retries and repeated identical tool calls”;SessionRetry.policy(opencode 包)已有基础策略。
  • 完整优化方案:为 Provider 调用引入指数退避 + 最大重试次数(可配置);为相同工具签名调用引入会话级去重计数与上限,超限提示用户或切换策略。
  • 方案取舍:重试上限过低影响弱网可用性,过高放大故障;需按 Provider 与工具类型差异化配置。
  • 局限与风险:识别”等价工具调用”本身有成本(参数比较),需权衡。

优化点 3:Session Drain 集群化(多节点 ownership)

  • 优化分类:平台化 | 当前状态:【建议补齐】 | 优先级:A
  • 原始问题:Drain 为进程本地协调,多节点部署无法接管彼此 Session,无法支撑分布式场景。
  • 现有源码情况:packages/core/src/session/runner/llm.ts TODO:”Replace local ownership with durable multi-node ownership when clustered”;SessionRunCoordinator 明确”process-local”。
  • 完整优化方案:引入 durable lease/ownership 表 + 心跳续约;Drain 前获取 ownership,失败者见 lease 过期接管;事件系统天然支撑(durable event + replay)。
  • 方案取舍:以基础设施复杂度换取横向扩展能力;当前单机产品形态下价值有限。
  • 文档标准描述:标注为【可扩展设计】,不可作为已实现能力写入。

优化点 4:事件流断线自动重连

  • 优化分类:可用性优化 | 当前状态:【具备基础条件】 | 优先级:A
  • 原始问题:events.subscribe() 断线显式失败,不自动重连;sessions.events() 亦要求调用方自己组合续接。
  • 现有源码情况:CONTEXT.md 明确”does not automatically reconnect after transport loss”;sessions.events 支持 after 续接(保留 last durable sequence 即可)。
  • 完整优化方案:在 UI 层(tui/app/desktop)封装”可恢复订阅”组件:记录 last seq → 断线 → 刷新权威状态 → 以 after 重新订阅。
  • 方案取舍:协议层保持无状态(显式失败),由消费方组合重连策略——这是当前设计的刻意取舍,优化点应在消费侧。

优化点 5:Cache Policy 协议覆盖扩展

  • 优化分类:成本优化 | 当前状态:【具备基础条件】 | 优先级:A
  • 原始问题:缓存策略仅对声明 RESPECTS_INLINE_HINTS 的协议生效(anthropic-messages、bedrock-converse),其余协议缓存提示被忽略。
  • 现有源码情况:packages/llm/src/cache-policy.ts:applyCachePolicy 编译期注入 CacheHint,默认 auto=tools+system+最新 user message。
  • 完整优化方案:对 openai-chat 等协议通过 provider 侧显式 cache_control 字段或系统提示标记尝试;建立各协议缓存兼容性矩阵。
  • 方案取舍:部分协议不支持显式提示词缓存标记,硬编码注入可能改变行为;需逐协议验证。

优化点 6:Managed Tool Output 保留策略治理

  • 优化分类:工程治理 | 当前状态:【已实现】 | 优先级:B
  • 原始问题:截断文件落盘有 7 天保留 + 每小时清理,但清理失败时无可见告警。
  • 现有源码情况:packages/opencode/src/tool/truncate.ts:MAX_LINES=2000、MAX_BYTES=50KB,config.tool_output 可覆盖。
  • 完整优化方案:清理任务失败时发布可观测事件;提供手动清理命令;截断文件路径可配置目录(当前为共享平铺目录)。

优化点 7:旧版 SDK 迁移收尾

  • 优化分类:工程治理 | 当前状态:【具备基础条件】 | 优先级:A
  • 原始问题:@opencode-ai/sdk-next 待接管 @opencode-ai/sdk 名称,旧消费者(packages/sdk/js 生成的 openapi client)尚未迁移。
  • 现有源码情况:packages/sdk-next 注释明确”sdk-next will assume the existing sdk name after legacy consumers migrate”;sdk/js 含 v2/ 子目录。
  • 完整优化方案:以 v2 子目录先内测 → 生态迁移 → 包名接管 → 删除旧生成物;保持 Page 投影等稳定 API 先行落地。

优化点 8:会话列表大页查询与索引优化

  • 优化分类:性能优化 | 当前状态:【建议补齐】 | 优先级:B
  • 原始问题:会话与事件表随使用增长,当前索引策略未见专项优化(未发现相关索引设计文档)。
  • 现有源码情况:session/sql.ts、event/sql.ts;迁移引擎支持增量演进。
  • 完整优化方案:为 session_input.promoted_seq、event.aggregate_id+seq 等高频查询路径补充索引;大库启用分页基准测试。
  • 证据强度说明:此条目基于查询模式推断,未发现明确性能瓶颈证据,标注为【可扩展设计】。

优化点 9:Provider 兼容性测试扩展

  • 优化分类:工程治理 | 当前状态:【具备基础条件】 | 优先级:S
  • 原始问题:8 个协议适配器仅 anthropic-messages、bedrock-converse 有明确测试支撑,其余协议兼容性证据不足。
  • 现有源码情况:packages/llm/src/protocols/;CONTEXT.md 提到”recorded provider tests establish compatibility”作为 Native Continuation 拓宽的前置条件。
  • 完整优化方案:用 http-recorder 为各协议录制真实流量 cassettes 作为回归基线;建立协议兼容性矩阵文档。
  • 文档标准描述:当前不可声称”全协议兼容”,应以测试覆盖范围为准。

优化点 10:嵌入式 Host 多实例支持

  • 优化分类:平台化 | 当前状态:【建议补齐】 | 优先级:B
  • 原始问题:CONTEXT.md 开放问题:”Should a future operation expose the complete provider request context”;多宿主共享单数据库时执行协调未定义。
  • 现有源码情况:CONTEXT.md:”Define embedded-host placement before supporting multiple hosts over one database”。
  • 完整优化方案:先定义 Host 放置语义(每个 Host 独立存储 or 共享存储 + 协调协议),再开放多实例。

由 opencode-project-analyzer skill 生成

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注