#568/#575 提交 35 个域包(760 卡)后,Agent 按总纲名录逐卡深读的模式 出现检索成本:实测单任务读卡 12-29 次,卡库继续增长后劣化可期。 skill_read_file 只接受精确路径,Agent 侧无检索能力,与用户侧商店搜索不对称。 本 PR 参照仓库内 recall_lessons 的既有检索范式(同一套分词器与三档加权: name 命中 3 分 / description 命中 2 分),为 Agent 侧补上对称能力: - skill_search(keyword, limit):在本轮已启用的技能中按关键词打分排序, 返回「哪张卡值得读 + skillId + path + snippet」;不带参数时列全量索引; - 数据源为本轮冻结的技能快照(与 #577 注入 manifest 的 description 同源), 搜到的必然是能读的,不引入「搜到但版本已变」的一致性问题; - 只读、零副作用;不搜索未安装技能,避免「搜到不能读」的挫败; - 渐进披露边界不变:返回索引而非正文,正文仍走 skill_read_file (12000 字符/页),技能内容永不整体内联进上下文; - 工具描述明牌「返回的是索引,不是指令」,延续不可信数据纪律。 测试(6 个新契约用例,全绿): - 与 skill_read_file 一同注册、无技能时均不出现; - name 命中排在 description 命中之前;snippet 不泄正文; - 无关键词列全量索引;limit 夹紧;无命中时 guidance 指向 read_file; - 空技能集返回 guidance;instruction 正文绝不内联(sentinel 断言)。 门禁:go build ./internal/app/ ✓ go vet ./internal/app/ ✓ go test -run TestCloudAgentSkillSearch ✓
52 KiB
52 KiB