Birdview:让 AI 改代码前先画架构图,把「黑盒改动」变成看得见的模块清单

Birdview:让 AI 改代码前先画架构图,把「黑盒改动」变成看得见的模块清单

一句话概括:这不是又一个 AI 编程助手,而是给所有 AI 编程助手加的一道前置动作——动手改代码之前,先把系统架构画出来、把要碰的模块圈出来。

一个被忽略的问题:AI 改代码是”盲改”

过去两年,AI 编程工具的能力一路飞涨:能读整个仓库、能跨文件重构、能自己跑测试。但有一个环节几乎没变——AI 在动手之前,并不真的”看见”这个系统

它看到的是一堆文件片段和检索结果。它不知道某个文件的改动会牵动哪些上游、哪些模块只是邻居而不是目标、哪些职责边界不能越过。于是就有了那些熟悉的事故现场:

  • 改了一个看似孤立的工具函数,结果三个调用方全崩了
  • 修复 A 模块的 bug,顺手把 B 模块的隐式契约破坏了
  • 提交信息写着”小改动”,实际 diff 涉及 20 个文件

日志能告诉你发生了什么,diff 能告诉你哪几行变了,但没有任何东西告诉你:这次改动在系统里的位置在哪、影响了哪些职责

这就是 Birdview 想补上的那一块。

Birdview 是什么

Birdview 是一个给 AI 编程智能体用的技能(Skill),作者 Qiuner,MIT 协议,当前版本 0.2.0。它的口号很直接:

Stop letting AI code blind.

See AI changes before they happen.

它做的事情可以拆成两阶段:

1. 先建图:检查项目、建立或更新一张带证据链的架构地图,校验后渲染成 HTML,然后人眼看一遍确认

2. 再声明:真正要改代码时,先声明计划范围、当前目标文件、所处生命周期阶段以及真实的检查结果——全部绑定到同一份地图版本上

关键点在于:声明发生在编辑之前。等 AI 已经改完了再画图,那只是事后报告;在编辑前圈出模块,才是给这次改动设了一道可见的闸门。

核心机制:架构是代码,地图有证据

Birdview 的数据模型非常克制,全部是纯文件:

输入 作用
architecture.json 项目标识、模块、归属、证据、关系、分组与稳定布局
activity.jsonl 有序的、由智能体声明的任务范围、目标、文件、阶段与验证记录
architecture.html 生成的独立查看器,内含已校验的地图和可选的活动历史

architecture.json 描述”这个系统由什么组成、谁负责什么、依据是什么”,activity.jsonl 描述”这次任务要动哪里、做到哪一步了”。

渲染器的输出是一个自包含的 HTML 文件——没有服务器、没有网络依赖,双击就能在浏览器里打开。对于需要走内网、或者要把架构视图发给同事的场景,这一点相当实用。

地图里到底有什么

打开官方的演示视图(examples/harness-activity.html),你会看到一个典型的三段式布局:

  • Interaction & review(交互与评审):Workbench 提交目标、检查计划;Change review 检查 diff、批准操作
  • Harness runtime(运行时):Session control、Context builder、Model gateway、Task scheduler、Agent loop、Policy & approval、Events & checkpoints、Context cache、Tool executor
  • External execution & services(外部执行与服务):Model provider、Sandbox workspace、MCP services

每个模块都带类型标注——前端、后端、安全、任务/队列、数据存储、缓存,或”通用”。演示图里的统计是 14/20 个模块、15/20 条关系,处于”模拟运行、无真实执行”状态。

而一次具体的任务声明长这样:

Simulated plan: add tool timeouts and cancellation, propagate cancellation through the scheduler, and handle termination in the execution loop.

对应的地图上,Task scheduler 被标为”计划范围”,Agent loopTool executor 被标为”下一步目标”——哪个模块这次要动、哪个是稍后要动,一眼分得清。

而且要看三种视角随时切换:Architecture / Changes / Compare,同一个布局上分别看架构全貌、本次变更、以及左右对照。

工程上值得称道的地方

看了一圈它的实现,有几个细节比宣传语更有说服力:

模块 ID 稳定,归属与证据分离。 地图里模块有稳定的 ID,文件归属(ownership)和证据(evidence)是两个独立字段。README 里反复强调邻居不等于编辑目标——这个区分在真实重构里非常重要,因为 AI 最容易犯的错就是”顺手把旁边的也改了”。

