plannotator 架构决策记录(ADR)实践指南:从 ADR-0001 到 007 的决策治理体系
【免费下载链接】plannotatorAnnotate and review coding agent plans and code diffs visually, share with your team, send feedback to agents with one click.项目地址https://gitcode.com/gh_mirrors/pl/plannotator点击查看免费下载导读本文围绕 plannotator 仓库中的 ADR-0001《Record architecture decisions》展开讲解该开源项目如何借助 Architecture Decision Records架构决策记录简称 ADR这一轻量文档化方法把为什么这样设计沉淀为可检索、可引用、可追溯的工程资产。通过本文读者将掌握 plannotator 的 ADR 文档规范Status/Context/Decision/Consequences 四段式、编号体系与配套决策生态SPIKE、spec、recap、implementation 等并能对照仓库内 001~007 号真实 ADR 实例学会在自己的项目里落地一套类似的架构决策治理流程。一、ADR-0001为决策建立记录制度adr/0001-record-architecture-decisions.md是 plannotator 决策治理体系的第一份也是奠基性的文档。它发布于 2026-06-16状态为Accepted已被接受采纳。1.1 它解决的问题Context这份 ADR 的 Context 只有一句话We need to record the architectural decisions made on this project.我们需要把本项目上做出的架构决策记录下来。听起来朴素但它指向的是一个普遍存在的工程痛点架构决策往往散落在会议纪要、PR 讨论、聊天记录和个人记忆里时间一长当时为什么这么选、否决了什么方案就完全不可考。ADR 方法正是为了对抗这种**决策失忆decision amnesia**而设计的。1.2 它做出的决定Decision决策本身同样简洁采用 Michael Nygard 在 2011 年提出的 Architecture Decision Records 方法即一篇决策 一份结构化、短小精悍的 Markdown 文档并保持决策记录与代码一起入库、随项目版本演进。后续所有编号 ADR 均严格沿用了这一格式。1.3 它的后果与工具链ConsequencesConsequences 部分给出了两个落地点完整方法论见 Michael Nygard 的原文章仓库文档中以外部链接形式给出如需轻量级 ADR 命令行工具集可参考 Nat Pryce 的adr-toolsadr new、adr link等命令自动生成序号、维护决策间关联。二、仓库中 ADR 体系的真实落地情况ADR-0001 不是一份纸面规范——plannotator 在后续两个多月里把它执行成了一个相当完整的决策生态。截至当前仓库快照adr/目录包含7 份编号 ADRadr/decisions/001~adr/decisions/007大量配套文档adr/specs/规格、adr/research/SPIKE 调研、synthesis 综合结论、adr/implementation/实现说明与复盘、adr/intent-*.md意图记录、adr/recap-*.md阶段回顾等。也就是说ADR-0001 只规定记录决策而仓库实际把它扩展为一条**从调研SPIKE→ 决策ADR→ 规格spec→ 实现implementation→ 复盘recap**的完整决策流水线。三、编号 ADR 的统一模板从 7 份实例归纳虽然 ADR-0001 原文没有给出本地模板但仓库中 001~007 号决策记录在结构上高度一致可作为plannotator 风格的 ADR 模板直接复用段落作用典型内容# NNN. 标题编号 一句话决策主题如# 002. Warm PR Context CacheDate:决策日期如2026-06-30## Status决策状态Accepted/Proposed/Superseded等## Context背景与动机现状痛点、约束、候选方案、取舍考量## Decision明确的决策结论采用什么方案、明确不做什么、接口与流程约定## Consequences后果与代价收益、新增依赖、维护责任、后续演进方向下面逐一拆解这 7 份 ADR说明该模板在实际决策中的用法。四、ADR-001 ~ ADR-004功能类决策实例4.1 ADR-001删除的源文件在保存时重建2026-06-18adr/decisions/001-source-file-deletion-recreates-on-save-20260618-105753.md主题annotate/编辑模式下若用户或外部工具删除了正在编辑的源文件Plannotator 在下次保存时将其重建避免编辑器持有内容、文件却不存在的不一致状态。该决策与packages/shared/source-save.ts、packages/core/source-save.ts以及packages/editor/sourceDocumentReconciliation.ts等保存/对账逻辑直接相关。4.2 ADR-002PR 上下文预热缓存2026-06-30adr/decisions/002-pr-context-warm-cache-20260630-110601.md主题在服务启动和 PR 切换时就开始预取 PR 上下文描述、评论、checks、merge 状态使/api/pr-context能够等待已经开始的工作而非串行拉取降低 PR 概览面板的首屏等待。对应实现见packages/shared/pr-context-live.ts、packages/server/reference-watch.ts等。4.3 ADR-003PR 上下文实时更新2026-06-30adr/decisions/003-live-pr-context-updates-20260630-114643.md这份 ADR 是理解ADR 如何互相引用、演进的极佳案例。它的 Context 明确写到ADR 002 added a warm PR context cache...即 002 引入的一次性会话缓存仍不够——评论或 checks 在评审期间变化时 UI 不会自动更新。于是 003 决定将 PR 上下文升级为服务端持有的实时缓存每个 PR URL 一条缓存条目跟踪最新上下文、版本、in-flight 刷新、watcher 数、刷新定时器与限流冷却新增 SSE 端点GET /api/pr-context/stream客户端在 PR 模式下自动订阅每 30 秒按 PR URL 刷新一次而非按浏览器标签页刷新同一时刻绝不启动第二个并发刷新最后一个 watcher 断开时停止该 PR 的定时刷新/api/pr-action成功发帖后立即刷新目标 PR 并广播遇到 GitHub/GitLab 限流错误时保留最后一次成功上下文标记 stale/error按 provider 重试时间或保守冷却后自动重试。Consequences 明确记录了未做什么本决策不实现双向评论只建立服务端单一视图、写入后立即对账等基础为将来pending / posted / failed / synced四种评论状态留出位置。值得注意003 同时提到了两个 review server 实现——仓库中 PR 相关逻辑分布在packages/shared/pr-github.ts、pr-gitlab.ts、pr-context-live.ts以及服务端packages/server/live-proxy.ts等文件中多运行时/多 provider 的一致性正是 ADR 反复强调的约束。4.4 ADR-004对 PR 描述与评论做标注喂给 Agent 反馈管线2026-06-30adr/decisions/004-annotate-pr-description-and-comments-20260630-155000.md主题把标注annotation能力从代码差异扩展到 PR 描述与评论本身标注结果进入 agent-feedback 管线供一键把评审意见反馈给编码 Agent。这与仓库核心定位annotate and review coding agent plans and code diffs visually, ... send feedback to agents with one click一脉相承对应packages/server/annotate.ts、packages/shared/external-annotation.ts、pr-artifact-document.ts等实现。五、ADR-005 ~ ADR-007架构与产品方向决策实例5.1 ADR-005 的两份同号文档一次纠偏记录有意思的是adr/decisions/下存在两份 005 号 ADR时间相近005-since-base-github-view-default-20260701-223706.md# 005. Since main composite diff as the default code-review view——把相对主分支的复合 diff设为代码评审默认视图005-publish-document-ui-as-packages-20260701-150551.md# 005. Publish the document UI as plannotator/ui plannotator/core——把文档 UI 发布为两个 npm 包。同号文档并存说明ADR 编号并非严格串行实践中可能出现并行起草后未重编号的情况。这对读者是一个真实提醒——ADR 编号出现冲突时应以内容标题与日期为准编号仅作索引参考。5.2 ADR-006Guided Review 成为一等公民2026-07-02adr/decisions/006-guided-review-first-class-feature-20260702-192821.md主题把 Guided Review引导式评审从一次性实验升级为代码评审的一等特性。配套文档链完整adr/specs/guided-review-20260702-195351.md、adr/research/SPIKE-guide-*.mddiff 标注复用、启动设置复用、provider tour 模式、布局接管等四份 SPIKE与adr/implementation/portable-guided-reviews.md代码侧有packages/core/guide.ts、guide-format.ts、packages/guide-viewer/、packages/review-editor/与packages/server/guide/目录支撑。5.3 ADR-007可移植的 Guided Reviews2026-08-15adr/decisions/007-portable-guided-reviews-20260815.md主题让 Guided Review 可脱离原仓库导出/分享——下载便携式 guide 文件或生成分享链接plannotator guide share --id saved | --guide g.json --patch p.patch | --snapshot s.json [--public] [--ttl 7d|24h|30m|3600] [--json]以及plannotator guide unshare id --token t撤销分享。配套文档adr/specs/portable-guided-reviews.mdspec与adr/implementation/guide-share-hosting.md分享托管契约明确路由、形状与错误码在那里是最终的改动必须先改文档。实现见packages/server/guide/、packages/shared/guide-store.ts、apps/guides-show/等。六、ADR-0002一份完整的落地样例作为从规范到实践的最佳范本adr/0002-add-webtui-agent-panel-for-annotate-mode.md2026-06-16状态 Accepted演示了如何把 ADR-0001 的模板用于一个中等复杂度的架构决策——为 annotate 模式加入 WebTUI Agent 终端面板。其决策要点包括范围界定仅适用于plannotator annotate单文件与文件夹标注不适用于 plan review、code review、archive、goal setup、annotate-last启动成本为零打开 annotate 会话不启动 Agent、不分配 PTY直到用户显式启动首次打开显示启动视图用户选择 Agent 并可保存为后续默认布局约定[ Agent terminal panel ] [ Files/TOC sidebar ] [ Document ] [ Annotations/AI panel ]终端面板与文件侧栏分离、可缩放可折叠进程与清理在 Plannotator 原始启动目录启动所选 WebTUI 内置 Agent停止/关闭时先发中断输入、必要时 kill PTYonExit标记面板停止运行时架构Bun annotate server 用 Bun WebSocket runtime 实现浏览器端 WebSocket 路由并懒加载转发给 Node sidecar绑定随机 loopback 内网端口、仅在启动终端时启动、不对浏览器暴露Pi Node annotate server 则把 WebTUI Node WebSocket server 挂到既有 Node HTTP server 上——两个运行时暴露相同的浏览器端路径与能力形状服务关闭必须清理 PTY 会话明确不做什么v1 不提供任意命令框、不自动注入 prompt、不同步标注、不集成文件侧栏、不支持多 Agent 与后台 Agent 任务后果与风险新增 WebTUI / node-pty 依赖若 node-pty 无法加载annotate 模式必须继续工作并禁用终端面板且给出清晰提示Bun 运行时多一个 Node sidecar 进程是有意为之——本地验证显示NodePtyBackend在 Bun 下能启动 PTY 却不回传终端数据而 Node 下 shell 与 Claude 输出均正常sidecar 把这一风险边界隔离在终端传输层。这份 ADR 的Context → Decision含明确的 In/Out 范围→ Consequences含风险与有意取舍结构正是 ADR-0001 方法论的完整演绎。七、配套决策生态SPIKE / spec / implementation / recapADR-0001 只定义了记录决策plannotator 进一步用一套配套文档类型把决策前、决策中、决策后都管理起来全部位于adr/目录内文档类型存放位置作用示例SPIKE 调研adr/research/决策前的技术验证与实验SPIKE-mobile-touch-range-selection-20260816.md、SPIKE-git-graph-view-20260618-220909.mdsynthesis 综合adr/research/把 SPIKE 结果收敛为结论synthesis-guided-review-20260702-195351.mdspec 规格adr/specs/把 ADR 落到接口/路由/数据结构级约定github-view-three-stack-20260701-222935.mdimplementationadr/implementation/实现期契约与关键说明guide-share-hosting.md、portable-guided-reviews.mdrecap 复盘adr/阶段收尾与经验沉淀recap-guided-review-20260702-220407.mdintent 意图adr/早期意图记录intent-description-annotation-phase1-20260630-180000.md这一生态的好处是每个重要决策都有为什么ADR 怎么做spec 验证过SPIKE/synthesis 做完了implementation/recap四件套任何接手的人都能在adr/目录里把一条决策的前世今生读完。八、为你的项目落地 ADR可直接套用的清单结合 ADR-0001 与仓库实践落地一套 ADR 治理可以按以下步骤推进建立编号体系adr/NNN-标题-YYYYMMDD-HHMMSS.mdplannotator 风格或adr/decisions/子目录用adr-tools可自动编号统一模板标题、Date:、Status、Context、Decision、Consequences六要素其中Decision务必写清采纳什么 明确不做什么plannotator 的 ADR 几乎都包含明确的非目标范围随代码入库ADR 与代码同 PR 合入保证代码演进决策同步演进允许互相引用与演进如 ADR-003 引用 ADR-002新决策说明对旧决策的继承与修正编号冲突时以标题日期为准仓库中两份 005 即为例证配套调研文档重要决策前先写 SPIKE 验证可行性如 WebTUI 在 Bun 下的 PTY 数据问题就是先在 ADR-0002 里记录了本地验证结论再拍板 sidecar 方案的把后果写透包括新增依赖、运行时的额外进程、失败降级策略如 node-pty 不可用时的禁用提示、以及未来演进方向。九、总结ADR-0001 用最少的文字为 plannotator 确立了记录架构决策的制度而仓库随后用 7 份编号 ADR 与数十份配套文档证明了这套制度的价值决策可追溯Context、边界清晰Decision 中的 In/Out、代价透明Consequences、方案可验证SPIKE/synthesis。对任何正在快速演进的工程而言这都是一份成本极低、回报极高的治理模式——值得直接照搬。参考文件索引仓库内ADR-0001 原始决策ADR-0002 WebTUI Agent 终端面板ADR 001~007 编号决策集ADR 规格集 · ADR 调研集SPIKE/synthesis · ADR 实现集相关实现佐证packages/shared/pr-context-live.ts · packages/server/pr.ts · packages/core/guide.ts · packages/shared/guide-store.ts · packages/server/annotate.ts赞分享【免费下载链接】plannotatorAnnotate and review coding agent plans and code diffs visually, share with your team, send feedback to agents with one click.项目地址https://gitcode.com/gh_mirrors/pl/plannotator点击查看免费下载相关推荐GetQzonehistory 完整指南如何三步扫码备份全部 QQ 空间说说GetQzonehistory 完整指南如何三步扫码备份全部 QQ 空间说说 QQ 空间没有面向个人的全量数据导出口你这些年积累的说说的文字、评论和图片都存网页爬虫数据分析Thunderbird for Android 的 ADR 决策记录体系架构决策记录ADR的完整实践指南Thunderbird for Android 的 ADR 决策记录体系架构决策记录ADR的完整实践指南 导读 本文基于 docs/engineering移动开发企业应用用 ADR 记录架构决策Fleet 的架构决策记录体系与实战指南用 ADR 记录架构决策Fleet 的架构决策记录体系与实战指南 Architectural Decision Records架构决策记录简称 ADR是后端前端企业应用运维网络安全上一篇游戏手柄延迟检测技术解析与实战应用下一篇打造高效AI AgentGitHub_Trending/ai/ai-agent-book中的混合检索技术创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Origin主成分分析(PCA)完全指南:从数据标准化到得分图绘制

Origin主成分分析(PCA)完全指南:从数据标准化到得分图绘制

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/25 7:22:45 阅读更多 →
低功耗遥测终端机RTU选型指南:从功耗核算到Modbus RTU对接实战

低功耗遥测终端机RTU选型指南:从功耗核算到Modbus RTU对接实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/25 7:22:45 阅读更多 →
IIS日志中的布尔盲注分析实战:从闽盾杯到真实攻防

IIS日志中的布尔盲注分析实战:从闽盾杯到真实攻防

1. 这不是一道CTF题,而是一次真实攻防现场的复盘“网络安全日志分析-题集1-[闽盾杯 2021]日志分析”——光看标题,很多人会下意识划走:又一道CTF模拟题,无非是给点Apache日志、写个Python脚本、跑出flag完事。但我在福建某市网信办…

2026/9/25 7:22:45 阅读更多 →

最新新闻

Linux服务器SSH连接与GPU开发环境实操指南

Linux服务器SSH连接与GPU开发环境实操指南

1. 项目概述:这不是“连服务器”,而是重建你和算力之间的信任链 “手把手教你如何连上实验室的服务器”——这句话在研究生新生群里刷屏的频率,几乎和开学季的快递单号一样高。但真正点开教程的人,十有八九卡在第二步&#xff1a…

