Files
DevPack/docs/PRD.md
2026-03-03 18:20:18 +08:00

11 KiB
Raw Permalink Blame History

DevPack 产品需求文档 (PRD)

版本v1.0.0-draft
更新日期2026-03-03
作者DevPack Team


1. 产品概述

1.1 产品定位

DevPack 是一款面向开发者的开发环境打包迁移工具。它能够将一台电脑上的完整开发环境运行时、工具链、IDE 配置、Shell 设置等)扫描、捕获并打包成一个可移植的文件,在另一台同操作系统的电脑上快速还原,大幅减少环境搭建时间。

1.2 产品愿景

让开发环境像 U 盘一样即插即用。

1.3 目标用户

用户画像 描述 核心诉求
🧑‍💻 个人开发者 拥有多台电脑或定期更换设备 快速在新设备上恢复工作环境
👥 团队 Leader 负责团队开发规范和环境标准化 统一团队成员开发环境
🏢 企业 IT 管理员 需要批量部署开发工位 标准化开发环境快速部署
🎓 培训讲师 需要为学员提供一致的学习环境 一键分发教学开发环境
🔄 DevOps 工程师 管理多个项目的不同环境需求 快速切换不同项目环境配置

1.4 核心价值主张

  1. 节省时间 — 将环境搭建从数小时/天缩短至分钟级别
  2. 避免遗漏 — 自动扫描确保不遗漏任何配置
  3. 可复现 — 确保环境的精确复现
  4. 安全可靠 — 敏感数据加密,还原可回滚

2. 用户场景 (User Stories)

2.1 核心场景

US-001: 换电脑迁移开发环境

作为 一名全栈开发者
我希望 在换新电脑时能一键迁移我的所有开发环境
以便 我可以在新电脑上立即开始工作,而不用花一整天重新配置

验收标准:

  • 能在旧电脑上扫描并打包完整开发环境
  • 生成的 .devpack 文件可通过 U 盘或网络传输
  • 在新电脑上能一键还原所有工具和配置
  • 还原后的环境与原始环境功能一致

US-002: 团队环境标准化

作为 一名技术团队 Leader
我希望 能导出一个标准开发环境包分发给团队成员
以便 所有人使用一致的开发工具和配置

验收标准:

  • 能创建一个"标准环境"配置文件
  • 团队成员可导入并一键应用标准环境
  • 可指定哪些配置是强制的,哪些是可选的
  • 支持环境包版本更新推送

US-003: 选择性环境打包

