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 CHANGED
@@ -1,191 +1,258 @@
1
- # KCodeV2
1
+ # KCode
2
2
 
3
- KCodeV2 是面向金蝶开发的 Pi package 和企业启动器原型。
3
+ KCode 是面向金蝶开发的 Pi 工作环境启动器。安装后会提供全局命令 `kcode`,自动携带 Pi CLI,并在当前业务项目中加载金蝶专属工具、skills、prompts、themes 和知识库。
4
4
 
5
- 它不 fork Pi,也不替换 Pi 生态。当前仓库主要提供:
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
- kcode-pi
8
+ .pi/settings.json
18
9
  ```
19
10
 
20
- 也就是金蝶 Pi package,同时包含 `kcode-cli` 的仓库内原型。
11
+ ## 安装
21
12
 
22
- 仓库内的 `npm run kcode -- ...` 是启动器原型,用于验证 `kcode-cli` 的设计。企业入口由两部分组成:
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
- - Pi CLI KCode 运行依赖自动携带
17
+ - Windows 推荐使用 Windows Terminal
18
+ - 不需要安装 Python。KCode 随包工具使用 Node/TypeScript 实现;只有你自己的业务项目或外部脚本明确依赖 Python 时才需要另行安装。
34
19
 
35
- 当前机器如果没有全局 `pi` 命令,`kcode start` 会优先使用随包的 Pi CLI。
20
+ 全局安装:
36
21
 
37
- 检查 KCode 能否找到 Pi CLI:
22
+ ```powershell
23
+ npm install -g kcode-pi
24
+ ```
25
+
26
+ 如果企业内发布包名不是 `kcode-pi`,请替换为实际包名。全局命令仍是:
38
27
 
39
28
  ```powershell
40
- npm run kcode -- doctor
29
+ kcode
41
30
  ```
42
31
 
43
- ## 快速开始
32
+ ## 首次使用
44
33
 
45
- 发布到 npm 后,开发者可以直接全局安装:
34
+ 进入你的业务项目根目录,不是 KCode 源码目录:
46
35
 
47
36
  ```powershell
48
- npm install -g kcode-pi
37
+ cd E:\projects\your-business-project
49
38
  ```
50
39
 
51
- 安装后会得到全局 `kcode` 命令。进入业务项目根目录,初始化 KCode 工作环境:
40
+ 初始化项目级 KCode 配置:
52
41
 
53
42
  ```powershell
54
43
  kcode init
55
44
  ```
56
45
 
57
- 检查 Node、随包 Pi CLI 和项目级配置:
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
- 启动 KCode 工作环境:
64
+ 启动工作环境:
64
65
 
65
66
  ```powershell
66
67
  kcode start
67
68
  ```
68
69
 
69
- 如果发布时改用 `kcode-cli` `@kingdee/kcode-cli` 包名,把安装命令中的 `kcode-pi` 替换为实际包名即可;全局命令仍是 `kcode`。
70
+ `kcode start` 会先确保 `.pi/settings.json` 已登记当前安装的 KCode package,然后启动随包 Pi CLI。
70
71
 
71
- ## 源码开发
72
+ ## 配置模型
72
73
 
73
- 需要修改 KCodeV2 本身时,再 clone 仓库并安装依赖:
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
- git clone <KCodeV2仓库地址>
77
- cd KCodeV2
78
- npm install
101
+ $env:OPENAI_API_KEY="sk-..."
102
+ kcode start
79
103
  ```
80
104
 
81
- 源码仓库内可以用 npm script 调试同一个入口:
105
+ 或:
82
106
 
83
107
  ```powershell
84
- npm run kcode -- doctor
85
- npm run kcode -- init
86
- npm run kcode -- start
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
- npm install
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
- npm run check
103
- npm run build:cli
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
- 这些 smoke 分别验证:
114
-
115
- - TypeScript 类型检查。
116
- - 金蝶知识库搜索。
117
- - `kd_check` 静态规则。
118
- - Harness 阶段和门禁。
119
- - 官方脚本适配器。
120
- - 构建/调试诊断。
121
- - package manifest、skills、vendor 文件完整性。
122
- - `kcode` 项目级入口逻辑。
169
+ 进入后使用:
123
170
 
124
- ## KCode 企业入口原型
171
+ ```text
172
+ /model
173
+ ```
125
174
 
126
- 当前仓库提供 `kcode` 命令。发布后可直接运行全局命令;源码调试时使用 `npm run kcode -- ...`。它不会写用户全局 Pi 配置,只管理当前项目的 `.pi/settings.json`:
175
+ 选择 `corp-ai/corp-coder`。也可以直接指定:
127
176
 
128
177
  ```powershell
