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