校验器真的在校验。 scripts/validate.mjs 不仅校验 JSON Schema,还检查跨记录的规则:地图身份是否稳定、序列是否连续、scope 和 targets 是否合法、文件归属是否冲突、检查结果是否自洽。用 --bilingual 可以要求中英双语内容齐备。

它非常诚实地说明自己做不到什么。 这是我最欣赏的一点。README 专门有「Current Boundaries」一节:

  • 活动是智能体声明的,Birdview 不会自动观测编码操作
  • 更新需要重新生成 HTML 并刷新浏览器,没有实时传输
  • 一个 completed 事件不能证明检查通过,只有被记录的检查结果才能这么说
  • 校验通过不代表架构声明为真,也不代表引用的源文件真实存在
  • 包目前标记为 private,没有发布到 npm
  • 它是智能体指导,不是写入拦截器

市面上太多工具在模糊声明和事实的边界,这种把”我知道什么、我不知道什么”写清楚的做法,反而更容易让人信任。

怎么用起来

环境要求很低:Node.js 18 或以上,没有其他后端依赖。

从源码检出跑通演示:

npm ci
npm run validate:examples
npm test
npm run build:demo

渲染你自己的项目,先写一份符合 schemas/architecture.schema.json 的架构文件,然后:

node scripts/validate.mjs .birdview/architecture.json
node scripts/render.mjs .birdview/architecture.json .birdview/architecture.html

带上声明的活动历史:

node scripts/validate.mjs .birdview/architecture.json .birdview/activity.jsonl
node scripts/render.mjs .birdview/architecture.json .birdview/activity.html .birdview/activity.jsonl

它还会在项目的 AGENTS.md(或 Claude Code 的 CLAUDE.md)里维护一小段自己的配置块,用来控制激活模式:

node /scripts/birdview.mjs mode auto --project 
node /scripts/birdview.mjs mode on-demand --project 
  • auto(默认):每一个会改代码的任务,都先检查并复用/更新地图、渲染出来、声明受影响模块,然后才动手
  • on-demand:只有明确要求”画架构图”或”编辑前先看变更地图”时才激活

导入安装的完整步骤见仓库的 docs/installation.md

谁适合用

我觉得三类团队会立刻感受到价值:

一、代码库已经大到”没人全懂”的项目。 架构图的价值从来不在于画得漂亮,而在于逼着 AI(和人)在动手前把上下文对齐一次。这个”强制检查”本身就是质量保障。

二、用多个 AI 编程助手协作的团队。 Birdview 是技能形态,不绑定具体厂商——Claude Code、Codex、DeepSeek Harness 都能接。同一份架构地图可以成为不同智能体之间的共同语言。

三、需要把 AI 改动留档、可审计的场景。 每次任务的范围、目标文件、验证结果都落在 activity.jsonl 里,是纯文本、可 diff、可入库。相比”AI 说它改好了”,这是更硬的证据。

值得注意的取舍

Birdview 目前是文件驱动的,这意味着它没有实时的面板、没有自动刷新、也没有和 IDE 的深度集成。你改完架构要重新渲染、重新刷新浏览器。对习惯了实时工具的人来说,这个体感是”隔一层”的。

另外,它的地图质量取决于写地图的那一次分析质量。工具本身不能保证架构声明的真实性——它只保证结构合法、前后自洽。所以第一次建图仍然值得人来审一遍。

但换个角度看,纯文件、无服务、可 diff、可入库,恰恰是它最容易嵌进现有 CI 和代码评审流程的原因。这是一个很清醒的设计取舍,而不是能力不足。

项目信息

  • 仓库github.com/Qiuner/birdview
  • 项目站点qiuner.github.io/birdview
  • 在线演示examples/harness-activity.html(也可在项目站点打开)
  • 协议:MIT License · Copyright (c) 2026 Qiuner
  • 版本:0.2.0 · 需要 Node.js 18+
  • 热度:发布几天即获得 300+ Star,且仍在持续更新

如果你也在被”AI 改代码改出新 bug”困扰,Birdview 值得花二十分钟试一下——哪怕最后不用它,它提出的那个问题也很有价值:在让 AI 动手之前,你有没有先让它把系统看明白?

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容