Beacon 任务书(提炼自原始方案,原文见 mission-excerpt.md)¶
定位¶
Beacon = 常驻 Windows 桌面的开发者状态与操作中心(Developer Status & Action Center),不是 Web Dashboard。 口号:See what needs your attention. / Your development signal on Windows。 核心:Signal + Action——它替你盯着,而不是要你去看(It watches for you)。
核心产品模型(7 概念)¶
- Widget:信息与交互的基本单位(GitHub PR Widget、CI Status Widget…)
- Provider:数据来源(GitHub 首发;Jenkins/GitLab/Agent 等二期)——Provider First,不写死进 Core,凭据统一配置避免逐 Widget 重复填 Token
- Action:可立即执行的操作(Run/Cancel/Retry/Open/Notify),MVP 只做简单 Action(如 workflow_dispatch)
- Workflow:高级能力,MVP 不做复杂引擎
- Notification:主动提醒(来自 CI/机器/Workflow/Widget 阈值),走 Windows Notification
- 其余概念按原文补全(Machine/Run 等)
三层交互(Progressive Disclosure,不一上来大面板)¶
- Status Capsule:桌面常驻小胶囊,只显示「有没有事」
- 快捷层:一键操作按钮 [Build] [Test] [Deploy]
- Detail Window:需要时展开细节(Build #1024 Status Failed Repo/Branch…)
入口:Tray / Hotkey / Dock。
重要设计件¶
- Notification Engine:规则化(IF CI status == Failed → Notify),不是裸 Toast;Severity 统一五级(Info/Success/Warning/Error/Critical),不许 Provider 各自定义状态
- Refresh Strategy 分级:PR 30~120s、CI 10~30s…不许全量每秒刷;失败显示「Unable to refresh, Last update 2min ago [Retry]」不甩异常
- Offline Mode:离线可运行
- Local First:配置本机(%AppData%\Beacon:config/connections/widgets/pins.json——原方案的 workflows.json 随「MVP 不做 Workflow」未实现),Secrets 进 Windows Secret Storage,严禁进普通 JSON
- 架构原则:Local First + Provider First;Agent Server 只作 Connector 不写死
分期¶
- 第一阶段(MVP):GitHub Provider(PR/CI)、Status Capsule、简单 Action、Notification、Tray/Hotkey、Local 配置;明确不做:复杂 Workflow Engine、多 Provider、Agent 联动
- 第二阶段:Jenkins/GitLab/Docker/Machines/Agents/Generic REST Widget、Schedule、Webhook、Workflow、[Run Task] 发往 Agent——走向 Developer Control Plane
- 冻结记录(2026-10-11,master-plan §2.3 拍板②配套):GitLab/Docker/Machines/Agents/Workflow/[Run Task]/Control Plane 一律冻结不做(长期产品边界,非暂缓);Generic REST(http.status/http.quota)与 Webhook Action 已落地不受影响;Jenkins 已落地(jenkins.build,开源标准 JSON API,2026-10-11 批3-补31)。
MVP 成功标准(第一版验收)¶
开发者能做到:开机自启 → 桌面角落一直看到状态 → 一键 Run/Retry 成功,全程不开浏览器不登 GitHub。
实施次序(原方案明确要求)¶
第一步不是直接写代码:先产出 ①技术 RFC ②Solution/项目目录 ③MVP Issue 列表,然后 Phase 1 → Phase 2 逐步实现——防止一开始就做成过度复杂的 Dashboard。文档优先。