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/guide_index.md.CLnGCmGW.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 active" href="/guide/" tabindex="0" data-v-afb2845e data-v-815115f5><!--[--><span data-v-815115f5>指南</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" 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 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>开始</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="/guide/" data-v-0009425e><!--[--><p class="text" data-v-0009425e>req-kit 是什么</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="/guide/getting-started" 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="/guide/how-it-works" 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" 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="/guide/user" 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="/guide/phases" 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" 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="/guide/install" 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="/guide/project" 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="/guide/maintainer" data-v-0009425e><!--[--><p class="text" data-v-0009425e>维护者指南</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 _guide_ external-link-icon-enabled" data-v-e6f2a212><div><h1 id="req-kit-是什么" tabindex="-1">req-kit 是什么 <a class="header-anchor" href="#req-kit-是什么" aria-label="Permalink to "req-kit 是什么""></a></h1><p>req-kit 是运行在 <a href="https://paseo.sh" target="_blank" rel="noreferrer">Paseo</a> 上的一套<strong>需求开发体系</strong>。它帮助非专职开发、但有一定技术背景的同事——测试、产品经理、项目经理——把一个需求从"我想要……"推进到"可以验收":</p><ul><li>你在 Paseo 的对话里输入 <code>/req</code> 和一句话,AI 用访谈的方式和你把需求谈清楚,写成一份需求说明(<code>spec.md</code>)请你确认。</li><li>确认后,一组 AI agent 在后台依次完成方案设计、方案审核、代码实现、代码评审、服务启动、功能验证、缺陷修复和完成报告。</li><li>进展、需要你决定的问题和最终结论都发回同一个对话;你再按验收标准逐条验收。</li></ul><p>整个过程只在本地提交代码,合并和上线仍然由人决定。</p><h2 id="为什么需要它" tabindex="-1">为什么需要它 <a class="header-anchor" href="#为什么需要它" aria-label="Permalink to "为什么需要它""></a></h2><p>直接让一个编码 agent "把这个需求做了",常见的问题是:</p><table tabindex="0"><thead><tr><th>问题</th><th>req-kit 的做法</th></tr></thead><tbody><tr><td>需求没谈清楚就开工,做出来不是想要的</td><td>先访谈,一次一个问题,给选项和推荐;确认前另一个模型独立审阅需求说明</td></tr><tr><td>自己写、自己检查,问题被忽略</td><td>做事的和检查的是不同的 agent,可以配置不同的模型;评审小组可以并行审核</td></tr><tr><td>说"做完了",其实没验证</td><td>验证由独立的 agent 按验收标准逐条进行,结论必须有证据;报告从严判定</td></tr><tr><td>过程不可见,出了问题无从查起</td><td>每一步是一个挂在你对话下的子 agent,产物都是功能目录里的文件</td></tr><tr><td>一跑几个小时,中途断了要重来</td><td>中断后从断点继续;需求变了只处理变化的部分;临时错误自动重试、自动继续</td></tr></tbody></table><h2 id="适合谁" tabindex="-1">适合谁 <a class="header-anchor" href="#适合谁" aria-label="Permalink to "适合谁""></a></h2><ul><li><strong>测试同事</strong>:把测试中发现的小需求、改进自己推进;也可以作为"测试阶段"的接手人,按提测说明在测试环境中验证。</li><li><strong>产品经理</strong>:把需求讲清楚,拿到可以试用的结果和一份讲人话的报告。</li><li><strong>项目经理</strong>:用需求总览(<code>req digest</code>)看所有需求的状态,接入企业 IM 收通知。</li><li><strong>开发同事</strong>:负责安装、项目接入(<code>/req-setup</code>)和代码合并;也可以直接用它推进小需求。</li></ul><h2 id="它不做什么" tabindex="-1">它不做什么 <a class="header-anchor" href="#它不做什么" aria-label="Permalink to "它不做什么""></a></h2><ul><li>不合并、不推送、不上线,不连接生产环境,不使用生产凭据。</li><li>不替代代码审查:报告的附录写明了分支、提交和改动,由开发同事审阅后合并。</li><li>不追求通用的编码提效,见 <a href="/reference/scope">范围与取舍</a>。</li></ul><h2 id="支持的环境" tabindex="-1">支持的环境 <a class="header-anchor" href="#支持的环境" aria-label="Permalink to "支持的环境""></a></h2><table tabindex="0"><thead><tr><th>项目</th><th>要求</th></tr></thead><tbody><tr><td>Paseo</td><td>0.11(daemon 在运行;网页版或桌面版都可以)</td></tr><tr><td>Node.js</td><td>22 或更新</td></tr><tr><td>系统</td><td>macOS、Linux、Windows</td></tr><tr><td>agent</td><td>Claude Code、Codex、OpenCode、Pi 中至少一种,已在 Paseo 中登录</td></tr></tbody></table><p>下一步:<a href="./getting-started">快速开始</a>。</p></div></div></main><footer class="VPDocFooter" data-v-e6f2a212 data-v-1bcd8184><!--[--><!--]--><div class="edit-info" data-v-1bcd8184><div class="edit-link" data-v-1bcd8184><a class="VPLink link vp-external-link-icon no-icon edit-link-button" href="https://github.com/yiyisf/paseo-req-kit/edit/main/site/guide/index.md" target="_blank" rel="noreferrer" data-v-1bcd8184><!--[--><span class="vpi-square-pen edit-link-icon" data-v-1bcd8184></span> 在 GitHub 上编辑此页<!--]--></a></div><div class="last-updated" data-v-1bcd8184><p class="VPLastUpdated" data-v-1bcd8184 data-v-1bb0c8a8>最后更新: <time datetime="2026-10-14T08:29:29.000Z" data-v-1bb0c8a8></time></p></div></div><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><!----></div><div class="pager" data-v-1bcd8184><a class="VPLink link pager-link next" href="/guide/getting-started" data-v-1bcd8184><!--[--><span class="desc" data-v-1bcd8184>下一页</span><span class="title" data-v-1bcd8184>快速开始</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 active" href="/guide/" tabindex="0" data-v-afb2845e data-v-815115f5><!--[--><span data-v-815115f5>指南</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" 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 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>开始</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="/guide/" data-v-0009425e><!--[--><p class="text" data-v-0009425e>req-kit 是什么</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="/guide/getting-started" 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="/guide/how-it-works" 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" 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="/guide/user" 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="/guide/phases" 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" 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="/guide/install" 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="/guide/project" 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="/guide/maintainer" data-v-0009425e><!--[--><p class="text" data-v-0009425e>维护者指南</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 _guide_ external-link-icon-enabled" data-v-e6f2a212><div><h1 id="req-kit-是什么" tabindex="-1">req-kit 是什么 <a class="header-anchor" href="#req-kit-是什么" aria-label="Permalink to "req-kit 是什么""></a></h1><p>req-kit 是运行在 <a href="https://paseo.sh" target="_blank" rel="noreferrer">Paseo</a> 上的一套<strong>需求开发体系</strong>。它帮助非专职开发、但有一定技术背景的同事——测试、产品经理、项目经理——把一个需求从"我想要……"推进到"可以验收":</p><ul><li>你在 Paseo 的对话里输入 <code>/req</code> 和一句话,AI 用访谈的方式和你把需求谈清楚,写成一份需求说明(<code>spec.md</code>)请你确认。</li><li>确认后,一组 AI agent 在后台依次完成方案设计、方案审核、代码实现、代码评审、服务启动、功能验证、缺陷修复和完成报告。</li><li>进展、需要你决定的问题和最终结论都发回同一个对话;你再按验收标准逐条验收。</li></ul><p>整个过程只在本地提交代码,合并和上线仍然由人决定。</p><h2 id="为什么需要它" tabindex="-1">为什么需要它 <a class="header-anchor" href="#为什么需要它" aria-label="Permalink to "为什么需要它""></a></h2><p>直接让一个编码 agent "把这个需求做了",常见的问题是:</p><table tabindex="0"><thead><tr><th>问题</th><th>req-kit 的做法</th></tr></thead><tbody><tr><td>需求没谈清楚就开工,做出来不是想要的</td><td>先访谈,一次一个问题,给选项和推荐;确认前另一个模型独立审阅需求说明</td></tr><tr><td>自己写、自己检查,问题被忽略</td><td>做事的和检查的是不同的 agent,可以配置不同的模型;评审小组可以并行审核</td></tr><tr><td>说"做完了",其实没验证</td><td>验证由独立的 agent 按验收标准逐条进行,结论必须有证据;报告从严判定</td></tr><tr><td>过程不可见,出了问题无从查起</td><td>每一步是一个挂在你对话下的子 agent,产物都是功能目录里的文件</td></tr><tr><td>一跑几个小时,中途断了要重来</td><td>中断后从断点继续;需求变了只处理变化的部分;临时错误自动重试、自动继续</td></tr></tbody></table><h2 id="适合谁" tabindex="-1">适合谁 <a class="header-anchor" href="#适合谁" aria-label="Permalink to "适合谁""></a></h2><ul><li><strong>测试同事</strong>:把测试中发现的小需求、改进自己推进;也可以作为"测试阶段"的接手人,按提测说明在测试环境中验证。</li><li><strong>产品经理</strong>:把需求讲清楚,拿到可以试用的结果和一份讲人话的报告。</li><li><strong>项目经理</strong>:用需求总览(<code>req digest</code>)看所有需求的状态,接入企业 IM 收通知。</li><li><strong>开发同事</strong>:负责安装、项目接入(<code>/req-setup</code>)和代码合并;也可以直接用它推进小需求。</li></ul><h2 id="它不做什么" tabindex="-1">它不做什么 <a class="header-anchor" href="#它不做什么" aria-label="Permalink to "它不做什么""></a></h2><ul><li>不合并、不推送、不上线,不连接生产环境,不使用生产凭据。</li><li>不替代代码审查:报告的附录写明了分支、提交和改动,由开发同事审阅后合并。</li><li>不追求通用的编码提效,见 <a href="/reference/scope">范围与取舍</a>。</li></ul><h2 id="支持的环境" tabindex="-1">支持的环境 <a class="header-anchor" href="#支持的环境" aria-label="Permalink to "支持的环境""></a></h2><table tabindex="0"><thead><tr><th>项目</th><th>要求</th></tr></thead><tbody><tr><td>Paseo</td><td>0.11(daemon 在运行;网页版或桌面版都可以)</td></tr><tr><td>Node.js</td><td>22 或更新</td></tr><tr><td>系统</td><td>macOS、Linux、Windows</td></tr><tr><td>agent</td><td>Claude Code、Codex、OpenCode、Pi 中至少一种,已在 Paseo 中登录</td></tr></tbody></table><p>下一步:<a href="./getting-started">快速开始</a>。</p></div></div></main><footer class="VPDocFooter" data-v-e6f2a212 data-v-1bcd8184><!--[--><!--]--><div class="edit-info" data-v-1bcd8184><div class="edit-link" data-v-1bcd8184><a class="VPLink link vp-external-link-icon no-icon edit-link-button" href="https://github.com/yiyisf/paseo-req-kit/edit/main/site/guide/index.md" target="_blank" rel="noreferrer" data-v-1bcd8184><!--[--><span class="vpi-square-pen edit-link-icon" data-v-1bcd8184></span> 在 GitHub 上编辑此页<!--]--></a></div><div class="last-updated" data-v-1bcd8184><p class="VPLastUpdated" data-v-1bcd8184 data-v-1bb0c8a8>最后更新: <time datetime="2026-10-14T08:29:29.000Z" data-v-1bb0c8a8></time></p></div></div><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><!----></div><div class="pager" data-v-1bcd8184><a class="VPLink link pager-link next" href="/guide/getting-started" data-v-1bcd8184><!--[--><span class="desc" data-v-1bcd8184>下一页</span><span class="title" data-v-1bcd8184>快速开始</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>
|
|
@@ -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/guide_install.md.DkCyZsOU.lean.js">
|
|
17
17
|
<link rel="icon" type="image/svg+xml" href="/logo.svg">
|
|
@@ -23,7 +23,7 @@
|
|
|
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 active" href="/guide/" tabindex="0" data-v-afb2845e data-v-815115f5><!--[--><span data-v-815115f5>指南</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" 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="/guide/" data-v-0009425e><!--[--><p class="text" data-v-0009425e>req-kit 是什么</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="/guide/getting-started" 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="/guide/how-it-works" 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" 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="/guide/user" 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="/guide/phases" 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 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>安装与维护</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="/guide/install" 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="/guide/project" 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="/guide/maintainer" data-v-0009425e><!--[--><p class="text" data-v-0009425e>维护者指南</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 _guide_install external-link-icon-enabled" data-v-e6f2a212><div><div><h1 id="安装与升级" tabindex="-1">安装与升级 <a class="header-anchor" href="#安装与升级" aria-label="Permalink to "安装与升级""></a></h1><p>本文面向负责安装的人:通常是开发同事,有经验的测试或产品同事也可以按步骤完成。安装在<strong>运行 Paseo daemon 的那台机器</strong>上做一次,之后这台机器上所有项目的 Paseo 对话都能使用 <code>/req</code>。</p><h2 id="_1-安装布局" tabindex="-1">1. 安装布局 <a class="header-anchor" href="#_1-安装布局" aria-label="Permalink to "1. 安装布局""></a></h2><p>程序和本机配置分开存放。升级时只替换程序,配置不动;旧版本目录保留,可以随时回滚。</p><div class="language-text vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">text</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0" v-pre=""><code><span class="line"><span><npm 全局目录>/paseo-req-kit/ 版本管理器(npm i -g 安装,提供 req 命令)</span></span>
|
|
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 active" href="/guide/" tabindex="0" data-v-afb2845e data-v-815115f5><!--[--><span data-v-815115f5>指南</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" 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="/guide/" data-v-0009425e><!--[--><p class="text" data-v-0009425e>req-kit 是什么</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="/guide/getting-started" 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="/guide/how-it-works" 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" 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="/guide/user" 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="/guide/phases" 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 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>安装与维护</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="/guide/install" 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="/guide/project" 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="/guide/maintainer" data-v-0009425e><!--[--><p class="text" data-v-0009425e>维护者指南</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 _guide_install external-link-icon-enabled" data-v-e6f2a212><div><div><h1 id="安装与升级" tabindex="-1">安装与升级 <a class="header-anchor" href="#安装与升级" aria-label="Permalink to "安装与升级""></a></h1><p>本文面向负责安装的人:通常是开发同事,有经验的测试或产品同事也可以按步骤完成。安装在<strong>运行 Paseo daemon 的那台机器</strong>上做一次,之后这台机器上所有项目的 Paseo 对话都能使用 <code>/req</code>。</p><h2 id="_1-安装布局" tabindex="-1">1. 安装布局 <a class="header-anchor" href="#_1-安装布局" aria-label="Permalink to "1. 安装布局""></a></h2><p>程序和本机配置分开存放。升级时只替换程序,配置不动;旧版本目录保留,可以随时回滚。</p><div class="language-text vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">text</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0" v-pre=""><code><span class="line"><span><npm 全局目录>/paseo-req-kit/ 版本管理器(npm i -g 安装,提供 req 命令)</span></span>
|
|
27
27
|
<span class="line"><span>~/tools/req-kit/versions/</span></span>
|
|
28
28
|
<span class="line"><span>├── 1.7.0/node_modules/paseo-req-kit/ 一个版本的程序(npm 安装;依赖在 1.7.0/node_modules 下)</span></span>
|
|
29
29
|
<span class="line"><span>├── 1.6.0/ git 方式安装的版本(含 node_modules),继续可用</span></span>
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">node</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> install.mjs</span></span></code></pre></div><p>这会把 skill 和引擎路径改回 1.0.0,配置不变。如果某个功能目录的状态文件已被新版迁移,旧版引擎会拒绝继续并提示:把 <code>state.json.bak-v<旧版本></code> 恢复为 <code>state.json</code>,或者用 <code>--restart</code> 从头开始。</p><p>旧版本目录建议保留到新版本稳定运行一周以上、且没有由它启动的流水线仍在运行。<code>node install.mjs --prune</code> 会列出可以删除的旧版本。</p><h2 id="_8-从脚本版-paseo-requirement-workflow-迁移" tabindex="-1">8. 从脚本版(paseo-requirement-workflow)迁移 <a class="header-anchor" href="#_8-从脚本版-paseo-requirement-workflow-迁移" aria-label="Permalink to "8. 从脚本版(paseo-requirement-workflow)迁移""></a></h2><p>适用于已经装了 <code>~/tools/requirement-pipeline</code> 和 <code>/requirement-kickoff</code> 的机器。</p><table tabindex="0"><thead><tr><th>对象</th><th>脚本版</th><th>req-kit</th><th>迁移方式</th></tr></thead><tbody><tr><td>入口</td><td><code>/requirement-kickoff</code></td><td><code>/req</code></td><td>安装器替换旧的 skill;1.x 期间保留同名的引导入口,提示改用 <code>/req</code> 并转交</td></tr><tr><td>本机配置</td><td><code>~/tools/requirement-pipeline/pipeline.config.json</code></td><td><code>~/.req-kit/config.json</code></td><td><code>node install.mjs --import-legacy ~/tools/requirement-pipeline</code>,同时导入 <code>prompts.local/</code>;顶层 <code>rounds</code> 继续有效</td></tr><tr><td>项目配置</td><td><code>.requirement-pipeline.json</code>、<code>.requirement-pipeline/</code></td><td>同名同位置</td><td>无需迁移</td></tr><tr><td>功能目录</td><td><code>docs/features/<日期>-<名称>/</code></td><td>同左</td><td>无需迁移;没有 <code>version</code> 字段的状态文件按第 1 版读取</td></tr><tr><td>术语文件</td><td><code>CONTEXT.md</code></td><td><code>GLOSSARY.md</code></td><td>继续读取 <code>CONTEXT.md</code>,新术语写入 <code>GLOSSARY.md</code></td></tr><tr><td>依赖的外部 skill</td><td><code>grilling</code>、<code>domain-modeling</code></td><td>不再需要</td><td>可以保留,也可以自行卸载</td></tr></tbody></table><p>建议顺序:</p><ol><li>等脚本版启动的流水线跑完(或记下它们,迁移后用新版续跑)。</li><li>按第 3 节取得程序并 <code>npm install</code>,然后运行 <code>node install.mjs --import-legacy ~/tools/requirement-pipeline</code>。</li><li>跑冒烟测试第 1–3 项。</li><li>告诉使用者入口改为 <code>/req</code>。</li><li>一周后删除 <code>~/tools/requirement-pipeline</code>。</li></ol><h2 id="_9-paseo-或-agent-升级之后" tabindex="-1">9. Paseo 或 agent 升级之后 <a class="header-anchor" href="#_9-paseo-或-agent-升级之后" aria-label="Permalink to "9. Paseo 或 agent 升级之后""></a></h2><p>运行 <code>/req-doctor</code>(或 <code>node bin/req-doctor.mjs</code>),确认 SDK 版本在支持范围内、配置中的模型和模式仍然存在;然后跑冒烟测试第 1–3 项。有失败时,先看 req-kit 是否已有适配的新版本;没有的话,把输出反馈给维护者,并暂时回退 Paseo 或 agent 的版本。</p><h2 id="_10-卸载" tabindex="-1">10. 卸载 <a class="header-anchor" href="#_10-卸载" aria-label="Permalink to "10. 卸载""></a></h2><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0" v-pre=""><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">node</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ~/tools/req-kit/versions/</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"><</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">当前版</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">本</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">></span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/install.mjs</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --uninstall</span></span></code></pre></div><p>这会删除 req-kit 安装的 skill 和 <code>req</code> 命令。确认不再使用后,再手工删除 <code>~/tools/req-kit</code> 和 <code>~/.req-kit</code>。各项目中的配置文件和功能目录保留,它们本身就是文档。</p><h2 id="_11-安全提示" tabindex="-1">11. 安全提示 <a class="header-anchor" href="#_11-安全提示" aria-label="Permalink to "11. 安全提示""></a></h2><ul><li>步骤 agent 以免确认模式运行,可以在本机执行命令。仓库和本机环境变量中不要放生产凭据;最好用专门的开发机或虚拟机运行 daemon。</li><li>流水线只做本地提交,合并和上线始终由人决定。</li></ul><h2 id="_12-接入企业内部-im-可选" tabindex="-1">12. 接入企业内部 IM(可选) <a class="header-anchor" href="#_12-接入企业内部-im-可选" aria-label="Permalink to "12. 接入企业内部 IM(可选)""></a></h2><p>流水线默认只把消息发回发起的对话。希望"需要你决定""开发中断""已完成"等时刻在企业 IM 中也收到时,需要自己实现一个通知模块(req-kit 不内置任何 IM):</p><ol><li><p>把安装目录中的 <code>notifiers/im-template.mjs</code> 复制到 <code>~/.req-kit/notifiers/im.mjs</code>,按其中的 TODO 实现发送(通常是向 IM 的机器人 webhook 发一个 HTTP 请求)。口令放在环境变量中,不要写进文件。</p></li><li><p>在 <code>~/.req-kit/config.json</code>(或团队配置)中加上:</p><div class="language-json vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">json</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0" v-pre=""><code><span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"notifiers"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: [</span></span>
|
|
66
66
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">"module"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"~/.req-kit/notifiers/im.mjs"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">"events"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"blocked"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"failed"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"completed"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">], </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">"options"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: { </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">"webhook"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"https://…"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> } }</span></span>
|
|
67
67
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span></code></pre></div></li><li><p>运行 <code>req notify-test</code>(可加 <code>--type blocked</code> 等)发一条测试消息。</p></li></ol><p>事件的类型和字段见 <a href="./../reference/contracts/notifier-event">contracts/notifier-event.md</a>。通知失败只记日志,不影响流水线。项目配置(<code>.requirement-pipeline.json</code>)中的 <code>notifiers</code> 会被忽略。</p><h2 id="_13-paseo-插件-可选" tabindex="-1">13. Paseo 插件(可选) <a class="header-anchor" href="#_13-paseo-插件-可选" aria-label="Permalink to "13. Paseo 插件(可选)""></a></h2><p>1.9 起,req-kit 附带一个 Paseo 插件,把需求搬进 Paseo 的界面(网页端、桌面版、手机都能用):</p><ul><li>侧边栏的"需求":本机所有项目的需求,按"需要你处理、进行中、待测试验证、最近完成"分组,带待处理的数量。</li><li>需求详情:每一步的状态、用时和结论(点开即进入那个步骤的 agent)、质量门、联合需求的各仓库、用量;可以读需求说明、方案、确认预览、提测说明、完成报告等文档。</li><li>管理操作:确认方案、停止、继续、开始测试验证。每个操作都要再确认一次,做的事和终端里的 <code>req approve</code>、<code>req stop</code>、<code>req resume</code>、<code>req verify</code> 完全一样,流水线本身不受插件影响。</li><li>每个工作区头部的"需求"按钮和面板、步骤 agent 输入框旁的"需求"按钮、使用统计(同 <code>req stats</code>),以及 Ctrl+K(macOS 为 ⌘K)中的"需求总览"。</li></ul><p><strong>安装</strong>:在运行 Paseo daemon 的机器上运行</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0" v-pre=""><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">req</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> plugin</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> install</span></span></code></pre></div><p>它把当前版本的插件复制到 <code>~/.req-kit/paseo-plugin</code>,再用 Paseo 的命令行安装。Paseo 的插件总开关(<code>pluginsEnabled</code>)默认是关着的:插件是不受沙箱限制的代码,后台部分可以访问这台机器上的文件和进程,所以打开前会先问你(<code>--yes</code> 表示同意)。req-kit 插件只运行本机的 <code>req api</code>,不连接任何外部服务。一键安装脚本在最后也会问一次是否安装(<code>--with-plugin</code> 直接安装,<code>--no-plugin</code> 不问)。</p><p>没有 <code>paseo</code> 命令时(例如只用桌面版 Paseo),在 Paseo 的 设置 → Plugins 中打开 Enable plugins,再在 Plugin source 中填 <code>~/.req-kit/paseo-plugin</code> 的完整路径(运行 <code>req plugin install</code> 会准备好这个目录并显示路径)。</p><p><strong>更新</strong>:不用单独做。<code>req setup</code>、<code>req upgrade</code>、<code>req use</code> 启用一个版本时,如果装过插件,会把插件文件换成这个版本的并让 Paseo 重新加载,插件总是和启用的 req-kit 版本一致。</p><p><strong>只读</strong>:网页端会给只看不操作的人用时,在 Paseo 的 设置 → Plugins → req-kit 中打开"只读":不再显示管理操作,插件的后台也会拒绝它们。能连上这台 daemon 的人都能看到插件,Paseo 的插件没有按用户区分的权限。</p><p><strong>其他</strong>:<code>req plugin status</code> 看插件是否在运行;<code>req plugin remove</code> 从 Paseo 移除(不改插件总开关)。插件需要 req-kit 1.9 和 Paseo 0.11。1.9 之前运行过的需求要先在项目目录运行一次 <code>req index --rebuild</code> 才会出现在插件里。插件出问题时:<code>paseo plugin logs req-kit</code>。</p></div><p class="source-note">本页由仓库中的 <a href="https://github.com/yiyisf/paseo-req-kit/blob/main/docs/guide/安装与升级.md">docs/guide/安装与升级.md</a> 生成。<a href="https://github.com/yiyisf/paseo-req-kit/edit/main/docs/guide/安装与升级.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="/guide/phases" data-v-1bcd8184><!--[--><span class="desc" data-v-1bcd8184>上一页</span><span class="title" data-v-1bcd8184>分阶段执行与提测</span><!--]--></a></div><div class="pager" data-v-1bcd8184><a class="VPLink link pager-link next" href="/guide/project" data-v-1bcd8184><!--[--><span class="desc" data-v-1bcd8184>下一页</span><span class="title" data-v-1bcd8184>项目定制与运行规则</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>
|
|
68
|
-
<script>window.__VP_HASH_MAP__=JSON.parse("{\"changelog.md\":\"
|
|
68
|
+
<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>
|
|
69
69
|
|
|
70
70
|
</body>
|
|
71
71
|
</html>
|