paseo-req-kit 1.13.0 → 1.14.0-beta.2
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 +21 -0
- package/contracts/cli-json.md +4 -4
- package/contracts/usage-record.md +5 -1
- package/docs/guide//344/275/277/347/224/250/350/200/205/346/214/207/345/215/227.md +2 -0
- 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 +5 -0
- package/engine/src/api.ts +106 -5
- package/engine/src/cli-args.ts +3 -0
- package/engine/src/features.ts +43 -4
- package/engine/src/launch.ts +25 -4
- package/engine/src/paseo-runtime.ts +5 -0
- package/engine/src/preflight.ts +2 -0
- package/engine/src/records.ts +24 -2
- package/engine/src/runtime.ts +2 -0
- package/engine/src/worktree.ts +180 -25
- package/package.json +1 -1
- package/paseo-plugin/client/format.ts +6 -2
- package/paseo-plugin/client/inbox.tsx +6 -1
- package/paseo-plugin/package.json +1 -1
- package/paseo-plugin/shared/contracts.ts +4 -2
- package/site-dist/404.html +2 -2
- package/site-dist/assets/{app.C6QQarr3.js → app.gI1JF182.js} +1 -1
- package/site-dist/assets/changelog.md.2xf690VW.js +1 -0
- package/site-dist/assets/chunks/@localSearchIndexroot.CiFeI6qC.js +1 -0
- package/site-dist/assets/chunks/{VPLocalSearchBox.NZKA1cjk.js → VPLocalSearchBox.DNmhkkfS.js} +1 -1
- package/site-dist/assets/chunks/{theme.BP9XiatK.js → theme.CZzkCOAC.js} +2 -2
- package/site-dist/assets/{guide_getting-started.md.CA-aS0r_.js → guide_getting-started.md.zmtXv15G.js} +1 -1
- package/site-dist/assets/guide_project.md.Csi5wiyt.js +77 -0
- package/site-dist/assets/guide_project.md.Csi5wiyt.lean.js +77 -0
- package/site-dist/assets/{guide_user.md.Cenm9vlN.js → guide_user.md.2v7b_fzd.js} +1 -1
- package/site-dist/assets/{guide_user.md.Cenm9vlN.lean.js → guide_user.md.2v7b_fzd.lean.js} +1 -1
- package/site-dist/assets/reference_contracts_cli-json.md.BR6gwq-e.js +1 -0
- package/site-dist/assets/reference_contracts_cli-json.md.BR6gwq-e.lean.js +1 -0
- package/site-dist/assets/reference_contracts_usage-record.md.D5krNLW7.js +10 -0
- package/site-dist/assets/reference_contracts_usage-record.md.D5krNLW7.lean.js +10 -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 +4 -4
- package/site-dist/guide/phases.html +4 -4
- package/site-dist/guide/project.html +6 -6
- package/site-dist/guide/user.html +5 -5
- 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 +5 -5
- 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 +4 -4
- package/site-dist/reference/contracts/usage-record.html +6 -6
- package/site-dist/reference/contracts/verify.html +4 -4
- package/site-dist/reference/scope.html +4 -4
- package/skills/req/SKILL.md +1 -0
- package/skills/req/playbooks/incident.md +3 -3
- package/skills/req/playbooks/new.md +1 -1
- package/skills/req/playbooks/small.md +1 -1
- package/skills/spec-writing/SKILL.md +3 -1
- package/site-dist/assets/changelog.md.BzAEYWi7.js +0 -1
- package/site-dist/assets/chunks/@localSearchIndexroot.BjRGqGQa.js +0 -1
- package/site-dist/assets/guide_project.md.qQLH2fWy.js +0 -77
- package/site-dist/assets/guide_project.md.qQLH2fWy.lean.js +0 -77
- package/site-dist/assets/reference_contracts_cli-json.md.B7o8deSY.js +0 -1
- package/site-dist/assets/reference_contracts_cli-json.md.B7o8deSY.lean.js +0 -1
- package/site-dist/assets/reference_contracts_usage-record.md.DBMNY4OP.js +0 -10
- package/site-dist/assets/reference_contracts_usage-record.md.DBMNY4OP.lean.js +0 -10
- /package/site-dist/assets/{changelog.md.BzAEYWi7.lean.js → changelog.md.2xf690VW.lean.js} +0 -0
- /package/site-dist/assets/{guide_getting-started.md.CA-aS0r_.lean.js → guide_getting-started.md.zmtXv15G.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.gI1JF182.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.CZzkCOAC.js">
|
|
15
15
|
<link rel="modulepreload" href="/assets/chunks/framework.B9qR_F1m.js">
|
|
16
16
|
<link rel="modulepreload" href="/assets/reference_adr_0024-confirm-early-review-axes.md.FmK_ke0x.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</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_0024-confirm-early-review-axes external-link-icon-enabled" data-v-e6f2a212><div><div><h1 id="_0024-让分歧更早暴露-验收例子、方案确认点、两个方向的评审、反复的问题变成规则" tabindex="-1">0024 让分歧更早暴露:验收例子、方案确认点、两个方向的评审、反复的问题变成规则 <a class="header-anchor" href="#_0024-让分歧更早暴露-验收例子、方案确认点、两个方向的评审、反复的问题变成规则" aria-label="Permalink to "0024 让分歧更早暴露:验收例子、方案确认点、两个方向的评审、反复的问题变成规则""></a></h1><ul><li>状态:已采纳(补充 <a href="./0012-review-panel">0012</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>需求做出来"不符合预期",多半不是代码写错,而是需求方和 agent 对"做成什么样"理解不同,并且直到验收才发现。到 1.8.0-beta.1 为止,需求方在确认需求说明之后,要等到报告才再看到结果;验收标准常常是抽象的描述("在限制时间内重复发送会被拒绝"),测试的期望值由实现者自己定;代码评审一位评审者同时看"做没做对"和"做得规不规范",后者常被挤掉;同一类规范问题在不同需求里反复被提出、反复修。</p><p>Matt Pocock 的 skills(<code>grill-with-docs</code> 的术语表、<code>tdd</code> 先写测试、<code>code-review</code> 分 Standards 和 Spec 两个方向、<code>retro</code>)、pstack 的 <code>correct</code>(把纠正变成规则)和 Specification by Example 的思路一致:把分歧放到最便宜的时候暴露,用具体的例子而不是抽象的描述对齐,把反复出现的问题交给机器挡住。</p><h2 id="决定" tabindex="-1">决定 <a class="header-anchor" href="#决定" aria-label="Permalink to "决定""></a></h2><ul><li><strong>验收标准带例子</strong>:<code>acceptance-criteria</code> 要求每条 AC 至少一组具体的输入和期望输出,按规则计算的给出覆盖边界的几组;确认前的独立审阅检查这一点,缺的替需求方拟好例子请其确认。方案的测试直接用这些例子作为期望值,不另编。</li><li><strong>验收测试先提交</strong>:适合测试先行时,实现先把从例子写出的测试单独提交(失败的),在结果文件中写明文件和提交(<code>acceptance_tests</code>、<code>acceptance_tests_commit</code>)。代码评审前引擎用 git 核对它们之后有没有被改,改过的交给评审逐个确认依据。只核对、不阻止:测试本身写错是常见的合理修改。</li><li><strong>方案确认点</strong>(<code>designApproval</code>):方案审核通过、写代码之前,引擎可以停下来(状态 <code>waiting_for_approval</code>),请需求方看 <code>preview.md</code>(做完后会看到什么、需要确认的假设、不会变的)和界面原型(<code>prototype/</code> 中的静态 HTML)。<code>--approve</code> 继续;要修改的走需求变更(更新 spec 后 <code>--resume</code>,从方案设计增量处理,再确认一次)。等待单独的 <code>--resume</code> 会被拒绝,避免对话误把"继续"当作确认。 <ul><li>默认只对标准档的界面改动开启(<code>mode: "ui"</code>,由方案在结果文件中判断 <code>ui_change</code>):界面最容易"做对了但不是想要的",其他需求不增加等待。<code>always</code> 每次都停,<code>off</code> 关闭。</li><li>无人值守的代价:等待提醒复用 <code>waitingReminderHours</code>;<code>autoContinueHours</code> 大于 0 时通过 Paseo 定时任务让对话在超时后按方案继续(默认 0,一直等待)。</li><li>方案中的假设标明对使用者可见的影响(界面、数据、权限)。影响这些、猜错会做错的转为阻塞问题;其余在确认点请需求方过目,没有确认点时由报告交给需求方。</li></ul></li><li><strong>代码评审分两个方向</strong>(<code>reviewAxes</code>,默认标准档开启):第一轮由规格评审(每条 AC 是否实现、测试期望值是否与例子一致、范围、与预览是否一致)和规范评审(项目惯例与范例文件、术语、测试质量、安全、简单性)并行,reviewer 核实汇总成一份结论。复用评审小组的并行和汇总,两位都用配置的 reviewer;配置了评审小组时以小组为准;后续轮次仍由一位评审核对修复。代价是每个标准档需求多两次评审。</li><li><strong>术语表和范例文件</strong>:沿用仓库根目录的 <code>GLOSSARY.md</code>(不另建文件),增加"代码中的名字";<code>/req-setup</code> 第一次整理并在项目说明中列出各类代码的范例文件;方案的每个任务写明参照的文件,新概念补进术语表。</li><li><strong>反复出现的问题变成规则</strong>:完成报告把一条项目规则就能挡住的问题写进功能目录的 <code>lessons.tsv</code>。放在各自的功能目录,而不是一个共用文件,避免各需求分支合并时冲突。<code>req digest</code> 汇总所有工作区中的需求,同一类别出现在两个以上需求时提示;<code>/req-retro</code> 据此建议规则,落地后把类别写进 <code>.requirement-pipeline/lessons-handled.txt</code>。规则仍由人批准。</li></ul><h2 id="影响" tabindex="-1">影响 <a class="header-anchor" href="#影响" aria-label="Permalink to "影响""></a></h2><ul><li>状态文件新增可选字段 <code>approval</code> 和状态值 <code>waiting_for_approval</code>,格式版本仍为 1。回滚到更早的版本后,旧引擎把它当作可以继续的中断,继续时不经确认直接写代码,可以接受。</li><li>结果文件新增可选字段(<code>ui_change</code>、<code>acceptance_tests</code>、<code>acceptance_tests_commit</code>)。外部通知新增事件 <code>approval</code>。</li><li>标准档的界面改动多一次等待;每个标准档需求的第一轮代码评审多两次 agent 运行。都可以在配置中关闭。</li></ul></div><p class="source-note">本页由仓库中的 <a href="https://github.com/yiyisf/paseo-req-kit/blob/main/docs/adr/0024-confirm-early-review-axes.md">docs/adr/0024-confirm-early-review-axes.md</a> 生成。<a href="https://github.com/yiyisf/paseo-req-kit/edit/main/docs/adr/0024-confirm-early-review-axes.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/0023-types-gate-slices" data-v-1bcd8184><!--[--><span class="desc" data-v-1bcd8184>上一页</span><span class="title" data-v-1bcd8184>0023 需求类型、质量门、按切片实现</span><!--]--></a></div><div class="pager" data-v-1bcd8184><a class="VPLink link pager-link next" href="/reference/adr/0025-joint-requirements" data-v-1bcd8184><!--[--><span class="desc" data-v-1bcd8184>下一页</span><span class="title" data-v-1bcd8184>0025 联合需求:一个需求同时改几个仓库</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.14.0-beta.2</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_0024-confirm-early-review-axes external-link-icon-enabled" data-v-e6f2a212><div><div><h1 id="_0024-让分歧更早暴露-验收例子、方案确认点、两个方向的评审、反复的问题变成规则" tabindex="-1">0024 让分歧更早暴露:验收例子、方案确认点、两个方向的评审、反复的问题变成规则 <a class="header-anchor" href="#_0024-让分歧更早暴露-验收例子、方案确认点、两个方向的评审、反复的问题变成规则" aria-label="Permalink to "0024 让分歧更早暴露:验收例子、方案确认点、两个方向的评审、反复的问题变成规则""></a></h1><ul><li>状态:已采纳(补充 <a href="./0012-review-panel">0012</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>需求做出来"不符合预期",多半不是代码写错,而是需求方和 agent 对"做成什么样"理解不同,并且直到验收才发现。到 1.8.0-beta.1 为止,需求方在确认需求说明之后,要等到报告才再看到结果;验收标准常常是抽象的描述("在限制时间内重复发送会被拒绝"),测试的期望值由实现者自己定;代码评审一位评审者同时看"做没做对"和"做得规不规范",后者常被挤掉;同一类规范问题在不同需求里反复被提出、反复修。</p><p>Matt Pocock 的 skills(<code>grill-with-docs</code> 的术语表、<code>tdd</code> 先写测试、<code>code-review</code> 分 Standards 和 Spec 两个方向、<code>retro</code>)、pstack 的 <code>correct</code>(把纠正变成规则)和 Specification by Example 的思路一致:把分歧放到最便宜的时候暴露,用具体的例子而不是抽象的描述对齐,把反复出现的问题交给机器挡住。</p><h2 id="决定" tabindex="-1">决定 <a class="header-anchor" href="#决定" aria-label="Permalink to "决定""></a></h2><ul><li><strong>验收标准带例子</strong>:<code>acceptance-criteria</code> 要求每条 AC 至少一组具体的输入和期望输出,按规则计算的给出覆盖边界的几组;确认前的独立审阅检查这一点,缺的替需求方拟好例子请其确认。方案的测试直接用这些例子作为期望值,不另编。</li><li><strong>验收测试先提交</strong>:适合测试先行时,实现先把从例子写出的测试单独提交(失败的),在结果文件中写明文件和提交(<code>acceptance_tests</code>、<code>acceptance_tests_commit</code>)。代码评审前引擎用 git 核对它们之后有没有被改,改过的交给评审逐个确认依据。只核对、不阻止:测试本身写错是常见的合理修改。</li><li><strong>方案确认点</strong>(<code>designApproval</code>):方案审核通过、写代码之前,引擎可以停下来(状态 <code>waiting_for_approval</code>),请需求方看 <code>preview.md</code>(做完后会看到什么、需要确认的假设、不会变的)和界面原型(<code>prototype/</code> 中的静态 HTML)。<code>--approve</code> 继续;要修改的走需求变更(更新 spec 后 <code>--resume</code>,从方案设计增量处理,再确认一次)。等待单独的 <code>--resume</code> 会被拒绝,避免对话误把"继续"当作确认。 <ul><li>默认只对标准档的界面改动开启(<code>mode: "ui"</code>,由方案在结果文件中判断 <code>ui_change</code>):界面最容易"做对了但不是想要的",其他需求不增加等待。<code>always</code> 每次都停,<code>off</code> 关闭。</li><li>无人值守的代价:等待提醒复用 <code>waitingReminderHours</code>;<code>autoContinueHours</code> 大于 0 时通过 Paseo 定时任务让对话在超时后按方案继续(默认 0,一直等待)。</li><li>方案中的假设标明对使用者可见的影响(界面、数据、权限)。影响这些、猜错会做错的转为阻塞问题;其余在确认点请需求方过目,没有确认点时由报告交给需求方。</li></ul></li><li><strong>代码评审分两个方向</strong>(<code>reviewAxes</code>,默认标准档开启):第一轮由规格评审(每条 AC 是否实现、测试期望值是否与例子一致、范围、与预览是否一致)和规范评审(项目惯例与范例文件、术语、测试质量、安全、简单性)并行,reviewer 核实汇总成一份结论。复用评审小组的并行和汇总,两位都用配置的 reviewer;配置了评审小组时以小组为准;后续轮次仍由一位评审核对修复。代价是每个标准档需求多两次评审。</li><li><strong>术语表和范例文件</strong>:沿用仓库根目录的 <code>GLOSSARY.md</code>(不另建文件),增加"代码中的名字";<code>/req-setup</code> 第一次整理并在项目说明中列出各类代码的范例文件;方案的每个任务写明参照的文件,新概念补进术语表。</li><li><strong>反复出现的问题变成规则</strong>:完成报告把一条项目规则就能挡住的问题写进功能目录的 <code>lessons.tsv</code>。放在各自的功能目录,而不是一个共用文件,避免各需求分支合并时冲突。<code>req digest</code> 汇总所有工作区中的需求,同一类别出现在两个以上需求时提示;<code>/req-retro</code> 据此建议规则,落地后把类别写进 <code>.requirement-pipeline/lessons-handled.txt</code>。规则仍由人批准。</li></ul><h2 id="影响" tabindex="-1">影响 <a class="header-anchor" href="#影响" aria-label="Permalink to "影响""></a></h2><ul><li>状态文件新增可选字段 <code>approval</code> 和状态值 <code>waiting_for_approval</code>,格式版本仍为 1。回滚到更早的版本后,旧引擎把它当作可以继续的中断,继续时不经确认直接写代码,可以接受。</li><li>结果文件新增可选字段(<code>ui_change</code>、<code>acceptance_tests</code>、<code>acceptance_tests_commit</code>)。外部通知新增事件 <code>approval</code>。</li><li>标准档的界面改动多一次等待;每个标准档需求的第一轮代码评审多两次 agent 运行。都可以在配置中关闭。</li></ul></div><p class="source-note">本页由仓库中的 <a href="https://github.com/yiyisf/paseo-req-kit/blob/main/docs/adr/0024-confirm-early-review-axes.md">docs/adr/0024-confirm-early-review-axes.md</a> 生成。<a href="https://github.com/yiyisf/paseo-req-kit/edit/main/docs/adr/0024-confirm-early-review-axes.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/0023-types-gate-slices" data-v-1bcd8184><!--[--><span class="desc" data-v-1bcd8184>上一页</span><span class="title" data-v-1bcd8184>0023 需求类型、质量门、按切片实现</span><!--]--></a></div><div class="pager" data-v-1bcd8184><a class="VPLink link pager-link next" href="/reference/adr/0025-joint-requirements" data-v-1bcd8184><!--[--><span class="desc" data-v-1bcd8184>下一页</span><span class="title" data-v-1bcd8184>0025 联合需求:一个需求同时改几个仓库</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\":\"2xf690VW\",\"guide_getting-started.md\":\"zmtXv15G\",\"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\":\"Csi5wiyt\",\"guide_user.md\":\"2v7b_fzd\",\"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\":\"BR6gwq-e\",\"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\":\"D5krNLW7\",\"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.14.0-beta.2\",\"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>
|