Skip to content

Latest commit

 

History

History
159 lines (100 loc) · 10.2 KB

File metadata and controls

159 lines (100 loc) · 10.2 KB

Roadmap (Sprint-Based) — OpenClaw Feishu Progress + OpenCroc

本 Roadmap 把两条主线视为同等优先级并同步推进:

  • 主线 A(对话入口):OpenClaw relay + 飞书 ACK/进度/卡片交互,把复杂请求稳定变成“可追踪任务”
  • 主线 B(任务内核):OpenCroc scan/graph + pipeline(生成/执行/自愈/报告),把任务真正跑完并产出可交付物

节奏:每个 Sprint 2 周。日期以 2026-03-23 为 Sprint 1 起点,可按实际排期平移。

状态标记按 2026-03-23 当前主干代码保守判断:已完成 = 已落地;进行中 = 已有部分实现或底层能力,但未达到该条目 DoD;未开始 = 仓库中尚未看到对应实现闭环。

北极星指标

  • 飞书侧体验:ACK p95 < 2s;进度投递成功率 > 99%;卡片更新乱序/重复 < 0.1%
  • 任务闭环:一次复杂请求能在 Studio 看到任务链路,并能稳定产出 report/文件/可复现日志
  • 工程质量:npm test 与 CI 绿;新增能力都有最小可回归用例与文档