作为 一名开发者
我希望 只打包特定的工具链(如只打包 Go + VS Code
以便 我可以为不同项目准备精简的环境包

验收标准:

  • 扫描时能分类展示各类工具/配置
  • 用户可选择只打包特定分类
  • 支持通过过滤器精确指定打包内容
  • 支持保存过滤器为命名配置

US-004: 环境差异对比

作为 一名开发者
我希望 对比两台电脑的开发环境差异
以便 我能定位"为什么在你电脑上能跑在我这里不行"的问题

验收标准:

  • 能导入另一台电脑的环境快照
  • 以清晰的格式展示两个环境的差异
  • 差异按分类(运行时版本、配置差异、缺失工具等)组织
  • 可选择性地将差异应用到当前环境

US-005: 环境备份与恢复

作为 一名开发者
我希望 定期备份我的开发环境配置
以便 系统崩溃或重装后能快速恢复

验收标准:

  • 支持增量备份(只记录变化部分)
  • 支持查看历史版本
  • 能从指定版本恢复
  • 备份文件占用空间合理

2.2 扩展场景

US-006: 干运行模式

作为 一名谨慎的开发者
我希望 在还原前能预览将要做的所有更改
以便 确认不会破坏我现有的环境

US-007: 还原回滚

作为 一名开发者
我希望 还原失败或不满意时能撤销所有更改
以便 我的电脑不会因为错误的还原变得更糟

US-008: 敏感数据保护

作为 一名注重安全的开发者
我希望 SSH 密钥和 Token 等敏感数据在打包时被加密
以便 即使 .devpack 文件泄露也不会暴露我的密钥


3. 功能需求

3.1 功能矩阵

功能模块 功能项 优先级 MVP 说明
环境扫描 运行时检测 P0 Go, Node, Python, Java, Rust, .NET
包管理器检测 P0 Scoop, Choco, Winget, Brew, APT
编辑器/IDE 配置 P0 VS Code (扩展+设置), JetBrains
Shell 配置 P0 PowerShell Profile, .bashrc, .zshrc
环境变量 P0 用户级环境变量
Git 配置 P1 .gitconfig, aliases
SSH/GPG 密钥 P1 加密处理
字体 P2 开发用等宽字体
自定义脚本 P2 用户指定的脚本/工具
打包引擎 Pack 文件生成 P0 .devpack 格式
选择性打包 P0 按采集器/过滤器
增量打包 P1 基于上一次快照的差异包
数据加密 P1 AES-256-GCM 加密敏感数据
压缩优化 P1 多种压缩算法可选
还原引擎 自动安装 P0 按依赖顺序安装
配置还原 P0 还原配置文件
冲突处理 P0 检测并处理版本冲突
干运行模式 P0 预览更改不实际执行
回滚机制 P1 还原前创建还原点
环境管理 Profile 管理 P0 创建/编辑/删除配置
环境对比 P1 diff 两个环境
版本历史 P2 环境快照版本管理
插件系统 内置采集器 P0 核心采集器
自定义插件 P2 外部插件加载
注册中心 本地存储 P0 本地 Pack 管理
远程注册中心 P2 类似 Docker Hub

3.2 采集器详细需求

3.2.1 运行时采集器 (Runtime Collector)

扫描内容:

语言/工具 检测项 还原方式
Go 版本、GOPATH、GOROOT、go env 全部配置 下载安装对应版本
Node.js 版本、npm/yarn/pnpm 全局包 通过 nvm/fnm 或直接安装
Python 版本、pip 全局包、virtualenv/conda 安装器或 pyenv
Java 版本、JAVA_HOME、Maven/Gradle 配置 通过 SDKMAN 或直接安装
Rust 版本、rustup 工具链、cargo 全局安装 通过 rustup
.NET 版本、SDK 版本列表 通过官方安装器
Ruby 版本、gem 全局包 通过 rbenv/rvm
PHP 版本、Composer 全局包 通过安装器

3.2.2 包管理器采集器 (Package Collector)

平台 包管理器 采集内容
Windows Scoop bucket 列表、已安装包列表
Windows Chocolatey 已安装包列表及版本
Windows Winget 已安装包列表
macOS Homebrew tap 列表、formulae、casks
Linux (Debian) APT 手动安装的包列表
Linux (RHEL) DNF/YUM 手动安装的包列表
Linux (Arch) Pacman/Yay 显式安装的包列表

3.2.3 编辑器采集器 (Editor Collector)

编辑器 采集内容
VS Code 扩展列表、settings.json、keybindings.json、代码片段
VS Code Insiders 同上
JetBrains IDEs 设置仓库导出、插件列表
Vim/Neovim .vimrc / init.vim / init.lua、插件列表
Sublime Text 包列表、配置文件
Emacs .emacs / init.el 配置

3.2.4 Shell 采集器 (Shell Collector)

Shell 采集内容
PowerShell Profile 脚本、已安装模块
Bash .bashrc, .bash_profile, .bash_aliases
Zsh .zshrc, oh-my-zsh 配置/主题/插件
Fish config.fish, 自定义函数
Windows Terminal settings.json
iTerm2 (macOS) 配置文件

4. 非功能需求

4.1 性能要求

指标 要求 说明
扫描速度 < 30 秒 完整环境扫描
打包速度 < 2 分钟 典型开发环境(不含大文件)
还原速度 取决于网络 下载安装器受网速限制
Pack 文件大小 < 50 MB 典型环境(不含二进制文件)
内存占用 < 200 MB 运行时峰值

4.2 安全要求

  • 敏感数据SSH 密钥、Token、密码必须使用 AES-256-GCM 加密
  • 加密密钥由用户密码通过 Argon2id 派生
  • Pack 文件支持完整性校验SHA-256
  • 还原前必须校验 Pack 文件签名
  • 不采集浏览器密码、系统密码等隐私数据

4.3 兼容性要求

  • 同操作系统类型之间迁移Windows → Windows, macOS → macOS, Linux → Linux
  • 不支持跨操作系统迁移(设计决策:不同 OS 的工具链差异太大)
  • 支持同一 OS 不同版本之间迁移(尽力兼容,不保证 100%
  • Pack 文件格式向后兼容(新版本能读取旧版本生成的 Pack

4.4 可靠性要求

  • 还原过程中断后可恢复(断点续装)
  • 还原失败自动回滚
  • 详细的操作日志记录
  • 错误信息清晰可操作

5. 约束与假设

5.1 技术约束

  • 使用 Go 语言开发,编译为单一静态二进制文件
  • 不依赖运行时环境(不需要预装 Go、Python 等)
  • 跨平台编译支持 Windows/macOS/Linux
  • CLI 优先,暂不开发 GUI

5.2 假设

  • 用户具备基本的命令行使用能力
  • 目标电脑有网络连接(用于下载安装器)
  • 用户有对应平台的管理员/sudo 权限
  • 源电脑和目标电脑使用相同的操作系统类型

6. 成功指标

指标 目标 衡量方式
环境恢复时间 缩短 80%+ 对比手动配置时间
环境完整度 > 95% 配置项正确恢复 还原后验证
用户满意度 > 4.0/5.0 用户调查
GitHub Stars 1000+ (首年) GitHub
活跃用户 500+ MAU (首年) 遥测数据

7. 风险评估

风险 可能性 影响 缓解措施
不同版本 OS 兼容性问题 充分测试,兼容性矩阵
安全敏感数据泄露 强加密,安全审计
包管理器 API 变更 插件化设计,快速适配
还原过程破坏现有环境 回滚机制,干运行模式
Pack 文件过大 选择性打包,增量打包

附录 A: 术语表

术语 定义
Pack DevPack 生成的打包文件(.devpack 格式)
Profile 命名的环境配置方案,定义打包范围和规则
Collector 采集器,负责扫描和收集特定类别的环境信息
Manifest Pack 内的清单文件,描述 Pack 的完整内容和元数据
Restore Point 还原点,还原前创建的当前环境快照,用于回滚
Dry Run 干运行,模拟执行并展示将要做的更改,不实际操作