feat(prompt): 搜索引导改为意图→工具的正向指引,multi_grep 按上游保持关闭

真实会话中模型仍用 bash grep -o | sort -u 做抽取,被拒后直接放弃核对;
原提示词只说"不要",没告诉它抽取/计数、给程序传文件清单、过滤命令输出时该用什么。

- routing:按已知信息选 grep/find(多变体用 grep 正则 alternation),
  codemode + tools.grep 做聚合,bash 文件清单用 git ls-files,
  overflow_query 过滤输出,被拒后改用替代方案继续
- 权限策略:rg/grep/git grep/find/fd 的 deny 附带指向替代工具的 reason
- tools.jsonc:grep/find 新 snippet,补上 codegraph_explore snippet
- FFF 上游标注 multi_grep 有害:wrapper 删除 PI_FFF_MULTIGREP,清理全部引用
- JSONC 测试改用字符串感知的注释剥离(reason 中含 'src/**/*.ts')

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This commit is contained in:
云服务部-叶林立
2026-10-22 00:14:49 -07:00
co-authored by Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
parent 833b9514d4
commit dae1a01f23
16 changed files with 68 additions and 39 deletions
@@ -7,6 +7,7 @@ import {
autoReviewConfigFileSchema,
normalizeAutoReviewConfig,
} from "#src/auto-review/config";
import { stripJsonComments } from "#src/config-loader";
import { unifiedConfigSchema } from "#src/config-schema";
/** The bundle's authoritative policy seed, as shipped. */
@@ -16,10 +17,10 @@ const SEED_PATH = fileURLToPath(
function readSeed(): Record<string, unknown> {
const raw = readFileSync(SEED_PATH, "utf8");
const stripped = raw
.replace(/^\s*\/\/.*$/gm, "")
.replace(/\/\*[\s\S]*?\*\//g, "");
return JSON.parse(stripped) as Record<string, unknown>;
// Parse with the same string-aware stripper the loader uses: a naive regex
// strips `/*`-looking runs inside string values (e.g. a `'src/**/*.ts'`
// glob in a deny reason) and corrupts the JSON.
return JSON.parse(stripJsonComments(raw)) as Record<string, unknown>;
}
describe("bundled policy seed", () => {