@openprd/cli 0.1.1 → 0.1.8
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/.openprd/README.md +43 -69
- package/.openprd/README_EN.md +84 -0
- package/.openprd/benchmarks/index.md +7 -0
- package/.openprd/benchmarks/sources.yaml +25 -3
- package/.openprd/discovery/config.json +16 -2
- package/.openprd/engagements/active/flows.md +19 -14
- package/.openprd/engagements/active/handoff.md +11 -4
- package/.openprd/engagements/active/prd.md +99 -71
- package/.openprd/engagements/active/review.html +4 -4
- package/.openprd/engagements/active/roles.md +9 -8
- package/.openprd/engagements/work-units/wu-20260524015648-6d33ded7.json +4 -4
- package/.openprd/engagements/work-units/wu-20260602113956-a99b5b88.json +18 -0
- package/.openprd/engagements/work-units/wu-20260602122244-78656aaf.json +18 -0
- package/.openprd/engagements/work-units/wu-20260602122442-e96489e2.json +18 -0
- package/.openprd/engagements/work-units/wu-20260602132835-695429e8.json +18 -0
- package/.openprd/knowledge/candidates/candidate-turn-1780116203372-5f266a79e968c758/candidate.json +78 -0
- package/.openprd/knowledge/candidates/candidate-turn-1780116203372-5f266a79e968c758/diagnostic-report.json +129 -0
- package/.openprd/knowledge/candidates/candidate-turn-1780116203372-5f266a79e968c758/root-cause-candidates.json +41 -0
- package/.openprd/knowledge/candidates/candidate-turn-1780116203372-5f266a79e968c758/timeline.json +14 -0
- package/.openprd/knowledge/drafts/openprd-experience-diagnostic-candidate-turn-1780116203372-5f266a79e968c758/SKILL.md +49 -0
- package/.openprd/knowledge/index.json +44 -4
- package/.openprd/reviews/v0001.html +195 -129
- package/.openprd/reviews/v0002.html +1150 -0
- package/.openprd/reviews/v0003.html +1150 -0
- package/.openprd/reviews/v0004.html +1150 -0
- package/.openprd/reviews/v0005.html +1150 -0
- package/.openprd/standards/config.json +12 -9
- package/.openprd/state/changes.json +17 -2
- package/.openprd/state/current.json +399 -63
- package/.openprd/state/release-ledger.json +344 -0
- package/.openprd/state/version-index.json +52 -0
- package/.openprd/state/versions/v0002.json +264 -0
- package/.openprd/state/versions/v0002.md +183 -0
- package/.openprd/state/versions/v0003.json +269 -0
- package/.openprd/state/versions/v0003.md +188 -0
- package/.openprd/state/versions/v0004.json +274 -0
- package/.openprd/state/versions/v0004.md +193 -0
- package/.openprd/state/versions/v0005.json +299 -0
- package/.openprd/state/versions/v0005.md +189 -0
- package/.openprd/templates/agent/intake.md +5 -4
- package/.openprd/templates/b2b/intake.md +5 -4
- package/.openprd/templates/base/intake.md +10 -4
- package/.openprd/templates/company/README.md +9 -7
- package/.openprd/templates/company/README_EN.md +12 -0
- package/.openprd/templates/consumer/intake.md +5 -4
- package/.openprd/templates/industry/README.md +12 -10
- package/.openprd/templates/industry/README_EN.md +18 -0
- package/.openprd/templates/project/README.md +11 -9
- package/.openprd/templates/project/README_EN.md +16 -0
- package/.openprd/templates/session/README.md +11 -9
- package/.openprd/templates/session/README_EN.md +16 -0
- package/AGENTS.md +12 -8
- package/README.md +399 -438
- package/README_CN.md +4 -578
- package/README_EN.md +850 -0
- package/docs/assets/openprd-requirement-routing-en.png +0 -0
- package/docs/assets/openprd-requirement-routing-en.svg +102 -0
- package/docs/assets/openprd-requirement-routing-zh-refined.png +0 -0
- package/docs/assets/openprd-requirement-routing-zh.png +0 -0
- package/docs/assets/openprd-requirement-routing-zh.svg +102 -0
- package/package.json +6 -2
- package/scripts/dev-check-wrapup-copy.mjs +110 -0
- package/scripts/openprd-github-release-notes.mjs +99 -0
- package/scripts/quality-perf-check.mjs +203 -0
- package/skills/openprd-benchmark-router/SKILL.md +1 -0
- package/skills/openprd-benchmark-router/references/benchmark-sources.md +1 -0
- package/skills/openprd-benchmark-router/references/source-policy.md +2 -0
- package/skills/openprd-discovery-loop/SKILL.md +2 -2
- package/skills/openprd-harness/SKILL.md +46 -24
- package/skills/openprd-harness/references/workflow-gates.md +15 -0
- package/skills/openprd-quality/SKILL.md +10 -4
- package/skills/openprd-requirement-intake/SKILL.md +31 -20
- package/skills/openprd-requirement-intake/references/prd-template-lenses.md +6 -6
- package/skills/openprd-requirement-intake/references/routing-rubric.md +10 -2
- package/skills/openprd-router/SKILL.md +2 -2
- package/skills/openprd-shared/SKILL.md +51 -23
- package/skills/openprd-standards/SKILL.md +2 -1
- package/src/agent-integration.js +265 -65
- package/src/benchmark/constants.js +107 -0
- package/src/benchmark/operations.js +235 -0
- package/src/benchmark/registry.js +64 -0
- package/src/benchmark/render.js +115 -0
- package/src/benchmark/source.js +617 -0
- package/src/benchmark/storage.js +121 -0
- package/src/benchmark/verify.js +235 -0
- package/src/benchmark.js +50 -851
- package/src/change-summary.js +339 -0
- package/src/cli/args.js +67 -6
- package/src/cli/basic-print.js +365 -0
- package/src/cli/benchmark-print.js +91 -0
- package/src/cli/change-print.js +221 -0
- package/src/cli/doctor-print.js +268 -0
- package/src/cli/growth-print.js +176 -0
- package/src/cli/print.js +73 -1384
- package/src/cli/quality-print.js +284 -0
- package/src/cli/run-print.js +297 -0
- package/src/cli/shared-print.js +127 -0
- package/src/cli/workflow-print.js +195 -0
- package/src/codex-hook-runner-template.mjs +639 -117
- package/src/codex-runtime.js +324 -0
- package/src/dev-standards.js +178 -5
- package/src/diagram-core.js +5 -5
- package/src/discovery.js +2 -1
- package/src/execution-strategy.js +369 -0
- package/src/fleet.js +4 -0
- package/src/github-release.js +156 -0
- package/src/growth.js +311 -13
- package/src/html-artifact-utils.js +25 -0
- package/src/html-artifacts.js +157 -1596
- package/src/knowledge.js +1176 -75
- package/src/language-policy.js +2 -112
- package/src/learning-html-artifact.js +1031 -0
- package/src/learning-review.js +3 -2
- package/src/loop.js +280 -9
- package/src/openprd.js +341 -38
- package/src/openspec/change-validate.js +0 -9
- package/src/openspec/execute.js +79 -3
- package/src/openspec/generate.js +33 -20
- package/src/openspec/tasks.js +33 -2
- package/src/prd-core.js +10 -9
- package/src/product-type-copy.js +69 -0
- package/src/quality-html-artifact.js +108 -9
- package/src/quality-learning.js +30 -0
- package/src/quality-visual-review.js +237 -0
- package/src/quality.js +329 -43
- package/src/registry-hygiene.js +54 -0
- package/src/release-ledger.js +413 -0
- package/src/review-presentation.js +12 -6
- package/src/run-harness.js +722 -48
- package/src/session-binding.js +40 -3
- package/src/session-registry.js +159 -0
- package/src/standards.js +5 -3
- package/src/test-strategy.js +386 -0
- package/src/visual-compare.js +915 -34
- package/src/work-unit-migration.js +5 -1
- package/src/workspace-core.js +343 -19
- package/src/workspace-workflow.js +538 -134
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
{
|
|
2
|
+
"versionNumber": 5,
|
|
3
|
+
"versionId": "v0005",
|
|
4
|
+
"createdAt": "2026-06-02 13:28:35",
|
|
5
|
+
"projectRoot": "/Users/chaojifeng/Projects/harness-engineer/openprd",
|
|
6
|
+
"workspaceRoot": "/Users/chaojifeng/Projects/harness-engineer/openprd/.openprd",
|
|
7
|
+
"schema": "prd-core",
|
|
8
|
+
"templatePack": "agent",
|
|
9
|
+
"productType": "agent",
|
|
10
|
+
"title": "OpenPrd 首轮项目画像与自适应需求初始化",
|
|
11
|
+
"owner": "Codex",
|
|
12
|
+
"status": "synthesized",
|
|
13
|
+
"sections": {
|
|
14
|
+
"meta": {
|
|
15
|
+
"title": "OpenPrd 首轮项目画像与自适应需求初始化",
|
|
16
|
+
"owner": "Codex",
|
|
17
|
+
"status": "clarifying",
|
|
18
|
+
"version": "v0005",
|
|
19
|
+
"productType": "agent",
|
|
20
|
+
"date": "2026-06-02"
|
|
21
|
+
},
|
|
22
|
+
"problem": {
|
|
23
|
+
"problemStatement": "OpenPrd 在用户第一次提需求时虽然已经有 consumer / b2b / agent 分流、clarify 和后续 review/change/tasks 流程,但缺少一个项目级的首轮画像层。结果是 Agent 容易直接围绕局部需求推进,而没有先确认用户群体、产品形态、第一版切片、先不做什么、不能破坏什么,以及是否命中技术和业务风险。",
|
|
24
|
+
"whyNow": "用户明确指出 Vibe Coding 场景下的首轮需求往往模糊:如果不先建立整体轮廓,后续容易返工;如果一上来就强制填写重问卷,又会压垮首轮体验。因此需要把初始化改成轻量项目画像加条件追问。",
|
|
25
|
+
"evidence": [
|
|
26
|
+
"本轮用户明确指出第一次提需缺少 to C / to B / agent、用户群体、商业模式、功能架构和技术边界的前置梳理。",
|
|
27
|
+
"本地代码检查显示现有 base intake 只覆盖问题、用户、成功、范围与成本信号,缺少独立的首轮项目画像层。",
|
|
28
|
+
"外部调研表明 Vibe Coding 更适合轻量画像加条件追问,而不是重型初始化问卷。"
|
|
29
|
+
]
|
|
30
|
+
},
|
|
31
|
+
"users": {
|
|
32
|
+
"primaryUsers": [
|
|
33
|
+
"第一次用 OpenPrd 梳理产品想法的产品经理、独立开发者与 Vibe Coding 用户",
|
|
34
|
+
"需要在模糊需求下帮助用户收敛方向并继续落地的 Agent 协作者"
|
|
35
|
+
],
|
|
36
|
+
"secondaryUsers": [],
|
|
37
|
+
"stakeholders": [
|
|
38
|
+
"维护 OpenPrd requirement-intake、workflow 和模板的开发者",
|
|
39
|
+
"后续需要基于已确认上下文继续实现的多轮 Agent 会话"
|
|
40
|
+
]
|
|
41
|
+
},
|
|
42
|
+
"goals": {
|
|
43
|
+
"goals": [
|
|
44
|
+
"在第一次提需时先形成一页轻量项目画像,而不是直接跳进局部需求修改",
|
|
45
|
+
"让系统优先归纳 to C / to B / agent、目标用户、产品形态、第一版切片、非目标和保护项,再请用户确认",
|
|
46
|
+
"当信息不足时,用条件追问或候选原型方向补齐,而不是要求用户一开始回答完整技术和商业问卷"
|
|
47
|
+
],
|
|
48
|
+
"successMetrics": [
|
|
49
|
+
"首轮 clarify 能输出结构化的项目画像摘要,并包含用户群体、产品形态、第一版先做、先不做和不能破坏项",
|
|
50
|
+
"复杂或模糊需求会触发技术/风险追问,简单明确需求仍保持轻量",
|
|
51
|
+
"默认 clarify 仍在对话内完成,不新增新的 clarify HTML",
|
|
52
|
+
"用户能够更快确认方向,后续 PRD 和实现阶段减少返工与错题"
|
|
53
|
+
],
|
|
54
|
+
"acceptanceGoals": [
|
|
55
|
+
"workspace-workflow 能生成首轮项目画像、风险探针和更贴近用户语言的确认问题",
|
|
56
|
+
"workspace-core 的冷启动 kickoff 问题升级为画像导向问题",
|
|
57
|
+
"intake 模板、skills、docs、CLI 文本输出和测试与新流程保持一致"
|
|
58
|
+
]
|
|
59
|
+
},
|
|
60
|
+
"scope": {
|
|
61
|
+
"inScope": [
|
|
62
|
+
"在 clarify、intake-reflection 和 interview 中加入首轮项目画像层",
|
|
63
|
+
"让系统先推断 consumer / b2b / agent 与项目形态,再结合第一版切片、非目标、保护项组织追问",
|
|
64
|
+
"命中技术和业务风险信号时再展开前后端、数据、账号、AI、外部服务、收费等边界问题",
|
|
65
|
+
"同步更新模板、技能说明、基础文档、CLI 输出和相关测试"
|
|
66
|
+
],
|
|
67
|
+
"outOfScope": [
|
|
68
|
+
"不把首次提需改成一份重型强制问卷",
|
|
69
|
+
"不把商业模式或技术架构变成所有场景的硬必填 schema",
|
|
70
|
+
"不新增默认 clarify HTML 或额外前端评审页面",
|
|
71
|
+
"不让局部小修进入完整项目画像重流程"
|
|
72
|
+
]
|
|
73
|
+
},
|
|
74
|
+
"scenarios": {
|
|
75
|
+
"primaryFlows": [
|
|
76
|
+
"用户第一次提需求时,OpenPrd 先输出一页项目画像:用户群体、产品形态、第一版先做、先不做、不能破坏、技术落点和风险探针",
|
|
77
|
+
"如果用户表达已经足够清楚,Agent 直接用系统归纳的画像摘要请用户确认",
|
|
78
|
+
"如果用户表达模糊,Agent 先追问少量高价值问题,必要时给 2 到 3 个方向或行业原型供用户选择",
|
|
79
|
+
"画像确认后再进入后续 PRD、review、change 和 tasks 流程"
|
|
80
|
+
],
|
|
81
|
+
"edgeCases": [
|
|
82
|
+
"用户一开始只有一句模糊想法,需要先给候选方向而不是硬追问技术细节",
|
|
83
|
+
"已有项目上下文时应优先沿用已知事实,而不是把所有画像问题重问一遍",
|
|
84
|
+
"局部 copy、样式或小交互修正不应被错误升级成重画像流程"
|
|
85
|
+
],
|
|
86
|
+
"failureModes": [
|
|
87
|
+
"入口过重,导致 Vibe Coding 用户在第一次提需时无法回答",
|
|
88
|
+
"入口过轻,导致 Agent 没有先确认项目边界就直接落地",
|
|
89
|
+
"错误复用旧 active change 或旧 PRD 上下文,导致实现偏题"
|
|
90
|
+
]
|
|
91
|
+
},
|
|
92
|
+
"requirements": {
|
|
93
|
+
"functional": [
|
|
94
|
+
"clarify 生成的 intake-reflection 应包含首轮项目画像和风险探针",
|
|
95
|
+
"inline clarification 应显式展示适用对象、产品形态、第一版先做、先不做、不能破坏和技术落点",
|
|
96
|
+
"冷启动 kickoff 问题改成画像导向问题,而不是抽象的通用提问",
|
|
97
|
+
"类型专项 intake 模板改成更贴近产品与业务语言的提问方式"
|
|
98
|
+
],
|
|
99
|
+
"nonFunctional": [
|
|
100
|
+
"默认澄清仍要保持对话内、轻量、可扫读",
|
|
101
|
+
"对已有 schema 和生成流程的侵入应尽量小",
|
|
102
|
+
"输出语言优先面向产品和业务用户,而不是工程内部黑话"
|
|
103
|
+
],
|
|
104
|
+
"businessRules": [
|
|
105
|
+
"优先由系统归纳后请用户确认,而不是一开始把所有字段抛给用户",
|
|
106
|
+
"只有命中风险信号时才展开技术、账号、数据、外部服务或成本相关追问",
|
|
107
|
+
"consumer / b2b / agent 优先由系统推断,必要时再请用户确认",
|
|
108
|
+
"clarify 阶段默认不生成 HTML,正式可视化仍留给 review 或 diagram 阶段"
|
|
109
|
+
]
|
|
110
|
+
},
|
|
111
|
+
"businessGuardrails": {
|
|
112
|
+
"costDrivers": [
|
|
113
|
+
"本次没有新增第三方付费调用;成本主要来自不准确需求初始化带来的返工和错题"
|
|
114
|
+
],
|
|
115
|
+
"usageLimits": [
|
|
116
|
+
"不应让每个首次提需都退化成长问卷;默认只问最少必要问题"
|
|
117
|
+
],
|
|
118
|
+
"abusePrevention": [
|
|
119
|
+
"系统不能把未确认的推断当作最终需求事实",
|
|
120
|
+
"命中账号、数据、外部服务、AI 或收费信号时,必须显式提醒边界与风险"
|
|
121
|
+
],
|
|
122
|
+
"monitoringSignals": [
|
|
123
|
+
"观察首轮 clarify 是否仍然过长、是否反复追问同一类信息、是否错误复用旧 change 上下文"
|
|
124
|
+
],
|
|
125
|
+
"alertThresholds": [
|
|
126
|
+
"如果简单需求被连续升级成深度追问,或复杂需求仍缺少画像摘要,应在测试中显式暴露"
|
|
127
|
+
],
|
|
128
|
+
"stopLossActions": [
|
|
129
|
+
"当系统无法准确归纳时,退回到少量高价值确认问题,不假装已经清楚",
|
|
130
|
+
"当当前工作区上下文明显与本轮需求不匹配时,先刷新到新的 change/task 再实现"
|
|
131
|
+
]
|
|
132
|
+
},
|
|
133
|
+
"constraints": {
|
|
134
|
+
"technical": [
|
|
135
|
+
"主要修改 src/workspace-workflow.js、src/workspace-core.js、CLI 文本输出、.openprd intake 模板、skills/docs 和测试",
|
|
136
|
+
"避免新增新的硬性必填 schema 字段,优先通过 intake 和 clarification 层完成增强"
|
|
137
|
+
],
|
|
138
|
+
"compliance": [
|
|
139
|
+
"继续遵守现有 requirement gate、review gate 和 hook 安全边界,不绕过已确认的需求流程。",
|
|
140
|
+
"新增提示和用户可见文案应保持面向产品与业务语言,不直接暴露内部技术细节。"
|
|
141
|
+
],
|
|
142
|
+
"dependencies": [
|
|
143
|
+
"依赖现有 requirement-intake gate、clarify/capture/synthesize/review/change/tasks 工作流",
|
|
144
|
+
"依赖现有 base / consumer / b2b / agent 模板与评审产物体系"
|
|
145
|
+
]
|
|
146
|
+
},
|
|
147
|
+
"risks": {
|
|
148
|
+
"assumptions": [
|
|
149
|
+
"Vibe Coding 用户更愿意确认系统总结,而不是先填写长问卷",
|
|
150
|
+
"现有 lens 分类能力可保留,只需要前移到项目画像语境里"
|
|
151
|
+
],
|
|
152
|
+
"risks": [
|
|
153
|
+
"如果问题过多,会损伤首次提需体验",
|
|
154
|
+
"如果画像层和现有 capture/analysis 脱节,会造成重复提问",
|
|
155
|
+
"如果没有处理旧上下文切换,hook 可能继续把代码修改指向错误 change"
|
|
156
|
+
],
|
|
157
|
+
"openQuestions": [
|
|
158
|
+
"后续是否需要单独的 profile review artifact 或 diagram,用于更复杂的多系统场景"
|
|
159
|
+
]
|
|
160
|
+
},
|
|
161
|
+
"handoff": {
|
|
162
|
+
"owner": "Codex",
|
|
163
|
+
"nextStep": "生成新的 change 和 tasks,并按首轮项目画像流程修改 workflow、模板、文档和测试。",
|
|
164
|
+
"targetSystem": "OpenPrd"
|
|
165
|
+
},
|
|
166
|
+
"typeSpecific": {
|
|
167
|
+
"kind": "agent",
|
|
168
|
+
"title": "Agent 专项",
|
|
169
|
+
"fields": {
|
|
170
|
+
"humanAgentContract": "Agent 先归纳用户群体、产品形态、第一版切片、边界与风险,再请求用户确认;如果信息不足,只能提出候选方向,不能把猜测当成定论。",
|
|
171
|
+
"autonomyBoundary": "Agent 可以根据当前需求和已有工作区状态推断首轮项目画像,但在用户确认前不得把推断直接写成最终需求事实或越过需求入口去改实现。",
|
|
172
|
+
"toolBoundary": "仅使用本地 OpenPrd workflow、模板、测试和文档完成这次改动,不依赖新的外部运行时。",
|
|
173
|
+
"stateModel": "新需求进入时先形成 project framing,再进入 requirement clarification、review/change/tasks 与实现。",
|
|
174
|
+
"evalPlan": "通过 workspace flow、requirement gate、CLI 输出和模板相关测试验证新流程,同时运行 dev-check、standards、quality 与 run verify。"
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
},
|
|
178
|
+
"reviewPresentation": {
|
|
179
|
+
"diagram": {
|
|
180
|
+
"type": "map",
|
|
181
|
+
"note": "首次提需先做项目画像,再进入后续需求流。"
|
|
182
|
+
},
|
|
183
|
+
"mapNodes": {
|
|
184
|
+
"problem": {
|
|
185
|
+
"title": "问题定义",
|
|
186
|
+
"text": "首次提需缺少项目级画像"
|
|
187
|
+
},
|
|
188
|
+
"goal": {
|
|
189
|
+
"title": "目标",
|
|
190
|
+
"text": "先定用户与首版边界"
|
|
191
|
+
},
|
|
192
|
+
"scope": {
|
|
193
|
+
"title": "范围",
|
|
194
|
+
"text": "先做轻量画像与条件追问"
|
|
195
|
+
},
|
|
196
|
+
"flow": {
|
|
197
|
+
"title": "流程",
|
|
198
|
+
"text": "画像确认后再进 PRD 与任务"
|
|
199
|
+
},
|
|
200
|
+
"risk": {
|
|
201
|
+
"title": "风险",
|
|
202
|
+
"text": "避免重问卷和旧上下文误用"
|
|
203
|
+
}
|
|
204
|
+
},
|
|
205
|
+
"flowNodes": [
|
|
206
|
+
{
|
|
207
|
+
"id": "step1",
|
|
208
|
+
"text": "先归纳用户与产品形态"
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
"id": "step2",
|
|
212
|
+
"text": "再补高价值追问"
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
"id": "step3",
|
|
216
|
+
"text": "确认后进入后续流程"
|
|
217
|
+
}
|
|
218
|
+
],
|
|
219
|
+
"flowEdges": [
|
|
220
|
+
{
|
|
221
|
+
"from": "step1",
|
|
222
|
+
"to": "step2"
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
"from": "step2",
|
|
226
|
+
"to": "step3"
|
|
227
|
+
}
|
|
228
|
+
],
|
|
229
|
+
"panels": {
|
|
230
|
+
"flow": [
|
|
231
|
+
{
|
|
232
|
+
"summary": "新增画像",
|
|
233
|
+
"detail": "首次提需先归纳目标用户、产品形态和第一版切片。"
|
|
234
|
+
},
|
|
235
|
+
{
|
|
236
|
+
"summary": "补充追问",
|
|
237
|
+
"detail": "信息不足时只追问少量高价值问题,必要时给候选方向。"
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
"summary": "继续落地",
|
|
241
|
+
"detail": "画像确认后再进入 PRD、change 和 tasks,减少后续返工。"
|
|
242
|
+
}
|
|
243
|
+
],
|
|
244
|
+
"function": [
|
|
245
|
+
{
|
|
246
|
+
"summary": "优化 clarify",
|
|
247
|
+
"detail": "对话内摘要会直接展示适用对象、先做什么和不能破坏什么。"
|
|
248
|
+
},
|
|
249
|
+
{
|
|
250
|
+
"summary": "更新 kickoff",
|
|
251
|
+
"detail": "冷启动问题从抽象通用提问改成画像导向提问。"
|
|
252
|
+
},
|
|
253
|
+
{
|
|
254
|
+
"summary": "统一模板",
|
|
255
|
+
"detail": "intake 模板、CLI 输出、技能说明和测试一起对齐新流程。"
|
|
256
|
+
}
|
|
257
|
+
],
|
|
258
|
+
"guardrail": [
|
|
259
|
+
{
|
|
260
|
+
"summary": "默认轻量",
|
|
261
|
+
"detail": "不把每次首次提需都变成重型初始化问卷。"
|
|
262
|
+
},
|
|
263
|
+
{
|
|
264
|
+
"summary": "风险触发",
|
|
265
|
+
"detail": "只有命中账号、数据、AI 或收费信号时才展开更深追问。"
|
|
266
|
+
},
|
|
267
|
+
{
|
|
268
|
+
"summary": "保留 review",
|
|
269
|
+
"detail": "clarify 仍停留在对话内,正式可视化评审继续留给 review 或 diagram。"
|
|
270
|
+
}
|
|
271
|
+
],
|
|
272
|
+
"risk": [
|
|
273
|
+
{
|
|
274
|
+
"summary": "避免过重",
|
|
275
|
+
"detail": "问题过多会损伤首次提需体验,需要保持卡片化和少量追问。"
|
|
276
|
+
},
|
|
277
|
+
{
|
|
278
|
+
"summary": "避免漏问",
|
|
279
|
+
"detail": "如果画像层和现有分析脱节,后续仍会出现重复澄清。"
|
|
280
|
+
},
|
|
281
|
+
{
|
|
282
|
+
"summary": "切换上下文",
|
|
283
|
+
"detail": "旧 active change 没切干净时,hook 可能继续把实现指向错误需求。"
|
|
284
|
+
}
|
|
285
|
+
]
|
|
286
|
+
}
|
|
287
|
+
},
|
|
288
|
+
"workUnitId": "wu-20260602132835-695429e8",
|
|
289
|
+
"targetRoot": "/Users/chaojifeng/Projects/harness-engineer/openprd",
|
|
290
|
+
"content": "# OpenPrd 首轮项目画像与自适应需求初始化\n> 语言规则:默认用简体中文生成 PRD、spec、tasks 和用户可见说明;除 PRD、OpenPrd、OpenSpec、API、SDK、CLI、TypeScript、JSON、HTTP、WebSocket、字段 key、命令名、品牌名、产品名和协议名等必要专有名词外,其余内容优先写成简体中文。\n- 版本: v0005\n- 负责人: Codex\n- 产品类型: agent\n- 模板包: agent\n- 状态: synthesized\n- 生成时间: 2026-06-02 13:28:35\n## 元信息\n\n- 标题: OpenPrd 首轮项目画像与自适应需求初始化\n- 负责人: Codex\n- 状态: clarifying\n- 版本: v0005\n- 产品类型: agent\n- 日期: 2026-06-02\n\n## 问题\n\n- 问题陈述: OpenPrd 在用户第一次提需求时虽然已经有 consumer / b2b / agent 分流、clarify 和后续 review/change/tasks 流程,但缺少一个项目级的首轮画像层。结果是 Agent 容易直接围绕局部需求推进,而没有先确认用户群体、产品形态、第一版切片、先不做什么、不能破坏什么,以及是否命中技术和业务风险。\n- 为什么是现在: 用户明确指出 Vibe Coding 场景下的首轮需求往往模糊:如果不先建立整体轮廓,后续容易返工;如果一上来就强制填写重问卷,又会压垮首轮体验。因此需要把初始化改成轻量项目画像加条件追问。\n- 证据:\n - 本轮用户明确指出第一次提需缺少 to C / to B / agent、用户群体、商业模式、功能架构和技术边界的前置梳理。\n - 本地代码检查显示现有 base intake 只覆盖问题、用户、成功、范围与成本信号,缺少独立的首轮项目画像层。\n - 外部调研表明 Vibe Coding 更适合轻量画像加条件追问,而不是重型初始化问卷。\n\n## 用户与相关方\n\n- 主要用户:\n - 第一次用 OpenPrd 梳理产品想法的产品经理、独立开发者与 Vibe Coding 用户\n - 需要在模糊需求下帮助用户收敛方向并继续落地的 Agent 协作者\n- 次要用户:\n - 待补充\n- 相关方:\n - 维护 OpenPrd requirement-intake、workflow 和模板的开发者\n - 后续需要基于已确认上下文继续实现的多轮 Agent 会话\n\n## 目标与成功标准\n\n- 目标:\n - 在第一次提需时先形成一页轻量项目画像,而不是直接跳进局部需求修改\n - 让系统优先归纳 to C / to B / agent、目标用户、产品形态、第一版切片、非目标和保护项,再请用户确认\n - 当信息不足时,用条件追问或候选原型方向补齐,而不是要求用户一开始回答完整技术和商业问卷\n- 成功指标:\n - 首轮 clarify 能输出结构化的项目画像摘要,并包含用户群体、产品形态、第一版先做、先不做和不能破坏项\n - 复杂或模糊需求会触发技术/风险追问,简单明确需求仍保持轻量\n - 默认 clarify 仍在对话内完成,不新增新的 clarify HTML\n - 用户能够更快确认方向,后续 PRD 和实现阶段减少返工与错题\n- 验收目标:\n - workspace-workflow 能生成首轮项目画像、风险探针和更贴近用户语言的确认问题\n - workspace-core 的冷启动 kickoff 问题升级为画像导向问题\n - intake 模板、skills、docs、CLI 文本输出和测试与新流程保持一致\n\n## 范围与非目标\n\n- 范围内:\n - 在 clarify、intake-reflection 和 interview 中加入首轮项目画像层\n - 让系统先推断 consumer / b2b / agent 与项目形态,再结合第一版切片、非目标、保护项组织追问\n - 命中技术和业务风险信号时再展开前后端、数据、账号、AI、外部服务、收费等边界问题\n - 同步更新模板、技能说明、基础文档、CLI 输出和相关测试\n- 范围外:\n - 不把首次提需改成一份重型强制问卷\n - 不把商业模式或技术架构变成所有场景的硬必填 schema\n - 不新增默认 clarify HTML 或额外前端评审页面\n - 不让局部小修进入完整项目画像重流程\n\n## 场景与流程\n\n- 主流程:\n - 用户第一次提需求时,OpenPrd 先输出一页项目画像:用户群体、产品形态、第一版先做、先不做、不能破坏、技术落点和风险探针\n - 如果用户表达已经足够清楚,Agent 直接用系统归纳的画像摘要请用户确认\n - 如果用户表达模糊,Agent 先追问少量高价值问题,必要时给 2 到 3 个方向或行业原型供用户选择\n - 画像确认后再进入后续 PRD、review、change 和 tasks 流程\n- 边界情况:\n - 用户一开始只有一句模糊想法,需要先给候选方向而不是硬追问技术细节\n - 已有项目上下文时应优先沿用已知事实,而不是把所有画像问题重问一遍\n - 局部 copy、样式或小交互修正不应被错误升级成重画像流程\n- 失败模式:\n - 入口过重,导致 Vibe Coding 用户在第一次提需时无法回答\n - 入口过轻,导致 Agent 没有先确认项目边界就直接落地\n - 错误复用旧 active change 或旧 PRD 上下文,导致实现偏题\n\n## 可视化图表\n\n### 产品流程\n\n```mermaid\nflowchart LR\n entry[\"入口触发<br/>用户第一次提需求时,OpenPrd 先输出一页项目画像:用户群体、产品形态、第一版先做、先不做、不能破坏、技术落点和风险探针\"]\n experience[\"产品内步骤<br/>如果用户表达已经足够清楚,Agent 直接用系统归纳的画像摘要请用户确认\"]\n decision{\"决策点<br/>用户一开始只有一句模糊想法,需要先给候选方向而不是硬追问技术细节\"}\n success([\"成功结果<br/>首轮 clarify 能输出结构化的项目画像摘要,并包含用户群体、产品形态、第一版先做、先不做和不能破坏项\"])\n failure[[\"失败与恢复<br/>入口过重,导致 Vibe Coding 用户在第一次提需时无法回答\"]]\n entry -->|\"用户第一次提需求时,OpenPrd 先输出一页项目画像:用户群体、产品形态、第一版…\"| experience\n experience -->|\"如果用户表达已经足够清楚,Agent 直接用系统归纳的画像摘要请用户确认\"| decision\n decision -->|\"在第一次提需时先形成一页轻量项目画像,而不是直接跳进局部需求修改\"| success\n decision -.->|\"入口过重,导致 Vibe Coding 用户在第一次提需时无法回答\"| failure\n```\n\n### 架构\n\n```mermaid\nflowchart LR\n users[\"主要用户<br/>第一次用 OpenPrd 梳理产品想法的产品经理、独立开发者与 Vibe Coding 用户 · 需要在模糊需求下帮助用户收敛…\"]\n subgraph solution[\"方案边界\"]\n experience[\"Agent 运行层<br/>用户第一次提需求时,OpenPrd 先输出一页项目画像:用户群体、产品形态、第一版先做、先不做、不能破坏、技术落点和风险探针 …\"]\n core[\"核心产品逻辑<br/>OpenPrd 在用户第一次提需求时虽然已经有 consumer / b2b / agent 分流、clarify 和后续 r…\"]\n integrations[\"依赖与集成<br/>依赖现有 requirement-intake gate、clarify/capture/synthesize/review/…\"]\n governance[[\"约束与可靠性<br/>继续遵守现有 requirement gate、review gate 和 hook 安全边界,不绕过已确认的需求流程。 · …\"]]\n delivery[\"验证与交接<br/>首轮 clarify 能输出结构化的项目画像摘要,并包含用户群体、产品形态、第一版先做、先不做和不能破坏项 · 复杂或模糊需求…\"]\n end\n users -->|\"用户第一次提需求时,OpenPrd 先输出一页项目画像:用户群体、产品形态、第…\"| experience\n experience -->|\"产品动作与编排\"| core\n core -->|\"依赖与外部服务\"| integrations\n core -.->|\"策略、可靠性与合规\"| governance\n core -->|\"成功标准与交接\"| delivery\n integrations -->|\"运营就绪\"| delivery\n governance -.->|\"评审与确认\"| delivery\n```\n\n## 需求\n\n- 功能需求:\n - clarify 生成的 intake-reflection 应包含首轮项目画像和风险探针\n - inline clarification 应显式展示适用对象、产品形态、第一版先做、先不做、不能破坏和技术落点\n - 冷启动 kickoff 问题改成画像导向问题,而不是抽象的通用提问\n - 类型专项 intake 模板改成更贴近产品与业务语言的提问方式\n- 非功能需求:\n - 默认澄清仍要保持对话内、轻量、可扫读\n - 对已有 schema 和生成流程的侵入应尽量小\n - 输出语言优先面向产品和业务用户,而不是工程内部黑话\n- 业务规则:\n - 优先由系统归纳后请用户确认,而不是一开始把所有字段抛给用户\n - 只有命中风险信号时才展开技术、账号、数据、外部服务或成本相关追问\n - consumer / b2b / agent 优先由系统推断,必要时再请用户确认\n - clarify 阶段默认不生成 HTML,正式可视化仍留给 review 或 diagram 阶段\n\n## 业务护栏\n\n- 成本来源:\n - 本次没有新增第三方付费调用;成本主要来自不准确需求初始化带来的返工和错题\n- 额度与限制:\n - 不应让每个首次提需都退化成长问卷;默认只问最少必要问题\n- 滥用防护:\n - 系统不能把未确认的推断当作最终需求事实\n - 命中账号、数据、外部服务、AI 或收费信号时,必须显式提醒边界与风险\n- 监控信号:\n - 观察首轮 clarify 是否仍然过长、是否反复追问同一类信息、是否错误复用旧 change 上下文\n- 报警阈值:\n - 如果简单需求被连续升级成深度追问,或复杂需求仍缺少画像摘要,应在测试中显式暴露\n- 止损动作:\n - 当系统无法准确归纳时,退回到少量高价值确认问题,不假装已经清楚\n - 当当前工作区上下文明显与本轮需求不匹配时,先刷新到新的 change/task 再实现\n\n## 约束、依赖与风险\n\n- 技术约束:\n - 主要修改 src/workspace-workflow.js、src/workspace-core.js、CLI 文本输出、.openprd intake 模板、skills/docs 和测试\n - 避免新增新的硬性必填 schema 字段,优先通过 intake 和 clarification 层完成增强\n- 合规要求:\n - 继续遵守现有 requirement gate、review gate 和 hook 安全边界,不绕过已确认的需求流程。\n - 新增提示和用户可见文案应保持面向产品与业务语言,不直接暴露内部技术细节。\n- 依赖:\n - 依赖现有 requirement-intake gate、clarify/capture/synthesize/review/change/tasks 工作流\n - 依赖现有 base / consumer / b2b / agent 模板与评审产物体系\n- 假设:\n - Vibe Coding 用户更愿意确认系统总结,而不是先填写长问卷\n - 现有 lens 分类能力可保留,只需要前移到项目画像语境里\n- 风险:\n - 如果问题过多,会损伤首次提需体验\n - 如果画像层和现有 capture/analysis 脱节,会造成重复提问\n - 如果没有处理旧上下文切换,hook 可能继续把代码修改指向错误 change\n- 开放问题:\n - 后续是否需要单独的 profile review artifact 或 diagram,用于更复杂的多系统场景\n\n## 类型专项模块\n\n- 类型: Agent 专项\n- humanAgentContract: Agent 先归纳用户群体、产品形态、第一版切片、边界与风险,再请求用户确认;如果信息不足,只能提出候选方向,不能把猜测当成定论。\n- autonomyBoundary: Agent 可以根据当前需求和已有工作区状态推断首轮项目画像,但在用户确认前不得把推断直接写成最终需求事实或越过需求入口去改实现。\n- toolBoundary: 仅使用本地 OpenPrd workflow、模板、测试和文档完成这次改动,不依赖新的外部运行时。\n- stateModel: 新需求进入时先形成 project framing,再进入 requirement clarification、review/change/tasks 与实现。\n- evalPlan: 通过 workspace flow、requirement gate、CLI 输出和模板相关测试验证新流程,同时运行 dev-check、standards、quality 与 run verify。\n\n## 交接\n\n- 负责人: Codex\n- 下一步: 生成新的 change 和 tasks,并按首轮项目画像流程修改 workflow、模板、文档和测试。\n- 目标系统: OpenPrd\n",
|
|
291
|
+
"digest": "7f0e2d2730982a2ae96647d2377f6204e54f8adadf1b18b05f4bc7167046c575",
|
|
292
|
+
"reviewPresentationMeta": {
|
|
293
|
+
"validatedAt": "2026-06-02T05:28:56.422Z",
|
|
294
|
+
"source": "/tmp/openprd-review-presentation-v0005.json",
|
|
295
|
+
"presentationHash": "33b0760559664a2bdfeb2c363c2aef8985e959cbb8a78070a7821268fab357f2",
|
|
296
|
+
"violationsHash": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
|
297
|
+
"validator": "openprd review-presentation"
|
|
298
|
+
}
|
|
299
|
+
}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
# OpenPrd 首轮项目画像与自适应需求初始化
|
|
2
|
+
> 语言规则:默认用简体中文生成 PRD、spec、tasks 和用户可见说明;除 PRD、OpenPrd、OpenSpec、API、SDK、CLI、TypeScript、JSON、HTTP、WebSocket、字段 key、命令名、品牌名、产品名和协议名等必要专有名词外,其余内容优先写成简体中文。
|
|
3
|
+
- 版本: v0005
|
|
4
|
+
- 负责人: Codex
|
|
5
|
+
- 产品类型: agent
|
|
6
|
+
- 模板包: agent
|
|
7
|
+
- 状态: synthesized
|
|
8
|
+
- 生成时间: 2026-06-02 13:28:35
|
|
9
|
+
## 元信息
|
|
10
|
+
|
|
11
|
+
- 标题: OpenPrd 首轮项目画像与自适应需求初始化
|
|
12
|
+
- 负责人: Codex
|
|
13
|
+
- 状态: clarifying
|
|
14
|
+
- 版本: v0005
|
|
15
|
+
- 产品类型: agent
|
|
16
|
+
- 日期: 2026-06-02
|
|
17
|
+
|
|
18
|
+
## 问题
|
|
19
|
+
|
|
20
|
+
- 问题陈述: OpenPrd 在用户第一次提需求时虽然已经有 consumer / b2b / agent 分流、clarify 和后续 review/change/tasks 流程,但缺少一个项目级的首轮画像层。结果是 Agent 容易直接围绕局部需求推进,而没有先确认用户群体、产品形态、第一版切片、先不做什么、不能破坏什么,以及是否命中技术和业务风险。
|
|
21
|
+
- 为什么是现在: 用户明确指出 Vibe Coding 场景下的首轮需求往往模糊:如果不先建立整体轮廓,后续容易返工;如果一上来就强制填写重问卷,又会压垮首轮体验。因此需要把初始化改成轻量项目画像加条件追问。
|
|
22
|
+
- 证据:
|
|
23
|
+
- 本轮用户明确指出第一次提需缺少 to C / to B / agent、用户群体、商业模式、功能架构和技术边界的前置梳理。
|
|
24
|
+
- 本地代码检查显示现有 base intake 只覆盖问题、用户、成功、范围与成本信号,缺少独立的首轮项目画像层。
|
|
25
|
+
- 外部调研表明 Vibe Coding 更适合轻量画像加条件追问,而不是重型初始化问卷。
|
|
26
|
+
|
|
27
|
+
## 用户与相关方
|
|
28
|
+
|
|
29
|
+
- 主要用户:
|
|
30
|
+
- 第一次用 OpenPrd 梳理产品想法的产品经理、独立开发者与 Vibe Coding 用户
|
|
31
|
+
- 需要在模糊需求下帮助用户收敛方向并继续落地的 Agent 协作者
|
|
32
|
+
- 次要用户:
|
|
33
|
+
- 待补充
|
|
34
|
+
- 相关方:
|
|
35
|
+
- 维护 OpenPrd requirement-intake、workflow 和模板的开发者
|
|
36
|
+
- 后续需要基于已确认上下文继续实现的多轮 Agent 会话
|
|
37
|
+
|
|
38
|
+
## 目标与成功标准
|
|
39
|
+
|
|
40
|
+
- 目标:
|
|
41
|
+
- 在第一次提需时先形成一页轻量项目画像,而不是直接跳进局部需求修改
|
|
42
|
+
- 让系统优先归纳 to C / to B / agent、目标用户、产品形态、第一版切片、非目标和保护项,再请用户确认
|
|
43
|
+
- 当信息不足时,用条件追问或候选原型方向补齐,而不是要求用户一开始回答完整技术和商业问卷
|
|
44
|
+
- 成功指标:
|
|
45
|
+
- 首轮 clarify 能输出结构化的项目画像摘要,并包含用户群体、产品形态、第一版先做、先不做和不能破坏项
|
|
46
|
+
- 复杂或模糊需求会触发技术/风险追问,简单明确需求仍保持轻量
|
|
47
|
+
- 默认 clarify 仍在对话内完成,不新增新的 clarify HTML
|
|
48
|
+
- 用户能够更快确认方向,后续 PRD 和实现阶段减少返工与错题
|
|
49
|
+
- 验收目标:
|
|
50
|
+
- workspace-workflow 能生成首轮项目画像、风险探针和更贴近用户语言的确认问题
|
|
51
|
+
- workspace-core 的冷启动 kickoff 问题升级为画像导向问题
|
|
52
|
+
- intake 模板、skills、docs、CLI 文本输出和测试与新流程保持一致
|
|
53
|
+
|
|
54
|
+
## 范围与非目标
|
|
55
|
+
|
|
56
|
+
- 范围内:
|
|
57
|
+
- 在 clarify、intake-reflection 和 interview 中加入首轮项目画像层
|
|
58
|
+
- 让系统先推断 consumer / b2b / agent 与项目形态,再结合第一版切片、非目标、保护项组织追问
|
|
59
|
+
- 命中技术和业务风险信号时再展开前后端、数据、账号、AI、外部服务、收费等边界问题
|
|
60
|
+
- 同步更新模板、技能说明、基础文档、CLI 输出和相关测试
|
|
61
|
+
- 范围外:
|
|
62
|
+
- 不把首次提需改成一份重型强制问卷
|
|
63
|
+
- 不把商业模式或技术架构变成所有场景的硬必填 schema
|
|
64
|
+
- 不新增默认 clarify HTML 或额外前端评审页面
|
|
65
|
+
- 不让局部小修进入完整项目画像重流程
|
|
66
|
+
|
|
67
|
+
## 场景与流程
|
|
68
|
+
|
|
69
|
+
- 主流程:
|
|
70
|
+
- 用户第一次提需求时,OpenPrd 先输出一页项目画像:用户群体、产品形态、第一版先做、先不做、不能破坏、技术落点和风险探针
|
|
71
|
+
- 如果用户表达已经足够清楚,Agent 直接用系统归纳的画像摘要请用户确认
|
|
72
|
+
- 如果用户表达模糊,Agent 先追问少量高价值问题,必要时给 2 到 3 个方向或行业原型供用户选择
|
|
73
|
+
- 画像确认后再进入后续 PRD、review、change 和 tasks 流程
|
|
74
|
+
- 边界情况:
|
|
75
|
+
- 用户一开始只有一句模糊想法,需要先给候选方向而不是硬追问技术细节
|
|
76
|
+
- 已有项目上下文时应优先沿用已知事实,而不是把所有画像问题重问一遍
|
|
77
|
+
- 局部 copy、样式或小交互修正不应被错误升级成重画像流程
|
|
78
|
+
- 失败模式:
|
|
79
|
+
- 入口过重,导致 Vibe Coding 用户在第一次提需时无法回答
|
|
80
|
+
- 入口过轻,导致 Agent 没有先确认项目边界就直接落地
|
|
81
|
+
- 错误复用旧 active change 或旧 PRD 上下文,导致实现偏题
|
|
82
|
+
|
|
83
|
+
## 可视化图表
|
|
84
|
+
|
|
85
|
+
### 产品流程
|
|
86
|
+
|
|
87
|
+
```mermaid
|
|
88
|
+
flowchart LR
|
|
89
|
+
entry["入口触发<br/>用户第一次提需求时,OpenPrd 先输出一页项目画像:用户群体、产品形态、第一版先做、先不做、不能破坏、技术落点和风险探针"]
|
|
90
|
+
experience["产品内步骤<br/>如果用户表达已经足够清楚,Agent 直接用系统归纳的画像摘要请用户确认"]
|
|
91
|
+
decision{"决策点<br/>用户一开始只有一句模糊想法,需要先给候选方向而不是硬追问技术细节"}
|
|
92
|
+
success(["成功结果<br/>首轮 clarify 能输出结构化的项目画像摘要,并包含用户群体、产品形态、第一版先做、先不做和不能破坏项"])
|
|
93
|
+
failure[["失败与恢复<br/>入口过重,导致 Vibe Coding 用户在第一次提需时无法回答"]]
|
|
94
|
+
entry -->|"用户第一次提需求时,OpenPrd 先输出一页项目画像:用户群体、产品形态、第一版…"| experience
|
|
95
|
+
experience -->|"如果用户表达已经足够清楚,Agent 直接用系统归纳的画像摘要请用户确认"| decision
|
|
96
|
+
decision -->|"在第一次提需时先形成一页轻量项目画像,而不是直接跳进局部需求修改"| success
|
|
97
|
+
decision -.->|"入口过重,导致 Vibe Coding 用户在第一次提需时无法回答"| failure
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### 架构
|
|
101
|
+
|
|
102
|
+
```mermaid
|
|
103
|
+
flowchart LR
|
|
104
|
+
users["主要用户<br/>第一次用 OpenPrd 梳理产品想法的产品经理、独立开发者与 Vibe Coding 用户 · 需要在模糊需求下帮助用户收敛…"]
|
|
105
|
+
subgraph solution["方案边界"]
|
|
106
|
+
experience["Agent 运行层<br/>用户第一次提需求时,OpenPrd 先输出一页项目画像:用户群体、产品形态、第一版先做、先不做、不能破坏、技术落点和风险探针 …"]
|
|
107
|
+
core["核心产品逻辑<br/>OpenPrd 在用户第一次提需求时虽然已经有 consumer / b2b / agent 分流、clarify 和后续 r…"]
|
|
108
|
+
integrations["依赖与集成<br/>依赖现有 requirement-intake gate、clarify/capture/synthesize/review/…"]
|
|
109
|
+
governance[["约束与可靠性<br/>继续遵守现有 requirement gate、review gate 和 hook 安全边界,不绕过已确认的需求流程。 · …"]]
|
|
110
|
+
delivery["验证与交接<br/>首轮 clarify 能输出结构化的项目画像摘要,并包含用户群体、产品形态、第一版先做、先不做和不能破坏项 · 复杂或模糊需求…"]
|
|
111
|
+
end
|
|
112
|
+
users -->|"用户第一次提需求时,OpenPrd 先输出一页项目画像:用户群体、产品形态、第…"| experience
|
|
113
|
+
experience -->|"产品动作与编排"| core
|
|
114
|
+
core -->|"依赖与外部服务"| integrations
|
|
115
|
+
core -.->|"策略、可靠性与合规"| governance
|
|
116
|
+
core -->|"成功标准与交接"| delivery
|
|
117
|
+
integrations -->|"运营就绪"| delivery
|
|
118
|
+
governance -.->|"评审与确认"| delivery
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## 需求
|
|
122
|
+
|
|
123
|
+
- 功能需求:
|
|
124
|
+
- clarify 生成的 intake-reflection 应包含首轮项目画像和风险探针
|
|
125
|
+
- inline clarification 应显式展示适用对象、产品形态、第一版先做、先不做、不能破坏和技术落点
|
|
126
|
+
- 冷启动 kickoff 问题改成画像导向问题,而不是抽象的通用提问
|
|
127
|
+
- 类型专项 intake 模板改成更贴近产品与业务语言的提问方式
|
|
128
|
+
- 非功能需求:
|
|
129
|
+
- 默认澄清仍要保持对话内、轻量、可扫读
|
|
130
|
+
- 对已有 schema 和生成流程的侵入应尽量小
|
|
131
|
+
- 输出语言优先面向产品和业务用户,而不是工程内部黑话
|
|
132
|
+
- 业务规则:
|
|
133
|
+
- 优先由系统归纳后请用户确认,而不是一开始把所有字段抛给用户
|
|
134
|
+
- 只有命中风险信号时才展开技术、账号、数据、外部服务或成本相关追问
|
|
135
|
+
- consumer / b2b / agent 优先由系统推断,必要时再请用户确认
|
|
136
|
+
- clarify 阶段默认不生成 HTML,正式可视化仍留给 review 或 diagram 阶段
|
|
137
|
+
|
|
138
|
+
## 业务护栏
|
|
139
|
+
|
|
140
|
+
- 成本来源:
|
|
141
|
+
- 本次没有新增第三方付费调用;成本主要来自不准确需求初始化带来的返工和错题
|
|
142
|
+
- 额度与限制:
|
|
143
|
+
- 不应让每个首次提需都退化成长问卷;默认只问最少必要问题
|
|
144
|
+
- 滥用防护:
|
|
145
|
+
- 系统不能把未确认的推断当作最终需求事实
|
|
146
|
+
- 命中账号、数据、外部服务、AI 或收费信号时,必须显式提醒边界与风险
|
|
147
|
+
- 监控信号:
|
|
148
|
+
- 观察首轮 clarify 是否仍然过长、是否反复追问同一类信息、是否错误复用旧 change 上下文
|
|
149
|
+
- 报警阈值:
|
|
150
|
+
- 如果简单需求被连续升级成深度追问,或复杂需求仍缺少画像摘要,应在测试中显式暴露
|
|
151
|
+
- 止损动作:
|
|
152
|
+
- 当系统无法准确归纳时,退回到少量高价值确认问题,不假装已经清楚
|
|
153
|
+
- 当当前工作区上下文明显与本轮需求不匹配时,先刷新到新的 change/task 再实现
|
|
154
|
+
|
|
155
|
+
## 约束、依赖与风险
|
|
156
|
+
|
|
157
|
+
- 技术约束:
|
|
158
|
+
- 主要修改 src/workspace-workflow.js、src/workspace-core.js、CLI 文本输出、.openprd intake 模板、skills/docs 和测试
|
|
159
|
+
- 避免新增新的硬性必填 schema 字段,优先通过 intake 和 clarification 层完成增强
|
|
160
|
+
- 合规要求:
|
|
161
|
+
- 继续遵守现有 requirement gate、review gate 和 hook 安全边界,不绕过已确认的需求流程。
|
|
162
|
+
- 新增提示和用户可见文案应保持面向产品与业务语言,不直接暴露内部技术细节。
|
|
163
|
+
- 依赖:
|
|
164
|
+
- 依赖现有 requirement-intake gate、clarify/capture/synthesize/review/change/tasks 工作流
|
|
165
|
+
- 依赖现有 base / consumer / b2b / agent 模板与评审产物体系
|
|
166
|
+
- 假设:
|
|
167
|
+
- Vibe Coding 用户更愿意确认系统总结,而不是先填写长问卷
|
|
168
|
+
- 现有 lens 分类能力可保留,只需要前移到项目画像语境里
|
|
169
|
+
- 风险:
|
|
170
|
+
- 如果问题过多,会损伤首次提需体验
|
|
171
|
+
- 如果画像层和现有 capture/analysis 脱节,会造成重复提问
|
|
172
|
+
- 如果没有处理旧上下文切换,hook 可能继续把代码修改指向错误 change
|
|
173
|
+
- 开放问题:
|
|
174
|
+
- 后续是否需要单独的 profile review artifact 或 diagram,用于更复杂的多系统场景
|
|
175
|
+
|
|
176
|
+
## 类型专项模块
|
|
177
|
+
|
|
178
|
+
- 类型: Agent 专项
|
|
179
|
+
- humanAgentContract: Agent 先归纳用户群体、产品形态、第一版切片、边界与风险,再请求用户确认;如果信息不足,只能提出候选方向,不能把猜测当成定论。
|
|
180
|
+
- autonomyBoundary: Agent 可以根据当前需求和已有工作区状态推断首轮项目画像,但在用户确认前不得把推断直接写成最终需求事实或越过需求入口去改实现。
|
|
181
|
+
- toolBoundary: 仅使用本地 OpenPrd workflow、模板、测试和文档完成这次改动,不依赖新的外部运行时。
|
|
182
|
+
- stateModel: 新需求进入时先形成 project framing,再进入 requirement clarification、review/change/tasks 与实现。
|
|
183
|
+
- evalPlan: 通过 workspace flow、requirement gate、CLI 输出和模板相关测试验证新流程,同时运行 dev-check、standards、quality 与 run verify。
|
|
184
|
+
|
|
185
|
+
## 交接
|
|
186
|
+
|
|
187
|
+
- 负责人: Codex
|
|
188
|
+
- 下一步: 生成新的 change 和 tasks,并按首轮项目画像流程修改 workflow、模板、文档和测试。
|
|
189
|
+
- 目标系统: OpenPrd
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# Agent Intake
|
|
2
2
|
|
|
3
|
-
-
|
|
4
|
-
-
|
|
5
|
-
-
|
|
6
|
-
-
|
|
3
|
+
- 哪些步骤希望 Agent 自主完成,给人节省什么时间或心力?
|
|
4
|
+
- 哪些节点必须保留人工确认、审核或兜底,为什么?
|
|
5
|
+
- 这条流程会用到哪些工具、上下文、记忆或状态?
|
|
6
|
+
- 第一版最希望先跑通哪一段 Agent 工作流最有价值?
|
|
7
|
+
- 我们怎么判断它真的帮上忙了,失败时用户会怎么发现、又该怎么恢复?
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# B2B Intake
|
|
2
2
|
|
|
3
|
-
-
|
|
4
|
-
-
|
|
5
|
-
-
|
|
6
|
-
-
|
|
3
|
+
- 谁最在意这件事值不值得做,谁是买单或拍板的人?
|
|
4
|
+
- 谁是每天真正会用的人?谁负责配置、推进、运营或管理员工作?
|
|
5
|
+
- 这是给内部团队用,还是要卖给客户、合作方或商家用?
|
|
6
|
+
- 现在哪段流程最卡,卡住的代价主要是什么?
|
|
7
|
+
- 如果只能先交付第一版,最小可用切片应该先覆盖哪段业务流程最值?
|
|
@@ -1,18 +1,24 @@
|
|
|
1
1
|
# Intake 模板
|
|
2
2
|
|
|
3
|
+
> 默认先用业务和产品语言回答就可以,不需要一上来讲技术实现。
|
|
4
|
+
|
|
3
5
|
## 发现
|
|
4
6
|
|
|
5
7
|
- 我们要解决什么问题?
|
|
6
|
-
-
|
|
8
|
+
- 主要是给谁用的?他们会在什么场景下最先感受到价值?如果你愿意,也可以直接说它更偏面向个人消费者、面向企业服务,还是以 Agent 为主。
|
|
9
|
+
- 第一版最小可用切片,最希望先让用户完成什么关键动作?
|
|
7
10
|
- 当前临时解决方式是什么?
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
+
- 哪些内容这轮先不做?
|
|
12
|
+
- 哪些既有能力、流程、体验或业务结果不能被破坏?
|
|
13
|
+
- 成功后,用户会明显感受到什么变化?我们怎么判断它值得做成?
|
|
14
|
+
- 是否涉及账号身份、用户数据、多人协作、AI 调用、外部对接、收费或其他会带来业务风险和成本的行为?
|
|
11
15
|
|
|
12
16
|
## Freeze Check
|
|
13
17
|
|
|
14
18
|
- 产品类型是否已明确?
|
|
15
19
|
- 关键角色是否已明确?
|
|
20
|
+
- 第一版切片是否已明确?
|
|
21
|
+
- 非目标和保护项是否已明确?
|
|
16
22
|
- 是否已有成功指标?
|
|
17
23
|
- 若存在消耗型成本,是否已明确额度限制、滥用防护、监控报警和止损动作?
|
|
18
24
|
- 是否存在阻塞 freeze 的开放问题?
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
#
|
|
1
|
+
# 公司模板层
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
简体中文 | [English](./README_EN.md)
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
这一层承载公司范围内共用的 PRD 习惯、术语和展示偏好。
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
-
|
|
10
|
-
-
|
|
7
|
+
规则:
|
|
8
|
+
|
|
9
|
+
- 可以调整展示层标题或命名。
|
|
10
|
+
- 可以补充公司专属字段。
|
|
11
|
+
- 不可以删除规范层已有字段。
|
|
12
|
+
- 不可以改变必填字段的语义。
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# Company Template Layer
|
|
2
|
+
|
|
3
|
+
[简体中文](./README.md) | English
|
|
4
|
+
|
|
5
|
+
This layer captures company-specific PRD habits and terminology.
|
|
6
|
+
|
|
7
|
+
Rules:
|
|
8
|
+
|
|
9
|
+
- May rename section labels for display.
|
|
10
|
+
- May add company-only fields.
|
|
11
|
+
- May not delete canonical fields.
|
|
12
|
+
- May not change required semantics.
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# Consumer Intake
|
|
2
2
|
|
|
3
|
-
-
|
|
4
|
-
-
|
|
5
|
-
-
|
|
6
|
-
-
|
|
3
|
+
- 用户会在什么场景下第一次想用它?
|
|
4
|
+
- 当他决定试一下时,最想省掉哪一步麻烦,或最想获得什么感觉?
|
|
5
|
+
- 第一版最值得先做好的是首次上手、关键转化,还是愿意回来继续用?
|
|
6
|
+
- 什么会让用户愿意继续回来,甚至愿意推荐或付费?
|
|
7
|
+
- 如果只能先做一个最小切片,第一版先守住哪个用户场景最值?
|
|
@@ -1,16 +1,18 @@
|
|
|
1
|
-
#
|
|
1
|
+
# 行业模板层
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
简体中文 | [English](./README_EN.md)
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
这一层用于放行业特有的默认值、术语和额外上下文。
|
|
6
|
+
|
|
7
|
+
示例:
|
|
6
8
|
|
|
7
9
|
- SaaS
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
-
|
|
10
|
+
- 电商
|
|
11
|
+
- 金融科技
|
|
12
|
+
- 内部工具
|
|
11
13
|
|
|
12
|
-
|
|
14
|
+
规则:
|
|
13
15
|
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
-
|
|
16
|
+
- 可以新增或重排行业相关小节。
|
|
17
|
+
- 不可以移除核心 schema 字段。
|
|
18
|
+
- 必须保持与 `prd-core` 的校验兼容。
|