【免费下载链接】nimbalyst
Nimbalyst - The open-source visual workspace for Claude Code, Codex, and OpenCode. Run multiple coding agents in parallel, edit their work visually in markdown, mockups, and diagrams, and track tasks. Free, MIT-licensed desktop app for macOS, Windows, Linux, with mobile companion for iOS and Android.
Nimbalyst 是一款开源的 AI 编码工作区,它内置的任务追踪器(Tracker)让个人与团队能够集中管理 Bug、计划、决策等一切工作项。本文带你拆解 Nimbalyst 追踪器的核心架构原理:它以本地数据库为唯一真相源的"数据库优先"设计,如何取代碎片化的文件管理方式,重塑现代任务管理体验,并让 AI 编码代理直接参与任务的创建、更新与闭环。
一、问题起点:为什么文件管理任务注定会失控?
早期 Nimbalyst 追踪任务时,工作项散落在三个互不相通的存储层📂:
| 存储层 | 形式 | 问题 |
|---|---|---|
| 行内标记 | 文档中的#bug[...]注释 | 只能本地使用,无法管理生命周期 |
| Frontmatter 文档 | plans/目录下的 Markdown + YAML 元数据 | 250+ 个计划文件堆在扁平文件夹里,无从区分活跃与废弃 |
| 协作数据库 | 通过 TrackerRoom 同步的加密条目 | 与前两者互不联通 |
用户不会按"存储层"思考——他们只想说"我有个 Bug 要跟踪"。更深层的矛盾是:追踪条目不是源代码,它不该被塞进 git,也不该以纯文件形式面临丢失风险。
Nimbalyst 团队给出的答案是明确的愿景:"你的追踪条目住在 Nimbalyst 里,想共享给团队时再共享。"完整设计文档见 unified-tracker-system.md。
二、数据库优先:PGLite 成为唯一的真相源
数据库优先(Database-first)是整个架构的第一原则:PGLite 数据库才是事实来源,文件只是可选的导出产物。
PGLite 是编译为 WebAssembly 的 PostgreSQL,它在一个 Node.js 工作线程中运行,为桌面应用提供完整的 ACID 事务保证。所有追踪条目都存储在tracker_items表中,并为常用查询建立了索引:
type/status/priority/workspace上的独立索引,保证筛选和搜索秒开data列(JSONB)承载所有业务字段,灵活且免迁移content列(JSONB)直接内嵌富文本编辑器状态,无需再关联独立文档
表结构细节可查阅 DATABASE_SCHEMA.md 与 nimbalyst-schema.prisma。关键设计点在于:source字段标记条目来源(native/inline/frontmatter/import),使得行内标记、计划文件、外部系统导入的条目能在同一个统一视图中呈现——来源只是详情页的一个徽章,不再是割裂的世界。
三、TrackerRecord:Schema 驱动的通用数据模型
2026 年 4 月,追踪器完成了一次关键重构:硬编码字段被通用的 TrackerRecord 取代。它只有两个"容器":
fields—— 所有用户业务数据(标题、状态、优先级、自定义字段)。没有任何字段名享有特权,Schema 定义什么字段存在system—— 基础设施元数据(作者、关联会话、时间戳、关联提交等),产品内部使用,对用户透明
这套设计的直接收益是完全可扩展的追踪器类型🧩:想追踪博客文章、架构决策记录还是 Sprint 目标?只需定义新的 Schema,数据库层零改动。普通用户可通过可视化类型构建器创建,高级用户可用 YAML 定义,参考 creating-custom-trackers.md。类型定义见 types.ts。
四、任务编号设计:本地私有号与团队共享键的边界
编号系统体现了"数据库优先"架构对数据主权与协作的精细权衡 ⚖️:
- 本地私有号
NIM.75:由 localKeyAllocator.ts 在本机即时分配,无需服务器往返。注意那个点号——它意味着"仅限本机",同一数值在同事机器上指向的是另一个条目,因此绝不能写进提交信息 - 团队共享键
NIM-75:条目发布到团队时,由服务端 TrackerRoom 统一铸造并终身不变,防止两台机器对同一共享条目各执一词
这条规则在 UI、AI 工具和 CLI 中一致呈现(assigned/local/unassigned三态),完整策略见 TRACKER_SCHEMA_SHARING.md。
五、从个人到团队:零知识加密同步与生命周期管理
同步层在需要之前完全隐形 🤝。每个条目带有syncStatus(local/pending/synced):
- 本地条目:只存于 PGLite,永不出机器
- 已发布条目:用团队 ECDH 密钥加密后同步到 TrackerRoom(Cloudflare 上的零知识服务器),团队成员实时看到变更
- 团队追踪器:条目可处于"草稿"(私有)或"已发布"(团队可见)状态;追踪器从个人升级为团队是单向操作,避免同事的条目被遗弃
同步桥接实现见 TrackerSyncManager.ts,整体协作设计见 collaborative-tracker-system.md。
生命周期管理同样以数据库行级操作完成:条目归档而非删除,默认视图中消失但可随时恢复;批量操作支持"归档 60 天未更新条目"等规则。Schema 变更则被分类器严格区分为增量式(加字段、加状态,安全)与破坏式(删字段、改类型,需谨慎),保证老客户端逐字节保留未知字段值,数据永不丢失。
六、AI 代理直连追踪器:MCP 工具驱动的自主闭环
数据库优先架构最惊艳的延伸,是让 AI 编码代理无需文件访问即可完整操作任务系统 🤖。内部 MCP 服务器暴露的工具链包括:
tracker_list—— 按类型、状态、优先级筛选并搜索tracker_get/tracker_create/tracker_update—— 读取与写入(内容自动转换)tracker_link_session—— 将 AI 会话与任务交叉引用
于是标准的 Bug 工作流完全自动化:代理先用tracker_list查重、缺失则立即创建 Bug 条目、随修复推进状态(to-do→in-progress→in-review),最后用户在提交信息中写一行Fixes NIM-123,CommitTrackerLinker便自动将条目置为完成、会话标记完结——用户提交即签核。这套工作流的完整约定见 TRACKER_WORKFLOWS.md。
七、总结:这套设计带来了什么?
| 旧模式(文件) | 新模式(数据库优先) |
|---|---|
| 250 个散落计划文件 | 数据库行 + 内嵌富文本编辑器 |
| 扁平文件夹、无生命周期 | 看板/表格、状态、筛选、归档 |
| "要不要 git commit?" | 不是 git 产物,需要发布时再导出 |
| 代理翻磁盘读文件 | 代理通过 MCP 工具查询任务 |
核心关键词一句话概括:Nimbalyst 追踪器 = PGLite 本地数据库(唯一真相源)+ Schema 驱动模型 + 零知识团队同步 + AI 直连工具。对新手而言,这意味着你只需关注"要跟踪什么",存储、同步、编号、协作的复杂性全部被数据库层消化。
想深入架构细节,推荐按顺序阅读:unified-tracker-system.md → DATABASE_SCHEMA.md → TRACKER_WORKFLOWS.md。
【免费下载链接】nimbalyst
Nimbalyst - The open-source visual workspace for Claude Code, Codex, and OpenCode. Run multiple coding agents in parallel, edit their work visually in markdown, mockups, and diagrams, and track tasks. Free, MIT-licensed desktop app for macOS, Windows, Linux, with mobile companion for iOS and Android.
相关推荐
DooTask数据库架构揭秘:如何设计高性能任务管理系统的底层原理
DooTask数据库架构揭秘:如何设计高性能任务管理系统的底层原理 DooTask作为一款开源的在线项目任务管理工具,其核心优势不仅在于丰富的功能特性,更在于精
后端前端协同办公即时通讯企业应用免费离线语音转录工具Buzz:三步上手,工作效率翻倍的实用指南
免费离线语音转录工具Buzz:三步上手,工作效率翻倍的实用指南 在数字化办公时代,你是否还在为整理会议录音、制作视频字幕而烦恼?今天我要向你介绍一款真正能改变工
人工智能语音音频本地部署桌面应用用 Rails 构建 Medods 医疗任务追踪器:junior+ 测试任务完整拆解与重复任务设计指南
用 Rails 构建 Medods 医疗任务追踪器:junior+ 测试任务完整拆解与重复任务设计指南 本篇文章以 ruby/medods/ror_junior
教程
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考