全局 DoD(所有 Sprint 通用)

  • 新增/变更的接口有明确的契约(请求字段、鉴权、幂等、错误码)
  • 单元测试覆盖关键分支(成功、失败、重试、鉴权失败、幂等重复)
  • 关键路径有结构化日志字段(至少包含 taskId,涉及飞书时包含 chatId/messageId
  • 文档与示例可跑通(至少 1 条 smoke 流程)

Sprint 1(2026-03-23 ~ 2026-04-05):入口与投递“生产化底座”(进行中)

目标:先把入口安全、投递稳态、幂等去重做扎实,再把 OpenCroc 的阶段进度与飞书展示对齐。

交付(主线 A:OpenClaw/飞书)

  • 已完成:Topic 基座(strict-by-thread):为每个 Feishu/OpenClaw 对话线程生成确定性的 topicId,并禁止跨 topicId 的自动关联,避免“莫名其妙把两件事混在一起”
  • 已完成:详情页增强:在 /tasks/:id 详情中展示该话题的机器人 roster 与话题任务串(基于 topicId / 星球关系)
  • 已完成:手动关联作为补充:支持手动把不同话题的任务用星球关系关联(等价 topic merge 的最小形态)
  • 已完成:/api/feishu/webhook 的安全校验与幂等去重“可持久”:支持 verification token / signature 校验,且重启后 TTL 内仍可持续去重
  • 已完成:/api/feishu/relay/api/feishu/relay/event 增加最小鉴权(共享密钥/HMAC),并有回放保护(timestamp/nonce)
  • 已完成:出站投递稳态:对 429/5xx/网络抖动的重试退避策略明确,可配置,且不会造成无限重试与消息风暴

交付(主线 B:OpenCroc scan/pipeline)

  • 已完成:任务阶段与飞书展示对齐:scan/pipeline/execute/report 的 stage 文案与百分比策略统一(减少“跳进度/卡住”)
  • 已完成:scan 与 Studio UI 的数据落盘/缓存策略明确(至少保证重启后能恢复最近任务与图谱快照)

Sprint 1 DoD(验收)

  • 已完成:针对 webhook/relay 鉴权与去重的单测覆盖完成,并在 CI 里跑
  • 已完成:本地 smoke:能在飞书看到 ACK -> 多次 progress -> done/failed;ACK 失败与出站重试场景由单测覆盖
  • 已完成:文档:补齐“飞书鉴权与部署”专节,覆盖 .env -> config -> webhook/relay 鉴权 -> systemd -> smoke 验收

Sprint 2(2026-04-06 ~ 2026-04-19):等待态决策与卡片交互闭环(进行中)

目标:让 waiting 不再只是“发一条文本提示”,而是可交互、可回填决策并驱动任务继续。

交付(主线 A:飞书卡片交互)

  • 已完成:waiting 状态生成带按钮的卡片(例如:继续执行/停止/只生成报告/仅 scan),并支持回调;按钮点击已回填到统一决策流
  • 已完成:增加决策提交接口(例如:POST /api/tasks/:id/decision),支持 option id 与可选 free text
  • 已完成:卡片 card-live 原地更新:waiting -> 点击按钮 -> 任务继续 的状态切换已接入完整决策流
  • 未开始:Topic 决策门禁:机器人自动产出“会影响外部/会写入产物/会修改代码”的内容时,必须先进入 waiting,由你在飞书卡片里确认

交付(主线 B:任务编排)

  • 进行中:为“有风险/有成本”的动作加决策点:已有 waiting 状态与入口,尚未覆盖 self-heal source mutation / PR 前确认
  • 进行中:让 chat 意图分类(pipeline/scan/report/analysis)与可交互按钮保持一致(避免 UI/后端分叉)

Sprint 2 DoD(验收)

  • 进行中:一条完整流程:飞书触发 -> 进入 waiting -> 点按钮 -> 任务继续 -> 最终在飞书收到完成摘要 + 任务链接;代码链路已打通,待真实飞书 smoke 验证
  • 已完成:决策回调与任务状态变更有单测(覆盖 route / callback / signed webhook / 重复点击幂等)

Sprint 3(2026-04-20 ~ 2026-05-03):可观测性与生产部署一键化(进行中)

目标:把“能跑”提升到“可长期跑、可排障、可监控”。

交付(主线 A:服务化与排障)

  • 未开始:增加 /healthz(以及必要的 /readyz)并明确判断标准(配置、存储、飞书凭据可用性)
  • 进行中:systemd 或 Docker 交付物完善:README/systemd 与基础排障文档已存在,完整交付清单仍待补齐
  • 进行中:飞书相关关键错误可定位:已有基础排障文档,尚未形成完整生产诊断矩阵
  • 未开始:Topic 可观测:能按 topicId 聚合查看任务列表、成功率、耗时与失败原因分布(先做 server 侧聚合 + 基础 UI)

交付(主线 B:scan/graph 的可观测)

  • 进行中:scan 过程输出阶段日志与耗时统计(扫描器已有 progress 回调与 duration,未见完整聚合展示)
  • 进行中:为超大仓库提供降级策略(已有 maxDeepScan 等底层参数,报告里的解释性输出未闭环)

Sprint 3 DoD(验收)

  • 进行中:以“重启/故障/权限不足/429”作为必测场景,能给出明确可执行的排障建议
  • 进行中:文档补齐:Troubleshooting + Deployment 两段可独立读懂并复现

Sprint 4(2026-05-04 ~ 2026-05-17):报告回传与执行质量门禁(进行中)

目标:让飞书收到的不只是“完成了”,而是“可交付的结果”;让 pipeline/run 的质量结果可量化。

交付(主线 A:飞书回传内容升级)

  • 进行中:done/failed 的最终摘要模板化:已有最终状态与基础摘要,产物链接与更完整模板仍待补齐
  • 进行中:将 checklist/workorder/token usage(如有)作为可选附件回传(文本或卡片分块);内核 reporter 已有,飞书侧回传未完全接通
  • 未开始:Topic 知识图谱 v1:一个话题内支持沉淀 方案/需求/design/tasks/结论/风险/决策 等节点,并在详情页或 Studio 中可视化(先从最小节点类型集开始)

交付(主线 B:执行与自愈质量)

  • 进行中:执行质量门禁(quality gate)默认启用且可配置:内核能力已接入,默认启用/配置项与飞书侧呈现仍待补齐
  • 未开始:自愈策略分级:config-only 默认优先,source mutation 需进入 waiting 并二次确认

Sprint 4 DoD(验收)

  • 进行中:在飞书里能看到“可落地的下一步”:已有部分失败摘要与任务详情链路,报告链接与建议动作未完整闭环
  • 未开始:至少 1 套端到端回归:pipeline -> execute -> (optional heal) -> report,数据在 Studio 可回看

Sprint 5(2026-05-18 ~ 2026-05-31):任务队列与并发治理(多 chat 生产形态)(未开始)

目标:从“单任务互斥”走向“可控并发”,避免多 chat/多请求导致互相干扰。

交付(主线 A:多会话治理)

  • 未开始:按 chatId/tenant 的并发与队列策略:默认串行,同 chat 不乱序;跨 chat 可并行但有全局上限
  • 未开始:任务取消/超时:能在飞书触发取消,并在 Studio 与飞书都可见(含幂等)
  • 未开始:Topic 自动归类与分配(增强):基于话题图谱节点类型与标签,把工作自动分派给对应机器人维护(默认保守,只在同 topicId 内工作)

交付(主线 B:远程 scan 与任务化运行)

  • 未开始:支持把 opencroc scan <target> 的能力任务化(本机路径或远端仓库),并把结果回传到飞书
  • 未开始:明确缓存策略:同一 target 的重复 scan 可以复用(可配置禁用)

Sprint 5 DoD(验收)

  • 未开始:压测式验收:并发 5 个 chat 触发任务,队列/并发策略符合预期,且不会把进度串线
  • 未开始:取消/超时与恢复(重启后仍能看到任务最终态)有回归用例

Sprint 6(2026-06-01 ~ 2026-06-14):插件化与包边界收敛(未开始)

目标:把“飞书桥接”和“OpenCroc 内核”边界明确,支持未来多渠道与多形态部署。

交付(主线 A:通知渠道插件)

  • 未开始:抽象 NotificationChannel(send/update/ack/decision callback),飞书实现作为第一个插件
  • 未开始:预留第二渠道占位(例如 stdout/webhook/slack 任一),验证核心不被飞书绑死

交付(主线 B:内核拆分与兼容)

  • 未开始:明确包与命名策略:openclaw-feishu-progressopencroc 的 CLI/配置兼容路线图(不破坏现有用户)
  • 未开始:将 scanner/graph/insight/pipeline/execution 的依赖关系写成“架构契约”(谁能依赖谁)

Sprint 6 DoD(验收)

  • 未开始:新增渠道不会影响飞书能力,且新增渠道有最小 smoke
  • 未开始:README 与配置文档更新,包含迁移/兼容说明

依赖与外部约束(需在文档中持续强调)

  • OpenClaw 的 mode 只支持 daily|idle,没有真正的 never。如需“等同只靠 /new/reset 手动切会话”,用超大 idleMinutes 规避自动切会话。
  • OpenClaw 侧配置生效通常需要重启正在运行的 openclaw/gateway 进程或服务。

未来(超出本季度的候选方向)

  • 多租户与权限(Studio 鉴权、审计日志)
  • 更强的 LLM 约束推理(链路规划/自愈策略更可控)
  • 执行平台化(worker 池、任务分片、artifact 存储与检索)