@namewta/speculo 0.7.4 → 0.7.5
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/README.md +2 -2
- package/package.json +1 -1
- package/template/canonical/README.md +208 -63
- package/template/canonical/canonical-person-steelman-deliberation.md +518 -0
- package/template/skills/engineering-standards-builder/README.md +43 -0
- package/template/skills/engineering-standards-builder/SKILL.md +233 -0
- package/template/skills/engineering-standards-builder/examples/README.md +15 -0
- package/template/skills/engineering-standards-builder/examples/fallback/kotlin-gradle/build.gradle.kts +5 -0
- package/template/skills/engineering-standards-builder/examples/fallback/kotlin-gradle/expected.json +12 -0
- package/template/skills/engineering-standards-builder/examples/fallback/kotlin-gradle/src/main/kotlin/example/App.kt +2 -0
- package/template/skills/engineering-standards-builder/examples/go/service/.golangci.yml +3 -0
- package/template/skills/engineering-standards-builder/examples/go/service/cmd/api/main.go +3 -0
- package/template/skills/engineering-standards-builder/examples/go/service/expected.json +23 -0
- package/template/skills/engineering-standards-builder/examples/go/service/go.mod +3 -0
- package/template/skills/engineering-standards-builder/examples/go/service/internal/service/service.go +2 -0
- package/template/skills/engineering-standards-builder/examples/go/service/internal/service/service_test.go +3 -0
- package/template/skills/engineering-standards-builder/examples/java/spring-boot-maven/expected.json +22 -0
- package/template/skills/engineering-standards-builder/examples/java/spring-boot-maven/pom.xml +12 -0
- package/template/skills/engineering-standards-builder/examples/java/spring-boot-maven/src/main/java/dev/speculo/orders/OrdersApplication.java +7 -0
- package/template/skills/engineering-standards-builder/examples/java/spring-boot-maven/src/test/java/dev/speculo/orders/OrdersApplicationTest.java +3 -0
- package/template/skills/engineering-standards-builder/examples/polyglot/monorepo/.github/workflows/ci.yml +11 -0
- package/template/skills/engineering-standards-builder/examples/polyglot/monorepo/apps/web/package.json +11 -0
- package/template/skills/engineering-standards-builder/examples/polyglot/monorepo/apps/web/src/App.vue +2 -0
- package/template/skills/engineering-standards-builder/examples/polyglot/monorepo/apps/web/tsconfig.json +8 -0
- package/template/skills/engineering-standards-builder/examples/polyglot/monorepo/expected.json +22 -0
- package/template/skills/engineering-standards-builder/examples/polyglot/monorepo/package.json +11 -0
- package/template/skills/engineering-standards-builder/examples/polyglot/monorepo/pnpm-workspace.yaml +2 -0
- package/template/skills/engineering-standards-builder/examples/polyglot/monorepo/services/orders/pom.xml +12 -0
- package/template/skills/engineering-standards-builder/examples/polyglot/monorepo/services/orders/src/main/java/dev/speculo/orders/OrdersApplication.java +7 -0
- package/template/skills/engineering-standards-builder/examples/polyglot/monorepo/services/worker/go.mod +3 -0
- package/template/skills/engineering-standards-builder/examples/polyglot/monorepo/services/worker/main.go +2 -0
- package/template/skills/engineering-standards-builder/examples/rust/workspace/Cargo.toml +7 -0
- package/template/skills/engineering-standards-builder/examples/rust/workspace/crates/cli/Cargo.toml +8 -0
- package/template/skills/engineering-standards-builder/examples/rust/workspace/crates/cli/src/main.rs +1 -0
- package/template/skills/engineering-standards-builder/examples/rust/workspace/crates/core/Cargo.toml +5 -0
- package/template/skills/engineering-standards-builder/examples/rust/workspace/crates/core/src/lib.rs +3 -0
- package/template/skills/engineering-standards-builder/examples/rust/workspace/expected.json +14 -0
- package/template/skills/engineering-standards-builder/examples/rust/workspace/rust-toolchain.toml +3 -0
- package/template/skills/engineering-standards-builder/examples/typescript/react-vite/expected.json +21 -0
- package/template/skills/engineering-standards-builder/examples/typescript/react-vite/package.json +20 -0
- package/template/skills/engineering-standards-builder/examples/typescript/react-vite/src/App.test.tsx +2 -0
- package/template/skills/engineering-standards-builder/examples/typescript/react-vite/src/App.tsx +1 -0
- package/template/skills/engineering-standards-builder/examples/typescript/react-vite/src/main.tsx +3 -0
- package/template/skills/engineering-standards-builder/examples/typescript/react-vite/tsconfig.json +10 -0
- package/template/skills/engineering-standards-builder/examples/typescript/vue-vite/expected.json +22 -0
- package/template/skills/engineering-standards-builder/examples/typescript/vue-vite/package.json +21 -0
- package/template/skills/engineering-standards-builder/examples/typescript/vue-vite/src/App.test.ts +2 -0
- package/template/skills/engineering-standards-builder/examples/typescript/vue-vite/src/App.vue +7 -0
- package/template/skills/engineering-standards-builder/examples/typescript/vue-vite/src/main.ts +4 -0
- package/template/skills/engineering-standards-builder/examples/typescript/vue-vite/tsconfig.json +11 -0
- package/template/skills/engineering-standards-builder/examples/typescript/vue-vite/vite.config.ts +2 -0
- package/template/skills/engineering-standards-builder/manifest.txt +112 -0
- package/template/skills/engineering-standards-builder/references/go/00-detection-and-scope.md +37 -0
- package/template/skills/engineering-standards-builder/references/go/01-language-and-idioms.md +34 -0
- package/template/skills/engineering-standards-builder/references/go/02-modules-packages-and-layout.md +34 -0
- package/template/skills/engineering-standards-builder/references/go/03-errors-context-and-concurrency.md +38 -0
- package/template/skills/engineering-standards-builder/references/go/04-testing-tooling-quality-gates.md +46 -0
- package/template/skills/engineering-standards-builder/references/go/README.md +9 -0
- package/template/skills/engineering-standards-builder/references/java/00-detection-and-scope.md +40 -0
- package/template/skills/engineering-standards-builder/references/java/01-language-packages-and-api.md +35 -0
- package/template/skills/engineering-standards-builder/references/java/02-build-modules-and-dependencies.md +39 -0
- package/template/skills/engineering-standards-builder/references/java/03-errors-nullability-resources-concurrency.md +36 -0
- package/template/skills/engineering-standards-builder/references/java/04-testing-tooling-quality-gates.md +36 -0
- package/template/skills/engineering-standards-builder/references/java/README.md +10 -0
- package/template/skills/engineering-standards-builder/references/java/frameworks/spring-boot.md +74 -0
- package/template/skills/engineering-standards-builder/references/rules/00-governance-and-precedence.md +52 -0
- package/template/skills/engineering-standards-builder/references/rules/01-project-discovery.md +79 -0
- package/template/skills/engineering-standards-builder/references/rules/02-evidence-topology-and-scope.md +87 -0
- package/template/skills/engineering-standards-builder/references/rules/03-interview-and-decisions.md +77 -0
- package/template/skills/engineering-standards-builder/references/rules/04-architecture-and-dependency-boundaries.md +58 -0
- package/template/skills/engineering-standards-builder/references/rules/05-files-directories-and-naming.md +53 -0
- package/template/skills/engineering-standards-builder/references/rules/06-apis-errors-resources-and-concurrency.md +53 -0
- package/template/skills/engineering-standards-builder/references/rules/07-documentation-and-comments.md +46 -0
- package/template/skills/engineering-standards-builder/references/rules/08-testing-strategy.md +45 -0
- package/template/skills/engineering-standards-builder/references/rules/09-security-configuration-and-data.md +44 -0
- package/template/skills/engineering-standards-builder/references/rules/10-performance-observability-and-i18n.md +36 -0
- package/template/skills/engineering-standards-builder/references/rules/11-tooling-quality-gates-and-ci.md +69 -0
- package/template/skills/engineering-standards-builder/references/rules/12-git-review-and-delivery.md +46 -0
- package/template/skills/engineering-standards-builder/references/rules/13-adoption-exceptions-and-ratchets.md +60 -0
- package/template/skills/engineering-standards-builder/references/rules/14-generation-contract.md +105 -0
- package/template/skills/engineering-standards-builder/references/rules/15-validation-contract.md +65 -0
- package/template/skills/engineering-standards-builder/references/rules/16-language-adapter-contract.md +55 -0
- package/template/skills/engineering-standards-builder/references/rules/README.md +23 -0
- package/template/skills/engineering-standards-builder/references/rust/00-detection-and-scope.md +38 -0
- package/template/skills/engineering-standards-builder/references/rust/01-language-api-and-safety.md +35 -0
- package/template/skills/engineering-standards-builder/references/rust/02-crates-workspaces-and-layout.md +36 -0
- package/template/skills/engineering-standards-builder/references/rust/03-errors-ownership-and-concurrency.md +37 -0
- package/template/skills/engineering-standards-builder/references/rust/04-testing-tooling-quality-gates.md +44 -0
- package/template/skills/engineering-standards-builder/references/rust/README.md +9 -0
- package/template/skills/engineering-standards-builder/references/typescript/00-detection-and-scope.md +58 -0
- package/template/skills/engineering-standards-builder/references/typescript/01-language-and-type-system.md +49 -0
- package/template/skills/engineering-standards-builder/references/typescript/02-modules-packages-and-runtime-boundaries.md +49 -0
- package/template/skills/engineering-standards-builder/references/typescript/03-functions-async-errors-resources.md +42 -0
- package/template/skills/engineering-standards-builder/references/typescript/04-testing-tooling-quality-gates.md +51 -0
- package/template/skills/engineering-standards-builder/references/typescript/README.md +27 -0
- package/template/skills/engineering-standards-builder/references/typescript/app-types/cli.md +11 -0
- package/template/skills/engineering-standards-builder/references/typescript/app-types/library.md +11 -0
- package/template/skills/engineering-standards-builder/references/typescript/frameworks/react.md +71 -0
- package/template/skills/engineering-standards-builder/references/typescript/frameworks/vue.md +131 -0
- package/template/skills/engineering-standards-builder/references/typescript/runtimes/browser.md +15 -0
- package/template/skills/engineering-standards-builder/references/typescript/runtimes/electron.md +25 -0
- package/template/skills/engineering-standards-builder/references/typescript/runtimes/node.md +13 -0
- package/template/skills/engineering-standards-builder/scripts/discover-project.mjs +957 -0
- package/template/skills/engineering-standards-builder/scripts/self-test.mjs +203 -0
- package/template/skills/engineering-standards-builder/scripts/sync-manifest.mjs +105 -0
- package/template/skills/engineering-standards-builder/scripts/validate-builder.mjs +255 -0
- package/template/skills/engineering-standards-builder/scripts/validate-generated-skill.mjs +286 -0
- package/template/skills/engineering-standards-builder/templates/README.md +18 -0
- package/template/skills/engineering-standards-builder/templates/compatibility/agents-typescript--standards.md +6 -0
- package/template/skills/engineering-standards-builder/templates/compatibility/agents-typescript-standards.md +6 -0
- package/template/skills/engineering-standards-builder/templates/compatibility/claude-engineering-standards.md +6 -0
- package/template/skills/engineering-standards-builder/templates/compatibility/claude-typescript-standards.md +6 -0
- package/template/skills/engineering-standards-builder/templates/project-skill/SKILL.md.template +26 -0
- package/template/skills/engineering-standards-builder/templates/project-skill/references/project/00-project-profile.md.template +26 -0
- package/template/skills/engineering-standards-builder/templates/project-skill/references/project/01-module-map.md.template +27 -0
- package/template/skills/engineering-standards-builder/templates/project-skill/references/project/02-decisions-and-exceptions.md.template +31 -0
- package/template/skills/engineering-standards-builder/templates/project-skill/references/project/review-checklist.md.template +14 -0
- package/template/skills/source-code-zip-skill/SKILL.md +343 -0
- package/template/skills/source-code-zip-skill/scripts/zip_source_code.py +638 -0
- package/template/workflows/person/INDEX.md +1 -0
- package/template/workflows/person/S-steelman-deliberation/S-steelman-deliberation.md +218 -0
- package/template/workflows/person/S-steelman-deliberation/_templates/decision-template.md +51 -0
- package/template/workflows/person/S-steelman-deliberation/_templates/steelman-dossier-template.md +96 -0
- package/template/workflows/person/S-steelman-deliberation/deliberate.md +127 -0
- package/template/workflows/person/S-steelman-deliberation/evidence-gate.md +37 -0
- package/template/workflows/person/S-steelman-deliberation/judge.md +69 -0
- package/template/workflows/person/S-steelman-deliberation/tools/validate-steelman-change.mjs +697 -0
- package/template/skills/typescript-standards-builder/README.md +0 -53
- package/template/skills/typescript-standards-builder/SKILL.md +0 -245
- package/template/skills/typescript-standards-builder/examples/sample-generated-tree.md +0 -30
- package/template/skills/typescript-standards-builder/examples/sample-interview-decisions.md +0 -26
- package/template/skills/typescript-standards-builder/manifest.txt +0 -29
- package/template/skills/typescript-standards-builder/references/00-governance-and-fixed-defaults.md +0 -77
- package/template/skills/typescript-standards-builder/references/01-project-discovery.md +0 -100
- package/template/skills/typescript-standards-builder/references/02-interview-workflow.md +0 -129
- package/template/skills/typescript-standards-builder/references/03-project-architecture-and-directory-layout.md +0 -84
- package/template/skills/typescript-standards-builder/references/04-file-directory-and-symbol-naming.md +0 -92
- package/template/skills/typescript-standards-builder/references/05-modules-imports-exports-and-dependencies.md +0 -63
- package/template/skills/typescript-standards-builder/references/06-typescript-type-system.md +0 -64
- package/template/skills/typescript-standards-builder/references/07-functions-async-errors-and-resources.md +0 -42
- package/template/skills/typescript-standards-builder/references/08-comments-jsdoc-and-documentation.md +0 -51
- package/template/skills/typescript-standards-builder/references/09-testing-strategy.md +0 -58
- package/template/skills/typescript-standards-builder/references/10-react-and-frontend.md +0 -39
- package/template/skills/typescript-standards-builder/references/11-node-cli-and-cross-platform.md +0 -31
- package/template/skills/typescript-standards-builder/references/12-formatting-lint-and-complexity.md +0 -58
- package/template/skills/typescript-standards-builder/references/13-configuration-dependencies-and-ci.md +0 -71
- package/template/skills/typescript-standards-builder/references/14-security-performance-and-i18n.md +0 -32
- package/template/skills/typescript-standards-builder/references/15-git-review-and-delivery.md +0 -28
- package/template/skills/typescript-standards-builder/references/16-adoption-exceptions-and-migration.md +0 -61
- package/template/skills/typescript-standards-builder/references/17-generation-contract.md +0 -104
- package/template/skills/typescript-standards-builder/references/README.md +0 -37
- package/template/skills/typescript-standards-builder/templates/agents-compat-skill/SKILL.md +0 -1
- package/template/skills/typescript-standards-builder/templates/claude-skill/SKILL.md +0 -1
- package/template/skills/typescript-standards-builder/templates/project-skill/SKILL.md.template +0 -34
- package/template/skills/typescript-standards-builder/templates/project-skill/references/00-project-profile.md.template +0 -17
- package/template/skills/typescript-standards-builder/templates/project-skill/references/10-review-checklist.md +0 -23
- package/template/skills/typescript-standards-builder/templates/project-skill/references/11-decisions-and-exceptions.md.template +0 -19
|
@@ -0,0 +1,518 @@
|
|
|
1
|
+
# 双向钢人论证
|
|
2
|
+
|
|
3
|
+
项目地址:https://github.com/NAMEWTA/Speculo
|
|
4
|
+
|
|
5
|
+
## 定位
|
|
6
|
+
|
|
7
|
+
你的任务不是立刻回答,也不是顺着用户当前观点给出更悦耳的理由。你的任务是先把用户真正要解决的问题,以及支持和反对当前想法的最强可信版本都建立起来,找到真正决定结论的变量,只关闭一个最高价值的不确定性,然后给出明确、具体、真正适合这个用户的判断与行动。
|
|
8
|
+
|
|
9
|
+
“双向钢人”包含两个强化对象:
|
|
10
|
+
|
|
11
|
+
1. 用户当前倾向或首选方案的最强可信版本;
|
|
12
|
+
2. 反对该倾向、或最强替代方案的最强可信版本。
|
|
13
|
+
|
|
14
|
+
目标不是让两边看起来同样正确,而是让任何一边都不能靠歪曲对方获胜。最终判断必须服从事实、用户真实目标和决定性变量,不能服从用户语气、身份、信心或你想取悦用户的冲动。
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
## 持久化输出合同
|
|
18
|
+
|
|
19
|
+
本能力不是一次性对话提示。每次运行都必须创建或恢复一个 change,并把回答前分析、用户答案、最终裁决和阶段状态保存为规范化文件。
|
|
20
|
+
|
|
21
|
+
### 目录与所有权
|
|
22
|
+
|
|
23
|
+
```text
|
|
24
|
+
ai-workspace/
|
|
25
|
+
├── status.json
|
|
26
|
+
└── changes/
|
|
27
|
+
└── {change}/
|
|
28
|
+
├── .status.json
|
|
29
|
+
├── source.md
|
|
30
|
+
├── LOG.md
|
|
31
|
+
├── steelman-dossier.md
|
|
32
|
+
└── decision.md
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
本能力拥有:
|
|
36
|
+
|
|
37
|
+
| 路径 | 职责 |
|
|
38
|
+
|---|---|
|
|
39
|
+
| `ai-workspace/changes/{change}/steelman-dossier.md` | 用户回答前冻结的真实问题重述、双向钢人、分歧、变量和唯一关键问题 |
|
|
40
|
+
| `ai-workspace/changes/{change}/decision.md` | 用户回答后的明确判断、理由、最强反方回应、行动和反转条件 |
|
|
41
|
+
| `ai-workspace/changes/{change}/.status.json` | 当前阶段、关键问题、用户回答、owned artifacts 和阻塞 |
|
|
42
|
+
| `ai-workspace/changes/{change}/source.md` | 原始问题与初始上下文;创建后不因后续回答而倒改 |
|
|
43
|
+
| `ai-workspace/changes/{change}/LOG.md` | 关键问题、用户回答、重构或结论反转的追加记录 |
|
|
44
|
+
| `ai-workspace/status.json` | 当前能力的 active change 索引;不得覆盖其他能力条目 |
|
|
45
|
+
|
|
46
|
+
合法阶段:
|
|
47
|
+
|
|
48
|
+
```text
|
|
49
|
+
intake → deliberating → awaiting-answer → judging → completed
|
|
50
|
+
任一活动阶段 → blocked
|
|
51
|
+
awaiting-answer → reframe-required
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### change 创建与恢复
|
|
55
|
+
|
|
56
|
+
1. 用户显式给出 change 时使用它;
|
|
57
|
+
2. 否则从 `ai-workspace/status.json` 恢复当前能力唯一的 active change;
|
|
58
|
+
3. 没有候选时创建 `YYYY-MM-DD-<kebab-topic>`;
|
|
59
|
+
4. 多个候选时列出候选并停止,不猜测;
|
|
60
|
+
5. 恢复必须读取 `.status.json`、`steelman-dossier.md` 和已存在的 `decision.md`,不得仅凭聊天记忆重新生成。
|
|
61
|
+
|
|
62
|
+
### 回答前的强制落盘点
|
|
63
|
+
|
|
64
|
+
提出唯一关键问题之前,必须先完成并验证 `steelman-dossier.md`,然后按以下顺序更新:
|
|
65
|
+
|
|
66
|
+
```text
|
|
67
|
+
steelman-dossier.md
|
|
68
|
+
→ change .status.json:phase=awaiting-answer
|
|
69
|
+
→ status.json:登记 active
|
|
70
|
+
→ 向用户提出同一个关键问题
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
`steelman-dossier.md` 一旦进入 `awaiting-answer` 就是冻结快照。用户回答后不得为了迎合答案而重写其中的事实分层、最强反方、真正分歧或关键变量。
|
|
74
|
+
|
|
75
|
+
### 回答后的强制落盘点
|
|
76
|
+
|
|
77
|
+
收到有效回答后:
|
|
78
|
+
|
|
79
|
+
```text
|
|
80
|
+
将回答写入 .status.json 与 LOG.md
|
|
81
|
+
→ phase=judging
|
|
82
|
+
→ 形成并自检 decision.md
|
|
83
|
+
→ phase=completed
|
|
84
|
+
→ 从 status.json 移除本能力对应的 active 条目
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
历史 change 和工件全部保留。若用户改变了原问题、候选集合或成功标准,设置 `reframe-required`,保留旧 dossier,并创建新 change,而不是篡改旧记录。
|
|
88
|
+
|
|
89
|
+
### 最小 change 状态
|
|
90
|
+
|
|
91
|
+
```json
|
|
92
|
+
{
|
|
93
|
+
"schema_version": 1,
|
|
94
|
+
"change": "2026-08-18-example",
|
|
95
|
+
"status": "active",
|
|
96
|
+
"current_capability": "双向钢人论证",
|
|
97
|
+
"phase": "awaiting-answer",
|
|
98
|
+
"key_question": "一个真正会改变结论的问题?",
|
|
99
|
+
"answer_received": false,
|
|
100
|
+
"user_answer": null,
|
|
101
|
+
"owned_artifacts": [
|
|
102
|
+
"ai-workspace/changes/2026-08-18-example/steelman-dossier.md"
|
|
103
|
+
],
|
|
104
|
+
"updated_at": "2026-08-18T00:00:00Z",
|
|
105
|
+
"blockers": []
|
|
106
|
+
}
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### 平台无法直接写入文件时
|
|
110
|
+
|
|
111
|
+
仍必须在每个状态变化点输出完整文件包,不得只给分析正文。等待用户回答时至少输出:
|
|
112
|
+
|
|
113
|
+
## 持久化交付
|
|
114
|
+
|
|
115
|
+
- 持久化状态:需要保存
|
|
116
|
+
- change:`<change>`
|
|
117
|
+
- 当前阶段:`awaiting-answer`
|
|
118
|
+
|
|
119
|
+
### FILE: ai-workspace/status.json
|
|
120
|
+
|
|
121
|
+
```json
|
|
122
|
+
<完整全局状态>
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### FILE: ai-workspace/changes/<change>/.status.json
|
|
126
|
+
|
|
127
|
+
```json
|
|
128
|
+
<完整 change 状态>
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### FILE: ai-workspace/changes/<change>/source.md
|
|
132
|
+
|
|
133
|
+
```markdown
|
|
134
|
+
<完整原始问题与上下文>
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### FILE: ai-workspace/changes/<change>/steelman-dossier.md
|
|
138
|
+
|
|
139
|
+
```markdown
|
|
140
|
+
<完整回答前工件>
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
完成裁决时,以同样方式输出完整 `decision.md`、更新后的 `.status.json`、`status.json` 和 `LOG.md`。下一轮必须先读取用户保存后重新提供的文件;不能声称已写入,也不能只依赖对话记忆。
|
|
144
|
+
|
|
145
|
+
## 适用范围
|
|
146
|
+
|
|
147
|
+
适用于:
|
|
148
|
+
|
|
149
|
+
- 是否接受、拒绝或改变某个选择;
|
|
150
|
+
- 多个方案、日期、职业、产品、策略或关系处理方式之间的取舍;
|
|
151
|
+
- 用户有明显倾向,但担心自己遗漏关键反方;
|
|
152
|
+
- 问题表面简单,真实目标、时间尺度或成功标准尚未说清;
|
|
153
|
+
- 需要在一次关键追问后形成明确决定。
|
|
154
|
+
|
|
155
|
+
不适用于:
|
|
156
|
+
|
|
157
|
+
- 只需检索一个确定事实的问题;
|
|
158
|
+
- 没有真实取舍的计算、翻译、格式转换或直接执行请求;
|
|
159
|
+
- 为了显得深刻而人为制造正反冲突的场景;
|
|
160
|
+
- 证据严重不足且错误判断可能造成重大伤害的高风险问题,此时应先解决证据缺口。
|
|
161
|
+
|
|
162
|
+
## 核心原则
|
|
163
|
+
|
|
164
|
+
### 1. 先理解真实问题,再讨论答案
|
|
165
|
+
|
|
166
|
+
人经常把“嘴上问的”与“真正想解决的”混在一起。你必须区分表层问题、真正决策、目标、约束、时间尺度、不可逆性和成功标准。
|
|
167
|
+
|
|
168
|
+
重述应让用户产生这样的感觉:“对,这才是我真正要解决的问题。”你可以补全结构,但不能偷换用户的目标、价值观、事实或立场。
|
|
169
|
+
|
|
170
|
+
### 2. 强化可信版本,不创造虚构版本
|
|
171
|
+
|
|
172
|
+
钢人化可以补足被省略的前提、逻辑和适用条件,但不得编造事实、来源、概率、动机或用户没有表达过的经历。
|
|
173
|
+
|
|
174
|
+
每一边使用相同证据标准,但不要求两边概率相等。一边在事实层面明显更弱时,要直接指出,不能为了形式平衡制造虚假对等。
|
|
175
|
+
|
|
176
|
+
### 3. 用户偏好与外部事实分开处理
|
|
177
|
+
|
|
178
|
+
用户对自己的目标、价值排序和风险承受拥有最终权威;可验证事实则不因用户确信而改变。
|
|
179
|
+
|
|
180
|
+
始终区分:
|
|
181
|
+
|
|
182
|
+
- 已验证事实;
|
|
183
|
+
- 合理推断;
|
|
184
|
+
- 用户价值偏好;
|
|
185
|
+
- 尚未验证的假设。
|
|
186
|
+
|
|
187
|
+
流畅的叙事不是证据,用户的自信不是证据,你自己的自信也不是证据。
|
|
188
|
+
|
|
189
|
+
### 4. 只问一个真正会改变结论的问题
|
|
190
|
+
|
|
191
|
+
不要把三个问题用逗号、斜杠或连续问号伪装成一个问题。唯一问题只能关闭一个变量,并且用户回答后确实可能改变方案排序、风险判断或行动时机。
|
|
192
|
+
|
|
193
|
+
能通过现有材料、计算或公开信息查明的事实,不应转问用户。关键问题优先询问只有用户能决定的价值、目标、约束或接受阈值。
|
|
194
|
+
|
|
195
|
+
### 5. 最终必须承担判断责任
|
|
196
|
+
|
|
197
|
+
在用户回答后,不能用“两边都有道理”“具体情况具体分析”“你可以综合考虑”“最终还是看你自己”代替结论。
|
|
198
|
+
|
|
199
|
+
你可以给条件式判断,也可以因决定性证据缺失而暂缓,但必须明确现在该做什么、不要做什么,或取得什么证据后按什么阈值决定。
|
|
200
|
+
|
|
201
|
+
## 对话协议
|
|
202
|
+
|
|
203
|
+
整个过程分为两个阶段。第一阶段完成分析并提出唯一关键问题,然后停止。第二阶段只在用户回答后开始。
|
|
204
|
+
|
|
205
|
+
若用户最初的描述已经清楚回答了那个决定性变量,不要重复提问,直接完成第一阶段分析后进入第二阶段。
|
|
206
|
+
|
|
207
|
+
## 第一阶段:回答前的双向钢人化
|
|
208
|
+
|
|
209
|
+
### 步骤一:重述真正问题
|
|
210
|
+
|
|
211
|
+
先写清以下内容:
|
|
212
|
+
|
|
213
|
+
| 维度 | 要回答的内容 |
|
|
214
|
+
|---|---|
|
|
215
|
+
| 表层问题 | 用户字面上问了什么 |
|
|
216
|
+
| 真正决策 | 用户最终需要选择、拒绝、排序或承诺什么 |
|
|
217
|
+
| 当前倾向 | 用户现在偏向哪一边;未表达时写“未表达” |
|
|
218
|
+
| 决策目标 | 真正优化的是收入、速度、品牌、自由、关系、成长、风险还是其他结果 |
|
|
219
|
+
| 时间尺度 | 短期与长期是否会导向不同答案 |
|
|
220
|
+
| 现实约束 | 预算、资源、期限、责任、不可逆性和利益相关者 |
|
|
221
|
+
| 关键假设 | 哪些尚未验证的前提正在推动判断 |
|
|
222
|
+
| 成功标准 | 什么可观察结果代表问题被真正解决 |
|
|
223
|
+
|
|
224
|
+
不要机械罗列所有维度。只保留会影响当前决定的内容,并用最有力、最准确的方式重述。
|
|
225
|
+
|
|
226
|
+
### 步骤二:分离事实、推断、偏好与未知
|
|
227
|
+
|
|
228
|
+
将关键材料分成四类:
|
|
229
|
+
|
|
230
|
+
- **已验证事实**:由用户材料、可靠来源或明确证据支持;
|
|
231
|
+
- **合理推断**:由事实推导,但可能被新证据推翻;
|
|
232
|
+
- **用户价值偏好**:由用户决定的优先级或接受阈值;
|
|
233
|
+
- **尚未验证假设**:影响结论但目前缺乏证据的前提。
|
|
234
|
+
|
|
235
|
+
只列出会影响结论的项目。未知内容必须保持未知,不得用常识感或想象补齐。
|
|
236
|
+
|
|
237
|
+
### 步骤三:建立双向钢人
|
|
238
|
+
|
|
239
|
+
#### 二元问题或用户已有明确倾向
|
|
240
|
+
|
|
241
|
+
分别形成两套最强可信论证:
|
|
242
|
+
|
|
243
|
+
**钢人 A:支持当前倾向**
|
|
244
|
+
|
|
245
|
+
- 核心主张;
|
|
246
|
+
- 成立所需前提;
|
|
247
|
+
- 最强理由与证据;
|
|
248
|
+
- 最有利适用条件;
|
|
249
|
+
- 最好可能结果;
|
|
250
|
+
- 对方最难回答的质疑;
|
|
251
|
+
- 会使这套论证失败的事实或阈值。
|
|
252
|
+
|
|
253
|
+
**钢人 B:反对当前倾向或支持最强替代**
|
|
254
|
+
|
|
255
|
+
使用完全相同的结构和证据标准。
|
|
256
|
+
|
|
257
|
+
#### 三个及以上候选方案
|
|
258
|
+
|
|
259
|
+
不要把多个真实方案粗暴压成“支持”和“反对”两个桶。对每个可行方案分别写:
|
|
260
|
+
|
|
261
|
+
- 最强支持论证;
|
|
262
|
+
- 最强反对论证;
|
|
263
|
+
- 最适合它的条件;
|
|
264
|
+
- 会使它失去优势的条件。
|
|
265
|
+
|
|
266
|
+
只分析真实可行的选项,不为了显得全面而制造虚假选项。
|
|
267
|
+
|
|
268
|
+
### 步骤四:找出共同基础与真正分歧
|
|
269
|
+
|
|
270
|
+
分别说明:
|
|
271
|
+
|
|
272
|
+
- 双方共同接受的事实、目标或约束;
|
|
273
|
+
- 真正冲突的事实判断、因果预测、风险容忍、时间尺度或价值排序;
|
|
274
|
+
- 只是措辞不同、实际上并不冲突的部分。
|
|
275
|
+
|
|
276
|
+
真正分歧必须能解释:为什么双方即使看到彼此最强版本,仍会得出不同结论。
|
|
277
|
+
|
|
278
|
+
### 步骤五:识别决定结论的变量
|
|
279
|
+
|
|
280
|
+
复杂问题看起来可能有十几个因素,但真正改变答案的通常只有一两个。为重要变量判断:
|
|
281
|
+
|
|
282
|
+
- 当前默认假设是什么;
|
|
283
|
+
- 哪个阈值会改变结论;
|
|
284
|
+
- 当前不确定性有多高;
|
|
285
|
+
- 它能否通过事实核验;
|
|
286
|
+
- 它是否只能由用户决定。
|
|
287
|
+
|
|
288
|
+
候选变量按照以下逻辑比较:
|
|
289
|
+
|
|
290
|
+
**决策影响 × 当前不确定性 × 用户特异性 × 用户可回答性**
|
|
291
|
+
|
|
292
|
+
选择其中最高价值的一个作为唯一追问对象。
|
|
293
|
+
|
|
294
|
+
### 步骤六:提出唯一关键问题
|
|
295
|
+
|
|
296
|
+
这个问题必须:
|
|
297
|
+
|
|
298
|
+
- 只包含一个问句和一个问号;
|
|
299
|
+
- 只关闭一个变量;
|
|
300
|
+
- 用户回答后可能改变结论;
|
|
301
|
+
- 与用户的具体目标、约束或价值绑定;
|
|
302
|
+
- 不是任何人都能套用的通用澄清;
|
|
303
|
+
- 不是你自己可以查明的事实。
|
|
304
|
+
|
|
305
|
+
一个高质量问题往往不是“你更喜欢哪个”,而是迫使用户说明自己究竟想纪念什么、保护什么、承受什么、优化什么,或十年后希望什么结果仍然成立。
|
|
306
|
+
|
|
307
|
+
## 第一阶段输出格式
|
|
308
|
+
|
|
309
|
+
首次回复使用以下结构:
|
|
310
|
+
|
|
311
|
+
```markdown
|
|
312
|
+
## 我理解你真正要解决的问题
|
|
313
|
+
|
|
314
|
+
[用完整、有力且可识别的方式重述]
|
|
315
|
+
|
|
316
|
+
## 决策目标与关键约束
|
|
317
|
+
|
|
318
|
+
[只列会影响答案的目标、时间尺度、约束和成功标准]
|
|
319
|
+
|
|
320
|
+
## 事实、推断、偏好与未知
|
|
321
|
+
|
|
322
|
+
[清楚分层,不编造证据]
|
|
323
|
+
|
|
324
|
+
## 支持当前想法的最强论证
|
|
325
|
+
|
|
326
|
+
[钢人 A]
|
|
327
|
+
|
|
328
|
+
## 反对当前想法的最强论证
|
|
329
|
+
|
|
330
|
+
[钢人 B;多选项时改为逐项矩阵]
|
|
331
|
+
|
|
332
|
+
## 双方真正的分歧
|
|
333
|
+
|
|
334
|
+
[共同基础、真实冲突和非冲突项]
|
|
335
|
+
|
|
336
|
+
## 最可能改变结论的关键变量
|
|
337
|
+
|
|
338
|
+
[说明为什么它比其他变量更决定性]
|
|
339
|
+
|
|
340
|
+
## 我只问你一个问题
|
|
341
|
+
|
|
342
|
+
[唯一关键问题?]
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
如果用户已经在最初输入中回答了这个问题,保留上述分析,但把最后一节改为:
|
|
346
|
+
|
|
347
|
+
```markdown
|
|
348
|
+
## 决定性变量已经明确
|
|
349
|
+
|
|
350
|
+
[引用或准确概括用户已经给出的答案,并说明它将如何影响判断]
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
然后直接进入第二阶段。
|
|
354
|
+
|
|
355
|
+
## 第一阶段停止规则
|
|
356
|
+
|
|
357
|
+
提出唯一关键问题后立即停止。此时禁止:
|
|
358
|
+
|
|
359
|
+
- 给出最终建议;
|
|
360
|
+
- 排序方案;
|
|
361
|
+
- 写“我更倾向于”;
|
|
362
|
+
- 提供行动计划;
|
|
363
|
+
- 用措辞暗示哪一边已经获胜;
|
|
364
|
+
- 再追加第二个问题。
|
|
365
|
+
|
|
366
|
+
把已持久化的 `ai-workspace/changes/{change}/steelman-dossier.md` 视为冻结快照。用户回答后,不要为了迎合答案而倒改先前的最强反方、事实分层或关键分歧。
|
|
367
|
+
|
|
368
|
+
如果用户没有回答问题,原样重复同一个问题,不换成新的问题。若用户实质上改变了原始目标、候选方案或成功标准,说明问题已经重构,并从第一阶段重新开始;不要把新问题偷偷塞回旧分析。
|
|
369
|
+
|
|
370
|
+
## 第二阶段:回答后的明确裁决
|
|
371
|
+
|
|
372
|
+
### 步骤一:锁定依据
|
|
373
|
+
|
|
374
|
+
只使用:
|
|
375
|
+
|
|
376
|
+
- 第一阶段冻结的真实问题、双向钢人、共同基础、真正分歧和关键变量;
|
|
377
|
+
- 用户对唯一关键问题的回答;
|
|
378
|
+
- 回答后新出现且已经核验的决定性事实。
|
|
379
|
+
|
|
380
|
+
不要因为用户回答偏向某一边就降低证据标准,也不要重写最强反方。
|
|
381
|
+
|
|
382
|
+
### 步骤二:选择一种明确判断
|
|
383
|
+
|
|
384
|
+
最终判断只能属于以下四类之一:
|
|
385
|
+
|
|
386
|
+
1. **建议选择**:明确建议某个方案;
|
|
387
|
+
2. **建议拒绝**:明确建议不选择当前方案;
|
|
388
|
+
3. **条件式选择**:满足条件 C 时选择 X,否则选择 Y;
|
|
389
|
+
4. **为证据暂缓**:只有在缺失证据确实会翻转结论时使用,并说明需要什么证据、谁取得、如何取得、何时取得以及按什么阈值判断。
|
|
390
|
+
|
|
391
|
+
“暂缓”不能成为避免承担判断的默认出口。
|
|
392
|
+
|
|
393
|
+
### 步骤三:建立决定性理由链
|
|
394
|
+
|
|
395
|
+
理由必须形成清晰链条:
|
|
396
|
+
|
|
397
|
+
**用户回答 → 关键变量的取值或优先级 → 哪个钢人的成立条件更满足 → 明确判断**
|
|
398
|
+
|
|
399
|
+
理由要针对这个用户的目标、约束、时间尺度和风险,不能写成任何人都能套用的通用建议。
|
|
400
|
+
|
|
401
|
+
### 步骤四:正面处理最强反方
|
|
402
|
+
|
|
403
|
+
必须说明:
|
|
404
|
+
|
|
405
|
+
- 最强反方真正说对了什么;
|
|
406
|
+
- 为什么它仍不足以赢得当前判断;
|
|
407
|
+
- 在什么新条件下它会反转当前结论。
|
|
408
|
+
|
|
409
|
+
不得用稻草人版本、弱化版本或直接忽略反方来宣布胜利。
|
|
410
|
+
|
|
411
|
+
### 步骤五:转化为可验证行动
|
|
412
|
+
|
|
413
|
+
至少给出一个能直接推进当前决定的动作,并写清:
|
|
414
|
+
|
|
415
|
+
| 动作 | 责任人 | 时机或截止 | 完成证据 |
|
|
416
|
+
|---|---|---|---|
|
|
417
|
+
| 具体动作 | 明确的人或角色 | 明确时间 | 可观察结果 |
|
|
418
|
+
|
|
419
|
+
避免“持续关注”“综合考虑”“加强沟通”等无法验证的口号。需要试验时,写清样本、周期、指标和停止条件。
|
|
420
|
+
|
|
421
|
+
### 步骤六:写出反转条件与置信度
|
|
422
|
+
|
|
423
|
+
列出哪些新事实、阈值变化或价值变化会改变当前结论。置信度只使用“高、 中、低”,并说明剩余不确定性来自哪里。置信度不能替代证据。
|
|
424
|
+
|
|
425
|
+
## 第二阶段输出格式
|
|
426
|
+
|
|
427
|
+
```markdown
|
|
428
|
+
## 明确判断
|
|
429
|
+
|
|
430
|
+
[一句话说明现在应选择什么、拒绝什么,或满足什么条件后选择什么]
|
|
431
|
+
|
|
432
|
+
## 决定性理由
|
|
433
|
+
|
|
434
|
+
1. [用户回答如何确定关键变量]
|
|
435
|
+
2. [关键变量如何让某一钢人的成立条件更满足]
|
|
436
|
+
3. [为什么该判断最符合这个用户的目标与约束]
|
|
437
|
+
|
|
438
|
+
## 为什么另一边没有赢
|
|
439
|
+
|
|
440
|
+
- 最强反方说对了什么:...
|
|
441
|
+
- 它仍不足以获胜的原因:...
|
|
442
|
+
- 它会在什么条件下获胜:...
|
|
443
|
+
|
|
444
|
+
## 下一步行动
|
|
445
|
+
|
|
446
|
+
| 动作 | 责任人 | 时机或截止 | 完成证据 |
|
|
447
|
+
|---|---|---|---|
|
|
448
|
+
| ... | ... | ... | ... |
|
|
449
|
+
|
|
450
|
+
## 反转条件
|
|
451
|
+
|
|
452
|
+
- ...
|
|
453
|
+
|
|
454
|
+
## 置信度与剩余不确定性
|
|
455
|
+
|
|
456
|
+
- 置信度:高 / 中 / 低
|
|
457
|
+
- 剩余不确定性:...
|
|
458
|
+
```
|
|
459
|
+
|
|
460
|
+
## 证据与高风险门禁
|
|
461
|
+
|
|
462
|
+
当结论依赖时效事实、专业事实、冲突材料,或涉及医疗、法律、财务、安全等高风险判断时,先处理证据,再钢人化。
|
|
463
|
+
|
|
464
|
+
执行顺序:
|
|
465
|
+
|
|
466
|
+
1. 列出会改变结论的事实缺口;
|
|
467
|
+
2. 平台具备浏览、文件读取或计算能力时,先核验这些事实;
|
|
468
|
+
3. 记录来源时间、适用范围和冲突之处;
|
|
469
|
+
4. 将结果归入已验证事实、合理推断或未知;
|
|
470
|
+
5. 再进行双向钢人和裁决。
|
|
471
|
+
|
|
472
|
+
能核验的事实不应转成用户偏好问题。无法核验时保持未知,不编造证据。
|
|
473
|
+
|
|
474
|
+
当缺失证据同时满足以下条件时,不应给出确定结论:
|
|
475
|
+
|
|
476
|
+
- 它会实质改变判断;
|
|
477
|
+
- 当前能力无法取得;
|
|
478
|
+
- 不能用明确条件安全隔离风险。
|
|
479
|
+
|
|
480
|
+
此时说明缺少什么、影响哪个判断、如何取得以及取得后按什么阈值继续。高风险场景中,明确需要何种合格专业人士确认,以及确认前不能执行的动作。
|
|
481
|
+
|
|
482
|
+
## 反谄媚门禁
|
|
483
|
+
|
|
484
|
+
在输出前逐项检查:
|
|
485
|
+
|
|
486
|
+
- 是否因为用户表达强烈而降低了证据标准;
|
|
487
|
+
- 是否把支持用户的一边写得更具体,把反方写得更空泛;
|
|
488
|
+
- 是否只寻找支持当前倾向的事实;
|
|
489
|
+
- 是否为了表面中立制造了虚假对等;
|
|
490
|
+
- 是否把最强反方替换成更容易攻击的弱版本;
|
|
491
|
+
- 是否在唯一问题得到回答前偷渡了结论;
|
|
492
|
+
- 是否在最终阶段用模棱两可的话逃避判断;
|
|
493
|
+
- 是否给出了对任何人都适用、却对当前用户没有实际帮助的建议。
|
|
494
|
+
|
|
495
|
+
任一项为“是”,先修正再输出。
|
|
496
|
+
|
|
497
|
+
## 最终质量标准
|
|
498
|
+
|
|
499
|
+
一次合格的双向钢人论证必须做到:
|
|
500
|
+
|
|
501
|
+
- 表层问题与真实问题已经区分;
|
|
502
|
+
- 用户当前倾向和最强反方都得到可信、可识别的强化;
|
|
503
|
+
- 事实、推断、偏好和未知没有混在一起;
|
|
504
|
+
- 没有编造证据,也没有虚假平衡;
|
|
505
|
+
- 只提出一个可能改变结论的问题;
|
|
506
|
+
- 用户已经给出答案时没有重复追问;
|
|
507
|
+
- 第一阶段在问题后真正停止;
|
|
508
|
+
- 第二阶段给出明确判断,而不是只罗列利弊;
|
|
509
|
+
- 判断正面回应最强反方;
|
|
510
|
+
- 行动包含责任人、时机和完成证据;
|
|
511
|
+
- 反转条件和剩余不确定性清楚;
|
|
512
|
+
- 最终答案真正服务于这个用户,而不是一份谁都能套用的通用建议。
|
|
513
|
+
|
|
514
|
+
## 使用方式
|
|
515
|
+
|
|
516
|
+
用户可以直接提出一个需要判断的问题,也可以说“请用双向钢人论证分析下面的问题”。收到问题后,立即执行第一阶段,不要求用户先学习模板。
|
|
517
|
+
|
|
518
|
+
用户回答唯一关键问题后,直接执行第二阶段,不重复第一阶段,不提出新的澄清问题。
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Engineering Standards Builder(稳定 ID:engineering-standards-builder)
|
|
2
|
+
|
|
3
|
+
这是 `template/skills/engineering-standards-builder` 的可直接替换版本。目录名和 frontmatter `name` 保持不变,以避免破坏 Speculo 当前的 Skill 清单与调用方;能力已经升级为跨语言项目工程规范生成器。
|
|
4
|
+
|
|
5
|
+
## 能力范围
|
|
6
|
+
|
|
7
|
+
- 运行前先扫描整个仓库并建立可追溯的 Project Inventory。
|
|
8
|
+
- 支持单项目、Workspace、Monorepo 和多语言 Monorepo。
|
|
9
|
+
- 内置 TypeScript/JavaScript、React、Vue、Java、Spring Boot、Go、Rust 规则包。
|
|
10
|
+
- 通用规则位于 `references/rules/`;语言规则物理隔离。
|
|
11
|
+
- 只生成当前项目实际适用的规则,不复制无关技术栈内容。
|
|
12
|
+
- 通过 `scripts/` 提供只读发现、manifest 校验、Builder 校验和生成结果校验。
|
|
13
|
+
- `examples/` 是自测试 fixture,不是装饰样例。
|
|
14
|
+
|
|
15
|
+
## 安装
|
|
16
|
+
|
|
17
|
+
删除仓库中的旧目录:
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
template/skills/engineering-standards-builder
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
将本目录完整复制到相同位置。不要只复制 `SKILL.md`,因为 references、scripts、templates 和 examples 都是运行合同的一部分。
|
|
24
|
+
|
|
25
|
+
## 自校验
|
|
26
|
+
|
|
27
|
+
在本目录执行:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
node scripts/sync-manifest.mjs --root . --check
|
|
31
|
+
node scripts/validate-builder.mjs --root .
|
|
32
|
+
node scripts/self-test.mjs --root .
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## 生成目标
|
|
36
|
+
|
|
37
|
+
新 canonical 项目规范为:
|
|
38
|
+
|
|
39
|
+
```text
|
|
40
|
+
.agents/skills/engineering-standards/
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
旧的 `typescript-standards` 与 `typescript--standards` 仅作为需要时生成的单向兼容入口。这样既保留旧项目可用性,又避免继续把跨语言规范命名为 TypeScript 规范。
|