kcode-pi 0.1.1 → 0.1.4
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 +353 -171
- package/dist/cli/kcode.d.ts +1 -0
- package/dist/cli/kcode.js +40 -6
- package/dist/context/project-context.d.ts +9 -0
- package/dist/context/project-context.js +192 -0
- package/docs/DEVELOPMENT.md +162 -0
- package/docs/KCODE_DISTRIBUTION.md +1 -1
- package/extensions/kingdee-harness.ts +112 -0
- package/extensions/kingdee-tools.ts +5 -2
- package/knowledge/enterprise-python/python-plugin.md +134 -0
- package/package.json +2 -2
- package/skills/kd-cosmic-dev/SKILL.md +2 -0
- package/skills/kd-cosmic-unittest/SKILL.md +1 -0
- package/skills/kd-enterprise-python-plugin/SKILL.md +43 -0
- package/skills/kd-execute/SKILL.md +6 -2
- package/skills/kd-gen/SKILL.md +1 -0
- package/skills/kd-plan/SKILL.md +7 -1
- package/src/cli/kcode.ts +43 -6
- package/src/context/project-context.ts +214 -0
- package/src/harness/artifacts.ts +35 -1
- package/src/harness/gates.ts +29 -0
- package/src/harness/path-policy.ts +83 -0
- package/src/harness/plan-steps.ts +79 -0
- package/src/harness/tdd-policy.ts +62 -0
- package/src/knowledge/types.ts +1 -1
- package/src/product/profile.ts +29 -5
- package/src/rules/checker.ts +1 -1
- package/src/tools/build-debug.ts +5 -0
package/README.md
CHANGED
|
@@ -1,191 +1,257 @@
|
|
|
1
|
-
#
|
|
1
|
+
# KCode
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
KCode 是面向金蝶开发的 Pi 工作环境启动器。安装后会提供全局命令 `kcode`,自动携带 Pi CLI,并在当前业务项目中加载金蝶专属工具、skills、prompts、themes 和知识库。
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
- 金蝶专属 tools、skills、prompts、themes。
|
|
8
|
-
- 金蝶 Harness Engineering 工作流。
|
|
9
|
-
- 官方金蝶 skills 的 vendor 资源和 Pi 适配器。
|
|
10
|
-
- `kcode` 企业入口,用项目级 `.pi/settings.json` 加载 KCode package,并通过随包 Pi CLI 启动工作环境。
|
|
11
|
-
|
|
12
|
-
## 当前定位
|
|
13
|
-
|
|
14
|
-
当前仓库是:
|
|
5
|
+
KCode 不要求你单独安装全局 `pi` 命令,也不会修改用户全局 Pi 配置。它只维护当前项目的:
|
|
15
6
|
|
|
16
7
|
```text
|
|
17
|
-
|
|
8
|
+
.pi/settings.json
|
|
18
9
|
```
|
|
19
10
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
仓库内的 `npm run kcode -- ...` 是启动器原型,用于验证 `kcode-cli` 的设计。企业入口由两部分组成:
|
|
11
|
+
## 安装
|
|
23
12
|
|
|
24
|
-
|
|
25
|
-
kcode-pi 金蝶 Pi package,本仓库
|
|
26
|
-
kcode-cli 企业启动器,自动携带 Pi CLI,并启动 KCode 工作环境
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
## 环境要求
|
|
13
|
+
环境要求:
|
|
30
14
|
|
|
31
15
|
- Node.js `>=22.19.0`
|
|
32
16
|
- npm
|
|
33
|
-
-
|
|
17
|
+
- Windows 推荐使用 Windows Terminal
|
|
34
18
|
|
|
35
|
-
|
|
19
|
+
全局安装:
|
|
20
|
+
|
|
21
|
+
```powershell
|
|
22
|
+
npm install -g kcode-pi
|
|
23
|
+
```
|
|
36
24
|
|
|
37
|
-
|
|
25
|
+
如果企业内发布包名不是 `kcode-pi`,请替换为实际包名。全局命令仍是:
|
|
38
26
|
|
|
39
27
|
```powershell
|
|
40
|
-
|
|
28
|
+
kcode
|
|
41
29
|
```
|
|
42
30
|
|
|
43
|
-
##
|
|
31
|
+
## 首次使用
|
|
44
32
|
|
|
45
|
-
|
|
33
|
+
进入你的业务项目根目录,不是 KCode 源码目录:
|
|
46
34
|
|
|
47
35
|
```powershell
|
|
48
|
-
|
|
36
|
+
cd E:\projects\your-business-project
|
|
49
37
|
```
|
|
50
38
|
|
|
51
|
-
|
|
39
|
+
初始化项目级 KCode 配置:
|
|
52
40
|
|
|
53
41
|
```powershell
|
|
54
42
|
kcode init
|
|
55
43
|
```
|
|
56
44
|
|
|
57
|
-
|
|
45
|
+
`init` 会登记 KCode package,并生成项目常驻上下文:
|
|
46
|
+
|
|
47
|
+
```text
|
|
48
|
+
.pi/kd/PROJECT_CONTEXT.md
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
如果项目结构后来变化,手动刷新:
|
|
52
|
+
|
|
53
|
+
```powershell
|
|
54
|
+
kcode context --refresh
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
检查环境:
|
|
58
58
|
|
|
59
59
|
```powershell
|
|
60
60
|
kcode doctor
|
|
61
61
|
```
|
|
62
62
|
|
|
63
|
-
|
|
63
|
+
启动工作环境:
|
|
64
64
|
|
|
65
65
|
```powershell
|
|
66
66
|
kcode start
|
|
67
67
|
```
|
|
68
68
|
|
|
69
|
-
|
|
69
|
+
`kcode start` 会先确保 `.pi/settings.json` 已登记当前安装的 KCode package,然后启动随包 Pi CLI。
|
|
70
|
+
|
|
71
|
+
## 配置模型
|
|
72
|
+
|
|
73
|
+
首次启动 Pi 时,如果看到:
|
|
74
|
+
|
|
75
|
+
```text
|
|
76
|
+
Warning: No models available.
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
说明还没有配置模型供应商。进入 `kcode start` 后输入:
|
|
80
|
+
|
|
81
|
+
```text
|
|
82
|
+
/login
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
选择供应商并登录或填写 API Key。常见选择包括:
|
|
70
86
|
|
|
71
|
-
|
|
87
|
+
```text
|
|
88
|
+
ChatGPT Plus/Pro (Codex)
|
|
89
|
+
Claude Pro/Max
|
|
90
|
+
GitHub Copilot
|
|
91
|
+
OpenAI
|
|
92
|
+
Anthropic
|
|
93
|
+
DeepSeek
|
|
94
|
+
Gemini
|
|
95
|
+
```
|
|
72
96
|
|
|
73
|
-
|
|
97
|
+
也可以在 PowerShell 中设置环境变量后再启动:
|
|
74
98
|
|
|
75
99
|
```powershell
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
npm install
|
|
100
|
+
$env:OPENAI_API_KEY="sk-..."
|
|
101
|
+
kcode start
|
|
79
102
|
```
|
|
80
103
|
|
|
81
|
-
|
|
104
|
+
或:
|
|
82
105
|
|
|
83
106
|
```powershell
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
npm run kcode -- start
|
|
107
|
+
$env:ANTHROPIC_API_KEY="sk-ant-..."
|
|
108
|
+
kcode start
|
|
87
109
|
```
|
|
88
110
|
|
|
89
|
-
|
|
111
|
+
登录或配置完成后,可在 Pi 中使用:
|
|
112
|
+
|
|
113
|
+
```text
|
|
114
|
+
/model
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
选择模型。
|
|
118
|
+
|
|
119
|
+
### 自定义模型供应商
|
|
90
120
|
|
|
91
|
-
|
|
121
|
+
如果你的模型服务是企业网关、代理服务、Ollama、LM Studio、vLLM,或其他 OpenAI-compatible endpoint,不需要改 KCode。Pi 原生支持通过用户级配置文件添加自定义供应商:
|
|
92
122
|
|
|
93
123
|
```powershell
|
|
94
|
-
|
|
124
|
+
notepad $env:USERPROFILE\.pi\agent\models.json
|
|
95
125
|
```
|
|
96
126
|
|
|
97
|
-
|
|
127
|
+
写入或合并:
|
|
98
128
|
|
|
99
|
-
|
|
129
|
+
```json
|
|
130
|
+
{
|
|
131
|
+
"providers": {
|
|
132
|
+
"corp-ai": {
|
|
133
|
+
"baseUrl": "https://ai.example.com/v1",
|
|
134
|
+
"api": "openai-completions",
|
|
135
|
+
"apiKey": "$CORP_AI_API_KEY",
|
|
136
|
+
"compat": {
|
|
137
|
+
"supportsDeveloperRole": false,
|
|
138
|
+
"supportsReasoningEffort": false
|
|
139
|
+
},
|
|
140
|
+
"models": [
|
|
141
|
+
{
|
|
142
|
+
"id": "corp-coder",
|
|
143
|
+
"name": "Corp Coder",
|
|
144
|
+
"reasoning": false,
|
|
145
|
+
"input": ["text"],
|
|
146
|
+
"contextWindow": 128000,
|
|
147
|
+
"maxTokens": 16384,
|
|
148
|
+
"cost": {
|
|
149
|
+
"input": 0,
|
|
150
|
+
"output": 0,
|
|
151
|
+
"cacheRead": 0,
|
|
152
|
+
"cacheWrite": 0
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
]
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
再设置 API Key 并启动:
|
|
100
162
|
|
|
101
163
|
```powershell
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
npm run smoke:knowledge
|
|
105
|
-
npm run smoke:checker
|
|
106
|
-
npm run smoke:harness
|
|
107
|
-
npm run smoke:official
|
|
108
|
-
npm run smoke:build-debug
|
|
109
|
-
npm run smoke:package
|
|
110
|
-
npm run smoke:kcode-cli
|
|
164
|
+
$env:CORP_AI_API_KEY="sk-..."
|
|
165
|
+
kcode start
|
|
111
166
|
```
|
|
112
167
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
- TypeScript 类型检查。
|
|
116
|
-
- 金蝶知识库搜索。
|
|
117
|
-
- `kd_check` 静态规则。
|
|
118
|
-
- Harness 阶段和门禁。
|
|
119
|
-
- 官方脚本适配器。
|
|
120
|
-
- 构建/调试诊断。
|
|
121
|
-
- package manifest、skills、vendor 文件完整性。
|
|
122
|
-
- `kcode` 项目级入口逻辑。
|
|
168
|
+
进入后使用:
|
|
123
169
|
|
|
124
|
-
|
|
170
|
+
```text
|
|
171
|
+
/model
|
|
172
|
+
```
|
|
125
173
|
|
|
126
|
-
|
|
174
|
+
选择 `corp-ai/corp-coder`。也可以直接指定:
|
|
127
175
|
|
|
128
176
|
```powershell
|
|
129
|
-
kcode
|
|
130
|
-
kcode doctor
|
|
131
|
-
kcode start
|
|
177
|
+
kcode start --provider corp-ai --model corp-coder
|
|
132
178
|
```
|
|
133
179
|
|
|
180
|
+
说明:
|
|
181
|
+
|
|
182
|
+
- `/login` 用于 Pi 内置供应商或扩展注册过登录流程的供应商。
|
|
183
|
+
- 任意自定义 endpoint/API key 推荐写 `~\.pi\agent\models.json`。
|
|
184
|
+
- `api` 常用值是 `openai-completions`,适合大多数 OpenAI-compatible 服务。
|
|
185
|
+
- 如果服务支持 Anthropic Messages 或 Google Generative AI,可按 Pi 文档改为对应 API 类型。
|
|
186
|
+
|
|
187
|
+
## 常用命令
|
|
188
|
+
|
|
134
189
|
### `kcode init`
|
|
135
190
|
|
|
136
|
-
|
|
191
|
+
初始化或更新当前项目的 `.pi/settings.json`。
|
|
137
192
|
|
|
138
193
|
```powershell
|
|
139
194
|
kcode init
|
|
140
195
|
```
|
|
141
196
|
|
|
142
|
-
|
|
197
|
+
它只修改当前项目,不写用户全局 Pi 配置。`kcode-pi@0.1.2` 起,`init` 会自动清理同名旧 KCode package 路径,避免 Node 版本切换后重复加载。
|
|
198
|
+
|
|
199
|
+
同时会确保项目常驻上下文存在:
|
|
143
200
|
|
|
144
201
|
```text
|
|
145
|
-
.pi/
|
|
202
|
+
.pi/kd/PROJECT_CONTEXT.md
|
|
146
203
|
```
|
|
147
204
|
|
|
148
|
-
|
|
205
|
+
这份文件记录项目根目录、真实源码根、构建文件、模块线索和 KCode 持久约束。KCode Harness 会在每次对话继续时读取它,降低中断后丢失项目结构上下文的风险。
|
|
149
206
|
|
|
150
|
-
|
|
207
|
+
### `kcode context`
|
|
151
208
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
}
|
|
209
|
+
生成或刷新项目常驻上下文。
|
|
210
|
+
|
|
211
|
+
```powershell
|
|
212
|
+
kcode context
|
|
213
|
+
kcode context --refresh
|
|
158
214
|
```
|
|
159
215
|
|
|
216
|
+
建议在以下情况刷新:
|
|
217
|
+
|
|
218
|
+
- 初次接入已有业务项目。
|
|
219
|
+
- 新增、移动或删除模块。
|
|
220
|
+
- 从分支切换到不同项目结构。
|
|
221
|
+
- Agent 写代码前发现 `PROJECT_CONTEXT.md` 与当前项目不一致。
|
|
222
|
+
|
|
223
|
+
项目上下文是按业务项目隔离的:
|
|
224
|
+
|
|
225
|
+
- 在 `E:\projects\a` 运行 `kcode context`,只会写 `E:\projects\a\.pi\kd\PROJECT_CONTEXT.md`。
|
|
226
|
+
- 切换到 `E:\projects\b` 后,需要在 `b` 项目下运行 `kcode init` 或 `kcode context`,不会自动携带 `a` 项目的上下文。
|
|
227
|
+
- 切回 `a` 项目后,只要 `.pi/kd/` 没有删除,原来的 `PROJECT_CONTEXT.md`、`active-run.json` 和历史 runs 都还在。
|
|
228
|
+
- 如果项目被复制、移动路径或重建工作区,建议重新运行 `kcode context --refresh`,让绝对路径和源码根重新匹配当前目录。
|
|
229
|
+
|
|
160
230
|
### `kcode doctor`
|
|
161
231
|
|
|
162
|
-
|
|
232
|
+
检查 Node、随包 Pi CLI、KCode package 路径和项目配置。
|
|
163
233
|
|
|
164
234
|
```powershell
|
|
165
235
|
kcode doctor
|
|
166
236
|
```
|
|
167
237
|
|
|
168
|
-
它会检查:
|
|
169
|
-
|
|
170
|
-
- Node 版本。
|
|
171
|
-
- 是否能找到随包 Pi CLI。
|
|
172
|
-
- KCode package 路径。
|
|
173
|
-
- 当前项目 `.pi/settings.json` 是否存在。
|
|
174
|
-
- KCode package 是否已写入项目级配置。
|
|
175
|
-
|
|
176
238
|
### `kcode start`
|
|
177
239
|
|
|
178
|
-
|
|
240
|
+
启动 KCode 工作环境。
|
|
179
241
|
|
|
180
242
|
```powershell
|
|
181
243
|
kcode start
|
|
182
244
|
```
|
|
183
245
|
|
|
184
|
-
`
|
|
246
|
+
`start` 后面的参数会原样透传给 Pi CLI,例如:
|
|
185
247
|
|
|
186
|
-
|
|
248
|
+
```powershell
|
|
249
|
+
kcode start --provider openai --model gpt-4o
|
|
250
|
+
```
|
|
187
251
|
|
|
188
|
-
|
|
252
|
+
## Pi 内 KCode 命令
|
|
253
|
+
|
|
254
|
+
进入 `kcode start` 后,可以使用以下 KCode 命令:
|
|
189
255
|
|
|
190
256
|
```text
|
|
191
257
|
/kd-start [--product product] [--version version] <goal>
|
|
@@ -196,22 +262,124 @@ kcode start
|
|
|
196
262
|
/kd-artifact [phase] [content]
|
|
197
263
|
```
|
|
198
264
|
|
|
265
|
+
典型开始方式:
|
|
266
|
+
|
|
267
|
+
```text
|
|
268
|
+
/kd-start --product flagship 实现采购订单插件
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
支持的产品画像:
|
|
272
|
+
|
|
273
|
+
```text
|
|
274
|
+
cosmic -> Cosmic 平台底座
|
|
275
|
+
cangqiong -> Cosmic / Java
|
|
276
|
+
xinghan -> Cosmic / Java
|
|
277
|
+
flagship -> Cosmic / Java
|
|
278
|
+
enterprise -> Enterprise / C#
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
企业版补充:
|
|
282
|
+
|
|
283
|
+
- 默认企业版插件按 `Enterprise / C#` 处理。
|
|
284
|
+
- 只有明确提出 `Python插件`、`IronPython`,或带企业版/BOS 语境的 `Python脚本` 时,KCode 才切换到 `Enterprise / Python(IronPython)`。
|
|
285
|
+
- Python 插件同样必须走 Harness 工作流,`.py` 写入也必须等到 `execute` 阶段。
|
|
286
|
+
|
|
199
287
|
工作流阶段:
|
|
200
288
|
|
|
201
289
|
```text
|
|
202
290
|
discuss -> spec -> plan -> execute -> verify -> ship
|
|
203
291
|
```
|
|
204
292
|
|
|
205
|
-
|
|
293
|
+
KCode 会把金蝶开发需求纳入 Harness 工作流。你可以直接输入自然语言需求;如果当前项目还没有 active run,KCode 会自动创建 run 并进入 `discuss` 阶段,而不是直接生成代码。
|
|
294
|
+
|
|
295
|
+
每次进入 Harness 时,KCode 会附带 `.pi/kd/PROJECT_CONTEXT.md`。这份上下文不会替代计划阶段的实际文件检查,但会让 Agent 在暂停、恢复、重新打开终端后仍知道当前项目的源码根、模块线索和禁止猜路径规则。
|
|
296
|
+
|
|
297
|
+
每个需求 run 的设计和执行文档会落到本地:
|
|
298
|
+
|
|
299
|
+
```text
|
|
300
|
+
.pi/kd/active-run.json
|
|
301
|
+
.pi/kd/runs/<run-id>/CONTEXT.md
|
|
302
|
+
.pi/kd/runs/<run-id>/SPEC.md
|
|
303
|
+
.pi/kd/runs/<run-id>/PLAN.md
|
|
304
|
+
.pi/kd/runs/<run-id>/EXECUTION.md
|
|
305
|
+
.pi/kd/runs/<run-id>/VERIFY.md
|
|
306
|
+
.pi/kd/runs/<run-id>/SHIP.md
|
|
307
|
+
.pi/kd/runs/<run-id>/evidence/
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
下次重新 `kcode start` 时,KCode 会读取当前项目的 active run、项目常驻上下文和已生成的阶段文档,再继续当前阶段。
|
|
311
|
+
|
|
312
|
+
阶段含义:
|
|
313
|
+
|
|
314
|
+
```text
|
|
315
|
+
discuss 梳理需求、产品版本、插件类型、目标单据/表单、生命周期和开放问题
|
|
316
|
+
spec 明确验收标准、数据对象、字段、异常、性能和风险
|
|
317
|
+
plan 检查当前项目结构,记录真实目标源码路径、待改文件、查证项和验证命令
|
|
318
|
+
execute 只实现 PLAN.md 中批准的内容
|
|
319
|
+
verify 运行检查、构建或领域验证并记录证据
|
|
320
|
+
ship 汇总变更、验证证据、风险和后续事项
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
代码写入受门禁控制:
|
|
324
|
+
|
|
325
|
+
- 未进入 `execute` 阶段时,KCode 会阻止写入 Java/XML/SQL 等产品代码。
|
|
326
|
+
- 进入 `execute` 前必须已有 `PLAN.md` 和必要证据。
|
|
327
|
+
- `PLAN.md` 必须包含 `## Execution Steps`,并用 `- [ ] STEP-001: ...` 格式拆分可跟踪步骤。
|
|
328
|
+
- `PLAN.md` 必须包含 `## TDD / Red-Green Checks`,声明红灯证据、绿灯证据和测试/检查命令。
|
|
329
|
+
- 红绿检查不等于必须写 JUnit。金蝶项目不要为了满足门禁引入额外 jar 或测试框架。
|
|
330
|
+
- 写生产源码前必须已有 `evidence/tdd-red.md`,内容可以是 API/基类/方法签名检查、元数据检查、编译检查、既有测试框架或外部接口最小验证的失败输出。
|
|
331
|
+
- 进入 `execute` 后,只允许写入 `PLAN.md` 明确列出的源码文件;如果临时发现要改新文件,必须先回到 plan 更新 `PLAN.md`。
|
|
332
|
+
- 进入 `verify` 前,`EXECUTION.md` 必须逐个完成 `PLAN.md` 中的所有 `STEP-###`,并为每个步骤记录真实存在的 `evidence/...` 文件;同时必须已有 `evidence/tdd-red.md` 和 `evidence/tdd-green.md`。
|
|
333
|
+
- 旗舰版项目必须先检查当前项目结构。若存在 `code/`,跟随 `code/` 下的实际组织;若不存在,必须在 `PLAN.md` 记录实际源码根或目标文件。
|
|
334
|
+
- 不允许凭空写 demo、sample、scaffold,或在不了解项目结构时新建猜测目录。
|
|
335
|
+
|
|
336
|
+
示例计划步骤:
|
|
337
|
+
|
|
338
|
+
```markdown
|
|
339
|
+
## Execution Steps
|
|
340
|
+
|
|
341
|
+
- [ ] STEP-001: 检查现有插件基类、包名和目标字段。
|
|
342
|
+
- [ ] STEP-002: 运行 API/元数据/编译等红灯检查并记录证据。
|
|
343
|
+
- [ ] STEP-003: 修改 `code/scm/plugin/src/main/java/.../PurchaseOrderPlugin.java`。
|
|
344
|
+
- [ ] STEP-004: 运行同一类绿灯检查并记录证据。
|
|
345
|
+
- [ ] STEP-005: 记录变更文件和验证证据。
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
示例红绿检查:
|
|
349
|
+
|
|
350
|
+
```markdown
|
|
351
|
+
## TDD / Red-Green Checks
|
|
352
|
+
|
|
353
|
+
- Red evidence: evidence/tdd-red.md
|
|
354
|
+
- Green evidence: evidence/tdd-green.md
|
|
355
|
+
- Red/green command or tool: kd_cosmic_api detail / kd_cosmic_metadata / kd_check / build
|
|
356
|
+
- Do not add third-party test jars or frameworks only for this gate.
|
|
357
|
+
```
|
|
358
|
+
|
|
359
|
+
示例执行记录:
|
|
360
|
+
|
|
361
|
+
```markdown
|
|
362
|
+
## Step Results
|
|
363
|
+
|
|
364
|
+
- [x] STEP-001: completed. Evidence: evidence/step-001.md
|
|
365
|
+
- [x] STEP-002: completed. Evidence: evidence/step-002.md
|
|
366
|
+
- [x] STEP-003: completed. Evidence: evidence/step-003.md
|
|
367
|
+
- [x] STEP-004: completed. Evidence: evidence/tdd-green.md
|
|
368
|
+
- [x] STEP-005: completed. Evidence: evidence/step-005.md
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
如果 LLM 跳过步骤、没有记录 evidence,或只是口头声明完成,KCode 不允许进入 `verify`。
|
|
372
|
+
|
|
373
|
+
运行状态保存在当前业务项目:
|
|
206
374
|
|
|
207
375
|
```text
|
|
208
376
|
.pi/kd/active-run.json
|
|
209
377
|
.pi/kd/runs/<run-id>/
|
|
210
378
|
```
|
|
211
379
|
|
|
212
|
-
##
|
|
380
|
+
## 内置金蝶工具
|
|
213
381
|
|
|
214
|
-
|
|
382
|
+
KCode 会向 Pi 注册这些金蝶工具:
|
|
215
383
|
|
|
216
384
|
```text
|
|
217
385
|
kd_plan_status 查看当前 Harness run、阶段、产物和门禁
|
|
@@ -226,133 +394,147 @@ kd_build 按产品画像执行或 dry-run 构建
|
|
|
226
394
|
kd_debug 分析金蝶日志和堆栈
|
|
227
395
|
```
|
|
228
396
|
|
|
229
|
-
##
|
|
397
|
+
## 升级
|
|
230
398
|
|
|
231
|
-
|
|
399
|
+
查看当前安装版本:
|
|
232
400
|
|
|
233
|
-
```
|
|
234
|
-
|
|
235
|
-
cangqiong -> Cosmic / Java
|
|
236
|
-
xinghan -> Cosmic / Java
|
|
237
|
-
flagship -> Cosmic / Java
|
|
238
|
-
enterprise -> Enterprise / C#
|
|
401
|
+
```powershell
|
|
402
|
+
npm ls -g kcode-pi --depth=0
|
|
239
403
|
```
|
|
240
404
|
|
|
241
|
-
|
|
405
|
+
查看 npm 最新版本:
|
|
242
406
|
|
|
243
|
-
|
|
407
|
+
```powershell
|
|
408
|
+
npm view kcode-pi version
|
|
409
|
+
```
|
|
244
410
|
|
|
245
|
-
|
|
411
|
+
升级到最新版本:
|
|
246
412
|
|
|
247
|
-
```
|
|
248
|
-
|
|
413
|
+
```powershell
|
|
414
|
+
npm install -g kcode-pi@latest
|
|
415
|
+
```
|
|
416
|
+
|
|
417
|
+
升级后建议在业务项目根目录重新执行:
|
|
418
|
+
|
|
419
|
+
```powershell
|
|
420
|
+
kcode init
|
|
421
|
+
kcode doctor
|
|
249
422
|
```
|
|
250
423
|
|
|
251
|
-
|
|
424
|
+
## nvm 与 Node 版本切换
|
|
425
|
+
|
|
426
|
+
如果使用 nvm,Windows 上每个 Node 版本都有独立的全局 npm 安装目录,例如:
|
|
252
427
|
|
|
253
428
|
```text
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
kingdee-cosmic-reviewer
|
|
257
|
-
cosmic-unittest
|
|
429
|
+
C:\Users\Administrator\AppData\Local\nvm\v24.16.0\node_modules\kcode-pi
|
|
430
|
+
C:\Users\Administrator\AppData\Local\nvm\v22.19.0\node_modules\kcode-pi
|
|
258
431
|
```
|
|
259
432
|
|
|
260
|
-
|
|
433
|
+
切换 Node 版本并重新全局安装 KCode 后,在业务项目根目录重新执行:
|
|
261
434
|
|
|
262
435
|
```powershell
|
|
263
|
-
|
|
436
|
+
kcode init
|
|
264
437
|
```
|
|
265
438
|
|
|
266
|
-
|
|
439
|
+
`kcode-pi@0.1.2` 起会自动清理 `.pi/settings.json` 中同名旧路径,只保留当前 Node 版本下的安装路径。
|
|
267
440
|
|
|
268
|
-
|
|
441
|
+
如果旧版本已经出现工具冲突:
|
|
269
442
|
|
|
270
443
|
```text
|
|
271
|
-
.pi
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
444
|
+
Tool "kd_search" conflicts with ...\nvm\v22.19.0\node_modules\kcode-pi\extensions\kingdee-tools.ts
|
|
445
|
+
```
|
|
446
|
+
|
|
447
|
+
打开当前业务项目的配置:
|
|
448
|
+
|
|
449
|
+
```powershell
|
|
450
|
+
notepad .pi\settings.json
|
|
275
451
|
```
|
|
276
452
|
|
|
277
|
-
|
|
453
|
+
删除旧 Node 版本下的 `kcode-pi` 路径,只保留当前 `nvm current` 对应的那一条,然后运行:
|
|
278
454
|
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
- KSQL/数据修复交付进入 `ship` 前必须有 metadata 和 lint 证据。
|
|
455
|
+
```powershell
|
|
456
|
+
kcode start
|
|
457
|
+
```
|
|
283
458
|
|
|
284
|
-
##
|
|
459
|
+
## 常见问题
|
|
285
460
|
|
|
286
|
-
|
|
461
|
+
### 找不到模型
|
|
462
|
+
|
|
463
|
+
现象:
|
|
287
464
|
|
|
288
465
|
```text
|
|
289
|
-
|
|
466
|
+
Warning: No models available.
|
|
290
467
|
```
|
|
291
468
|
|
|
292
|
-
|
|
469
|
+
处理:
|
|
293
470
|
|
|
294
471
|
```text
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
kd-cosmic-unittest
|
|
298
|
-
kd-ksql
|
|
299
|
-
kd-gen
|
|
300
|
-
kd-check
|
|
301
|
-
kd-plan
|
|
302
|
-
kd-execute
|
|
303
|
-
kd-verify
|
|
304
|
-
kd-ship
|
|
472
|
+
/login
|
|
473
|
+
/model
|
|
305
474
|
```
|
|
306
475
|
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
## 打包策略
|
|
476
|
+
或先设置供应商 API Key,再运行 `kcode start`。
|
|
310
477
|
|
|
311
|
-
|
|
478
|
+
### 终端输入逐字换行或选择列表有残影
|
|
312
479
|
|
|
313
|
-
|
|
480
|
+
这通常是 Pi TUI 与当前终端/Node/TTY 环境的兼容问题。优先使用:
|
|
314
481
|
|
|
315
|
-
-
|
|
316
|
-
-
|
|
317
|
-
-
|
|
318
|
-
- 只有离线交付或强依赖时,才考虑 `dependencies` + `bundledDependencies` 内置。
|
|
482
|
+
- Windows Terminal
|
|
483
|
+
- Node.js `22.19.0` 或更新的 Node 22 LTS
|
|
484
|
+
- 宽度正常的终端窗口
|
|
319
485
|
|
|
320
|
-
|
|
486
|
+
检查终端尺寸:
|
|
321
487
|
|
|
322
|
-
```
|
|
323
|
-
|
|
488
|
+
```powershell
|
|
489
|
+
node -e "console.log({isTTY:process.stdout.isTTY, columns:process.stdout.columns, rows:process.stdout.rows, term:process.env.TERM})"
|
|
324
490
|
```
|
|
325
491
|
|
|
326
|
-
|
|
492
|
+
如果 `columns` 很小或异常,重新打开 Windows Terminal,或尝试:
|
|
327
493
|
|
|
328
|
-
|
|
494
|
+
```powershell
|
|
495
|
+
$env:TERM="xterm-256color"
|
|
496
|
+
$env:COLORTERM="truecolor"
|
|
497
|
+
kcode start
|
|
498
|
+
```
|
|
329
499
|
|
|
330
|
-
|
|
500
|
+
也可以在 Pi 全局设置中启用兼容项:
|
|
331
501
|
|
|
332
502
|
```powershell
|
|
333
|
-
|
|
334
|
-
npm run build:cli
|
|
335
|
-
npm run smoke:package
|
|
336
|
-
npm pack --dry-run
|
|
503
|
+
notepad $env:USERPROFILE\.pi\agent\settings.json
|
|
337
504
|
```
|
|
338
505
|
|
|
339
|
-
|
|
506
|
+
写入或合并:
|
|
507
|
+
|
|
508
|
+
```json
|
|
509
|
+
{
|
|
510
|
+
"terminal": {
|
|
511
|
+
"clearOnShrink": true
|
|
512
|
+
},
|
|
513
|
+
"showHardwareCursor": true
|
|
514
|
+
}
|
|
515
|
+
```
|
|
516
|
+
|
|
517
|
+
### 仍然加载旧版本 KCode
|
|
518
|
+
|
|
519
|
+
先检查当前项目配置:
|
|
340
520
|
|
|
341
521
|
```powershell
|
|
342
|
-
|
|
522
|
+
type .pi\settings.json
|
|
343
523
|
```
|
|
344
524
|
|
|
345
|
-
|
|
525
|
+
如果 `packages` 中有多条 `kcode-pi` 路径,运行:
|
|
346
526
|
|
|
347
|
-
|
|
527
|
+
```powershell
|
|
528
|
+
kcode init
|
|
529
|
+
```
|
|
348
530
|
|
|
349
|
-
|
|
350
|
-
- 更深层的 reviewer 语义规则、HTML 审查报告、自动 SQL 产物生成仍在后续计划中。
|
|
531
|
+
如果使用的是 `0.1.1` 或更早版本,请手工删除旧路径,或升级到最新版。
|
|
351
532
|
|
|
352
|
-
##
|
|
533
|
+
## 更多文档
|
|
353
534
|
|
|
354
|
-
|
|
535
|
+
维护者和开发文档放在:
|
|
355
536
|
|
|
356
537
|
```text
|
|
357
|
-
|
|
538
|
+
docs/DEVELOPMENT.md
|
|
539
|
+
docs/KCODE_DISTRIBUTION.md
|
|
358
540
|
```
|