diff --git a/examples/rspack-child-compiler/rspack.config.js b/examples/rspack-child-compiler/rspack.config.js
index 4ca23cabd..72a983c46 100644
--- a/examples/rspack-child-compiler/rspack.config.js
+++ b/examples/rspack-child-compiler/rspack.config.js
@@ -1,6 +1,6 @@
const path = require('node:path');
const rspack = require('@rspack/core');
-const { RsdoctorRspackPlugin } = require('@rsdoctor/core/rspack-plugin');
+const { RsdoctorRspackPlugin } = require('@rsdoctor/core');
class ChildCompilerExamplePlugin {
apply(compiler) {
@@ -59,7 +59,20 @@ module.exports = {
plugins: [
new RsdoctorRspackPlugin({
disableClientServer: process.env.ENABLE_CLIENT_SERVER === 'false',
+ server: {
+ port: 7810,
+ },
features: ['bundle', 'loader'],
+ linter: {
+ rules: {
+ 'ecma-version-check': [
+ 'Warn',
+ {
+ ecmaVersion: 3,
+ },
+ ],
+ },
+ },
supports: {
parseBundle: false,
},
diff --git a/packages/document/docs/en/_nav.json b/packages/document/docs/en/_nav.json
index 66848fcc0..a7b0dd9cd 100644
--- a/packages/document/docs/en/_nav.json
+++ b/packages/document/docs/en/_nav.json
@@ -11,7 +11,7 @@
},
{
"text": "Blog",
- "link": "/blog/release/release-note-1_2",
+ "link": "/blog/release/release-note-2_0",
"activeMatch": "/blog/"
},
{
diff --git a/packages/document/docs/en/blog/release/_meta.json b/packages/document/docs/en/blog/release/_meta.json
index e35cc3271..288846d94 100644
--- a/packages/document/docs/en/blog/release/_meta.json
+++ b/packages/document/docs/en/blog/release/_meta.json
@@ -1,4 +1,5 @@
[
+ "release-note-2_0",
"release-note-1_2",
"release-note-1_0",
"release-note-0_4",
diff --git a/packages/document/docs/en/blog/release/release-note-2_0.mdx b/packages/document/docs/en/blog/release/release-note-2_0.mdx
new file mode 100644
index 000000000..0bf80d879
--- /dev/null
+++ b/packages/document/docs/en/blog/release/release-note-2_0.mdx
@@ -0,0 +1,213 @@
+---
+published_at: 2026-09
+---
+
+
+
+_September 2026_
+
+# Announcing Rsdoctor 2.0
+
+We are excited to announce **Rsdoctor 2.0**! 🎉
+
+Starting with 2.0, Rsdoctor is fully focused on Rspack. webpack projects can continue using Rsdoctor 1.x. This focus allows Rsdoctor to integrate more deeply with Rspack's built-in capabilities and continue tailoring analysis to its build model and ecosystem.
+
+Build analysis data also moves beyond the report UI: developers can investigate issues visually, while coding agents and automation can query the same data directly. Rsdoctor 2.0 also brings faster analysis, broader compiler support, and a smaller installation footprint.
+
+Highlights in this release include:
+
+- **Faster analysis with Rspack**: Rsdoctor 2.0 is fully focused on Rspack, and expensive data processing runs inside Rspack. When introduced as an option in 1.0, this reduced overall analysis time by **more than 20%**. In 2.0, it is always enabled and avoids repeated work such as stats conversion.
+- **Build analysis for agents**: Agent CLI and the Rsdoctor analysis skill let coding agents query build data and return actionable optimization suggestions.
+- **One report for every compiler**: The regular Rspack plugin automatically handles multi-compiler builds, Rsbuild environments, and child compilers while keeping their data isolated.
+- **A smaller installation footprint**: Core capabilities are consolidated into `@rsdoctor/core`, reducing the repository from 13 packages to 6 and the complete production installation footprint by **48.5%**.
+- **Faster rebuild analysis**: Loader caching, fewer unnecessary calculations, and faster report writes reduce median HMR time by about **47%** in the benchmark.
+
+## Deeper and faster Rspack analysis {#rspack-native-by-default}
+
+Rsdoctor 1.x supported both Rspack and webpack, so some analysis capabilities had to rely on data that both bundlers could provide. By focusing on Rspack in 2.0, Rsdoctor can reuse more of Rspack's internal data and evolve alongside its build model and capabilities.
+
+The Rspack native plugin started as an optional performance optimization in Rsdoctor 1.x. It moved expensive data processing into Rust inside Rspack, reducing overall analysis time by **more than 20%** in large-project testing for Rsdoctor 1.0. Rsdoctor 2.0 enables this capability by default.
+
+Rspack now provides module and chunk graphs directly instead of sending them through stats conversion. Resolver analysis reuses Rspack's internal resolver data, while side-effect source code is collected only when tree-shaking analysis needs it. These changes reduce data conversion and repeated processing in JavaScript.
+
+Projects no longer need [`experiments.enableNativePlugin`](/config/options/experiments#enablenativeplugin). Remove the option when upgrading to 2.0.
+
+## Build analysis for agents
+
+Rsdoctor reports contain detailed information about assets, modules, packages, loaders, and tree shaking. For a large project, finding an answer can still require moving between several pages and combining multiple dimensions of data manually.
+
+Agent CLI and the Rsdoctor analysis skill were first introduced during the 1.x cycle. In 2.0, they become the recommended workflow for AI-assisted analysis. [`@rsdoctor/agent-cli`](/guide/start/ai#agent-cli) reads `rsdoctor-data.json` directly and returns structured JSON, so coding agents can search and filter the report without starting a long-running service.
+
+```bash
+# Install Agent CLI
+pnpm add -D @rsdoctor/agent-cli
+
+# Install the Rsdoctor analysis skill (optional)
+npx skills add rstackjs/agent-skills --skill rsdoctor-analysis
+
+# Build and generate JSON data
+RSDOCTOR_OUTPUT=json pnpm run build
+```
+
+After setup, users do not need to remember or run Agent CLI commands themselves. They can ask their coding agent directly, for example:
+
+```text
+Use Rsdoctor to analyze this project and identify opportunities to reduce bundle size.
+```
+
+The coding agent selects and runs the relevant `rsdoctor-agent` commands, then uses the project context to investigate large chunks, duplicate dependencies, module issuer chains, loader hotspots, and tree-shaking bailouts. It can continue with more focused queries when needed.
+
+
+
+Rsdoctor 2.0 removes `@rsdoctor/mcp-server` and standardizes on Agent CLI, which runs on demand without maintaining a service connection. It is not MCP-compatible or a drop-in API replacement. See [AI](/guide/start/ai) and the [2.0 migration guide](/guide/start/migration-v2#ai-workflow-migration) for installation and migration details.
+
+## One report for every compiler
+
+Modern Rspack applications often create several compilers in one process. A multi-compiler configuration may build browser and Node.js targets together, Rsbuild environments may create separate web and server builds, and plugins may start child compilers for generated assets.
+
+Rsdoctor 2.0 makes the regular `RsdoctorRspackPlugin` the single entry point for these cases:
+
+- [Multi-compiler and Rsbuild environments](https://github.com/web-infra-dev/rsdoctor/pull/1888): Group compilers created during the same startup and use environment names such as `web` and `node` to distinguish their results.
+- [Child compilers](https://github.com/web-infra-dev/rsdoctor/pull/1842): Discover child compilers automatically and display their analysis data separately from the main compiler.
+
+
+
+Automatic grouping is enabled by default and requires no new plugin. If one process starts unrelated compilers, set `multiCompiler: false`. A named group can also explicitly associate plugin instances:
+
+```ts
+new RsdoctorRspackPlugin({
+ multiCompiler: { group: 'ssr' },
+});
+```
+
+Browser, server, worker, and plugin-generated builds can now be viewed from one report without switching to a dedicated multi-compiler plugin.
+
+## A smaller install footprint {#a-smaller-package-and-dependency-graph}
+
+### A simpler package graph {#smaller-dependency-graph}
+
+Rsdoctor 2.0 consolidates core, graph, SDK, utilities, and the Rspack plugin into `@rsdoctor/core`, moves shared capabilities into `@rsdoctor/shared`, and keeps the client and CLIs as separate entry points:
+
+| Metric | Rsdoctor 1.x | Rsdoctor 2.0 |
+| --------------------------------------------------------------------- | -----------: | -----------: |
+| Top-level repository packages | 13 | 6 |
+| Direct `dependencies` declarations across top-level package manifests | 88 | 39 |
+
+This metric counts direct dependency declarations in the source, not installed packages. The dependency graph also includes the root package, transitive dependencies, and peer dependencies, so it contains more nodes.
+
+### Smaller install footprint {#smaller-production-install-footprint}
+
+The streamlined package structure and runtime dependencies also cut the production installation footprint of `@rsdoctor/core` and its complete transitive dependency tree by nearly half:
+
+| Metric | Rsdoctor 1.6.2 | Rsdoctor 2.0 | Reduction | Reduction rate |
+| -------------------------------------------- | -------------: | -----------: | --------: | -------------: |
+| Complete `@rsdoctor/core` production install | 25.5 MB | 13.1 MB | 12.3 MB | **48.5%** |
+
+When upgrading an Rspack project, replace `@rsdoctor/rspack-plugin` with `@rsdoctor/core`. See the [2.0 migration guide](/guide/start/migration-v2#update-the-rspack-plugin) for the steps.
+
+## Faster rebuilds in watch mode
+
+Rsdoctor 2.0 removes repeated work from the watch and HMR critical path in three ways:
+
+- Reuse the SDK session and report server, and open the report page only for the first build.
+- Preserve the bundler's loader cache and prevent loader events from accumulating across rebuilds.
+- Skip module and asset gzip-size calculations. Non-watch builds retain the complete analysis path.
+
+Watch mode writes report data with a faster compression level to reduce synchronous work on every update. As a trade-off, the compressed size of the main report shards increases by about 26%. This affects Rsdoctor report data only, not application bundle output. Non-watch builds continue to use the default compression level.
+
+In the benchmark, median HMR time dropped from 6.81 s to 3.64 s, an improvement of about **47%**. In a separate repeated-build benchmark, analysis time dropped from 250.9 ms to 14.2 ms, an improvement of **94.3%**.
+
+> The benchmark disabled the Rsdoctor client server. The repeated-build benchmark used 100 modules, one warm-up, and the median of five runs.
+>
+> Related PRs: [#1901](https://github.com/web-infra-dev/rsdoctor/pull/1901), [#1904](https://github.com/web-infra-dev/rsdoctor/pull/1904), [#1905](https://github.com/web-infra-dev/rsdoctor/pull/1905), [#1906](https://github.com/web-infra-dev/rsdoctor/pull/1906), [#1908](https://github.com/web-infra-dev/rsdoctor/pull/1908), and [#1913](https://github.com/web-infra-dev/rsdoctor/pull/1913).
+
+## Refined bundle analysis
+
+Large projects often produce assets with many deeply nested modules. Rsdoctor 2.0 improves both the rendering performance of the Bundle Size page and the analysis path from selecting assets and filtering chunks to locating modules and opening their details, making complex output easier to explore and understand.
+
+- Tree Graph uses virtual scrolling and render caching to render only nodes near the viewport and reduce the overhead of interactive components such as tooltips and popovers while scrolling. Expanding folders and navigating large assets now remain responsive even when they contain many modules.
+
+**Before**
+
+
+
+**After**
+
+
+
+Treemap adds full-screen mode, a collapsible sidebar, breadcrumb navigation, and click-to-zoom. Consistent Stat, Parsed, and Gzipped size metrics, JavaScript asset filtering, and responsive layouts make large outputs easier to explore.
+
+> Related PRs: [#1705](https://github.com/web-infra-dev/rsdoctor/pull/1705), [#1782](https://github.com/web-infra-dev/rsdoctor/pull/1782), [#1830](https://github.com/web-infra-dev/rsdoctor/pull/1830), and [#1839](https://github.com/web-infra-dev/rsdoctor/pull/1839).
+
+## Breaking changes
+
+Rsdoctor 2.0 deliberately narrows its compatibility and package surface. Account for the following changes before upgrading:
+
+- **Runtime and bundler**: Node.js 22.18 or later and Rspack 2.0 or later are required. Projects on Rspack 1.x must upgrade Rspack first. webpack projects should stay on the maintained Rsdoctor 1.x release line or migrate to Rspack.
+- **Packages and module format**: Replace `@rsdoctor/rspack-plugin` with `@rsdoctor/core`. Rsdoctor packages are ESM-only, so CommonJS `require()` calls must become ESM imports.
+- **AI workflow**: `@rsdoctor/mcp-server` has been removed. Migrate to `@rsdoctor/agent-cli`, which reads report data directly but is not an MCP-compatible or drop-in API replacement.
+
+### Configuration options
+
+The following table distinguishes options that are removed from options that remain deprecated or supported:
+
+| Rsdoctor 1.x option | Status in 2.0 | Replacement |
+| ---------------------------------------------------------------------------------- | -------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
+| [`experiments.enableNativePlugin`](/config/options/experiments#enablenativeplugin) | Removed | Delete the option; the Rspack native plugin is always enabled. |
+| `mode: 'normal'` | Removed and ignored | Use `output.mode: 'normal'`. |
+| `mode: 'brief'` | Removed and ignored | Use `output.mode: 'brief'`. |
+| `mode: 'lite'` | Removed and ignored | Use `output.mode: 'normal'` with `output.reportCodeType: 'noCode'` or `'noAssetsAndModuleSource'`. |
+| `brief` | Deprecated; retained for compatibility | Use `output.mode: 'brief'`, `output.options.type: ['html']`, and `output.options.htmlOptions` for options such as `reportHtmlName`. |
+| `brief.writeDataJson` or `output.options.htmlOptions.writeDataJson` | Removed | Include both formats with `output.options.type: ['html', 'json']`. |
+| `output.compressData` | Removed and ignored | Use `output.mode: 'brief'` with `output.options.type: ['json']`. |
+| `port` | Deprecated; retained for compatibility | Use `server.port`. |
+| `supports.generateTileGraph` | Deprecated; no longer necessary | Remove the option; Treemap data is generated by default. |
+
+See the [configuration migration guide](/config/options/options-v2) for complete examples.
+
+## Upgrade to 2.0
+
+Rspack projects that meet the requirements above can start by replacing the 1.x plugin package:
+
+```bash
+pnpm remove @rsdoctor/rspack-plugin
+pnpm add -D @rsdoctor/core
+```
+
+To let a coding agent apply the migration, use the [`rsdoctor-migrate-v2` skill](https://github.com/rstackjs/agent-skills/pull/115):
+
+```bash
+npx skills add rstackjs/agent-skills --skill rsdoctor-migrate-v2
+```
+
+When using the CLI, keep `@rsdoctor/cli` and `@rsdoctor/core` on the same version. See the [Rsdoctor 2.0 migration guide](/guide/start/migration-v2) for the complete steps.
+
+---
+
+By focusing on Rspack, Rsdoctor 2.0 establishes a smaller foundation for visual and automated build analysis. We will continue expanding analysis across Rspack build scenarios and improving the data exposed to developers and agents so that build problems are easier to find, understand, and fix.
+
+See the [Release page](https://github.com/web-infra-dev/rsdoctor/releases) for the complete list of changes.
+
+## Acknowledgements
+
+Rsdoctor 2.0 was made possible by the wider community. Thank you to everyone who contributed code, tests, documentation, design, and reviews, as well as users who opened issues, shared reproducible projects, and tested prerelease versions. Your feedback and collaboration made Rsdoctor 2.0 more reliable and help us keep improving the build analysis experience ❤️
+
+
+
+
diff --git a/packages/document/docs/en/guide/start/migration-v2.mdx b/packages/document/docs/en/guide/start/migration-v2.mdx
index 430b70450..2143af2f0 100644
--- a/packages/document/docs/en/guide/start/migration-v2.mdx
+++ b/packages/document/docs/en/guide/start/migration-v2.mdx
@@ -2,6 +2,12 @@
Rsdoctor 2.0 consolidates the package structure around Rspack. This release removes several standalone packages. Update dependencies and imports together to avoid resolving a 1.x package with 2.0 code.
+Use the [`rsdoctor-migrate-v2` skill](https://github.com/rstackjs/agent-skills/pull/115) to let a coding agent inspect your project, apply the relevant migration steps, and verify the result:
+
+```bash
+npx skills add rstackjs/agent-skills --skill rsdoctor-migrate-v2
+```
+
## Check your bundler
Rsdoctor 2.0 requires Node.js 22.18 or later and Rspack 2.0 or later. Rspack 1.x is no longer supported. webpack support and `@rsdoctor/webpack-plugin` have also been removed.
@@ -32,7 +38,7 @@ If a 1.x configuration uses CommonJS `require()`, replace it with the ESM import
`@rspack/core` remains an optional peer dependency of `@rsdoctor/core`, with a minimum supported version of 2.0. Your Rspack-based build tool normally provides it. Install `@rspack/core` in projects that use Rspack directly.
-Rsdoctor 2.0 requires the Rsdoctor native plugin built into Rspack for module and chunk graph collection. Remove the former `experiments.enableNativePlugin` option because the native path is now always enabled. If the build reports that `experiments.RsdoctorPlugin` is unavailable, upgrade the Rspack dependency supplied by your project or framework.
+Rsdoctor 2.0 uses the Rsdoctor native plugin built into Rspack to collect module and chunk graphs. Remove the former `experiments.enableNativePlugin` option because this capability is now always enabled. If the build reports that `experiments.RsdoctorPlugin` is unavailable, upgrade the Rspack dependency supplied by your project or framework.
## CLI migration
diff --git a/packages/document/docs/zh/_nav.json b/packages/document/docs/zh/_nav.json
index 7454210e6..472c3553c 100644
--- a/packages/document/docs/zh/_nav.json
+++ b/packages/document/docs/zh/_nav.json
@@ -11,7 +11,7 @@
},
{
"text": "博客",
- "link": "/blog/release/release-note-1_2",
+ "link": "/blog/release/release-note-2_0",
"activeMatch": "/blog/"
},
{
diff --git a/packages/document/docs/zh/blog/release/_meta.json b/packages/document/docs/zh/blog/release/_meta.json
index e35cc3271..288846d94 100644
--- a/packages/document/docs/zh/blog/release/_meta.json
+++ b/packages/document/docs/zh/blog/release/_meta.json
@@ -1,4 +1,5 @@
[
+ "release-note-2_0",
"release-note-1_2",
"release-note-1_0",
"release-note-0_4",
diff --git a/packages/document/docs/zh/blog/release/release-note-2_0.mdx b/packages/document/docs/zh/blog/release/release-note-2_0.mdx
new file mode 100644
index 000000000..3110c562f
--- /dev/null
+++ b/packages/document/docs/zh/blog/release/release-note-2_0.mdx
@@ -0,0 +1,213 @@
+---
+published_at: 2026-09
+---
+
+
+
+_2026 年 9 月_
+
+# Rsdoctor 2.0 发布公告
+
+我们很高兴地宣布 **Rsdoctor 2.0**!🎉
+
+从 2.0 开始,Rsdoctor 将全面聚焦 Rspack,webpack 项目可以继续使用 Rsdoctor 1.x。聚焦 Rspack 后,Rsdoctor 可以更深入地使用其内置能力,并持续围绕 Rspack 的构建模型和生态场景提供分析支持。
+
+构建分析数据也不再只服务于报告页面:开发者可以通过可视化报告排查问题,coding agent 和自动化流程则可以直接查询同一份数据。2.0 同时带来了更快的分析、更完整的 compiler 支持和更轻量的安装体积。
+
+本次更新的主要亮点包括:
+
+- **更快的 Rspack 分析**:2.0 全面聚焦 Rspack,耗时较长的数据处理在 Rspack 内部完成。该能力在 1.0 中作为可选项推出时,已将整体分析时间减少 **20% 以上**;2.0 默认启用,并进一步减少 stats 转换等重复处理。
+- **面向 agent 的构建分析**:Agent CLI 与 Rsdoctor analysis skill 可以帮助 coding agent 查询构建数据,并给出可执行的优化建议。
+- **一个报告覆盖所有 compiler**:常规 Rspack 插件可以自动处理 multi-compiler、Rsbuild environments 和 child compiler,同时保持每个 compiler 的数据相互隔离。
+- **更小的安装体积**:核心能力统一收敛到 `@rsdoctor/core`,仓库 package 从 11 个减少到 5 个,完整生产安装体积减少 **48.5%**。
+- **更快的增量构建分析**:通过保留 loader 缓存、跳过非必要计算并优化报告写入,bench 中的 HMR 中位数降低约 **47%**。
+
+## 更深入、更快的 Rspack 分析 {#rspack-native-by-default}
+
+Rsdoctor 1.x 同时支持 Rspack 和 webpack,因此部分分析能力需要建立在两者都能提供的数据上。2.0 聚焦 Rspack 后,可以更充分地复用 Rspack 内部数据,并随着 Rspack 的构建模型和能力持续演进。
+
+Rspack native plugin 最初是 Rsdoctor 1.x 中的一项可选性能优化。它将耗时较长的数据处理逻辑使用 Rust 重写并集成到 Rspack,在 1.0 的大型项目测试中将整体分析时间减少了 **20% 以上**。Rsdoctor 2.0 默认启用这项能力。
+
+module graph 与 chunk graph 现在直接由 Rspack 提供,不再经过 stats 转换;resolver 分析会复用 Rspack 内部的解析数据,tree shaking 所需的副作用源码也只会在相关分析开启时采集。这些变化减少了 JavaScript 侧的数据转换和重复处理。
+
+项目不再需要配置 [`experiments.enableNativePlugin`](/config/options/experiments#enablenativeplugin),升级到 2.0 后删除该配置即可。
+
+## 面向 agent 的构建分析 {#build-analysis-for-agents}
+
+Rsdoctor 报告包含 asset、module、package、loader 和 tree shaking 等多个维度的详细信息。在大型项目中,找到一个问题的答案仍可能需要在多个页面之间切换,再手动组合不同维度的数据。
+
+Agent CLI 与 Rsdoctor analysis skill 最早在 1.x 期间推出,并在 2.0 中成为推荐的 AI 辅助分析工作流。[`@rsdoctor/agent-cli`](/guide/start/ai#agent-cli) 可以直接读取 `rsdoctor-data.json` 并返回结构化 JSON,让 coding agent 无需启动常驻服务即可检索和过滤报告数据。
+
+```bash
+# 安装 Agent CLI
+pnpm add -D @rsdoctor/agent-cli
+
+# 安装 Rsdoctor analysis skill(可选)
+npx skills add rstackjs/agent-skills --skill rsdoctor-analysis
+
+# 构建并生成 JSON 数据
+RSDOCTOR_OUTPUT=json pnpm run build
+```
+
+完成准备后,用户无需记忆或手动执行 Agent CLI 命令,只需直接向 coding agent 提问,例如:
+
+```text
+使用 Rsdoctor 分析当前项目,找出可以优化产物体积的方向。
+```
+
+coding agent 会根据问题调用相应的 `rsdoctor-agent` 命令,结合项目上下文分析大 chunk、重复依赖、module 引用链、loader 热点和 tree shaking 失败原因,并在需要时继续发起更聚焦的查询。
+
+
+
+Rsdoctor 2.0 已移除 `@rsdoctor/mcp-server`,统一使用按需执行、无需维护服务连接的 Agent CLI。它不兼容 MCP 协议,也不是旧 API 的直接替代品;安装和迁移方式请参考 [AI](/guide/start/ai) 与 [2.0 迁移指南](/guide/start/migration-v2#ai-工作流迁移)。
+
+## 一个报告覆盖所有 compiler {#one-report-for-every-compiler}
+
+现代 Rspack 应用经常在同一进程中创建多个 compiler。multi-compiler 配置可能同时构建浏览器端和 Node.js 产物,Rsbuild environments 可能分别创建 web 和 server 构建,插件也可能通过 child compiler 生成自己的资源。
+
+Rsdoctor 2.0 将常规的 `RsdoctorRspackPlugin` 统一为这些场景的入口:
+
+- [multi-compiler 与 Rsbuild environments](https://github.com/web-infra-dev/rsdoctor/pull/1888):自动聚合同一次启动中创建的 compiler,并使用 `web`、`node` 等 environment 名称区分结果。
+- [child compiler](https://github.com/web-infra-dev/rsdoctor/pull/1842):自动发现 child compiler,并将其分析数据与 main compiler 隔离展示。
+
+
+
+自动聚合默认开启,无需引入新的插件。如果同一进程启动的是多个互不相关的 compiler,可以设置 `multiCompiler: false`;也可以通过命名分组明确关联多个插件实例:
+
+```ts
+new RsdoctorRspackPlugin({
+ multiCompiler: { group: 'ssr' },
+});
+```
+
+浏览器端、服务端、worker 和插件生成的构建可以在一个报告中切换查看,不再需要使用专门的 multi-compiler plugin。
+
+## 更轻量的安装 {#a-smaller-package-and-dependency-graph}
+
+### 更精简的 package 结构 {#smaller-dependency-graph}
+
+Rsdoctor 2.0 将 core、graph、SDK、utils 和 Rspack plugin 合并到 `@rsdoctor/core`,共享能力收敛到 `@rsdoctor/shared`,client 与 CLI 则保留独立入口:
+
+| 指标 | Rsdoctor 1.x | Rsdoctor 2.0 |
+| ------------------------------------------------- | -----------: | -----------: |
+| 仓库顶层 package | 13 | 6 |
+| 顶层 package 的 `dependencies` 直接依赖声明数之和 | 88 | 39 |
+
+这里统计的是源码中的直接依赖声明数,不是安装后的 package 数。依赖图还会包含根节点、传递依赖和 peer 依赖,因此节点数会更多。
+
+### 更小的安装体积 {#smaller-production-install-footprint}
+
+包结构和 runtime 依赖的精简,也让 `@rsdoctor/core` 及其完整传递依赖的生产安装体积接近减半:
+
+| 指标 | Rsdoctor 1.6.2 | Rsdoctor 2.0 | 减少 | 降幅 |
+| --------------------------------- | -------------: | -----------: | ------: | --------: |
+| `@rsdoctor/core` 完整生产安装体积 | 25.5 MB | 13.1 MB | 12.3 MB | **48.5%** |
+
+Rspack 项目升级时需要使用 `@rsdoctor/core` 替换 `@rsdoctor/rspack-plugin`,具体步骤请参考 [2.0 迁移指南](/guide/start/migration-v2#更新-rspack-插件)。
+
+## watch 模式下更快的增量构建 {#faster-rebuilds-in-watch-mode}
+
+Rsdoctor 2.0 通过三项优化减少 watch 与 HMR 关键路径上的重复工作:
+
+- 复用 SDK 会话和报告服务,并让报告页面仅在首次构建时打开。
+- 保留 bundler 的 loader 缓存,并避免 loader 事件在重复构建中累积。
+- 跳过 module 与 asset 的 gzip 体积计算;非 watch 构建仍保留完整分析。
+
+watch 模式会使用更快的压缩级别写入报告数据,以减少每次更新的同步写入耗时。作为取舍,主要报告分片的压缩后体积会增大约 26%。这一变化只影响 Rsdoctor 报告数据,不影响应用构建产物;非 watch 构建仍使用默认压缩级别。
+
+在 bench 中,HMR 中位数从 6.81 s 降至 3.64 s,提升约 **47%**。另一组重复构建基准中,分析耗时从 250.9 ms 降至 14.2 ms,提升 **94.3%**。
+
+> bench 关闭了 Rsdoctor client server;重复构建基准使用 100 个 module,预热 1 次后取 5 次中位数。
+>
+> 相关 PR:[#1901](https://github.com/web-infra-dev/rsdoctor/pull/1901)、[#1904](https://github.com/web-infra-dev/rsdoctor/pull/1904)、[#1905](https://github.com/web-infra-dev/rsdoctor/pull/1905)、[#1906](https://github.com/web-infra-dev/rsdoctor/pull/1906)、[#1908](https://github.com/web-infra-dev/rsdoctor/pull/1908)、[#1913](https://github.com/web-infra-dev/rsdoctor/pull/1913)。
+
+## 更清晰的产物分析体验 {#refined-bundle-analysis}
+
+大型项目的产物往往包含数量众多、层级很深的 module。Rsdoctor 2.0 不仅优化了 Bundle Size 页面的渲染性能,也重新梳理了从选择 asset、筛选 chunk,到定位 module 和查看详情的分析路径,让复杂产物更容易浏览和理解。
+
+- Tree Graph 使用虚拟滚动和渲染缓存,仅渲染当前视窗附近的节点,并降低滚动期间 tooltip、popover 等交互组件的额外开销。即使 asset 包含大量 module,展开目录和连续滚动也能保持流畅。
+
+**优化前**
+
+
+
+**优化后**
+
+
+
+Treemap 新增全屏模式、可收起侧边栏、面包屑导航和点击缩放,并统一 Stat、Parsed 和 Gzipped 体积口径,配合 JavaScript asset 筛选与响应式布局,让大型产物的层级浏览更清晰高效。
+
+> 相关 PR:[#1705](https://github.com/web-infra-dev/rsdoctor/pull/1705)、[#1782](https://github.com/web-infra-dev/rsdoctor/pull/1782)、[#1830](https://github.com/web-infra-dev/rsdoctor/pull/1830)、[#1839](https://github.com/web-infra-dev/rsdoctor/pull/1839)。
+
+## 不兼容更新 {#breaking-changes}
+
+Rsdoctor 2.0 主动收敛了兼容范围和包结构。升级前需要处理以下变更:
+
+- **运行环境与构建工具**:要求使用 Node.js 22.18 及以上版本和 Rspack 2.0 及以上版本。Rspack 1.x 项目需要先升级 Rspack;webpack 项目应继续使用长期维护的 Rsdoctor 1.x,或先迁移到 Rspack。
+- **包与模块格式**:使用 `@rsdoctor/core` 替换 `@rsdoctor/rspack-plugin`;Rsdoctor package 仅提供 ESM 产物,需要将 CommonJS `require()` 改为 ESM `import`。
+- **AI 工作流**:`@rsdoctor/mcp-server` 已移除。请迁移到直接读取报告数据的 `@rsdoctor/agent-cli`;Agent CLI 不兼容 MCP 协议,也不是旧 API 的直接替代品。
+
+### 配置项 {#configuration-options}
+
+下表区分了已经移除、仍处于废弃状态以及继续受支持的配置项:
+
+| Rsdoctor 1.x 配置项 | 2.0 状态 | 替代方式 |
+| ---------------------------------------------------------------------------------- | ---------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
+| [`experiments.enableNativePlugin`](/config/options/experiments#enablenativeplugin) | 已移除 | 删除该配置;Rspack native plugin 现在始终启用。 |
+| `mode: 'normal'` | 已移除且会被忽略 | 使用 `output.mode: 'normal'`。 |
+| `mode: 'brief'` | 已移除且会被忽略 | 使用 `output.mode: 'brief'`。 |
+| `mode: 'lite'` | 已移除且会被忽略 | 使用 `output.mode: 'normal'`,并将 `output.reportCodeType` 设置为 `'noCode'` 或 `'noAssetsAndModuleSource'`。 |
+| `brief` | 已废弃,仅为兼容而保留 | 使用 `output.mode: 'brief'`、`output.options.type: ['html']`,并通过 `output.options.htmlOptions` 配置 `reportHtmlName` 等选项。 |
+| `brief.writeDataJson` 或 `output.options.htmlOptions.writeDataJson` | 已移除 | 使用 `output.options.type: ['html', 'json']` 同时输出两种格式。 |
+| `output.compressData` | 已移除且会被忽略 | 使用 `output.mode: 'brief'` 和 `output.options.type: ['json']`。 |
+| `port` | 已废弃,仅为兼容而保留 | 使用 `server.port`。 |
+| `supports.generateTileGraph` | 已废弃,不再需要配置 | 删除该配置;treemap 数据默认生成。 |
+
+完整示例请参考 [配置迁移说明](/config/options/options-v2)。
+
+## 升级到 2.0 {#upgrade-to-20}
+
+满足上述版本要求的 Rspack 项目,可以先替换 1.x 的插件包:
+
+```bash
+pnpm remove @rsdoctor/rspack-plugin
+pnpm add -D @rsdoctor/core
+```
+
+推荐使用 [`rsdoctor-migrate-v2` skill](https://github.com/rstackjs/agent-skills/pull/115),让编码 agent 协助完成迁移:
+
+```bash
+npx skills add rstackjs/agent-skills --skill rsdoctor-migrate-v2
+```
+
+使用 CLI 时,请确保 `@rsdoctor/cli` 与 `@rsdoctor/core` 的版本一致。完整步骤请参考 [Rsdoctor 2.0 迁移指南](/guide/start/migration-v2)。
+
+---
+
+通过专注 Rspack,Rsdoctor 2.0 为可视化与自动化构建分析建立了更精简的基础。我们会继续深入 Rspack 的构建场景,完善提供给开发者和 agent 的分析数据,让构建问题更容易被发现、理解和解决。
+
+完整更新内容请参考 [release 页面](https://github.com/web-infra-dev/rsdoctor/releases)。
+
+## 致谢 {#acknowledgements}
+
+Rsdoctor 2.0 离不开社区的共同参与。感谢所有贡献代码、测试、文档、设计与评审的开发者,也感谢提交 issue、提供可复现项目和验证预发布版本的用户。你们的反馈与协作让 Rsdoctor 2.0 更可靠,也帮助我们持续改进构建分析体验 ❤️
+
+
+
+
diff --git a/packages/document/docs/zh/guide/start/migration-v2.mdx b/packages/document/docs/zh/guide/start/migration-v2.mdx
index bb2ba3f1a..3da30496c 100644
--- a/packages/document/docs/zh/guide/start/migration-v2.mdx
+++ b/packages/document/docs/zh/guide/start/migration-v2.mdx
@@ -2,6 +2,12 @@
Rsdoctor 2.0 围绕 Rspack 收敛了包结构。大多数项目只需要安装 `@rsdoctor/core`。此版本移除了多个独立包。请同时更新依赖和导入路径,避免在 2.0 代码中解析到 1.x 包。
+推荐使用 [`rsdoctor-migrate-v2` Skill](https://github.com/rstackjs/agent-skills/pull/115),让编码 Agent 检查项目、执行适用的迁移步骤并验证结果:
+
+```bash
+npx skills add rstackjs/agent-skills --skill rsdoctor-migrate-v2
+```
+
## 检查构建工具
Rsdoctor 2.0 要求使用 Node.js 22.18 及以上版本和 Rspack 2.0 及以上版本,不再支持 Rspack 1.x。此外,Rsdoctor 2.0 不再支持 webpack,并移除了 `@rsdoctor/webpack-plugin`。
@@ -32,7 +38,7 @@ import { RsdoctorRspackPlugin } from '@rsdoctor/core';
`@rspack/core` 仍是 `@rsdoctor/core` 的可选 peer dependency,最低支持版本为 2.0。基于 Rspack 的构建工具通常已经提供该依赖;直接使用 Rspack 的项目需要安装 `@rspack/core`。
-Rsdoctor 2.0 要求使用 Rspack 内置的 Rsdoctor 原生插件来收集模块图和 chunk 图。请移除原有的 `experiments.enableNativePlugin` 配置,因为原生链路现在始终启用。如果构建提示 `experiments.RsdoctorPlugin` 不可用,请升级项目或框架提供的 Rspack 依赖。
+Rsdoctor 2.0 使用 Rspack 内置的 Rsdoctor Native Plugin 收集 Module Graph 和 Chunk Graph。请移除原有的 `experiments.enableNativePlugin` 配置,因为该能力现在始终启用。如果构建提示 `experiments.RsdoctorPlugin` 不可用,请升级项目或框架提供的 Rspack 依赖。
## CLI 迁移