129
- kcode init
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
- 初始化当前项目的 Pi 配置:
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/settings.json
203
+ .pi/kd/PROJECT_CONTEXT.md
146
204
  ```
147
205
 
148
- 不会修改用户全局 Pi 配置。
206
+ 这份文件记录项目根目录、真实源码根、构建文件、模块线索和 KCode 持久约束。KCode Harness 会在每次对话继续时读取它,降低中断后丢失项目结构上下文的风险。
149
207
 
150
- 生成内容会把当前 KCodeV2 package 加入项目级 packages,例如:
208
+ ### `kcode context`
151
209
 
152
- ```json
153
- {
154
- "packages": [
155
- "E:\\projects\\kingdee\\KCodeV2"
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
- 初始化项目配置后启动 KCode 工作环境:
241
+ 启动 KCode 工作环境。
179
242
 
180
243
  ```powershell
181
244
  kcode start
182
245
  ```
183
246
 
184
- `kcode start` 会先写入项目级 `.pi/settings.json`,再优先通过随包 `@earendil-works/pi-coding-agent` 的 CLI 启动 Pi;只有随包 CLI 不存在时才回退全局 `pi`。传给 `start` 的后续参数会原样透传给 Pi CLI。
247
+ `start` 后面的参数会原样透传给 Pi CLI,例如:
185
248
 
186
- ## Pi 内使用方式
249
+ ```powershell
250
+ kcode start --provider openai --model gpt-4o
251
+ ```
252
+
253
+ ## Pi 内 KCode 命令
187
254
 
188
- 安装到 Pi 后,KCodeV2 提供以下命令:
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
- KCodeV2 会区分金蝶产品和技术栈:
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
- ```text
234
- cosmic -> Cosmic 平台底座
235
- cangqiong -> Cosmic / Java
236
- xinghan -> Cosmic / Java
237
- flagship -> Cosmic / Java
238
- enterprise -> Enterprise / C#
405
+ ## 升级
406
+
407
+ 查看当前安装版本:
408
+
409
+ ```powershell
410
+ npm ls -g kcode-pi --depth=0
239
411
  ```
240
412
 
241
- 未知产品不能离开 `discuss` 阶段。不要把 Cosmic Java API 和 Enterprise C# API 混用。
413
+ 查看 npm 最新版本:
242
414
 
243
- ## 官方 skills 资源
415
+ ```powershell
416
+ npm view kcode-pi version
417
+ ```
244
418
 
245
- 官方金蝶 skills 以 vendor 形式保存在:
419
+ 升级到最新版本:
246
420
 
247
- ```text
248
- vendor/kingdee-skills
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
- ok-cosmic
255
- ok-ksql
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
- 运行时默认使用包内 vendor 目录。本地开发可通过环境变量覆盖:
441
+ 切换 Node 版本并重新全局安装 KCode 后,在业务项目根目录重新执行:
261
442
 
262
443
  ```powershell
263
- $env:KCODE_KINGDEE_SKILLS_ROOT="E:\projects\kingdee\skills"
444
+ kcode init
264
445
  ```
265
446
 
266
- ## 官方证据与门禁
447
+ `kcode-pi@0.1.2` 起会自动清理 `.pi/settings.json` 中同名旧路径,只保留当前 Node 版本下的安装路径。
267
448
 
268
- 官方工具在存在 active run 时会写入证据:
449
+ 如果旧版本已经出现工具冲突:
269
450
 
270
451
  ```text
271
- .pi/kd/runs/<run-id>/evidence/cosmic-config.txt
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
- - Cosmic 体系进入 `execute` 前必须有配置证据。
280
- - `PLAN.md` 声明字段/元数据验证时,进入 `execute` 前必须有 metadata 证据。
281
- - `PLAN.md` 声明 API/方法签名验证时,进入 `execute` 前必须有 API 证据。
282
- - KSQL/数据修复交付进入 `ship` 前必须有 metadata 和 lint 证据。
457
+ ```powershell
458
+ notepad .pi\settings.json
459
+ ```
283
460
 
284
- ## Skills
461
+ 删除旧 Node 版本下的 `kcode-pi` 路径,只保留当前 `nvm current` 对应的那一条,然后运行:
285
462
 
286
- Pi-native skills 位于:
463
+ ```powershell
464
+ kcode start
465
+ ```
466
+
467
+ ## 常见问题
468
+
469
+ ### 找不到模型
470
+
471
+ 现象:
287
472
 
288
473
  ```text
289
- skills/
474
+ Warning: No models available.
290
475
  ```
291
476
 
292
- 核心金蝶 skills:
477
+ 处理:
293
478
 
294
479
  ```text
295
- kd-cosmic-dev
296
- kd-cosmic-review
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
- 当前不内置第三方 Pi packages。
488
+ 这通常是 Pi TUI 与当前终端/Node/TTY 环境的兼容问题。优先使用:
312
489
 
313
- 推荐策略:
490
+ - Windows Terminal
491
+ - Node.js `22.19.0` 或更新的 Node 22 LTS
492
+ - 宽度正常的终端窗口
314
493
 
315
- - 不 fork Pi。
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
- ## 发布 npm
500
+ 如果 `columns` 很小或异常,重新打开 Windows Terminal,或尝试:
327
501
 
328
- 发布前确认 `package.json` 中的包名、版本和 npm registry。当前包名是 `kcode-pi`,也可以发布前改成企业内约定的 `kcode-cli` 或 `@kingdee/kcode-cli`。
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
- npm run check
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
- npm publish
547
+ type .pi\settings.json
343
548
  ```
344
549
 
345
- `prepack` 会自动执行 `build:cli` `smoke:package`,确保发布包里有全局 `kcode` 入口和随包 Pi CLI 运行依赖。
550
+ 如果 `packages` 中有多条 `kcode-pi` 路径,运行:
346
551
 
347
- ## 当前限制
552
+ ```powershell
553
+ kcode init
554
+ ```
348
555
 
349
- - 当前仓库可以直接发布为 npm 包,但包名仍是 `kcode-pi`;如果企业侧要叫 `kcode-cli`,发布前需要调整 `package.json.name`。
350
- - 更深层的 reviewer 语义规则、HTML 审查报告、自动 SQL 产物生成仍在后续计划中。
556
+ 如果使用的是 `0.1.1` 或更早版本,请手工删除旧路径,或升级到最新版。
351
557
 
352
- ## 状态文档
558
+ ## 更多文档
353
559
 
354
- 集成进度见:
560
+ 维护者和开发文档放在:
355
561
 
356
562
  ```text
357
- OFFICIAL_SKILLS_STATUS.md
563
+ docs/DEVELOPMENT.md
564
+ docs/KCODE_DISTRIBUTION.md
358
565
  ```