Skip to content

Repository files navigation

System Design Workbench

System Design Workbench 1.0 是一个 Agent-first、离线优先的文档转换与系统设计证据工具。Agent 可以把多份 Markdown、文本或结构化资料组织成受约束的 manifest,确定性生成可搜索 HTML、Markdown、结构化 bundle 和验证 receipt;原有系统设计画布、分析、评分与故障推演继续保留。

它不内置 LLM,也不声称首段提取就是语义理解。Agent 负责选择材料、组织阅读路线并明确写入总结;工具负责路径安全、来源追踪、确定性转换和人类阅读展示。系统设计分数仍只是透明启发式,不是生产容量证明。

已实现能力

  • Agent-first transform CLI:多文档 manifest → bundle.jsonreport.mdreport.htmlreceipt.json
  • 文档角色、阅读顺序、Agent 摘要/要点与可追溯 source-extract fallback。
  • root 内路径、realpath/symlink、扩展名、文件数与字节数安全门;默认拒绝覆盖已有派生文件。
  • 零依赖独立 HTML:全文筛选、角色筛选、折叠章节、来源复制、移动端和打印视图。
  • 成功与失败均输出单一 JSON envelope;支持机器可读版本和 transform schema 查询。
  • 三个原创练习场景:短链接、通知流水线、多模型 AI 网关。
  • 可在 JSON 中嵌入经过 allowlist 校验的自定义场景、速率单位和成本单位。
  • 可拖动组件画布、方向连线、流量比例和节点属性编辑。
  • 可区分关键/非关键节点与必需/可选连线,避免旁路失败被误算成全系统不可用。
  • 确定性流量传播、容量热点、关键路径延迟、可靠性和成本启发式分析。
  • 使用固定种子的单节点/单副本故障推演,相同输入得到相同结果。
  • 需求、拓扑、容量、可靠性、决策证据五维透明评分;每一分都能追到规则。
  • 面试阶段 checklist 与“选择—备选—理由”权衡日志。
  • 本地自动保存,严格校验 JSON 导入,支持撤销/重做。
  • JSON、Mermaid 和带思考题的 Markdown 证据报告导出。
  • 无运行时依赖的 Node CLI,便于脚本、CI 和其他知识仓库复用。

Agent 立即使用

要求 Node.js 20 或更高版本。

npm install --ignore-scripts
node bin/sdw.mjs version
node bin/sdw.mjs schema transform
node bin/sdw.mjs transform examples/reading-bundle.json \
  --root . \
  --output .tmp/reading-example

打开 .tmp/reading-example/report.html 即可阅读。完整 manifest、安全和证据合同见 document-transform-contract.md

浏览器系统设计练习台仍可运行:

npm run dev

浏览器打开 http://127.0.0.1:4173。项目没有第三方运行时依赖;npm install 只用于核对锁文件与标准工作流。

运行检查:

npm test
npm run check

CLI

Agent 转换入口:

node bin/sdw.mjs transform <manifest.json> --root <document-root> --output <directory>
node bin/sdw.mjs schema transform
node bin/sdw.mjs version

系统设计兼容入口:

node bin/sdw.mjs validate examples/url-shortener.json
node bin/sdw.mjs score examples/url-shortener.json
node bin/sdw.mjs mermaid examples/url-shortener.json
node bin/sdw.mjs report examples/url-shortener.json
node bin/sdw.mjs incident examples/url-shortener.json --node cache
node bin/sdw.mjs score examples/custom-content-pipeline.json

命令行为:

命令 输出 适合场景
transform 单一 JSON 收据 + 四文件阅读包 Agent 批量转换文档给人阅读
schema transform manifest 协议 JSON Agent 构造输入前发现合同
version 产品版本 JSON 宿主兼容性检查
validate schema、节点和连线摘要 提交前门禁
score 机器可读 JSON CI、学习进度对比
mermaid 文本架构图 Markdown、Wiki
report 完整 Markdown 证据报告 复盘、评审、提问
incident 可重复的基线/退化 JSON 定点或固定 seed 故障推演