2026/9/25 9:40:41 阅读更多 →
智谱GLM开源霸榜与OCR、Agent落地实战:模型部署、离线OCR及开发路线全解析

智谱GLM开源霸榜与OCR、Agent落地实战:模型部署、离线OCR及开发路线全解析

1. 从一份月报里拆出来的四条技术主线月初刷到"将门月报"这个栏目的时候,我第一反应是:这类月报信息密度高,但大多数人扫一眼标题就划走了,真正有价值的东西全埋在细节里。这次标题里塞了四个关键词——智谱开源多个GLM…

2026/9/25 9:40:41 阅读更多 →
Atlas 300V 24G部署YOLO全流程实战:从推理加速卡到模型落地

Atlas 300V 24G部署YOLO全流程实战:从推理加速卡到模型落地

最近后台收到好几个问题,都是类似的:atlas部署yolo到底怎么搞?还有朋友直接拿热搜词来问,atlas 300V 24G 是运算加速卡吗?这里先给个明确结论——它是,而且是很典型的AI推理加速卡。但它是“加速卡”不代表…

2026/9/25 9:40:41 阅读更多 →
Atlas 300V 24G推理加速卡部署YOLOv5完整指南

Atlas 300V 24G推理加速卡部署YOLOv5完整指南

前两天有朋友问我:Atlas 300V 24G这卡是不是运算加速卡?能不能直接拿来部署YOLO?我一开始觉得这问题挺基础,但聊下来发现,很多刚接触昇腾生态的朋友对这块卡的定位其实不太清楚。它既不是普通显卡,也不是用…

