kcode-pi 0.1.34 → 0.1.38
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 +10 -10
- package/dist/cli/kcode.js +3 -3
- package/dist/context/project-context.js +4 -5
- package/dist/harness/prompt-policy.d.ts +19 -0
- package/dist/harness/prompt-policy.js +206 -0
- package/dist/harness/types.d.ts +74 -0
- package/dist/harness/types.js +16 -0
- package/dist/product/profile.d.ts +20 -0
- package/dist/product/profile.js +103 -0
- package/docs/CHANGELOG.md +90 -2
- package/docs/COMMAND_REFERENCE.md +27 -12
- package/docs/DEVELOPMENT.md +3 -3
- package/docs/EVIDENCE_AND_GATES.md +15 -8
- package/docs/HARNESS_WORKFLOW.md +32 -12
- package/docs/KCODE_DISTRIBUTION.md +7 -7
- package/docs/PRODUCT_PROFILE.md +9 -9
- package/docs/TROUBLESHOOTING.md +8 -8
- package/docs/USER_GUIDE.md +10 -10
- package/extensions/kingdee-harness.ts +141 -86
- package/extensions/kingdee-header.ts +1 -1
- package/extensions/kingdee-subagents.ts +1 -1
- package/extensions/kingdee-tools.ts +44 -44
- package/package.json +1 -1
- package/src/cli/kcode.ts +3 -3
- package/src/context/project-context.ts +4 -5
- package/src/harness/artifacts.ts +6 -7
- package/src/harness/data-source-policy.ts +346 -0
- package/src/harness/delegation.ts +28 -23
- package/src/harness/gates.ts +16 -1
- package/src/harness/messages.ts +65 -11
- package/src/harness/path-policy.ts +1 -0
- package/src/harness/plan-steps.ts +3 -3
- package/src/harness/prompt-policy.ts +227 -0
- package/src/harness/prompt.ts +12 -16
- package/src/harness/question-memory.ts +220 -0
- package/src/harness/repair.ts +18 -3
- package/src/harness/state.ts +93 -6
- package/src/harness/types.ts +19 -0
- package/src/official/kingdee-skills.ts +4 -4
- package/src/product/profile.ts +2 -2
- package/src/rules/checker.ts +27 -27
- package/src/tools/build-debug.ts +5 -5
- package/src/tools/sdk-signature.ts +4 -4
package/docs/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,94 @@
|
|
|
6
6
|
|
|
7
7
|
- 暂无。
|
|
8
8
|
|
|
9
|
+
## 0.1.38 - 2026-06-07
|
|
10
|
+
|
|
11
|
+
### 修复
|
|
12
|
+
|
|
13
|
+
- 将用户要求的“足够事实后再编码”规则集中写入运行时策略,并自动生成到 `.pi/kd/PROJECT_CONTEXT.md` 的持久规则中,确保新会话继承约束。
|
|
14
|
+
- 明确 API/SDK 文档不能替代 FormId、字段/实体、插件事件、SQL/KSQL 表名、字段映射、并发、日志和验收数据等业务事实。
|
|
15
|
+
- `run.facts` 固化为唯一结构化事实源;已回答 questions 仅作为审计记录,读取状态时不再从历史问题答案反推门禁事实。
|
|
16
|
+
- 状态读取时过滤未知 `factLabel` 和无效事实值,规范化可识别事实标签,避免自造标签或占位答案污染门禁。
|
|
17
|
+
|
|
18
|
+
### 文档
|
|
19
|
+
|
|
20
|
+
- 在 Harness 工作流和证据门禁文档中补充项目持久规则、业务事实门禁和外部/BOS 人工验证边界。
|
|
21
|
+
|
|
22
|
+
### 验证
|
|
23
|
+
|
|
24
|
+
- `npm run check`
|
|
25
|
+
- `npm run smoke:harness`
|
|
26
|
+
- `npm run smoke:kcode-command`
|
|
27
|
+
- `npm run smoke:package`
|
|
28
|
+
- `npm run smoke:official`
|
|
29
|
+
- `npm run build:cli`
|
|
30
|
+
- `git diff --check`
|
|
31
|
+
|
|
32
|
+
## 0.1.37 - 2026-06-07
|
|
33
|
+
|
|
34
|
+
### 修复
|
|
35
|
+
|
|
36
|
+
- `factLabel` 限制为集中定义的事实标签或别名,禁止 LLM 自造标签写入门禁事实。
|
|
37
|
+
- 数据源上下文门禁只信任结构化 facts 和 evidence,不再仅凭 PLAN 自由文本证明 FormId、字段、插件事件或读写方式。
|
|
38
|
+
- 开放事实问题拒绝“可以、好的、是”等口头确认语;确认题只接受明确肯定或明确否定。
|
|
39
|
+
- 重复 open 问题不会再次写入阶段文档,`/kd-answer` 会区分已回答、无效答案和问题不存在。
|
|
40
|
+
|
|
41
|
+
### 验证
|
|
42
|
+
|
|
43
|
+
- `npm run check`
|
|
44
|
+
- `npm run smoke:harness`
|
|
45
|
+
- `npm run smoke:package`
|
|
46
|
+
- `npm run smoke:official`
|
|
47
|
+
- `npm run build:cli`
|
|
48
|
+
- `git diff --check`
|
|
49
|
+
|
|
50
|
+
## 0.1.36 - 2026-06-07
|
|
51
|
+
|
|
52
|
+
### 修复
|
|
53
|
+
|
|
54
|
+
- `kd_question` 改为结构化事实账本:带 `factLabel` 的答案会写入 current fact,否定确认题不会成为事实。
|
|
55
|
+
- 同一 `factLabel` 已有 open 问题或当前事实时禁止重复提问;事实更正必须使用 `action=revise`,旧值会标记为 superseded。
|
|
56
|
+
- 移除 `kd_question` 的交互输入/自定义输入路径;当前只有一个 open blocking 问题时,用户普通短答会自动记录为答案。
|
|
57
|
+
- 占位答案如“待确认、未知、按实际环境、TODO/TBD”不能解除门禁。
|
|
58
|
+
- 子 agent 上下文显式注入已问已答事实和未回答问题,避免委派任务丢失关键约束。
|
|
59
|
+
- Cosmic metadata 数据源证据要求 evidence index `exitCode=0` 且 JSON 内容可解析,避免失败或空证据通过门禁。
|
|
60
|
+
- `kd_verify_result` 拒绝空命令、`unknown` 和占位命令,避免坏 payload 写入验证证据。
|
|
61
|
+
|
|
62
|
+
### 验证
|
|
63
|
+
|
|
64
|
+
- `npm run check`
|
|
65
|
+
- `npm run smoke:harness`
|
|
66
|
+
- `npm run smoke:package`
|
|
67
|
+
- `npm run smoke:official`
|
|
68
|
+
- `npm run build:cli`
|
|
69
|
+
- `git diff --check`
|
|
70
|
+
|
|
71
|
+
## 0.1.35 - 2026-06-07
|
|
72
|
+
|
|
73
|
+
### 新增
|
|
74
|
+
|
|
75
|
+
- 新增集中式工程指令策略,统一管理实现契约、数据源上下文、第三方对接上下文、提示风格和阶段约束。
|
|
76
|
+
- 新增数据源与实现就绪门禁,产品代码写入前必须具备触发入口、源对象、目标对象、字段映射、业务规则、失败处理和验收样例。
|
|
77
|
+
- 新增第三方对接上下文门禁,要求接口文档、对接方向、认证配置、字段映射、并发幂等、重试限流、错误补偿、日志脱敏和验收样例齐全后再编码。
|
|
78
|
+
|
|
79
|
+
### 改进
|
|
80
|
+
|
|
81
|
+
- 将 Harness、extensions、CLI、工具说明、静态检查结果和文档中的用户/LLM 可见文本改为正式工程指令,减少口语化表达。
|
|
82
|
+
- 强化企业版 C#、企业版 Python、苍穹、星瀚和星空旗舰版的数据源证据要求。
|
|
83
|
+
- 企业版 Python 插件明确为用户侧 BOS 注册和功能测试证据,LLM 不能替代外部系统操作,只能要求用户提供可核验证据并记录来源。
|
|
84
|
+
- 子 agent、自动修复循环、项目上下文、SDK 签名和 KSQL/SQL lint 的输出改为“必须/禁止/执行/记录”式约束。
|
|
85
|
+
|
|
86
|
+
### 验证
|
|
87
|
+
|
|
88
|
+
- `npm run check`
|
|
89
|
+
- `npm run smoke:harness`
|
|
90
|
+
- `npm run smoke:package`
|
|
91
|
+
- `npm run smoke:checker`
|
|
92
|
+
- `npm run smoke:build-debug`
|
|
93
|
+
- `npm run smoke:official`
|
|
94
|
+
- `npm run build:cli`
|
|
95
|
+
- `git diff --check`
|
|
96
|
+
|
|
9
97
|
## 0.1.30 - 2026-06-07
|
|
10
98
|
|
|
11
99
|
### 新增
|
|
@@ -99,7 +187,7 @@
|
|
|
99
187
|
### 改进
|
|
100
188
|
|
|
101
189
|
- 收敛运行时 prompt,只保留状态、最近阶段资料、项目上下文摘要、当前阶段任务和核心约束。
|
|
102
|
-
- 精简 `kd-plan`、`kd-execute`、`kd-verify`
|
|
190
|
+
- 精简 `kd-plan`、`kd-execute`、`kd-verify` 命令入口指令,减少和 skills、门禁规则的重复。
|
|
103
191
|
- 移除不存在的 IDE 相关验证表述,保留 Gradle/dotnet 的真实构建验证策略。
|
|
104
192
|
|
|
105
193
|
### 验证
|
|
@@ -116,7 +204,7 @@
|
|
|
116
204
|
|
|
117
205
|
- 将包版本更新到 `0.1.23`,并同步 `package-lock.json` 顶层版本信息。
|
|
118
206
|
- 改进文档示例、用户文档和 README 使用说明。
|
|
119
|
-
- 优化 Harness
|
|
207
|
+
- 优化 Harness 门禁、证据跟踪、恢复流程和风险确认指令。
|
|
120
208
|
- 使用 Gradle 和 dotnet 作为对应产品画像的构建验证入口。
|
|
121
209
|
- 本地化 KCode prompts,并要求关键 SDK 结论提供签名证据。
|
|
122
210
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 命令参考
|
|
2
2
|
|
|
3
|
-
本文集中说明 KCode 的终端命令、Pi
|
|
3
|
+
本文集中说明 KCode 的终端命令、Pi 内命令和内置工具参数。首次使用阅读 [用户指南](USER_GUIDE.md),工作流顺序见 [Harness 工作流](HARNESS_WORKFLOW.md)。
|
|
4
4
|
|
|
5
5
|
## 终端命令
|
|
6
6
|
|
|
@@ -77,7 +77,7 @@ kcode doctor --deep
|
|
|
77
77
|
kcode repair
|
|
78
78
|
```
|
|
79
79
|
|
|
80
|
-
升级后或 `doctor --deep`
|
|
80
|
+
升级后或 `doctor --deep` 报告旧路径时使用。
|
|
81
81
|
|
|
82
82
|
### kcode start
|
|
83
83
|
|
|
@@ -87,7 +87,7 @@ kcode repair
|
|
|
87
87
|
kcode start
|
|
88
88
|
```
|
|
89
89
|
|
|
90
|
-
`start`
|
|
90
|
+
`start` 会自动执行项目级初始化,再启动随包 Pi CLI。后续参数会原样传给 Pi CLI:
|
|
91
91
|
|
|
92
92
|
```powershell
|
|
93
93
|
kcode start --provider openai --model gpt-4o
|
|
@@ -99,13 +99,13 @@ kcode start --provider openai --model gpt-4o
|
|
|
99
99
|
|
|
100
100
|
### /kd-start
|
|
101
101
|
|
|
102
|
-
创建一个新的 Kingdee Harness run
|
|
102
|
+
创建一个新的 Kingdee Harness run。输入允许是一条需求,或需求文档来源:
|
|
103
103
|
|
|
104
104
|
```text
|
|
105
105
|
/kd-start [--product 产品] [--version 版本] <需求或需求组>
|
|
106
106
|
```
|
|
107
107
|
|
|
108
|
-
|
|
108
|
+
使用显式产品参数:
|
|
109
109
|
|
|
110
110
|
```text
|
|
111
111
|
/kd-start --product cangqiong --version V6.0 实现采购订单保存校验
|
|
@@ -263,7 +263,7 @@ discuss -> spec -> plan -> execute -> verify -> ship
|
|
|
263
263
|
/kd-review [审查重点]
|
|
264
264
|
```
|
|
265
265
|
|
|
266
|
-
|
|
266
|
+
用于检查状态机漏洞、门禁绕过、证据缺口、工程指令分散和测试缺口。子 agent 不修改文件,主 agent 负责采纳结论和后续修复。
|
|
267
267
|
|
|
268
268
|
### /kd-delegate
|
|
269
269
|
|
|
@@ -288,7 +288,7 @@ verify 只读分析验证命令和失败证据,实际验证由主 agent 执
|
|
|
288
288
|
|
|
289
289
|
## 内置工具
|
|
290
290
|
|
|
291
|
-
|
|
291
|
+
这些工具多数情况下由 KCode 自动使用;明确证据或排障时,支持按下面参数手动调用。
|
|
292
292
|
|
|
293
293
|
### kd_plan_status
|
|
294
294
|
|
|
@@ -303,12 +303,27 @@ kd_plan_status
|
|
|
303
303
|
记录、回答或列出结构化问题:
|
|
304
304
|
|
|
305
305
|
```text
|
|
306
|
-
kd_question action=ask
|
|
306
|
+
kd_question action=ask factLabel="目标 FormId/单据或表单标识" question="目标 FormId、单据或表单标识是什么?"
|
|
307
|
+
kd_question action=ask factLabel="目标 FormId/单据或表单标识" proposedFactValue="pur_receivebill" question="采购入库单 Form ID 是否为 pur_receivebill?" choices=["是","不是"]
|
|
307
308
|
kd_question action=answer id=Q-001 answer=是
|
|
309
|
+
kd_question action=revise factLabel="目标 FormId/单据或表单标识" answer="SAL_SaleOrder" reason="用户更正先前答案"
|
|
308
310
|
kd_question action=list
|
|
309
311
|
```
|
|
310
312
|
|
|
311
|
-
一次只能登记一个当前最阻塞的问题,最多 3
|
|
313
|
+
一次只能登记一个当前最阻塞的问题,最多 3 个简短选项。`action=ask` 只登记 open 问题,不弹出输入框、不在工具调用内继续追问。
|
|
314
|
+
|
|
315
|
+
结构化事实参数:
|
|
316
|
+
|
|
317
|
+
```text
|
|
318
|
+
factLabel 可选,该答案要补齐的门禁事实标签
|
|
319
|
+
proposedFactValue 可选,确认题候选事实值;用户回答 是/yes 时写入 factLabel
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
门禁只消费当前结构化事实。没有 `factLabel` 的问答只作为上下文记录,不直接解除数据源、字段、接口等事实缺口。
|
|
323
|
+
|
|
324
|
+
`factLabel` 必须使用 KCode 集中定义的实现契约、数据源上下文或第三方对接事实标签,允许使用这些标签的别名并自动规范为正式标签。同一 `factLabel` 已有 open 问题时禁止重复提问;已有当前事实时禁止再次提问,必须使用 `action=revise` 显式修订。`待确认`、`未知`、`按实际环境`、`TODO/TBD`、单独“是/否”和“可以/好的”等口头确认不会解除开放事实问题。带 `proposedFactValue` 的确认题只接受明确肯定或明确否定。
|
|
325
|
+
|
|
326
|
+
当前只有一个 open blocking 问题时,用户下一条普通短答会自动记录为该问题答案;命令、疑问句和明显的新任务不会自动记录。
|
|
312
327
|
|
|
313
328
|
### kd_subagent
|
|
314
329
|
|
|
@@ -367,7 +382,7 @@ product 可选,flagship/xinghan/cangqiong/enterprise
|
|
|
367
382
|
edition 旧参数,等同 product
|
|
368
383
|
```
|
|
369
384
|
|
|
370
|
-
随包表结构主要覆盖旗舰版和企业版;Cosmic
|
|
385
|
+
随包表结构主要覆盖旗舰版和企业版;Cosmic 家族字段和数据库信息默认用 `kd_cosmic_metadata`。
|
|
371
386
|
|
|
372
387
|
### kd_check
|
|
373
388
|
|
|
@@ -450,7 +465,7 @@ mode 必填,search/search-method/detail
|
|
|
450
465
|
query 必填,类名、方法名或完整限定类名
|
|
451
466
|
config 可选,ok-cosmic.json 路径
|
|
452
467
|
method 可选,detail 模式下过滤方法
|
|
453
|
-
compact
|
|
468
|
+
compact 可选,紧凑详情输出
|
|
454
469
|
dryRun 可选,只展示命令
|
|
455
470
|
```
|
|
456
471
|
|
|
@@ -532,7 +547,7 @@ kd_debug text="<日志或堆栈>" product=enterprise
|
|
|
532
547
|
```text
|
|
533
548
|
text 可选,与 path 二选一
|
|
534
549
|
path 可选,与 text 二选一
|
|
535
|
-
product
|
|
550
|
+
product 可选,产品上下文
|
|
536
551
|
```
|
|
537
552
|
|
|
538
553
|
## 常用组合
|
package/docs/DEVELOPMENT.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# KCode 开发与发布说明
|
|
2
2
|
|
|
3
|
-
本文档面向 KCode
|
|
3
|
+
本文档面向 KCode 维护者。用户安装和使用说明见根目录 `README.md`。
|
|
4
4
|
|
|
5
5
|
## 源码开发
|
|
6
6
|
|
|
@@ -117,7 +117,7 @@ npm run release:check
|
|
|
117
117
|
npm publish
|
|
118
118
|
```
|
|
119
119
|
|
|
120
|
-
|
|
120
|
+
使用 scoped 包并发布到公网 npm 时:
|
|
121
121
|
|
|
122
122
|
```powershell
|
|
123
123
|
npm publish --access public
|
|
@@ -152,7 +152,7 @@ docs/KCODE_DISTRIBUTION.md
|
|
|
152
152
|
- 是否写全局配置或访问敏感路径。
|
|
153
153
|
- 是否与 KCode harness、权限策略、上下文策略冲突。
|
|
154
154
|
|
|
155
|
-
|
|
155
|
+
通过审查后默认使用项目级安装,写入 `.pi/settings.json`。只有离线交付或强依赖时,才允许考虑 `dependencies` + `bundledDependencies` 内置。
|
|
156
156
|
|
|
157
157
|
## 当前维护事项
|
|
158
158
|
|
|
@@ -9,17 +9,17 @@ KCode Harness 的门禁用于避免跳阶段、猜 SDK、伪造验证结果或
|
|
|
9
9
|
/kd-status
|
|
10
10
|
```
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
门禁不通过时,按原因补齐产品、文档、问题答案、计划、证据或风险说明。
|
|
13
13
|
|
|
14
14
|
## 产品确认
|
|
15
15
|
|
|
16
|
-
当需求涉及具体金蝶产品实现、构建、元数据或 SDK
|
|
16
|
+
当需求涉及具体金蝶产品实现、构建、元数据或 SDK 查证时,必须确认产品画像:
|
|
17
17
|
|
|
18
18
|
```text
|
|
19
19
|
/kd-product cangqiong --version V6.0
|
|
20
20
|
```
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
仅整理需求文档或处理产品无关工程事项时,完成需求梳理,并在计划中写明不涉及产品实现。后续实际修改金蝶产品代码、构建、元数据或 SDK 时,按范围确认产品。
|
|
23
23
|
|
|
24
24
|
详见 [产品画像确认](PRODUCT_PROFILE.md)。
|
|
25
25
|
|
|
@@ -38,6 +38,13 @@ KCode Harness 的门禁用于避免跳阶段、猜 SDK、伪造验证结果或
|
|
|
38
38
|
|
|
39
39
|
`execute` 阶段只能写 `PLAN.md` 明确列出的源码文件。
|
|
40
40
|
|
|
41
|
+
业务事实门禁:
|
|
42
|
+
|
|
43
|
+
- 通用实现契约必须覆盖触发入口、源对象、目标对象、数据变化或字段映射、业务规则、失败处理和验收样例。
|
|
44
|
+
- 数据源上下文必须覆盖目标 FormId/单据或表单标识、插件类型和触发事件、字段/实体/分录标识、数据读取写入方式;SQL/KSQL 场景还必须覆盖表名和数据库字段名。
|
|
45
|
+
- 第三方对接必须覆盖接口文档、对接方向、触发时机、接口地址、认证配置、字段映射、并发/幂等、超时重试限流、错误补偿、日志脱敏和请求/响应样例。
|
|
46
|
+
- API 文档、SDK 知识库和 PLAN 自由文本不能替代结构化 facts 或 evidence。
|
|
47
|
+
|
|
41
48
|
## SDK 签名证据
|
|
42
49
|
|
|
43
50
|
涉及 Java/C# 产品代码时,进入 `execute` 前必须已有:
|
|
@@ -46,7 +53,7 @@ KCode Harness 的门禁用于避免跳阶段、猜 SDK、伪造验证结果或
|
|
|
46
53
|
evidence/sdk-signature.md
|
|
47
54
|
```
|
|
48
55
|
|
|
49
|
-
|
|
56
|
+
使用工具:
|
|
50
57
|
|
|
51
58
|
```text
|
|
52
59
|
kd_sdk_signature product=cangqiong query=QueryServiceHelper method=loadSingle
|
|
@@ -54,7 +61,7 @@ kd_sdk_signature product=flagship query=SaveServiceHelper method=save
|
|
|
54
61
|
kd_sdk_signature product=enterprise query=DynamicObject method=GetDynamicObject
|
|
55
62
|
```
|
|
56
63
|
|
|
57
|
-
|
|
64
|
+
只有以下来源允许作为签名事实:
|
|
58
65
|
|
|
59
66
|
- `kd_sdk_signature` 从当前项目真实 jar/dll 读取的结果。
|
|
60
67
|
- 当前项目构建输出。
|
|
@@ -96,7 +103,7 @@ Exit: 0
|
|
|
96
103
|
- “未执行”
|
|
97
104
|
- “应该可以”
|
|
98
105
|
|
|
99
|
-
|
|
106
|
+
命令无法运行时,记录真实阻塞原因和残余风险。禁止把未运行命令当作绿灯。
|
|
100
107
|
|
|
101
108
|
## evidence/index.json
|
|
102
109
|
|
|
@@ -123,7 +130,7 @@ evidence/step-001.md
|
|
|
123
130
|
|
|
124
131
|
## Cosmic 官方能力证据
|
|
125
132
|
|
|
126
|
-
|
|
133
|
+
苍穹、星瀚和星空旗舰版通常要求:
|
|
127
134
|
|
|
128
135
|
```text
|
|
129
136
|
kd_cosmic_config product=cangqiong
|
|
@@ -135,7 +142,7 @@ kd_cosmic_api product=cangqiong mode=search query=<关键词>
|
|
|
135
142
|
|
|
136
143
|
## KSQL / SQL 证据
|
|
137
144
|
|
|
138
|
-
交付 KSQL/SQL 数据修复内容时,ship
|
|
145
|
+
交付 KSQL/SQL 数据修复内容时,ship 前通常要求:
|
|
139
146
|
|
|
140
147
|
```text
|
|
141
148
|
evidence/cosmic-metadata.json
|
package/docs/HARNESS_WORKFLOW.md
CHANGED
|
@@ -6,26 +6,26 @@ KCode Harness 把金蝶开发工作拆成固定阶段:
|
|
|
6
6
|
discuss -> spec -> plan -> execute -> verify -> ship
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
run
|
|
9
|
+
run 允许包含一条明确需求,或同一目标下的一组需求。
|
|
10
10
|
|
|
11
11
|
## 创建 run
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
使用显式产品参数:
|
|
14
14
|
|
|
15
15
|
```text
|
|
16
16
|
/kd-start --product cangqiong 实现采购订单保存校验
|
|
17
17
|
```
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
支持直接提供需求文档来源,例如本地文件、目录或在线文档链接:
|
|
20
20
|
|
|
21
21
|
```text
|
|
22
22
|
/kd-start E:\project\docs\需求说明.md
|
|
23
23
|
/kd-start https://example.com/requirements
|
|
24
24
|
```
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
在线文档要求登录或权限时,KCode 会要求提供可访问链接、导出文件路径或关键内容。
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
直接输入自然语言需求时,KCode 会自动创建 run,并进入 `discuss` 阶段分析需求来源和范围。
|
|
29
29
|
|
|
30
30
|
查看当前状态:
|
|
31
31
|
|
|
@@ -34,7 +34,7 @@ run 可以是一条明确需求,也可以是一组同一目标下的需求。
|
|
|
34
34
|
/kd-gate
|
|
35
35
|
```
|
|
36
36
|
|
|
37
|
-
|
|
37
|
+
产品未知时,查看 [产品画像确认](PRODUCT_PROFILE.md)。
|
|
38
38
|
|
|
39
39
|
## 阶段说明
|
|
40
40
|
|
|
@@ -58,7 +58,7 @@ ship 汇总变更、验证证据、风险和后续事项
|
|
|
58
58
|
/kd-advance ship
|
|
59
59
|
```
|
|
60
60
|
|
|
61
|
-
|
|
61
|
+
门禁不通过时,按 `/kd-gate` 给出的原因补齐产品、文档、计划、证据或风险说明。
|
|
62
62
|
|
|
63
63
|
## 阶段文档
|
|
64
64
|
|
|
@@ -96,7 +96,7 @@ evidence/index.json
|
|
|
96
96
|
|
|
97
97
|
## 待确认问题
|
|
98
98
|
|
|
99
|
-
|
|
99
|
+
产品、目标单据、插件位置、高风险 SQL 或方案选择要求确认时,KCode 会记录待确认问题。未回答的阻断问题会阻止阶段推进。
|
|
100
100
|
|
|
101
101
|
手动回答:
|
|
102
102
|
|
|
@@ -107,6 +107,11 @@ evidence/index.json
|
|
|
107
107
|
原则:
|
|
108
108
|
|
|
109
109
|
- 一次只问一个当前最阻塞的问题。
|
|
110
|
+
- 问题登记后保持 open;用户回答后必须用 `/kd-answer` 或 `kd_question action=answer` 记录。
|
|
111
|
+
- 需要解除门禁事实缺口的问题必须带结构化 `factLabel`;确认题必须用 `proposedFactValue` 表示候选事实值。
|
|
112
|
+
- 同一 `factLabel` 已有 open 问题或当前事实时禁止重复提问;用户更正事实时使用 `kd_question action=revise`,旧事实会标记为 superseded。
|
|
113
|
+
- 当前只有一个 open blocking 问题时,用户下一条普通短答会自动记录;占位答案不会解除门禁。
|
|
114
|
+
- 数据源 FormId、字段/实体、插件事件和读写方式必须来自结构化 facts 或 evidence;PLAN 自由文本不能单独证明这些事实。
|
|
110
115
|
- 得到答案后再继续问下一个必要问题。
|
|
111
116
|
|
|
112
117
|
## 多个需求
|
|
@@ -129,7 +134,7 @@ evidence/index.json
|
|
|
129
134
|
/kd-finish
|
|
130
135
|
```
|
|
131
136
|
|
|
132
|
-
|
|
137
|
+
同一目标下的一组需求允许放在同一个 run 中处理。无关目标创建新 run:
|
|
133
138
|
|
|
134
139
|
```text
|
|
135
140
|
/kd-start --product cangqiong E:\project\docs\本轮采购订单改造.docx
|
|
@@ -141,8 +146,23 @@ KCode 会阻止过早写入 Java/XML/SQL/C# 等产品代码:
|
|
|
141
146
|
|
|
142
147
|
- 未进入 `execute` 阶段不能写产品代码。
|
|
143
148
|
- `execute` 只能写 `PLAN.md` 中批准的真实源码文件。
|
|
144
|
-
-
|
|
145
|
-
-
|
|
149
|
+
- 临时发现要改新文件,回到 `plan` 更新计划。
|
|
150
|
+
- 必须理解当前业务项目已有目录、模块、包名、基类和本地封装后再编码。
|
|
151
|
+
- API 文档、SDK 文档和知识库只能作为技术用法证据,不能替代 FormId、字段/实体、插件事件、SQL/KSQL 表名、数据库字段名、字段映射、并发/幂等、日志脱敏和验收数据等业务事实。
|
|
152
|
+
- 信息不足时登记一个最阻塞的结构化问题;禁止生成模板代码或占位实现。
|
|
153
|
+
- 内部插件、自动下推、第三方对接、字段改写和数据同步统一按实现契约、数据源上下文和对接上下文补齐事实,不为单个业务场景写死提示词。
|
|
154
|
+
|
|
155
|
+
## 项目持久规则
|
|
156
|
+
|
|
157
|
+
`kcode init` 和 `kcode context --refresh` 会生成 `.pi/kd/PROJECT_CONTEXT.md`。新会话必须先读取该文件,再计划或编辑代码。
|
|
158
|
+
|
|
159
|
+
持久规则由 `src/harness/prompt-policy.ts` 集中管理,并自动写入项目上下文。规则要求:
|
|
160
|
+
|
|
161
|
+
- `run.facts` 是唯一结构化事实源,已回答 questions 只作为审计记录。
|
|
162
|
+
- `factLabel` 必须使用集中定义的事实标签或别名。
|
|
163
|
+
- PLAN 自由文本不能单独证明 FormId、字段、插件事件或读写方式。
|
|
164
|
+
- 外部系统操作、BOS 注册、人工功能测试和生产验证必须由用户提供可核验证据。
|
|
165
|
+
- 不做旧状态迁移兼容或旧问题答案推断;坏状态只过滤,缺失事实重新提问确认。
|
|
146
166
|
|
|
147
167
|
证据和门禁细节见 [证据和门禁](EVIDENCE_AND_GATES.md)。
|
|
148
168
|
|
|
@@ -152,7 +172,7 @@ KCode 支持把局部任务委派给隔离子 agent,用来降低长上下文
|
|
|
152
172
|
|
|
153
173
|
触发方式有两种:
|
|
154
174
|
|
|
155
|
-
- 自动:主 agent
|
|
175
|
+
- 自动:主 agent 在大量调研、独立交叉审查、长上下文复盘或可并行拆分时,允许主动调用 `kd_subagent`。
|
|
156
176
|
- 显式:用户用 `/kd-review` 或 `/kd-delegate` 指定委派任务。
|
|
157
177
|
|
|
158
178
|
常用入口:
|
|
@@ -10,16 +10,16 @@ KCode 不 fork Pi,也不替换 Pi 生态。KCode 提供一个面向金蝶开
|
|
|
10
10
|
- 不修改用户全局 Pi 配置。
|
|
11
11
|
- 不强制安装未审查的第三方 package。
|
|
12
12
|
- 支持项目内复现同一套金蝶开发环境。
|
|
13
|
-
-
|
|
13
|
+
- 无需用户额外安装全局 `pi` 命令。
|
|
14
14
|
|
|
15
|
-
##
|
|
15
|
+
## 分发结构
|
|
16
16
|
|
|
17
17
|
```text
|
|
18
18
|
kcode-pi npm 包,作为 Pi package 提供金蝶工具、skills、prompts、themes。
|
|
19
19
|
kcode 全局命令,负责项目初始化、环境检查和启动随包 Pi CLI。
|
|
20
20
|
```
|
|
21
21
|
|
|
22
|
-
`kcode` 启动器只管理当前项目的 `.pi/settings.json`,不写 `~/.pi`
|
|
22
|
+
`kcode` 启动器只管理当前项目的 `.pi/settings.json`,不写 `~/.pi` 或其他用户全局目录。启动时默认调用随包 `@earendil-works/pi-coding-agent` 的 `dist/cli.js`,仅在随包 CLI 缺失时回退全局 `pi`。
|
|
23
23
|
|
|
24
24
|
## 项目级配置
|
|
25
25
|
|
|
@@ -39,7 +39,7 @@ kcode 全局命令,负责项目初始化、环境检查和启动随包
|
|
|
39
39
|
}
|
|
40
40
|
```
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
后续接入第三方 Pi package 时,进入 allowlist 后再固定版本写入项目配置:
|
|
43
43
|
|
|
44
44
|
```json
|
|
45
45
|
{
|
|
@@ -64,10 +64,10 @@ kcode 全局命令,负责项目初始化、环境检查和启动随包
|
|
|
64
64
|
|
|
65
65
|
通过审查后有两种接入方式:
|
|
66
66
|
|
|
67
|
-
1.
|
|
67
|
+
1. 项目级安装:写入 `.pi/settings.json`。
|
|
68
68
|
2. 离线内置:写入 `dependencies` 和 `bundledDependencies`,并在 `package.json -> pi` 中显式引用其资源。
|
|
69
69
|
|
|
70
|
-
|
|
70
|
+
默认使用项目级安装。只有离线交付或强依赖时,才允许考虑离线内置。
|
|
71
71
|
|
|
72
72
|
## 命令设计
|
|
73
73
|
|
|
@@ -88,4 +88,4 @@ kcode start 初始化后启动 KCode 工作环境
|
|
|
88
88
|
|
|
89
89
|
## 当前限制
|
|
90
90
|
|
|
91
|
-
当前仓库已可作为 npm 包发布,并提供全局 `kcode` 命令。真实交互式 Pi runtime smoke
|
|
91
|
+
当前仓库已可作为 npm 包发布,并提供全局 `kcode` 命令。真实交互式 Pi runtime smoke 必须在具备可用模型/API 配置的环境中执行。
|
package/docs/PRODUCT_PROFILE.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 产品画像确认
|
|
2
2
|
|
|
3
|
-
产品画像决定 KCode 使用哪套产品知识、SDK
|
|
3
|
+
产品画像决定 KCode 使用哪套产品知识、SDK/元数据来源、构建策略、目录约束和门禁规则。标题栏出现 `产品:未确认` 时,必须确认产品。
|
|
4
4
|
|
|
5
5
|
## 支持的产品
|
|
6
6
|
|
|
@@ -17,13 +17,13 @@ enterprise 金蝶企业版 / C#
|
|
|
17
17
|
|
|
18
18
|
## 创建 run 时确认产品
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
使用显式产品参数:
|
|
21
21
|
|
|
22
22
|
```text
|
|
23
23
|
/kd-start --product cangqiong --version V6.0 实现采购订单保存校验
|
|
24
24
|
```
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
允许省略版本:
|
|
27
27
|
|
|
28
28
|
```text
|
|
29
29
|
/kd-start --product flagship 实现采购订单插件
|
|
@@ -31,7 +31,7 @@ enterprise 金蝶企业版 / C#
|
|
|
31
31
|
|
|
32
32
|
## 已有 run 补产品
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
run 已经创建且标题栏显示以下内容时:
|
|
35
35
|
|
|
36
36
|
```text
|
|
37
37
|
产品:未确认
|
|
@@ -45,7 +45,7 @@ enterprise 金蝶企业版 / C#
|
|
|
45
45
|
/kd-status
|
|
46
46
|
```
|
|
47
47
|
|
|
48
|
-
|
|
48
|
+
具体产品不确定但明确属于金蝶苍穹相关技术栈时,确认业务实际使用的是苍穹、星瀚还是星空旗舰版。禁止把 `cosmic` 当成产品名。
|
|
49
49
|
|
|
50
50
|
## 如何选择
|
|
51
51
|
|
|
@@ -57,7 +57,7 @@ enterprise 金蝶企业版 / C#
|
|
|
57
57
|
选择 `xinghan`:
|
|
58
58
|
|
|
59
59
|
- 明确是金蝶星瀚。
|
|
60
|
-
- 基于苍穹/Cosmic
|
|
60
|
+
- 基于苍穹/Cosmic 平台,默认按平台 Java 插件处理。
|
|
61
61
|
- 接口或元数据存在星瀚差异时,以星瀚产品和当前项目证据为准。
|
|
62
62
|
|
|
63
63
|
选择 `flagship`:
|
|
@@ -65,7 +65,7 @@ enterprise 金蝶企业版 / C#
|
|
|
65
65
|
- 明确是星空旗舰版。
|
|
66
66
|
- 基于苍穹/Cosmic 平台,Java 插件规则适用。
|
|
67
67
|
- 接口或目录存在旗舰版差异时,以旗舰版产品和当前项目证据为准。
|
|
68
|
-
-
|
|
68
|
+
- 项目存在 `code/` 目录时,生产代码应跟随 `code/` 下真实结构。
|
|
69
69
|
|
|
70
70
|
选择 `enterprise`:
|
|
71
71
|
|
|
@@ -87,14 +87,14 @@ KCode 会阻止 unknown run 离开 `discuss`。
|
|
|
87
87
|
|
|
88
88
|
### Header 和 `/kd-status` 不一致怎么办?
|
|
89
89
|
|
|
90
|
-
|
|
90
|
+
刷新门禁:
|
|
91
91
|
|
|
92
92
|
```text
|
|
93
93
|
/kd-gate
|
|
94
94
|
/kd-status
|
|
95
95
|
```
|
|
96
96
|
|
|
97
|
-
|
|
97
|
+
刚升级过 KCode 时,重新启动:
|
|
98
98
|
|
|
99
99
|
```powershell
|
|
100
100
|
kcode start
|
package/docs/TROUBLESHOOTING.md
CHANGED
|
@@ -15,7 +15,7 @@ Warning: No models available.
|
|
|
15
15
|
/model
|
|
16
16
|
```
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
或设置供应商 API Key:
|
|
19
19
|
|
|
20
20
|
```powershell
|
|
21
21
|
$env:OPENAI_API_KEY="sk-..."
|
|
@@ -37,7 +37,7 @@ kcode start
|
|
|
37
37
|
/kd-gate
|
|
38
38
|
```
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
产品无法判断时,查看 [产品画像确认](PRODUCT_PROFILE.md)。
|
|
41
41
|
|
|
42
42
|
## ship 阶段门禁阻塞
|
|
43
43
|
|
|
@@ -72,13 +72,13 @@ kcode version
|
|
|
72
72
|
type .pi\settings.json
|
|
73
73
|
```
|
|
74
74
|
|
|
75
|
-
|
|
75
|
+
`packages` 中存在多条 `kcode-pi` 路径时:
|
|
76
76
|
|
|
77
77
|
```powershell
|
|
78
78
|
kcode repair
|
|
79
79
|
```
|
|
80
80
|
|
|
81
|
-
|
|
81
|
+
使用 nvm 时,Windows 上每个 Node 版本都有独立全局 npm 安装目录。切换 Node 后重新安装并初始化:
|
|
82
82
|
|
|
83
83
|
```powershell
|
|
84
84
|
npm install -g kcode-pi@latest
|
|
@@ -87,7 +87,7 @@ kcode init
|
|
|
87
87
|
|
|
88
88
|
## npm install 没有更新
|
|
89
89
|
|
|
90
|
-
|
|
90
|
+
确认 registry 上的版本:
|
|
91
91
|
|
|
92
92
|
```powershell
|
|
93
93
|
npm view kcode-pi version
|
|
@@ -102,7 +102,7 @@ npm install -g kcode-pi@latest
|
|
|
102
102
|
kcode version
|
|
103
103
|
```
|
|
104
104
|
|
|
105
|
-
|
|
105
|
+
出现 `EEXIST: file already exists ... kcode.cmd` 时,确认旧 shim:
|
|
106
106
|
|
|
107
107
|
```powershell
|
|
108
108
|
npm root -g
|
|
@@ -124,9 +124,9 @@ ENOENT: no such file or directory, access 'D:\mnt\d\projects\xxx\src\main\java\F
|
|
|
124
124
|
|
|
125
125
|
正确做法:
|
|
126
126
|
|
|
127
|
-
-
|
|
127
|
+
- 默认使用项目相对路径。
|
|
128
128
|
- 必须用绝对路径时,使用 `D:\projects\xxx\...`。
|
|
129
|
-
-
|
|
129
|
+
- 禁止使用 `/mnt/d/...` 或 `/d/...`。
|
|
130
130
|
|
|
131
131
|
刷新项目上下文:
|
|
132
132
|
|