paseo-req-kit 1.13.0-beta.4 → 1.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +35 -0
- package/contracts/state.md +1 -1
- package/docs/guide//347/273/264/346/212/244/350/200/205/346/214/207/345/215/227.md +1 -1
- package/docs/guide//351/241/271/347/233/256/345/256/232/345/210/266/344/270/216/350/277/220/350/241/214/350/247/204/345/210/231.md +12 -2
- package/engine/prompts/00-shared-context.md +2 -0
- package/engine/src/activity.ts +23 -0
- package/engine/src/config-view.ts +5 -0
- package/engine/src/config.ts +12 -0
- package/engine/src/control.ts +8 -1
- package/engine/src/doctor.ts +18 -0
- package/engine/src/integrations.ts +5 -2
- package/engine/src/paseo-runtime.ts +9 -1
- package/engine/src/pipeline.ts +45 -1
- package/engine/src/review.ts +3 -1
- package/engine/src/runtime.ts +2 -0
- package/engine/src/scan-guard.ts +132 -0
- package/engine/src/state.ts +3 -1
- package/engine/src/stats.ts +1 -0
- package/package.json +1 -1
- package/paseo-plugin/client/review.tsx +11 -1
- package/paseo-plugin/client/web.ts +17 -0
- package/paseo-plugin/package.json +1 -1
- package/site-dist/404.html +2 -2
- package/site-dist/assets/{app.n_bkEV-X.js → app.C6QQarr3.js} +1 -1
- package/site-dist/assets/changelog.md.BzAEYWi7.js +1 -0
- package/site-dist/assets/chunks/@localSearchIndexroot.BjRGqGQa.js +1 -0
- package/site-dist/assets/chunks/{VPLocalSearchBox.B54kK3Ge.js → VPLocalSearchBox.NZKA1cjk.js} +1 -1
- package/site-dist/assets/chunks/{theme.BH3XHrL3.js → theme.BP9XiatK.js} +2 -2
- package/site-dist/assets/{guide_getting-started.md.Di4587Bu.js → guide_getting-started.md.CA-aS0r_.js} +1 -1
- package/site-dist/assets/{guide_getting-started.md.Di4587Bu.lean.js → guide_getting-started.md.CA-aS0r_.lean.js} +1 -1
- package/site-dist/assets/guide_maintainer.md.C1v7EpSY.js +1 -0
- package/site-dist/assets/{guide_project.md.DnD2-Dsd.js → guide_project.md.qQLH2fWy.js} +3 -3
- package/site-dist/assets/{guide_project.md.DnD2-Dsd.lean.js → guide_project.md.qQLH2fWy.lean.js} +3 -3
- package/site-dist/assets/reference_contracts_state.md.EEBd_l2P.js +1 -0
- package/site-dist/changelog.html +5 -5
- package/site-dist/guide/getting-started.html +5 -5
- package/site-dist/guide/how-it-works.html +4 -4
- package/site-dist/guide/index.html +4 -4
- package/site-dist/guide/install.html +4 -4
- package/site-dist/guide/maintainer.html +5 -5
- package/site-dist/guide/phases.html +4 -4
- package/site-dist/guide/project.html +7 -7
- package/site-dist/guide/user.html +4 -4
- package/site-dist/hashmap.json +1 -1
- package/site-dist/index.html +4 -4
- package/site-dist/reference/adr/0001-step-agents-under-origin-chat.html +4 -4
- package/site-dist/reference/adr/0002-no-directory-switch-in-chat.html +4 -4
- package/site-dist/reference/adr/0003-script-engine-not-hub.html +4 -4
- package/site-dist/reference/adr/0004-result-files.html +4 -4
- package/site-dist/reference/adr/0005-no-default-branch-local-commits-only.html +4 -4
- package/site-dist/reference/adr/0006-skill-install-targets.html +4 -4
- package/site-dist/reference/adr/0007-own-interview-skill.html +4 -4
- package/site-dist/reference/adr/0008-entries-do-not-call-entries.html +4 -4
- package/site-dist/reference/adr/0009-versioned-install-layout.html +4 -4
- package/site-dist/reference/adr/0010-generated-feature-overview.html +4 -4
- package/site-dist/reference/adr/0011-resume-after-completion.html +4 -4
- package/site-dist/reference/adr/0012-review-panel.html +4 -4
- package/site-dist/reference/adr/0013-no-release-tooling.html +4 -4
- package/site-dist/reference/adr/0014-notifier-slot.html +4 -4
- package/site-dist/reference/adr/0015-incremental-continue.html +4 -4
- package/site-dist/reference/adr/0016-upgrade-from-tags.html +4 -4
- package/site-dist/reference/adr/0017-use-paseo-capabilities.html +4 -4
- package/site-dist/reference/adr/0018-own-worktree-option.html +4 -4
- package/site-dist/reference/adr/0019-parallel-orchestration.html +4 -4
- package/site-dist/reference/adr/0020-scheduling-through-the-chat.html +4 -4
- package/site-dist/reference/adr/0021-npm-version-manager.html +4 -4
- package/site-dist/reference/adr/0022-develop-and-verify-phases.html +4 -4
- package/site-dist/reference/adr/0023-types-gate-slices.html +4 -4
- package/site-dist/reference/adr/0024-confirm-early-review-axes.html +4 -4
- package/site-dist/reference/adr/0025-joint-requirements.html +4 -4
- package/site-dist/reference/adr/0026-machine-records-and-api.html +4 -4
- package/site-dist/reference/adr/0027-paseo-plugin.html +4 -4
- package/site-dist/reference/adr/0028-external-integrations.html +4 -4
- package/site-dist/reference/adr/0029-requirements-from-cards.html +4 -4
- package/site-dist/reference/adr/0030-card-intake-process.html +4 -4
- package/site-dist/reference/adr/0031-fewer-interventions.html +4 -4
- package/site-dist/reference/adr/0032-npm-only-install.html +4 -4
- package/site-dist/reference/adr/0033-prototype-review-and-ui-check.html +4 -4
- package/site-dist/reference/adr/index.html +4 -4
- package/site-dist/reference/commands.html +4 -4
- package/site-dist/reference/config.html +4 -4
- package/site-dist/reference/contracts/cli-json.html +4 -4
- package/site-dist/reference/contracts/feature-files.html +4 -4
- package/site-dist/reference/contracts/index.html +4 -4
- package/site-dist/reference/contracts/notifier-event.html +4 -4
- package/site-dist/reference/contracts/result-file.html +4 -4
- package/site-dist/reference/contracts/spec.html +4 -4
- package/site-dist/reference/contracts/state.html +5 -5
- package/site-dist/reference/contracts/usage-record.html +4 -4
- package/site-dist/reference/contracts/verify.html +4 -4
- package/site-dist/reference/scope.html +4 -4
- package/site-dist/assets/changelog.md.RqcFias_.js +0 -1
- package/site-dist/assets/chunks/@localSearchIndexroot.DQEikTmr.js +0 -1
- package/site-dist/assets/guide_maintainer.md.RZIzyCTV.js +0 -1
- package/site-dist/assets/reference_contracts_state.md.TRfzD5bc.js +0 -1
- /package/site-dist/assets/{changelog.md.RqcFias_.lean.js → changelog.md.BzAEYWi7.lean.js} +0 -0
- /package/site-dist/assets/{guide_maintainer.md.RZIzyCTV.lean.js → guide_maintainer.md.C1v7EpSY.lean.js} +0 -0
- /package/site-dist/assets/{reference_contracts_state.md.TRfzD5bc.lean.js → reference_contracts_state.md.EEBd_l2P.lean.js} +0 -0
|
@@ -9,9 +9,9 @@
|
|
|
9
9
|
<link rel="preload stylesheet" href="/assets/style.Dwsa4SMe.css" as="style">
|
|
10
10
|
<link rel="preload stylesheet" href="/vp-icons.css" as="style">
|
|
11
11
|
|
|
12
|
-
<script type="module" src="/assets/app.
|
|
12
|
+
<script type="module" src="/assets/app.C6QQarr3.js"></script>
|
|
13
13
|
<link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
|
|
14
|
-
<link rel="modulepreload" href="/assets/chunks/theme.
|
|
14
|
+
<link rel="modulepreload" href="/assets/chunks/theme.BP9XiatK.js">
|
|
15
15
|
<link rel="modulepreload" href="/assets/chunks/framework.B9qR_F1m.js">
|
|
16
16
|
<link rel="modulepreload" href="/assets/reference_adr_0023-types-gate-slices.md.D2E6yyYQ.lean.js">
|
|
17
17
|
<link rel="icon" type="image/svg+xml" href="/logo.svg">
|
|
@@ -23,8 +23,8 @@
|
|
|
23
23
|
<script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
|
|
24
24
|
</head>
|
|
25
25
|
<body>
|
|
26
|
-
<div id="app"><div class="Layout" data-v-d8b57b2d><!--[--><!--]--><!--[--><span tabindex="-1" data-v-fcbfc0e0></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-fcbfc0e0>Skip to content</a><!--]--><!----><header class="VPNav" data-v-d8b57b2d data-v-7ad780c2><div class="VPNavBar" data-v-7ad780c2 data-v-9fd4d1dd><div class="wrapper" data-v-9fd4d1dd><div class="container" data-v-9fd4d1dd><div class="title" data-v-9fd4d1dd><div class="VPNavBarTitle has-sidebar" data-v-9fd4d1dd data-v-9f43907a><a class="title" href="/" data-v-9f43907a><!--[--><!--]--><!--[--><img class="VPImage logo" src="/logo.svg" alt data-v-ab19afbb><!--]--><span data-v-9f43907a>req-kit</span><!--[--><!--]--></a></div></div><div class="content" data-v-9fd4d1dd><div class="content-body" data-v-9fd4d1dd><!--[--><!--]--><div class="VPNavBarSearch search" data-v-9fd4d1dd><!--[--><!----><div id="local-search"><button type="button" class="DocSearch DocSearch-Button" aria-label="搜索文档"><span class="DocSearch-Button-Container"><span class="vp-icon DocSearch-Search-Icon"></span><span class="DocSearch-Button-Placeholder">搜索文档</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-9fd4d1dd data-v-afb2845e><span id="main-nav-aria-label" class="visually-hidden" data-v-afb2845e> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/guide/" tabindex="0" data-v-afb2845e data-v-815115f5><!--[--><span data-v-815115f5>指南</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink active" href="/reference/commands" tabindex="0" data-v-afb2845e data-v-815115f5><!--[--><span data-v-815115f5>参考</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/changelog" tabindex="0" data-v-afb2845e data-v-815115f5><!--[--><span data-v-815115f5>更新记录</span><!--]--></a><!--]--><!--[--><div class="VPFlyout VPNavBarMenuGroup" data-v-afb2845e data-v-bfe7971f><button type="button" class="button" aria-haspopup="true" aria-expanded="false" data-v-bfe7971f><span class="text" data-v-bfe7971f><!----><span data-v-bfe7971f>v1.13.0-beta.4</span><span class="vpi-chevron-down text-icon" data-v-bfe7971f></span></span></button><div class="menu" data-v-bfe7971f><div class="VPMenu" data-v-bfe7971f data-v-20ed86d6><div class="items" data-v-20ed86d6><!--[--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/changelog" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>更新记录</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link vp-external-link-icon" href="https://github.com/yiyisf/paseo-req-kit/releases" target="_blank" rel="noreferrer" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>GitHub Releases</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/reference/scope" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>范围与取舍</span><!--]--></a></div><!--]--><!--]--></div><!--[--><!--]--></div></div></div><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-9fd4d1dd data-v-3f90c1a5><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-3f90c1a5 data-v-be9742d9 data-v-b4ccac88><span class="check" data-v-b4ccac88><span class="icon" data-v-b4ccac88><!--[--><span class="vpi-sun sun" data-v-be9742d9></span><span class="vpi-moon moon" data-v-be9742d9></span><!--]--></span></span></button></div><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-9fd4d1dd data-v-ef6192dc data-v-e71e869c><!--[--><a class="VPSocialLink no-icon" href="https://github.com/yiyisf/paseo-req-kit" aria-label="github" target="_blank" rel="noopener" data-v-e71e869c data-v-60a9a2d3><span class="vpi-social-github"></span></a><!--]--></div><div class="VPFlyout VPNavBarExtra extra" data-v-9fd4d1dd data-v-f953d92f data-v-bfe7971f><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-bfe7971f><span class="vpi-more-horizontal icon" data-v-bfe7971f></span></button><div class="menu" data-v-bfe7971f><div class="VPMenu" data-v-bfe7971f data-v-20ed86d6><!----><!--[--><!--[--><!----><div class="group" data-v-f953d92f><div class="item appearance" data-v-f953d92f><p class="label" data-v-f953d92f>外观</p><div class="appearance-action" data-v-f953d92f><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-f953d92f data-v-be9742d9 data-v-b4ccac88><span class="check" data-v-b4ccac88><span class="icon" data-v-b4ccac88><!--[--><span class="vpi-sun sun" data-v-be9742d9></span><span class="vpi-moon moon" data-v-be9742d9></span><!--]--></span></span></button></div></div></div><div class="group" data-v-f953d92f><div class="item social-links" data-v-f953d92f><div class="VPSocialLinks social-links-list" data-v-f953d92f data-v-e71e869c><!--[--><a class="VPSocialLink no-icon" href="https://github.com/yiyisf/paseo-req-kit" aria-label="github" target="_blank" rel="noopener" data-v-e71e869c data-v-60a9a2d3><span class="vpi-social-github"></span></a><!--]--></div></div></div><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-9fd4d1dd data-v-6bee1efd><span class="container" data-v-6bee1efd><span class="top" data-v-6bee1efd></span><span class="middle" data-v-6bee1efd></span><span class="bottom" data-v-6bee1efd></span></span></button></div></div></div></div><div class="divider" data-v-9fd4d1dd><div class="divider-line" data-v-9fd4d1dd></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-d8b57b2d data-v-2488c25a><div class="container" data-v-2488c25a><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-2488c25a><span class="vpi-align-left menu-icon" data-v-2488c25a></span><span class="menu-text" data-v-2488c25a>目录</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-2488c25a data-v-6b867909><button data-v-6b867909>回到顶部</button><!----></div></div></div><aside class="VPSidebar" data-v-d8b57b2d data-v-42c4c606><div class="curtain" data-v-42c4c606></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-42c4c606><span class="visually-hidden" id="sidebar-aria-label" data-v-42c4c606> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-51288d80><section class="VPSidebarItem level-0" data-v-51288d80 data-v-0009425e><div class="item" role="button" tabindex="0" data-v-0009425e><div class="indicator" data-v-0009425e></div><h2 class="text" data-v-0009425e>参考</h2><!----></div><div class="items" data-v-0009425e><!--[--><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/commands" data-v-0009425e><!--[--><p class="text" data-v-0009425e>命令</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/config" data-v-0009425e><!--[--><p class="text" data-v-0009425e>配置项</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/scope" data-v-0009425e><!--[--><p class="text" data-v-0009425e>范围与取舍</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-51288d80><section class="VPSidebarItem level-0 collapsible" data-v-51288d80 data-v-0009425e><div class="item" role="button" tabindex="0" data-v-0009425e><div class="indicator" data-v-0009425e></div><h2 class="text" data-v-0009425e>文件格式约定</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-0009425e><span class="vpi-chevron-right caret-icon" data-v-0009425e></span></div></div><div class="items" data-v-0009425e><!--[--><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/contracts/" data-v-0009425e><!--[--><p class="text" data-v-0009425e>总览</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/contracts/spec" data-v-0009425e><!--[--><p class="text" data-v-0009425e>需求说明 spec.md</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/contracts/state" data-v-0009425e><!--[--><p class="text" data-v-0009425e>状态文件 state.json</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/contracts/result-file" data-v-0009425e><!--[--><p class="text" data-v-0009425e>结果文件</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/contracts/feature-files" data-v-0009425e><!--[--><p class="text" data-v-0009425e>功能目录中的文件</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/contracts/verify" data-v-0009425e><!--[--><p class="text" data-v-0009425e>验证方法 verify.md</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/contracts/notifier-event" data-v-0009425e><!--[--><p class="text" data-v-0009425e>外部通知事件</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/contracts/cli-json" data-v-0009425e><!--[--><p class="text" data-v-0009425e>req api 的 JSON 输出</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/contracts/usage-record" data-v-0009425e><!--[--><p class="text" data-v-0009425e>需求索引与使用记录</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-51288d80><section class="VPSidebarItem level-0 collapsible collapsed has-active" data-v-51288d80 data-v-0009425e><div class="item" role="button" tabindex="0" data-v-0009425e><div class="indicator" data-v-0009425e></div><h2 class="text" data-v-0009425e>设计决定(ADR)</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-0009425e><span class="vpi-chevron-right caret-icon" data-v-0009425e></span></div></div><div class="items" data-v-0009425e><!--[--><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/" data-v-0009425e><!--[--><p class="text" data-v-0009425e>总览</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0001-step-agents-under-origin-chat" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0001 步骤 agent 挂在发起的对话下</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0002-no-directory-switch-in-chat" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0002 对话过程中不切换工作目录</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0003-script-engine-not-hub" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0003 第 3–11 步由脚本引擎驱动,不用 Hub 多步骤工作流</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0004-result-files" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0004 步骤结论只看结果文件</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0005-no-default-branch-local-commits-only" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0005 不在默认分支上运行,只做本地提交</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0006-skill-install-targets" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0006 只安装到 ~/.agents/skills 和 ~/.claude/skills</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0007-own-interview-skill" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0007 自带需求访谈 skill,不依赖外部 skill 包</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0008-entries-do-not-call-entries" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0008 入口 skill 之间不互相调用</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0009-versioned-install-layout" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0009 程序与本机配置分开存放,按版本目录并存</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0010-generated-feature-overview" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0010 需求总览现场生成,不维护 INDEX.md</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0011-resume-after-completion" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0011 完成后修改 spec 可以继续开发</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0012-review-panel" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0012 评审小组:首轮并行评审,评审者核实汇总</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0013-no-release-tooling" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0013 发布不使用 changesets 等工具</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0014-notifier-slot" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0014 外部通知只留接口,不内置任何 IM</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0015-incremental-continue" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0015 需求变更后增量继续,而不是从零重做</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0016-upgrade-from-tags" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0016 一键升级:从 git 标签下载到 versions/ 再切换</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0017-use-paseo-capabilities" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0017 用好 Paseo 自身的能力:profile、工作区脚本、用量和时间线</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0018-own-worktree-option" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0018 可选:流水线为需求新建 worktree 工作区</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0019-parallel-orchestration" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0019 用 Paseo 的并行子 agent:确认前独立审阅、方案提案</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0020-scheduling-through-the-chat" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0020 调度:用 Paseo 定时任务把消息发回对话,排队在本机进行</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0021-npm-version-manager" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0021 npm 分发:全局包是版本管理器,各版本仍装在 versions/ 下</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0022-develop-and-verify-phases" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0022 分阶段执行:研发阶段、闸口、测试验证阶段</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0023-types-gate-slices" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0023 需求类型、质量门、按切片实现</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0024-confirm-early-review-axes" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0024 让分歧更早暴露:验收例子、方案确认点、两个方向的评审、反复的问题变成规则</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0025-joint-requirements" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0025 联合需求:一个需求同时改几个仓库</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0026-machine-records-and-api" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0026 本机的需求索引、使用记录和 req api</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0027-paseo-plugin" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0027 Paseo 插件:随 req-kit 一起发布,只通过 req api 工作</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0028-external-integrations" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0028 外部系统对接:命令写法在配置里,内容由 AI 整理,调用是确定的</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0029-requirements-from-cards" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0029 从卡片开始的需求:需求会话代替人,卡片描述代替对话</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0030-card-intake-process" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0030 接单器:共享机器上定时接卡片、转达回复</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0031-fewer-interventions" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0031 少等人:每种中断都有自动的下一步</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0032-npm-only-install" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0032 安装、升级和文档只依赖 npm 源</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0033-prototype-review-and-ui-check" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0033 原型审查页和不靠看图的界面检查</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-d8b57b2d data-v-9a6c75ad><div class="VPDoc has-sidebar has-aside" data-v-9a6c75ad data-v-e6f2a212><!--[--><!--]--><div class="container" data-v-e6f2a212><div class="aside" data-v-e6f2a212><div class="aside-curtain" data-v-e6f2a212></div><div class="aside-container" data-v-e6f2a212><div class="aside-content" data-v-e6f2a212><div class="VPDocAside" data-v-e6f2a212 data-v-cb998dce><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-cb998dce data-v-f610f197><div class="content" data-v-f610f197><div class="outline-marker" data-v-f610f197></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-f610f197>本页内容</div><ul class="VPDocOutlineItem root" data-v-f610f197 data-v-53c99d69><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-cb998dce></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-e6f2a212><div class="content-container" data-v-e6f2a212><!--[--><!--]--><main class="main" data-v-e6f2a212><div style="position:relative;" class="vp-doc _reference_adr_0023-types-gate-slices external-link-icon-enabled" data-v-e6f2a212><div><div><h1 id="_0023-需求类型、质量门、按切片实现" tabindex="-1">0023 需求类型、质量门、按切片实现 <a class="header-anchor" href="#_0023-需求类型、质量门、按切片实现" aria-label="Permalink to "0023 需求类型、质量门、按切片实现""></a></h1><ul><li>状态:已采纳(补充 <a href="./0004-result-files">0004</a>:结果文件可以带计划字段;<a href="./0022-develop-and-verify-phases">0022</a>:评估类需求没有测试验证阶段)</li></ul><h2 id="背景" tabindex="-1">背景 <a class="header-anchor" href="#背景" aria-label="Permalink to "背景""></a></h2><p>到 1.7 为止,所有需求走同一条路:方案设计 → 审核 → 一个 agent 实现全部任务 → 评审 → 验证。三个问题反复出现:</p><ol><li><strong>不同类型的需求要不同的做法。</strong> 修缺陷要先复现、找到原因;重构要先锁住现有行为;"能不能做"的评估根本不该写代码。用新功能的做法处理它们,结果常常"做了,但不是要的":缺陷改的是现象,重构顺手改了行为,评估做成了半成品。</li><li><strong>"规范"只是提示词里的建议。</strong> lint、测试、构建是否通过,靠实现 agent 自己说,评审 agent 再跑一遍;中间没有任何确定性的检查,改坏了也可能写成"通过"。</li><li><strong>大需求一个 agent 做不完。</strong> 上下文被填满、时限 4 小时、中断后整步重做。</li></ol><p>业界的做法(Matt Pocock 的 skills、pstack、Claude Code 和 Cursor 的最佳实践)在这几点上相同:按任务类型走不同的剧本;能用工具判定的交给确定性的检查,不靠模型自评;把工作切成可以单独验证的纵向切片。</p><h2 id="决定" tabindex="-1">决定 <a class="header-anchor" href="#决定" aria-label="Permalink to "决定""></a></h2><h3 id="需求类型" tabindex="-1">需求类型 <a class="header-anchor" href="#需求类型" aria-label="Permalink to "需求类型""></a></h3><ul><li>spec 头部的 <code>- 类型:</code> 由引擎读取。缺陷、重构、评估三种有自己的<strong>剧本</strong>;新需求、小改动和其他写法走原来的流程。配置 <code>requirementTypes</code> 可以关掉某个剧本(该类型改走原来的流程)。</li><li>剧本<strong>不新增步骤</strong>,而是改变已有步骤做什么:每种类型一个提示词文件 <code>engine/prompts/types/<类型>.md</code>,按"## 步骤名(步骤 ID)"分节,引擎把"所有步骤"一节和当前步骤的一节接在本步骤任务之后,并在 <code><pipeline-context></code> 中写明类型。步骤 ID、结果文件和状态都不变,续跑、增量继续、分阶段执行照常适用;<code>prompts.local/types/</code> 可以覆盖。剧本可以改步骤的显示名称(缺陷的方案设计叫"复现与定位")。</li><li><strong>缺陷</strong>:方案设计改为复现与定位,先提交一个修复前失败的复现测试或脚本,写 <code>diagnosis.md</code>(根因、影响面)。复现不了时结果文件写 <code>reproduced: false</code> 和要问的问题,流水线像方案审核阻塞一样暂停,把问题发回对话。修复必须让复现转绿,评审要实际确认它修复前失败。</li><li><strong>重构</strong>:先补特征测试锁住现有行为,单独提交;之后小步改动,每步全绿;评审的首要问题是"行为有没有变",特征测试的断言被改要说明理由。</li><li><strong>评估</strong>:只读。调研评估写 <code>assessment.md</code> → 评估审阅 ⇄ 修订 → 评估报告;没有实现、代码评审、提测和验证,执行方式一律按连续。功能目录之外有文件被改动时,引擎把它写进报告的上下文。报告最后给出需求草稿,对话可以接着提一个新需求。</li><li>类型由 <code>/req</code> 在访谈时判断并请用户确认;访谈的重点随类型变化(复现步骤、必须不变的行为、要回答的问题)。</li></ul><h3 id="质量门" tabindex="-1">质量门 <a class="header-anchor" href="#质量门" aria-label="Permalink to "质量门""></a></h3><ul><li>项目配置 <code>checks</code> 列出流水线<strong>自己运行</strong>的检查(格式、lint、类型检查、单元测试、构建),由 <code>/req-setup</code> 从实际跑通的命令写入。端到端测试和需要启动服务的检查不放这里,它们属于功能验证。</li><li>每次尝试开始时(方案设计之前,任何提交之前)运行全部检查,记录<strong>基线</strong>。放在方案设计之前,是因为缺陷的复现测试在复现与定位时就提交了,基线晚了会把整个测试检查记成"原本就失败"。</li><li>代码实现(每一片)、评审问题修复、缺陷修复结束后运行与改动相关的检查。只有<strong>改动前通过、现在失败</strong>的检查拦下:把命令和输出的最后部分作为追问发回<strong>同一个 agent</strong>(它还记得自己改了什么),最多 <code>qualityGate.fixAttempts</code> 次(默认 2)。仍然失败时<strong>照常继续</strong>,结果写进状态文件,交给代码评审(要求按阻塞或重要提出)和报告(结论最高为"有遗留问题")。不让一个 lint 问题卡住整个需求,也不会无声地放过。</li><li>比较以"一项检查"为单位,不细到测试用例:粗,但与项目的测试框架无关。原本就失败的检查不拦,但会在报告中列出。</li><li>检查通过系统 shell 运行(Windows 上是 cmd.exe),命令要写成各系统通用的形式,与 <code>paseo.json</code> 的约定相同。没有配置检查时一切照旧,报告注明"未配置"。</li></ul><h3 id="多模块与关联仓库" tabindex="-1">多模块与关联仓库 <a class="header-anchor" href="#多模块与关联仓库" aria-label="Permalink to "多模块与关联仓库""></a></h3><ul><li>检查可以带 <code>cwd</code> 或 <code>paths</code>:只有改动碰到这些路径时才运行,单仓库多模块的项目只检查改动的模块。</li><li>项目配置 <code>relatedRepos</code> 登记其他仓库(例如前端项目的后端)。步骤在 <code><pipeline-context></code> 中看到它们的位置、分支和提交,按 <code>related-repos.md</code> <strong>只读</strong>参考:不修改、不提交;验证需要对方服务时优先用已部署的测试环境。</li><li>两边都要改的"联合需求"(父子运行、接口约定、联合验证)不在这个版本,单独设计。</li></ul><h3 id="按切片实现" tabindex="-1">按切片实现 <a class="header-anchor" href="#按切片实现" aria-label="Permalink to "按切片实现""></a></h3><ul><li>方案的实施计划分成<strong>纵向切片</strong>(每片能单独演示和验证),设计步骤在结果文件的可选字段 <code>slices</code> 中列出;方案修订可以给出新列表。</li><li>档位在 <code>slices.profiles</code> 中(默认只有标准档)、且有两片以上时,代码实现按片逐个启动新的 agent(步骤键 <code>implement-s<序号></code>),每片各自提交、各自过一次质量门;中断后只重做当前片。超过 <code>slices.max</code>(默认 6)时最后几片合并。只有一片、快速档时与原来相同。</li><li>子需求(把大需求拆成几个各有 spec 的需求)不在这个版本:切片已经解决上下文和中断的问题。</li></ul><h3 id="范围检查" tabindex="-1">范围检查 <a class="header-anchor" href="#范围检查" aria-label="Permalink to "范围检查""></a></h3><ul><li>设计结果的可选字段 <code>files</code> 列出预计改动的文件和目录。代码评审前,引擎比对这次尝试实际改动的文件(不含功能目录),把清单之外的交给评审逐一判断:必需的写理由,无关的要求撤回。评审同时增加"影响面"一节,并明确只把影响正确性、安全、数据和验收的问题提为阻塞或重要,避免评审意见把代码越改越复杂。</li></ul><h2 id="影响" tabindex="-1">影响 <a class="header-anchor" href="#影响" aria-label="Permalink to "影响""></a></h2><ul><li>状态文件只增加可选字段(<code>type</code>、<code>codeBase</code>、<code>gate</code>),格式版本仍为 1;结果文件增加可选字段。回滚到 1.7 后,旧引擎忽略这些字段;按切片实现中断的需求,旧引擎会把整个实现重做一遍。</li><li>有检查的项目,每次尝试多一次基线运行,写代码的步骤之后各多一次检查运行。检查要能在几分钟内跑完。</li><li>不同的需求类型复用同一套步骤和状态:以后增加类型(界面改动、数据变更、性能优化)只需要一个剧本文件和少量引擎分支。</li></ul></div><p class="source-note">本页由仓库中的 <a href="https://github.com/yiyisf/paseo-req-kit/blob/main/docs/adr/0023-types-gate-slices.md">docs/adr/0023-types-gate-slices.md</a> 生成。<a href="https://github.com/yiyisf/paseo-req-kit/edit/main/docs/adr/0023-types-gate-slices.md">在 GitHub 上编辑</a></p></div></div></main><footer class="VPDocFooter" data-v-e6f2a212 data-v-1bcd8184><!--[--><!--]--><!----><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-1bcd8184><span class="visually-hidden" id="doc-footer-aria-label" data-v-1bcd8184>Pager</span><div class="pager" data-v-1bcd8184><a class="VPLink link pager-link prev" href="/reference/adr/0022-develop-and-verify-phases" data-v-1bcd8184><!--[--><span class="desc" data-v-1bcd8184>上一页</span><span class="title" data-v-1bcd8184>0022 分阶段执行:研发阶段、闸口、测试验证阶段</span><!--]--></a></div><div class="pager" data-v-1bcd8184><a class="VPLink link pager-link next" href="/reference/adr/0024-confirm-early-review-axes" data-v-1bcd8184><!--[--><span class="desc" data-v-1bcd8184>下一页</span><span class="title" data-v-1bcd8184>0024 让分歧更早暴露:验收例子、方案确认点、两个方向的评审、反复的问题变成规则</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><footer class="VPFooter has-sidebar" data-v-d8b57b2d data-v-566314d4><div class="container" data-v-566314d4><p class="message" data-v-566314d4>以 MIT 许可发布。req-kit 是运行在 Paseo 上的社区项目。</p><p class="copyright" data-v-566314d4>Copyright © 2026 yiyisf</p></div></footer><!--[--><!--]--></div></div>
|
|
27
|
-
<script>window.__VP_HASH_MAP__=JSON.parse("{\"changelog.md\":\"
|
|
26
|
+
<div id="app"><div class="Layout" data-v-d8b57b2d><!--[--><!--]--><!--[--><span tabindex="-1" data-v-fcbfc0e0></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-fcbfc0e0>Skip to content</a><!--]--><!----><header class="VPNav" data-v-d8b57b2d data-v-7ad780c2><div class="VPNavBar" data-v-7ad780c2 data-v-9fd4d1dd><div class="wrapper" data-v-9fd4d1dd><div class="container" data-v-9fd4d1dd><div class="title" data-v-9fd4d1dd><div class="VPNavBarTitle has-sidebar" data-v-9fd4d1dd data-v-9f43907a><a class="title" href="/" data-v-9f43907a><!--[--><!--]--><!--[--><img class="VPImage logo" src="/logo.svg" alt data-v-ab19afbb><!--]--><span data-v-9f43907a>req-kit</span><!--[--><!--]--></a></div></div><div class="content" data-v-9fd4d1dd><div class="content-body" data-v-9fd4d1dd><!--[--><!--]--><div class="VPNavBarSearch search" data-v-9fd4d1dd><!--[--><!----><div id="local-search"><button type="button" class="DocSearch DocSearch-Button" aria-label="搜索文档"><span class="DocSearch-Button-Container"><span class="vp-icon DocSearch-Search-Icon"></span><span class="DocSearch-Button-Placeholder">搜索文档</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-9fd4d1dd data-v-afb2845e><span id="main-nav-aria-label" class="visually-hidden" data-v-afb2845e> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/guide/" tabindex="0" data-v-afb2845e data-v-815115f5><!--[--><span data-v-815115f5>指南</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink active" href="/reference/commands" tabindex="0" data-v-afb2845e data-v-815115f5><!--[--><span data-v-815115f5>参考</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/changelog" tabindex="0" data-v-afb2845e data-v-815115f5><!--[--><span data-v-815115f5>更新记录</span><!--]--></a><!--]--><!--[--><div class="VPFlyout VPNavBarMenuGroup" data-v-afb2845e data-v-bfe7971f><button type="button" class="button" aria-haspopup="true" aria-expanded="false" data-v-bfe7971f><span class="text" data-v-bfe7971f><!----><span data-v-bfe7971f>v1.13.0</span><span class="vpi-chevron-down text-icon" data-v-bfe7971f></span></span></button><div class="menu" data-v-bfe7971f><div class="VPMenu" data-v-bfe7971f data-v-20ed86d6><div class="items" data-v-20ed86d6><!--[--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/changelog" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>更新记录</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link vp-external-link-icon" href="https://github.com/yiyisf/paseo-req-kit/releases" target="_blank" rel="noreferrer" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>GitHub Releases</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/reference/scope" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>范围与取舍</span><!--]--></a></div><!--]--><!--]--></div><!--[--><!--]--></div></div></div><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-9fd4d1dd data-v-3f90c1a5><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-3f90c1a5 data-v-be9742d9 data-v-b4ccac88><span class="check" data-v-b4ccac88><span class="icon" data-v-b4ccac88><!--[--><span class="vpi-sun sun" data-v-be9742d9></span><span class="vpi-moon moon" data-v-be9742d9></span><!--]--></span></span></button></div><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-9fd4d1dd data-v-ef6192dc data-v-e71e869c><!--[--><a class="VPSocialLink no-icon" href="https://github.com/yiyisf/paseo-req-kit" aria-label="github" target="_blank" rel="noopener" data-v-e71e869c data-v-60a9a2d3><span class="vpi-social-github"></span></a><!--]--></div><div class="VPFlyout VPNavBarExtra extra" data-v-9fd4d1dd data-v-f953d92f data-v-bfe7971f><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-bfe7971f><span class="vpi-more-horizontal icon" data-v-bfe7971f></span></button><div class="menu" data-v-bfe7971f><div class="VPMenu" data-v-bfe7971f data-v-20ed86d6><!----><!--[--><!--[--><!----><div class="group" data-v-f953d92f><div class="item appearance" data-v-f953d92f><p class="label" data-v-f953d92f>外观</p><div class="appearance-action" data-v-f953d92f><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-f953d92f data-v-be9742d9 data-v-b4ccac88><span class="check" data-v-b4ccac88><span class="icon" data-v-b4ccac88><!--[--><span class="vpi-sun sun" data-v-be9742d9></span><span class="vpi-moon moon" data-v-be9742d9></span><!--]--></span></span></button></div></div></div><div class="group" data-v-f953d92f><div class="item social-links" data-v-f953d92f><div class="VPSocialLinks social-links-list" data-v-f953d92f data-v-e71e869c><!--[--><a class="VPSocialLink no-icon" href="https://github.com/yiyisf/paseo-req-kit" aria-label="github" target="_blank" rel="noopener" data-v-e71e869c data-v-60a9a2d3><span class="vpi-social-github"></span></a><!--]--></div></div></div><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-9fd4d1dd data-v-6bee1efd><span class="container" data-v-6bee1efd><span class="top" data-v-6bee1efd></span><span class="middle" data-v-6bee1efd></span><span class="bottom" data-v-6bee1efd></span></span></button></div></div></div></div><div class="divider" data-v-9fd4d1dd><div class="divider-line" data-v-9fd4d1dd></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-d8b57b2d data-v-2488c25a><div class="container" data-v-2488c25a><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-2488c25a><span class="vpi-align-left menu-icon" data-v-2488c25a></span><span class="menu-text" data-v-2488c25a>目录</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-2488c25a data-v-6b867909><button data-v-6b867909>回到顶部</button><!----></div></div></div><aside class="VPSidebar" data-v-d8b57b2d data-v-42c4c606><div class="curtain" data-v-42c4c606></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-42c4c606><span class="visually-hidden" id="sidebar-aria-label" data-v-42c4c606> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-51288d80><section class="VPSidebarItem level-0" data-v-51288d80 data-v-0009425e><div class="item" role="button" tabindex="0" data-v-0009425e><div class="indicator" data-v-0009425e></div><h2 class="text" data-v-0009425e>参考</h2><!----></div><div class="items" data-v-0009425e><!--[--><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/commands" data-v-0009425e><!--[--><p class="text" data-v-0009425e>命令</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/config" data-v-0009425e><!--[--><p class="text" data-v-0009425e>配置项</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/scope" data-v-0009425e><!--[--><p class="text" data-v-0009425e>范围与取舍</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-51288d80><section class="VPSidebarItem level-0 collapsible" data-v-51288d80 data-v-0009425e><div class="item" role="button" tabindex="0" data-v-0009425e><div class="indicator" data-v-0009425e></div><h2 class="text" data-v-0009425e>文件格式约定</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-0009425e><span class="vpi-chevron-right caret-icon" data-v-0009425e></span></div></div><div class="items" data-v-0009425e><!--[--><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/contracts/" data-v-0009425e><!--[--><p class="text" data-v-0009425e>总览</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/contracts/spec" data-v-0009425e><!--[--><p class="text" data-v-0009425e>需求说明 spec.md</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/contracts/state" data-v-0009425e><!--[--><p class="text" data-v-0009425e>状态文件 state.json</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/contracts/result-file" data-v-0009425e><!--[--><p class="text" data-v-0009425e>结果文件</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/contracts/feature-files" data-v-0009425e><!--[--><p class="text" data-v-0009425e>功能目录中的文件</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/contracts/verify" data-v-0009425e><!--[--><p class="text" data-v-0009425e>验证方法 verify.md</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/contracts/notifier-event" data-v-0009425e><!--[--><p class="text" data-v-0009425e>外部通知事件</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/contracts/cli-json" data-v-0009425e><!--[--><p class="text" data-v-0009425e>req api 的 JSON 输出</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/contracts/usage-record" data-v-0009425e><!--[--><p class="text" data-v-0009425e>需求索引与使用记录</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-51288d80><section class="VPSidebarItem level-0 collapsible collapsed has-active" data-v-51288d80 data-v-0009425e><div class="item" role="button" tabindex="0" data-v-0009425e><div class="indicator" data-v-0009425e></div><h2 class="text" data-v-0009425e>设计决定(ADR)</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-0009425e><span class="vpi-chevron-right caret-icon" data-v-0009425e></span></div></div><div class="items" data-v-0009425e><!--[--><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/" data-v-0009425e><!--[--><p class="text" data-v-0009425e>总览</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0001-step-agents-under-origin-chat" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0001 步骤 agent 挂在发起的对话下</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0002-no-directory-switch-in-chat" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0002 对话过程中不切换工作目录</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0003-script-engine-not-hub" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0003 第 3–11 步由脚本引擎驱动,不用 Hub 多步骤工作流</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0004-result-files" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0004 步骤结论只看结果文件</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0005-no-default-branch-local-commits-only" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0005 不在默认分支上运行,只做本地提交</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0006-skill-install-targets" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0006 只安装到 ~/.agents/skills 和 ~/.claude/skills</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0007-own-interview-skill" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0007 自带需求访谈 skill,不依赖外部 skill 包</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0008-entries-do-not-call-entries" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0008 入口 skill 之间不互相调用</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0009-versioned-install-layout" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0009 程序与本机配置分开存放,按版本目录并存</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0010-generated-feature-overview" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0010 需求总览现场生成,不维护 INDEX.md</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0011-resume-after-completion" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0011 完成后修改 spec 可以继续开发</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0012-review-panel" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0012 评审小组:首轮并行评审,评审者核实汇总</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0013-no-release-tooling" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0013 发布不使用 changesets 等工具</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0014-notifier-slot" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0014 外部通知只留接口,不内置任何 IM</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0015-incremental-continue" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0015 需求变更后增量继续,而不是从零重做</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0016-upgrade-from-tags" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0016 一键升级:从 git 标签下载到 versions/ 再切换</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0017-use-paseo-capabilities" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0017 用好 Paseo 自身的能力:profile、工作区脚本、用量和时间线</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0018-own-worktree-option" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0018 可选:流水线为需求新建 worktree 工作区</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0019-parallel-orchestration" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0019 用 Paseo 的并行子 agent:确认前独立审阅、方案提案</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0020-scheduling-through-the-chat" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0020 调度:用 Paseo 定时任务把消息发回对话,排队在本机进行</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0021-npm-version-manager" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0021 npm 分发:全局包是版本管理器,各版本仍装在 versions/ 下</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0022-develop-and-verify-phases" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0022 分阶段执行:研发阶段、闸口、测试验证阶段</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0023-types-gate-slices" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0023 需求类型、质量门、按切片实现</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0024-confirm-early-review-axes" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0024 让分歧更早暴露:验收例子、方案确认点、两个方向的评审、反复的问题变成规则</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0025-joint-requirements" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0025 联合需求:一个需求同时改几个仓库</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0026-machine-records-and-api" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0026 本机的需求索引、使用记录和 req api</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0027-paseo-plugin" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0027 Paseo 插件:随 req-kit 一起发布,只通过 req api 工作</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0028-external-integrations" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0028 外部系统对接:命令写法在配置里,内容由 AI 整理,调用是确定的</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0029-requirements-from-cards" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0029 从卡片开始的需求:需求会话代替人,卡片描述代替对话</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0030-card-intake-process" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0030 接单器:共享机器上定时接卡片、转达回复</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0031-fewer-interventions" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0031 少等人:每种中断都有自动的下一步</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0032-npm-only-install" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0032 安装、升级和文档只依赖 npm 源</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0009425e><div class="item" data-v-0009425e><div class="indicator" data-v-0009425e></div><a class="VPLink link link" href="/reference/adr/0033-prototype-review-and-ui-check" data-v-0009425e><!--[--><p class="text" data-v-0009425e>0033 原型审查页和不靠看图的界面检查</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-d8b57b2d data-v-9a6c75ad><div class="VPDoc has-sidebar has-aside" data-v-9a6c75ad data-v-e6f2a212><!--[--><!--]--><div class="container" data-v-e6f2a212><div class="aside" data-v-e6f2a212><div class="aside-curtain" data-v-e6f2a212></div><div class="aside-container" data-v-e6f2a212><div class="aside-content" data-v-e6f2a212><div class="VPDocAside" data-v-e6f2a212 data-v-cb998dce><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-cb998dce data-v-f610f197><div class="content" data-v-f610f197><div class="outline-marker" data-v-f610f197></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-f610f197>本页内容</div><ul class="VPDocOutlineItem root" data-v-f610f197 data-v-53c99d69><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-cb998dce></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-e6f2a212><div class="content-container" data-v-e6f2a212><!--[--><!--]--><main class="main" data-v-e6f2a212><div style="position:relative;" class="vp-doc _reference_adr_0023-types-gate-slices external-link-icon-enabled" data-v-e6f2a212><div><div><h1 id="_0023-需求类型、质量门、按切片实现" tabindex="-1">0023 需求类型、质量门、按切片实现 <a class="header-anchor" href="#_0023-需求类型、质量门、按切片实现" aria-label="Permalink to "0023 需求类型、质量门、按切片实现""></a></h1><ul><li>状态:已采纳(补充 <a href="./0004-result-files">0004</a>:结果文件可以带计划字段;<a href="./0022-develop-and-verify-phases">0022</a>:评估类需求没有测试验证阶段)</li></ul><h2 id="背景" tabindex="-1">背景 <a class="header-anchor" href="#背景" aria-label="Permalink to "背景""></a></h2><p>到 1.7 为止,所有需求走同一条路:方案设计 → 审核 → 一个 agent 实现全部任务 → 评审 → 验证。三个问题反复出现:</p><ol><li><strong>不同类型的需求要不同的做法。</strong> 修缺陷要先复现、找到原因;重构要先锁住现有行为;"能不能做"的评估根本不该写代码。用新功能的做法处理它们,结果常常"做了,但不是要的":缺陷改的是现象,重构顺手改了行为,评估做成了半成品。</li><li><strong>"规范"只是提示词里的建议。</strong> lint、测试、构建是否通过,靠实现 agent 自己说,评审 agent 再跑一遍;中间没有任何确定性的检查,改坏了也可能写成"通过"。</li><li><strong>大需求一个 agent 做不完。</strong> 上下文被填满、时限 4 小时、中断后整步重做。</li></ol><p>业界的做法(Matt Pocock 的 skills、pstack、Claude Code 和 Cursor 的最佳实践)在这几点上相同:按任务类型走不同的剧本;能用工具判定的交给确定性的检查,不靠模型自评;把工作切成可以单独验证的纵向切片。</p><h2 id="决定" tabindex="-1">决定 <a class="header-anchor" href="#决定" aria-label="Permalink to "决定""></a></h2><h3 id="需求类型" tabindex="-1">需求类型 <a class="header-anchor" href="#需求类型" aria-label="Permalink to "需求类型""></a></h3><ul><li>spec 头部的 <code>- 类型:</code> 由引擎读取。缺陷、重构、评估三种有自己的<strong>剧本</strong>;新需求、小改动和其他写法走原来的流程。配置 <code>requirementTypes</code> 可以关掉某个剧本(该类型改走原来的流程)。</li><li>剧本<strong>不新增步骤</strong>,而是改变已有步骤做什么:每种类型一个提示词文件 <code>engine/prompts/types/<类型>.md</code>,按"## 步骤名(步骤 ID)"分节,引擎把"所有步骤"一节和当前步骤的一节接在本步骤任务之后,并在 <code><pipeline-context></code> 中写明类型。步骤 ID、结果文件和状态都不变,续跑、增量继续、分阶段执行照常适用;<code>prompts.local/types/</code> 可以覆盖。剧本可以改步骤的显示名称(缺陷的方案设计叫"复现与定位")。</li><li><strong>缺陷</strong>:方案设计改为复现与定位,先提交一个修复前失败的复现测试或脚本,写 <code>diagnosis.md</code>(根因、影响面)。复现不了时结果文件写 <code>reproduced: false</code> 和要问的问题,流水线像方案审核阻塞一样暂停,把问题发回对话。修复必须让复现转绿,评审要实际确认它修复前失败。</li><li><strong>重构</strong>:先补特征测试锁住现有行为,单独提交;之后小步改动,每步全绿;评审的首要问题是"行为有没有变",特征测试的断言被改要说明理由。</li><li><strong>评估</strong>:只读。调研评估写 <code>assessment.md</code> → 评估审阅 ⇄ 修订 → 评估报告;没有实现、代码评审、提测和验证,执行方式一律按连续。功能目录之外有文件被改动时,引擎把它写进报告的上下文。报告最后给出需求草稿,对话可以接着提一个新需求。</li><li>类型由 <code>/req</code> 在访谈时判断并请用户确认;访谈的重点随类型变化(复现步骤、必须不变的行为、要回答的问题)。</li></ul><h3 id="质量门" tabindex="-1">质量门 <a class="header-anchor" href="#质量门" aria-label="Permalink to "质量门""></a></h3><ul><li>项目配置 <code>checks</code> 列出流水线<strong>自己运行</strong>的检查(格式、lint、类型检查、单元测试、构建),由 <code>/req-setup</code> 从实际跑通的命令写入。端到端测试和需要启动服务的检查不放这里,它们属于功能验证。</li><li>每次尝试开始时(方案设计之前,任何提交之前)运行全部检查,记录<strong>基线</strong>。放在方案设计之前,是因为缺陷的复现测试在复现与定位时就提交了,基线晚了会把整个测试检查记成"原本就失败"。</li><li>代码实现(每一片)、评审问题修复、缺陷修复结束后运行与改动相关的检查。只有<strong>改动前通过、现在失败</strong>的检查拦下:把命令和输出的最后部分作为追问发回<strong>同一个 agent</strong>(它还记得自己改了什么),最多 <code>qualityGate.fixAttempts</code> 次(默认 2)。仍然失败时<strong>照常继续</strong>,结果写进状态文件,交给代码评审(要求按阻塞或重要提出)和报告(结论最高为"有遗留问题")。不让一个 lint 问题卡住整个需求,也不会无声地放过。</li><li>比较以"一项检查"为单位,不细到测试用例:粗,但与项目的测试框架无关。原本就失败的检查不拦,但会在报告中列出。</li><li>检查通过系统 shell 运行(Windows 上是 cmd.exe),命令要写成各系统通用的形式,与 <code>paseo.json</code> 的约定相同。没有配置检查时一切照旧,报告注明"未配置"。</li></ul><h3 id="多模块与关联仓库" tabindex="-1">多模块与关联仓库 <a class="header-anchor" href="#多模块与关联仓库" aria-label="Permalink to "多模块与关联仓库""></a></h3><ul><li>检查可以带 <code>cwd</code> 或 <code>paths</code>:只有改动碰到这些路径时才运行,单仓库多模块的项目只检查改动的模块。</li><li>项目配置 <code>relatedRepos</code> 登记其他仓库(例如前端项目的后端)。步骤在 <code><pipeline-context></code> 中看到它们的位置、分支和提交,按 <code>related-repos.md</code> <strong>只读</strong>参考:不修改、不提交;验证需要对方服务时优先用已部署的测试环境。</li><li>两边都要改的"联合需求"(父子运行、接口约定、联合验证)不在这个版本,单独设计。</li></ul><h3 id="按切片实现" tabindex="-1">按切片实现 <a class="header-anchor" href="#按切片实现" aria-label="Permalink to "按切片实现""></a></h3><ul><li>方案的实施计划分成<strong>纵向切片</strong>(每片能单独演示和验证),设计步骤在结果文件的可选字段 <code>slices</code> 中列出;方案修订可以给出新列表。</li><li>档位在 <code>slices.profiles</code> 中(默认只有标准档)、且有两片以上时,代码实现按片逐个启动新的 agent(步骤键 <code>implement-s<序号></code>),每片各自提交、各自过一次质量门;中断后只重做当前片。超过 <code>slices.max</code>(默认 6)时最后几片合并。只有一片、快速档时与原来相同。</li><li>子需求(把大需求拆成几个各有 spec 的需求)不在这个版本:切片已经解决上下文和中断的问题。</li></ul><h3 id="范围检查" tabindex="-1">范围检查 <a class="header-anchor" href="#范围检查" aria-label="Permalink to "范围检查""></a></h3><ul><li>设计结果的可选字段 <code>files</code> 列出预计改动的文件和目录。代码评审前,引擎比对这次尝试实际改动的文件(不含功能目录),把清单之外的交给评审逐一判断:必需的写理由,无关的要求撤回。评审同时增加"影响面"一节,并明确只把影响正确性、安全、数据和验收的问题提为阻塞或重要,避免评审意见把代码越改越复杂。</li></ul><h2 id="影响" tabindex="-1">影响 <a class="header-anchor" href="#影响" aria-label="Permalink to "影响""></a></h2><ul><li>状态文件只增加可选字段(<code>type</code>、<code>codeBase</code>、<code>gate</code>),格式版本仍为 1;结果文件增加可选字段。回滚到 1.7 后,旧引擎忽略这些字段;按切片实现中断的需求,旧引擎会把整个实现重做一遍。</li><li>有检查的项目,每次尝试多一次基线运行,写代码的步骤之后各多一次检查运行。检查要能在几分钟内跑完。</li><li>不同的需求类型复用同一套步骤和状态:以后增加类型(界面改动、数据变更、性能优化)只需要一个剧本文件和少量引擎分支。</li></ul></div><p class="source-note">本页由仓库中的 <a href="https://github.com/yiyisf/paseo-req-kit/blob/main/docs/adr/0023-types-gate-slices.md">docs/adr/0023-types-gate-slices.md</a> 生成。<a href="https://github.com/yiyisf/paseo-req-kit/edit/main/docs/adr/0023-types-gate-slices.md">在 GitHub 上编辑</a></p></div></div></main><footer class="VPDocFooter" data-v-e6f2a212 data-v-1bcd8184><!--[--><!--]--><!----><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-1bcd8184><span class="visually-hidden" id="doc-footer-aria-label" data-v-1bcd8184>Pager</span><div class="pager" data-v-1bcd8184><a class="VPLink link pager-link prev" href="/reference/adr/0022-develop-and-verify-phases" data-v-1bcd8184><!--[--><span class="desc" data-v-1bcd8184>上一页</span><span class="title" data-v-1bcd8184>0022 分阶段执行:研发阶段、闸口、测试验证阶段</span><!--]--></a></div><div class="pager" data-v-1bcd8184><a class="VPLink link pager-link next" href="/reference/adr/0024-confirm-early-review-axes" data-v-1bcd8184><!--[--><span class="desc" data-v-1bcd8184>下一页</span><span class="title" data-v-1bcd8184>0024 让分歧更早暴露:验收例子、方案确认点、两个方向的评审、反复的问题变成规则</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><footer class="VPFooter has-sidebar" data-v-d8b57b2d data-v-566314d4><div class="container" data-v-566314d4><p class="message" data-v-566314d4>以 MIT 许可发布。req-kit 是运行在 Paseo 上的社区项目。</p><p class="copyright" data-v-566314d4>Copyright © 2026 yiyisf</p></div></footer><!--[--><!--]--></div></div>
|
|
27
|
+
<script>window.__VP_HASH_MAP__=JSON.parse("{\"changelog.md\":\"BzAEYWi7\",\"guide_getting-started.md\":\"CA-aS0r_\",\"guide_how-it-works.md\":\"D-kQsF1t\",\"guide_index.md\":\"CLnGCmGW\",\"guide_install.md\":\"DkCyZsOU\",\"guide_maintainer.md\":\"C1v7EpSY\",\"guide_phases.md\":\"BpGAb1re\",\"guide_project.md\":\"qQLH2fWy\",\"guide_user.md\":\"Cenm9vlN\",\"index.md\":\"Cf_sSf_f\",\"reference_adr_0001-step-agents-under-origin-chat.md\":\"RtRTq7oi\",\"reference_adr_0002-no-directory-switch-in-chat.md\":\"BxtN-Aa2\",\"reference_adr_0003-script-engine-not-hub.md\":\"66EgZtqx\",\"reference_adr_0004-result-files.md\":\"DbqcCozI\",\"reference_adr_0005-no-default-branch-local-commits-only.md\":\"CkImA4s6\",\"reference_adr_0006-skill-install-targets.md\":\"CwY8YepV\",\"reference_adr_0007-own-interview-skill.md\":\"CryhxRyG\",\"reference_adr_0008-entries-do-not-call-entries.md\":\"DsRWAgeA\",\"reference_adr_0009-versioned-install-layout.md\":\"CSg1VqlW\",\"reference_adr_0010-generated-feature-overview.md\":\"D8F3MK-h\",\"reference_adr_0011-resume-after-completion.md\":\"BCrZrKjf\",\"reference_adr_0012-review-panel.md\":\"k9rrHFFc\",\"reference_adr_0013-no-release-tooling.md\":\"BQeJ8dEI\",\"reference_adr_0014-notifier-slot.md\":\"C23QR1xO\",\"reference_adr_0015-incremental-continue.md\":\"Buy7wwO8\",\"reference_adr_0016-upgrade-from-tags.md\":\"qfIW-tqJ\",\"reference_adr_0017-use-paseo-capabilities.md\":\"CjcGli87\",\"reference_adr_0018-own-worktree-option.md\":\"fVDpgGSE\",\"reference_adr_0019-parallel-orchestration.md\":\"DrfrV0To\",\"reference_adr_0020-scheduling-through-the-chat.md\":\"BqSemGFG\",\"reference_adr_0021-npm-version-manager.md\":\"CU3PG6y5\",\"reference_adr_0022-develop-and-verify-phases.md\":\"C6fQDLq4\",\"reference_adr_0023-types-gate-slices.md\":\"D2E6yyYQ\",\"reference_adr_0024-confirm-early-review-axes.md\":\"FmK_ke0x\",\"reference_adr_0025-joint-requirements.md\":\"ChoKvMUx\",\"reference_adr_0026-machine-records-and-api.md\":\"veybjBPq\",\"reference_adr_0027-paseo-plugin.md\":\"BMX33ZNU\",\"reference_adr_0028-external-integrations.md\":\"DtdMe8RK\",\"reference_adr_0029-requirements-from-cards.md\":\"BHd1SQPe\",\"reference_adr_0030-card-intake-process.md\":\"kLc-DG9_\",\"reference_adr_0031-fewer-interventions.md\":\"BDnQcz8g\",\"reference_adr_0032-npm-only-install.md\":\"C-3L1FkX\",\"reference_adr_0033-prototype-review-and-ui-check.md\":\"hFcQzmaa\",\"reference_adr_index.md\":\"BYF-Ofor\",\"reference_commands.md\":\"ClKbS-t8\",\"reference_config.md\":\"CRe27LaA\",\"reference_contracts_cli-json.md\":\"B7o8deSY\",\"reference_contracts_feature-files.md\":\"DSiA8OEH\",\"reference_contracts_index.md\":\"Bkznz4px\",\"reference_contracts_notifier-event.md\":\"CCfrkm_A\",\"reference_contracts_result-file.md\":\"DmR4fjB-\",\"reference_contracts_spec.md\":\"BwwS0L_j\",\"reference_contracts_state.md\":\"EEBd_l2P\",\"reference_contracts_usage-record.md\":\"DBMNY4OP\",\"reference_contracts_verify.md\":\"CbA88u6S\",\"reference_scope.md\":\"Kzqw8U_f\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"zh-CN\",\"dir\":\"ltr\",\"title\":\"req-kit\",\"titleTemplate\":\":title · req-kit\",\"description\":\"在 Paseo 中用对话对齐需求,由一组 AI agent 在后台完成设计、实现、评审和验证。给测试、产品、项目经理用的需求开发体系。\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"logo\":\"/logo.svg\",\"siteTitle\":\"req-kit\",\"nav\":[{\"text\":\"指南\",\"link\":\"/guide/\",\"activeMatch\":\"^/guide/\"},{\"text\":\"参考\",\"link\":\"/reference/commands\",\"activeMatch\":\"^/reference/\"},{\"text\":\"更新记录\",\"link\":\"/changelog\"},{\"text\":\"v1.13.0\",\"items\":[{\"text\":\"更新记录\",\"link\":\"/changelog\"},{\"text\":\"GitHub Releases\",\"link\":\"https://github.com/yiyisf/paseo-req-kit/releases\"},{\"text\":\"范围与取舍\",\"link\":\"/reference/scope\"}]}],\"sidebar\":{\"/guide/\":[{\"text\":\"开始\",\"items\":[{\"text\":\"req-kit 是什么\",\"link\":\"/guide/\"},{\"text\":\"快速开始\",\"link\":\"/guide/getting-started\"},{\"text\":\"工作原理\",\"link\":\"/guide/how-it-works\"}]},{\"text\":\"使用\",\"items\":[{\"text\":\"使用者指南\",\"link\":\"/guide/user\"},{\"text\":\"分阶段执行与提测\",\"link\":\"/guide/phases\"}]},{\"text\":\"安装与维护\",\"items\":[{\"text\":\"安装与升级\",\"link\":\"/guide/install\"},{\"text\":\"项目定制与运行规则\",\"link\":\"/guide/project\"},{\"text\":\"维护者指南\",\"link\":\"/guide/maintainer\"}]}],\"/reference/\":[{\"text\":\"参考\",\"items\":[{\"text\":\"命令\",\"link\":\"/reference/commands\"},{\"text\":\"配置项\",\"link\":\"/reference/config\"},{\"text\":\"范围与取舍\",\"link\":\"/reference/scope\"}]},{\"text\":\"文件格式约定\",\"collapsed\":false,\"items\":[{\"text\":\"总览\",\"link\":\"/reference/contracts/\"},{\"text\":\"需求说明 spec.md\",\"link\":\"/reference/contracts/spec\"},{\"text\":\"状态文件 state.json\",\"link\":\"/reference/contracts/state\"},{\"text\":\"结果文件\",\"link\":\"/reference/contracts/result-file\"},{\"text\":\"功能目录中的文件\",\"link\":\"/reference/contracts/feature-files\"},{\"text\":\"验证方法 verify.md\",\"link\":\"/reference/contracts/verify\"},{\"text\":\"外部通知事件\",\"link\":\"/reference/contracts/notifier-event\"},{\"text\":\"req api 的 JSON 输出\",\"link\":\"/reference/contracts/cli-json\"},{\"text\":\"需求索引与使用记录\",\"link\":\"/reference/contracts/usage-record\"}]},{\"text\":\"设计决定(ADR)\",\"collapsed\":true,\"items\":[{\"text\":\"总览\",\"link\":\"/reference/adr/\"},{\"text\":\"0001 步骤 agent 挂在发起的对话下\",\"link\":\"/reference/adr/0001-step-agents-under-origin-chat\"},{\"text\":\"0002 对话过程中不切换工作目录\",\"link\":\"/reference/adr/0002-no-directory-switch-in-chat\"},{\"text\":\"0003 第 3–11 步由脚本引擎驱动,不用 Hub 多步骤工作流\",\"link\":\"/reference/adr/0003-script-engine-not-hub\"},{\"text\":\"0004 步骤结论只看结果文件\",\"link\":\"/reference/adr/0004-result-files\"},{\"text\":\"0005 不在默认分支上运行,只做本地提交\",\"link\":\"/reference/adr/0005-no-default-branch-local-commits-only\"},{\"text\":\"0006 只安装到 ~/.agents/skills 和 ~/.claude/skills\",\"link\":\"/reference/adr/0006-skill-install-targets\"},{\"text\":\"0007 自带需求访谈 skill,不依赖外部 skill 包\",\"link\":\"/reference/adr/0007-own-interview-skill\"},{\"text\":\"0008 入口 skill 之间不互相调用\",\"link\":\"/reference/adr/0008-entries-do-not-call-entries\"},{\"text\":\"0009 程序与本机配置分开存放,按版本目录并存\",\"link\":\"/reference/adr/0009-versioned-install-layout\"},{\"text\":\"0010 需求总览现场生成,不维护 INDEX.md\",\"link\":\"/reference/adr/0010-generated-feature-overview\"},{\"text\":\"0011 完成后修改 spec 可以继续开发\",\"link\":\"/reference/adr/0011-resume-after-completion\"},{\"text\":\"0012 评审小组:首轮并行评审,评审者核实汇总\",\"link\":\"/reference/adr/0012-review-panel\"},{\"text\":\"0013 发布不使用 changesets 等工具\",\"link\":\"/reference/adr/0013-no-release-tooling\"},{\"text\":\"0014 外部通知只留接口,不内置任何 IM\",\"link\":\"/reference/adr/0014-notifier-slot\"},{\"text\":\"0015 需求变更后增量继续,而不是从零重做\",\"link\":\"/reference/adr/0015-incremental-continue\"},{\"text\":\"0016 一键升级:从 git 标签下载到 versions/ 再切换\",\"link\":\"/reference/adr/0016-upgrade-from-tags\"},{\"text\":\"0017 用好 Paseo 自身的能力:profile、工作区脚本、用量和时间线\",\"link\":\"/reference/adr/0017-use-paseo-capabilities\"},{\"text\":\"0018 可选:流水线为需求新建 worktree 工作区\",\"link\":\"/reference/adr/0018-own-worktree-option\"},{\"text\":\"0019 用 Paseo 的并行子 agent:确认前独立审阅、方案提案\",\"link\":\"/reference/adr/0019-parallel-orchestration\"},{\"text\":\"0020 调度:用 Paseo 定时任务把消息发回对话,排队在本机进行\",\"link\":\"/reference/adr/0020-scheduling-through-the-chat\"},{\"text\":\"0021 npm 分发:全局包是版本管理器,各版本仍装在 versions/ 下\",\"link\":\"/reference/adr/0021-npm-version-manager\"},{\"text\":\"0022 分阶段执行:研发阶段、闸口、测试验证阶段\",\"link\":\"/reference/adr/0022-develop-and-verify-phases\"},{\"text\":\"0023 需求类型、质量门、按切片实现\",\"link\":\"/reference/adr/0023-types-gate-slices\"},{\"text\":\"0024 让分歧更早暴露:验收例子、方案确认点、两个方向的评审、反复的问题变成规则\",\"link\":\"/reference/adr/0024-confirm-early-review-axes\"},{\"text\":\"0025 联合需求:一个需求同时改几个仓库\",\"link\":\"/reference/adr/0025-joint-requirements\"},{\"text\":\"0026 本机的需求索引、使用记录和 req api\",\"link\":\"/reference/adr/0026-machine-records-and-api\"},{\"text\":\"0027 Paseo 插件:随 req-kit 一起发布,只通过 req api 工作\",\"link\":\"/reference/adr/0027-paseo-plugin\"},{\"text\":\"0028 外部系统对接:命令写法在配置里,内容由 AI 整理,调用是确定的\",\"link\":\"/reference/adr/0028-external-integrations\"},{\"text\":\"0029 从卡片开始的需求:需求会话代替人,卡片描述代替对话\",\"link\":\"/reference/adr/0029-requirements-from-cards\"},{\"text\":\"0030 接单器:共享机器上定时接卡片、转达回复\",\"link\":\"/reference/adr/0030-card-intake-process\"},{\"text\":\"0031 少等人:每种中断都有自动的下一步\",\"link\":\"/reference/adr/0031-fewer-interventions\"},{\"text\":\"0032 安装、升级和文档只依赖 npm 源\",\"link\":\"/reference/adr/0032-npm-only-install\"},{\"text\":\"0033 原型审查页和不靠看图的界面检查\",\"link\":\"/reference/adr/0033-prototype-review-and-ui-check\"}]}]},\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/yiyisf/paseo-req-kit\"}],\"editLink\":{\"pattern\":\"https://github.com/yiyisf/paseo-req-kit/edit/main/site/:path\",\"text\":\"在 GitHub 上编辑此页\"},\"footer\":{\"message\":\"以 MIT 许可发布。req-kit 是运行在 Paseo 上的社区项目。\",\"copyright\":\"Copyright © 2026 yiyisf\"},\"search\":{\"provider\":\"local\",\"options\":{\"translations\":{\"button\":{\"buttonText\":\"搜索文档\",\"buttonAriaLabel\":\"搜索文档\"},\"modal\":{\"noResultsText\":\"没有找到相关结果\",\"resetButtonTitle\":\"清除\",\"footer\":{\"selectText\":\"选择\",\"navigateText\":\"切换\",\"closeText\":\"关闭\"}}}}},\"outline\":{\"level\":[2,3],\"label\":\"本页内容\"},\"docFooter\":{\"prev\":\"上一页\",\"next\":\"下一页\"},\"lastUpdated\":{\"text\":\"最后更新\"},\"returnToTopLabel\":\"回到顶部\",\"sidebarMenuLabel\":\"目录\",\"darkModeSwitchLabel\":\"外观\",\"lightModeSwitchTitle\":\"切换到浅色\",\"darkModeSwitchTitle\":\"切换到深色\",\"externalLinkIcon\":true,\"notFound\":{\"title\":\"页面不存在\",\"quote\":\"这个页面可能已经移动或删除。\",\"linkText\":\"回到首页\"}},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":true}");</script>
|
|
28
28
|
|
|
29
29
|
</body>
|
|
30
30
|
</html>
|