2026/9/25 9:40:41 阅读更多 →
DeepSeek完全指南:从V3/R1模型分工到API接入与本地部署

DeepSeek完全指南:从V3/R1模型分工到API接入与本地部署

1. 为什么“免费AI之王”这个说法值得认真对待第一次看到“DeepSeek完全指南:免费AI之王,你只用了10%的功能”这个标题,我的反应是:又一个标题党。但真正把DeepSeek的网页端、App端、API端都摸了一遍之后,我收回这个判…

2026/9/25 9:40:40 阅读更多 →
Atlas 300V 24G部署YOLO全流程:从硬件认知到AscendCL推理优化

Atlas 300V 24G部署YOLO全流程:从硬件认知到AscendCL推理优化

1. 先回答那个热搜问题:300V 24G 到底是不是“运算加速卡”你会搜到“atlas 300v 24g 是运算加速卡吗”,说明很多人第一次拿到这张卡时都有同样的困惑。直接给结论:它是运算加速卡,但和大多数人脑子里的“GPU 运算卡”不是一回事。…

2026/9/25 9:39:40 阅读更多 →

日新闻

AI元人文:从工具使用到思维重构的深度探索

AI元人文:从工具使用到思维重构的深度探索

最近半年我一直在琢磨一件事:AI元人文到底是什么?说白了,就是“用元视角重新审视人与AI的关系”,也在“探索AI如何反向逼着我们发现自己的思考边界”。标题里的“元探索”,在我看就是一层套一层的追问——当你用AI解决…

2026/9/25 0:00:41 阅读更多 →
Python+CNN车牌识别实战:从数据预处理到模型训练与部署

Python+CNN车牌识别实战:从数据预处理到模型训练与部署

简介:基于Python与卷积神经网络的车牌识别项目,面向计算机视觉初学者及智能交通开发者,目标是帮助用户掌握从数据预处理、模型构建到实际部署的完整流程。压缩包共25个文件,包含jpg/png图像样本、py训练脚本、md说明文档、dat数据…

2026/9/25 0:00:41 阅读更多 →
Vim基础操作全攻略:保存退出、模式切换与高频命令实战

Vim基础操作全攻略:保存退出、模式切换与高频命令实战

1. 项目概述1.1 核心需求解析今天聊聊Vim。写这个题目的原因是:几乎每个后端开发者、运维人员、数据工程师某天都会遇到一个场景——深夜加班,服务器登录界面只有黑底白字,编辑器只有vi/vim,你必须在五分钟内完成一次配置修改并保…

2026/9/25 0:00:41 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/24 14:34:13 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/24 9:10:42 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/24 14:33:56 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/24 12:50:34 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/24 14:33:48 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/24 12:49:17 阅读更多 →