用途
dotdog 是一个规格驱动设计(spec-driven design)工具链,面向单仓库、monorepo 和 polyrepo 工作区。它的目标是把计划、仓库或多仓库产品转化为结构化的 .dog 规格,编译为 .dag 图谱,让 AI 智能体查询真实项目结构,而不是凭空猜测。
主要能力
三种起点
- 空项目:在实现之前创建规格基础。
- 已有项目:把当前仓库映射为结构化图谱事实。
- 工作区产品:用 .doghouse/workspace.json 描述由 N 个仓库组成的产品。
.dog 与 .dag
.dog 文件是人类可读的源规格,采用 Markdown 散文加 YAML 结构化块。.dag 文件是编译后的实现图谱,供智能体和工具使用。
dotdog init 创建的内容
dotdog init <project> 会在 specs/<project>/ 下创建项目规格工作区,计划完整脚手架包括:
- SPEC.dog — 产品意图、行为、流程和用户故事。
- data-model.dog — 实体、状态、schema 和关系。
- plan.dog — 实现阶段和任务。
- constitution.dog — 约束、规则和边界。
- INDEX.dog — 面向人类和智能体的导航图。
- COPY.dog — 面向用户的文本和界面语言。
工作区(N 个仓库)
Dotdog 工作区是产品边界,可包含一个仓库、一个 monorepo 或 N 个独立仓库。工作区元数据位于 .doghouse/workspace.json。工作区图谱会生成带仓库限定的事实,让人类和智能体区分事实来源。单仓库项目不需要 manifest,Dotdog 默认把当前仓库视为单仓库工作区。只有 .doghouse/workspace.json 适合纳入版本控制,生成的工作区图谱和观察事实默认被忽略,因为它们可能包含仓库元数据。
已有仓库映射
dotdog 不只是为空项目搭建脚手架,还可映射已有仓库。目标图谱把产品意图连接到真实实现,目标节点类型包括文件、目录、包、前端组件、路由、页面、API 端点、后端处理器、服务、schema、数据库表、迁移、环境变量、云资源、CI 工作流、测试、任务和规格。目标边类型包括 imports、calls、renders、reads、writes、depends_on、implements、configured_by、deployed_by、tested_by、documented_by 和 owned_by。
对于全新项目,可在 dotdog compile 之后运行 dotdog design。它会审计编译后的数据模型,检查稳定标识符、关系、生命周期、所有权、访问模式和敏感数据处理,然后给出具体下一步,而不会虚构领域事实。
MCP 服务器
dotdog serve 通过 stdio 向任何兼容 MCP 的 AI 智能体暴露规格。它是一个本地 stdio 服务器,不打开 TCP 端口,也不写查询日志。若放在网关后面,需为网关配置认证和最小权限访问。
自验证
dotdog 会验证自己的规格,每个 PR 都会执行该验证。
VS Code 扩展
为 .dog 文件提供语法高亮。安装方式见官方仓库说明。
使用方式
需要 Node.js >= 20 或 Bun >= 1.3。
初始化项目:
dotdog init <project>
编译图谱:
dotdog compile
设计审计(全新项目):
dotdog design
启动 MCP 服务器:
dotdog serve
对于用 GitHub Spec Kit 创建的项目,导入器会读取本地 specs/<feature> 产物,在 .doghouse/speckit 下写入生成的图谱,并保留已编辑输出,除非显式使用 --force。导入的 Markdown 会被引用在生成的 .dog 文件中,以免源内容产生非预期的图谱语法。
格式规格
- .dog 格式规格:语言定义、EBNF 语法、验证规则。
- .dag 格式规格:图定义、MCP API、token 效率。
适用场景
规格驱动开发和规格驱动设计:先编写或映射规格,验证、编译,再让智能体查询实现图谱。适用于希望避免规格在 wiki 中腐坏、避免智能体从散文猜测的团队与项目。
相关项目
- dotdefi — 规格优先的 DeFi 开发。编写 .dog 规格,生成 Solidity 存根。
- collar — DAG 优先的智能体 harness。
- dogbench — Collar 和 dotdog 的 token 节省基准。
- dogfood-paybot — 狗粮测试:在真实支付机器人项目上使用 dotdog。
- homebrew-dotdog — Homebrew tap,用于 brew install dotdog。
限制
- 需要 Node.js >= 20 或 Bun >= 1.3。
- dotdog serve 是本地 stdio 服务器,不打开 TCP 端口;若置于网关后,需自行配置认证和最小权限。
- 只有 .doghouse/workspace.json 适合版本控制,生成的工作区图谱和观察事实默认被忽略。
- 官方资料未提供具体收费、价格、平台支持范围或性能数据。