fix(code-intelligence): 强制 Lsp 优先并要求降级显式声明 (#101)

## 背景 / Background

desirecore/desirecore#2248:真机测试中 code-intelligence 技能被绕过——模型未加载技能、未解锁
`Lsp`,直接用 Glob/Grep 文本检索回答语义导航问题,用户无从知道拿到的不是语义结果。

In real-device testing the skill was bypassed entirely: the model
answered semantic-navigation questions from Glob/Grep text matching
without loading the skill or unlocking `Lsp`, with no disclosure to the
user.

## 变更 / Changes

- **description(根级 + i18n 双语)改为命令式**:语义导航请求必须先加载本技能解锁隐藏的 `Lsp` 工具,禁止未尝试
`Lsp` 就用文本检索作答(配合主仓库的技能目录 provides.tools 附注,模型在决策点即可看到该指令)
- **L1 新增「硬性规则」**(双语):`Lsp`
优先;限定允许回退的三种情形;任何回退到文本检索的回答必须向用户显式声明「结果来自文本匹配而非语义分析」及原因
- **L2 降级策略**同步引用硬性规则
- version 1.0.0 → 1.1.0;重算 i18n `source_hash`(`translated_by: human`
保持锁定)

## 校验 / Validation

- `uv run scripts/i18n/validate-i18n.py` → OK
- `uv run scripts/i18n/translate.py --check` → code-intelligence 两
locale 均无 stale
This commit is contained in:
2026-08-30 20:43:47 -04:00
committed by GitHub
parent ebdac6c6b1
commit 40944ca1d3
2 changed files with 23 additions and 11 deletions

View File

@@ -16,7 +16,12 @@
- 列出单个文件的符号大纲,或在工作区内搜索符号。
- 通过 LSP 调用层级查找调用者与被调用者。
如果需求只是文本搜索,或者没有兼容的 Language Server改用 `Grep``Glob`
### 硬性规则
- 语义导航类请求(定义、引用、实现、调用关系、符号)**必须先尝试 `Lsp`**;禁止在未尝试 `Lsp` 的情况下,直接用 `Grep`/`Glob` 的文本匹配结果作答。
- 只有以下情形才允许回退到文本检索:`Lsp` 调用报错、目标语言不在支持映射中、或 Language Server 未安装且用户未要求安装。
- 任何回退到文本检索的回答,**必须向用户显式声明**结果来自文本匹配而非语义分析并说明原因如「typescript-language-server 未安装」)。大型仓库、同名符号、重载/继承场景下文本匹配可能给出错误答案,不得让用户误以为拿到的是语义导航结果。
- 需求只是纯文本搜索(如查找字符串字面量、日志文案)时不适用本技能,直接用 `Grep`/`Glob`
## L2操作流程
@@ -60,7 +65,7 @@ DesireCore 只探测用户已经安装的二进制,缺失时返回安装提示
### 5. 降级策略
- 文件类型不支持或 Server 未安装:使用 `Grep``Glob``Read` 做文本级调查。
- 文件类型不支持或 Server 未安装:使用 `Grep``Glob``Read` 做文本级调查,并在回答中按「硬性规则」显式声明结果来自文本匹配而非语义分析及原因
- Server 未声明某项能力:如实报告 capability 不匹配,不得猜测结果。
- 语义结果为空:说明符号可能未解析、被排除或被访问规则过滤;不能直接断言“没有引用”。