从源码反推产品业务事实、推导诉求与信息缺口
📑 返回索引:项目文档索引
一、代码明确可见的业务事实
以下业务事实均有源码直接佐证,可安全纳入系统能力文档。
| # | 业务事实 | 佐证依据(文件/类/方法) | 归类建议 | 定位匹配度 | 局限 |
|---|---|---|---|---|---|
| 1 | 产品为命令行驱动的 AI 编码助手,支持 run/generate/account/providers/agent 等 21 个命令 | packages/opencode/src/index.ts(yargs 组装命令) |
核心能力 | 高 | — |
| 2 | 会话(Session)是核心业务对象,支持持久化、续接(–continue)、分叉(–fork)、分享(–share)、附加(–attach)、回放(–replay) | packages/opencode/src/cli/cmd/run.ts |
核心能力 | 高 | — |
| 3 | 提供 build(全权限)/ plan(只读)两个内置主 Agent,general/explore 为子 Agent,compaction/title/summary 为隐藏 Agent | packages/opencode/src/agent/agent.ts |
核心能力 | 高 | 隐藏 Agent 不向用户展示 |
| 4 | 支持技能(Skill)体系:扫描 {skill,skills}/**/SKILL.md 及 .claude/.agents 目录,frontmatter 校验 |
packages/opencode/src/skill/index.ts |
核心能力 | 高 | — |
| 5 | 工具输出采用有界截断:2000 行 / 50KB 上限,超出部分落临时文件,7 天保留、每小时清理 | packages/opencode/src/tool/truncate.ts |
工程治理 | 高 | — |
| 6 | 工具执行前有权限请求流程,支持 once/always/reject 三态响应,reject 级联取消同会话其余请求 | packages/opencode/src/permission/index.ts |
安全体系 | 高 | — |
| 7 | 支持 MCP 生态:stdio 本地与 StreamableHTTP/SSE 远程两种传输,暴露 tools/prompts/resources/instructions | packages/opencode/src/mcp/index.ts |
生态集成 | 高 | — |
| 8 | 多语言支持:Web 端 i18n 约 60 种语言;桌面端含中文输入法修复脚本(install-korean-ime-fix.sh) | packages/app/src/i18n/、patches/install-korean-ime-fix.sh |
工程治理 | 中 | i18n 覆盖范围未逐一核验 |
| 9 | 数据存储为本地 SQLite(WAL 模式),含 session/message/event/credential/project/permission 等 17 张核心表 | packages/core/src/database/、packages/core/src/database/database.ts |
核心能力 | 高 | — |
| 10 | 服务端支持 Basic Auth 密码保护(OPENCODE_SERVER_PASSWORD/USERNAME),PTY ticket URL 跳过认证 | packages/server/src/middleware/authorization.ts、packages/opencode/src/server/auth.ts |
安全体系 | 高 | — |
| 11 | 桌面端采用 sidecar 模式:Electron 主进程后台拉起 opencode 服务进程 | packages/desktop/src/main/server.ts、sidecar.ts |
核心能力 | 高 | — |
| 12 | 提供 Slack bot 集成(Socket Mode、threaded 对话) | packages/slack/ |
生态集成 | 中 | — |
二、可推导的业务诉求
以下诉求由源码结构与设计取舍推导,表述需克制。
| # | 推导诉求 | 推导依据 | 表述边界 | 适配方向 |
|---|---|---|---|---|
| 1 | 追求”进程崩溃不丢会话”的可靠性——Prompt 先持久化再执行 | V2 Session Core 准入/执行分离;session_input 表 | 可表述为”崩溃可恢复”,不可声称”分布式高可用” | 可靠性优先 |
| 2 | 追求”长会话不失控”——上下文需压缩与纪元管理 | Compaction 隐藏 Agent、Context Epoch、preserve_recent_tokens/tail_turns/prune 配置 | 可表述”提供压缩策略”,不量化 token 节省幅度 | 上下文工程化 |
| 3 | 追求”协议即契约”——单一 HttpApi 权威定义多端消费 | SDK Contract IR、httpapi-codegen、Promise/Effect 双 Emitter | 可表述”代码生成保证契约一致” | 平台化 |
| 4 | 追求”模型生态中立”——不绑定单一 Provider | BUNDLED_PROVIDERS 内联 20+ AI SDK Provider、Route 抽象、8 个协议适配器 | 可表述”多模型中立”,不声称统一评测体系 | 生态中立 |
| 5 | 追求”可扩展”——插件与技能双扩展点 | Plugin v1/v2 双轨、tool.definition/tool.execute.before 等 hooks、SKILL.md 扫描 | 可表述”提供插件与技能扩展机制” | 可扩展性 |
三、无法确认的业务信息
| # | 不确定内容 | 缺失源码证据 | 写作风险 | 稳妥描述方式 |
|---|---|---|---|---|
| 1 | enterprise 包的商业定位与功能边界 | 仅为 SolidStart 应用框架,用途注释缺失 | 误描述为企业版功能清单 | 标注【不确定】,仅描述技术形态 |
| 2 | 实际用户规模 / 并发会话规模 | 无任何量化指标代码 | 编造并发数据 | 不提及用户规模,仅描述架构能力上限 |
| 3 | 模型调用成本与 token 消耗的量化收益 | 无成本核算代码 | 编造降本百分比 | 仅定性描述 Compaction 的设计意图 |
| 4 | 各 Provider 的兼容性完整程度 | 仅部分协议有测试(anthropic-messages/bedrock-converse) | 夸大全协议兼容 | 表述为”8 个协议适配器已实现,兼容性以测试为准” |
| 5 | 桌面端/Web 端活跃功能完整度 | desktop 为 BETA,web 与 console 功能边界未逐一核验 | 宣称桌面端功能等同 CLI | 明确标注桌面端 BETA 状态 |
四、业务时间线推断
架构演进脉络(由代码结构推导,非官方声明)
- V1 阶段:SessionPrompt 单体编排(
packages/opencode/src/session/prompt.ts,约 1081 行 runLoop),旧版 SDK(packages/sdk/js,openapi-codegen 生成) - V2 重构阶段:SessionV2 / SessionRunner / SessionExecution 拆分至 core 包,runner 源码注释明确”Keep this as orchestration over smaller collaborators rather than rebuilding the legacy SessionPrompt monolith”
- 平台化阶段:HttpApi 权威化 + 代码生成(httpapi-codegen)、sdk-next 嵌入式 Host、插件 v2(effect 原生)
- 未完成迁移:SDK 更名(sdk-next → sdk)待旧消费者迁移;Session 运行态持久化(runner TODO)待落地
由 opencode-project-analyzer skill 生成