kcode-pi 0.1.38 → 0.1.39

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.
@@ -144,6 +144,8 @@ export const PROJECT_PERSISTENT_RULES = [
144
144
  "用户回答 open question 后,先用 `kd_question action=answer` 写入答案;用户更正事实时用 `kd_question action=revise`,禁止重复询问已确认事实。",
145
145
  "企业版 Python 插件通常没有本地构建可替代验证;BOS 注册、外部系统操作、人工功能测试和生产环境验证必须由用户提供可核验证据并记录来源。",
146
146
  "提示语集中管理为正式工程指令;禁止口语化、闲聊式、鼓励式提示词进入运行时规则。",
147
+ "工具使用必须匹配当前会话实际可用工具和操作系统;Windows 默认使用 PowerShell、`rg`、`Get-ChildItem`、`Get-Content`,禁止假设 bash 可用。",
148
+ "文件定位必须使用真实搜索或目录读取结果;工具不可用时明确说明阻塞原因和需要用户执行的命令,禁止猜测路径、反复自述工具失败或用 kd_subagent 代替基础文件搜索。",
147
149
  "不做旧状态迁移兼容或旧问题答案推断;坏状态只过滤,缺失事实必须重新提问确认。",
148
150
  ];
149
151
  export const PROMPT_STYLE_RULES = [
@@ -167,6 +169,7 @@ export const CORE_WORKFLOW_CONSTRAINTS = [
167
169
  "evidence 必须记录命令、Exit 和关键输出;命令无法运行时记录阻塞原因。",
168
170
  "外部系统操作、BOS 注册、人工功能测试和生产环境验证不能由 LLM 代办;必须要求用户提供验证结果或可核验证据,并记录证据来源。",
169
171
  "Windows 路径规则:项目相对路径为默认;绝对路径使用 D:\\... 形式。",
172
+ "工具规则:按当前会话实际 shell 和工具执行;Windows 不假设 bash,可用 PowerShell/rg/Get-ChildItem/Get-Content;禁止猜路径或用 kd_subagent 代替基础搜索失败。",
170
173
  ];
171
174
  export const PHASE_GUIDANCE = {
172
175
  discuss: "梳理需求来源、范围、已知事实;如缺通用实现契约、数据源或第三方接口关键事实,使用 kd_question 登记一个最阻塞问题。",
package/docs/CHANGELOG.md CHANGED
@@ -6,6 +6,22 @@
6
6
 
7
7
  - 暂无。
8
8
 
9
+ ## 0.1.39 - 2026-06-07
10
+
11
+ ### 修复
12
+
13
+ - 持久规则和核心约束新增工具环境规则:Windows 默认使用 PowerShell、`rg`、`Get-ChildItem`、`Get-Content`,禁止假设 bash 可用。
14
+ - 明确文件定位必须基于真实搜索或目录读取结果;工具不可用时记录阻塞原因,禁止猜测路径或反复自述工具失败。
15
+ - 强化 `kd_subagent` 委派边界:子 agent 不能作为 shell/read/grep 失败的替代方案,不能用来绕过基础文件搜索。
16
+
17
+ ### 验证
18
+
19
+ - `npm run check`
20
+ - `npm run smoke:harness`
21
+ - `npm run smoke:kcode-command`
22
+ - `npm run build:cli`
23
+ - `git diff --check`
24
+
9
25
  ## 0.1.38 - 2026-06-07
10
26
 
11
27
  ### 修复
@@ -151,6 +151,7 @@ KCode 会阻止过早写入 Java/XML/SQL/C# 等产品代码:
151
151
  - API 文档、SDK 文档和知识库只能作为技术用法证据,不能替代 FormId、字段/实体、插件事件、SQL/KSQL 表名、数据库字段名、字段映射、并发/幂等、日志脱敏和验收数据等业务事实。
152
152
  - 信息不足时登记一个最阻塞的结构化问题;禁止生成模板代码或占位实现。
153
153
  - 内部插件、自动下推、第三方对接、字段改写和数据同步统一按实现契约、数据源上下文和对接上下文补齐事实,不为单个业务场景写死提示词。
154
+ - 工具使用必须匹配当前环境。Windows 项目默认使用 PowerShell、`rg`、`Get-ChildItem`、`Get-Content`;禁止假设 bash 可用,禁止猜测路径。
154
155
 
155
156
  ## 项目持久规则
156
157
 
@@ -162,6 +163,7 @@ KCode 会阻止过早写入 Java/XML/SQL/C# 等产品代码:
162
163
  - `factLabel` 必须使用集中定义的事实标签或别名。
163
164
  - PLAN 自由文本不能单独证明 FormId、字段、插件事件或读写方式。
164
165
  - 外部系统操作、BOS 注册、人工功能测试和生产验证必须由用户提供可核验证据。
166
+ - 工具不可用时必须说明阻塞原因和需要用户执行的命令;禁止反复自述工具失败或用 `kd_subagent` 代替基础文件搜索。
165
167
  - 不做旧状态迁移兼容或旧问题答案推断;坏状态只过滤,缺失事实重新提问确认。
166
168
 
167
169
  证据和门禁细节见 [证据和门禁](EVIDENCE_AND_GATES.md)。
@@ -189,6 +191,7 @@ KCode 支持把局部任务委派给隔离子 agent,用来降低长上下文
189
191
  - `doc` 只写明确指定的文档或阶段产物。
190
192
  - `code` 只能在 `execute` 阶段运行,并且只能修改 `PLAN.md` 批准文件。
191
193
  - `verify` 只读分析验证命令、失败证据和风险;实际命令和结果记录仍由主 agent 执行。
194
+ - 子 agent 不是 shell、read、grep 失败的替代方案;主 agent 必须先使用当前环境可用工具定位文件。
192
195
 
193
196
  `--dry-run` 会预览发送给子 agent 的上下文包,用来检查上下文是否过长、是否包含不该交给子 agent 的信息。
194
197
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kcode-pi",
3
- "version": "0.1.38",
3
+ "version": "0.1.39",
4
4
  "description": "面向金蝶开发的 Pi Coding Agent 启动器、工具包和 Harness 工作流",
5
5
  "type": "module",
6
6
  "private": false,
@@ -22,6 +22,7 @@ export interface ParsedDelegationArgs extends DelegationRequest {
22
22
  const ROLE_GUIDANCE: Record<DelegationRole, string[]> = {
23
23
  research: [
24
24
  "只读调研项目、文档、SDK 线索和现有实现。",
25
+ "必须基于真实读取或搜索结果定位文件;禁止猜测路径。",
25
26
  "输出压缩结论、证据文件/代码位置、风险和下一步指令。",
26
27
  "禁止修改文件;禁止推进 Harness 状态。",
27
28
  ],
@@ -180,6 +181,7 @@ export function delegationGuidanceForWorkflow(): string {
180
181
  "- 任务包含大量调研、独立交叉审查、长上下文复盘或可并行拆分内容时,使用 kd_subagent。",
181
182
  "- 自动委派只做旁路工作;主 agent 仍负责采纳结论、修改文件、记录 evidence 和推进阶段。",
182
183
  "- code 委派只能在 execute 阶段且限于 PLAN.md 批准文件;review/research 默认只读。",
184
+ "- kd_subagent 不是 shell/read/grep 失败的替代方案;基础文件搜索失败时,主 agent 必须报告阻塞原因或改用当前环境可用工具。",
183
185
  ].join("\n");
184
186
  }
185
187
 
@@ -221,6 +223,7 @@ export function buildDelegationPrompt(cwd: string, run: ActiveRun | undefined, r
221
223
  ...roleGuidance.map((item) => `- ${item}`),
222
224
  "- 子 agent 不是主状态机;禁止调用 /kd-advance、/kd-finish 或改变 run 生命周期。",
223
225
  "- 禁止创建子 agent;输出结果交回主 agent 统一决策。",
226
+ "- 禁止假设 bash、Linux 路径或猜测文件位置;Windows 项目按 PowerShell/Windows 路径语义描述命令。",
224
227
  "",
225
228
  "Harness 状态:",
226
229
  status,
@@ -156,6 +156,8 @@ export const PROJECT_PERSISTENT_RULES = [
156
156
  "用户回答 open question 后,先用 `kd_question action=answer` 写入答案;用户更正事实时用 `kd_question action=revise`,禁止重复询问已确认事实。",
157
157
  "企业版 Python 插件通常没有本地构建可替代验证;BOS 注册、外部系统操作、人工功能测试和生产环境验证必须由用户提供可核验证据并记录来源。",
158
158
  "提示语集中管理为正式工程指令;禁止口语化、闲聊式、鼓励式提示词进入运行时规则。",
159
+ "工具使用必须匹配当前会话实际可用工具和操作系统;Windows 默认使用 PowerShell、`rg`、`Get-ChildItem`、`Get-Content`,禁止假设 bash 可用。",
160
+ "文件定位必须使用真实搜索或目录读取结果;工具不可用时明确说明阻塞原因和需要用户执行的命令,禁止猜测路径、反复自述工具失败或用 kd_subagent 代替基础文件搜索。",
159
161
  "不做旧状态迁移兼容或旧问题答案推断;坏状态只过滤,缺失事实必须重新提问确认。",
160
162
  ];
161
163
 
@@ -181,6 +183,7 @@ export const CORE_WORKFLOW_CONSTRAINTS = [
181
183
  "evidence 必须记录命令、Exit 和关键输出;命令无法运行时记录阻塞原因。",
182
184
  "外部系统操作、BOS 注册、人工功能测试和生产环境验证不能由 LLM 代办;必须要求用户提供验证结果或可核验证据,并记录证据来源。",
183
185
  "Windows 路径规则:项目相对路径为默认;绝对路径使用 D:\\... 形式。",
186
+ "工具规则:按当前会话实际 shell 和工具执行;Windows 不假设 bash,可用 PowerShell/rg/Get-ChildItem/Get-Content;禁止猜路径或用 kd_subagent 代替基础搜索失败。",
184
187
  ];
185
188
 
186
189
  export const PHASE_GUIDANCE: Record<KdPhase, string> = {