一条完整学习链路

  1. 选择场景并先写流量、延迟、可用性与预算约束。
  2. 从客户端入口开始,只加入当前数据流需要的组件。
  3. 给每条分支设置流量比例,调整容量、延迟、副本与成本假设。
  4. 查看热点与评分规则;不要为了得分盲目堆组件。
  5. 记录至少两条权衡,每条都写出被放弃的备选与代价。
  6. 运行故障推演,解释退化路径和恢复策略。
  7. 导出 JSON 作为源真相,导出 Markdown/Mermaid 作为可重建证据。

架构

flowchart LR
  Docs["Agent 选择的多份文档"] --> Manifest["受约束 manifest"]
  Manifest --> Readable["JSON / Markdown / HTML / receipt"]
  Scenario["原创场景与约束"] --> Design["版本化 JSON 设计"]
  UI["静态浏览器 UI"] --> Design
  CLI["Node CLI"] --> Design
  Design --> Validate["严格校验与归一化"]
  Validate --> Analyze["确定性启发式分析"]
  Analyze --> Score["透明规则评分"]
  Analyze --> Export["JSON / Mermaid / Markdown"]
  Score --> Export
Loading

核心模块保持与 UI 分离:

  • src/model.js:schema、组件目录、创建与导入校验。
  • src/analyzer.js:可达图、流量传播、容量/延迟/可靠性估算、故障推演。
  • src/scoring.js:五个各 20 分的可解释规则。
  • src/exporters.js:确定性派生工件。
  • src/document-bundle.js:manifest 校验、可追溯文本提取与阅读模型。
  • src/transform.js:root 边界、文件读取、原子写入和 receipt。
  • src/reading-exporters.js:独立 Markdown/HTML 阅读视图。
  • src/app.js:浏览器状态、画布交互、本地保存和导入导出。
  • bin/sdw.mjs:不依赖浏览器的复用入口。

更完整的边界见 架构说明文档转换合同模型契约

证据边界

当前分析有意采用简单、透明的模型:

  • 副本容量按线性扩展估算;未模拟锁竞争、共享依赖、数据倾斜或分片热点。
  • 每条边按 trafficPercent 转发流量;分支总和可以低于或高于 100%,用来表达过滤或放大。
  • required=false 的连线不进入关键延迟/可靠性路径;端到端 SLO 由关键且没有必需下游的端点决定。可选分支仍保留流量、成本和局部瓶颈。
  • 延迟使用确定性排队压力近似;没有采样真实延迟分布。
  • 可用性假设副本故障相互独立;没有共同故障域和相关性模型。
  • 有环图只报告环,不伪造未计算部分的结果。

因此:构建通过只证明软件门禁;评分变化只证明规则结果;真实架构仍需要压测、故障注入、成本账单和业务验收。

研究来源与 clean-room 边界

本项目来自对系统设计内容库、课程、模式目录、模拟器、图编辑器和学习平台的横向研究。具体吸收矩阵、许可证约束和放弃项见 research-to-design.md

所有场景、文案、schema、分析器和 UI 都是独立实现。未复制 CC BY-NC-ND 内容、无许可证项目代码或限制性许可证项目实现。

在其他仓库复用

本项目不要求宿主引入前端依赖。宿主保存 document manifest 或 design JSON,并按需调用 CLI 生成阅读包、检查结果或设计报告。intern-journal 的具体接入方式见 intern-journal-integration.md

当前非目标

  • 不提供账户、云同步、付费、排行榜或多人实时协作。
  • 不在工具内部调用 LLM,也不把自动提取文本冒充 Agent 总结。
  • 不把整仓所有文件默认交给转换器;Agent 必须提交有限 manifest。
  • 不用 LLM 给架构打黑盒分;未来接入 AI 也必须保留本地确定性规则作为基线。
  • 不托管或复制第三方系统设计文章。
  • 不模拟数据库一致性协议、队列内部实现或真实云厂商定价。
  • 不把面试评分当作工程师能力认证。

License

MIT

About

Offline-first system design practice, deterministic analysis, scoring, and evidence export

Topics

Resources

Contributing

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages