Wyatt_K
18b082a2d0
feat(cloud-agent): 新增 skill_search 工具——Agent 侧技能检索
#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 ✓
2026-09-21 22:23:35 +08:00
..
2026-09-11 14:02:49 +08:00
2026-09-11 14:02:49 +08:00
2026-09-19 09:54:27 +08:00
2026-09-21 09:48:43 +08:00
2026-09-21 09:48:43 +08:00
2026-09-11 14:02:49 +08:00
2026-09-21 14:11:29 +08:00
2026-09-11 14:02:49 +08:00
2026-09-11 14:02:49 +08:00
2026-09-11 14:02:49 +08:00
2026-09-21 11:11:10 +08:00
2026-09-18 23:26:54 +08:00
2026-09-20 01:40:40 +08:00
2026-09-20 01:40:40 +08:00
2026-09-20 01:40:40 +08:00
2026-09-17 23:17:09 +08:00
2026-09-17 23:17:09 +08:00
2026-09-19 09:54:27 +08:00
2026-09-18 23:28:57 +08:00
2026-09-21 14:11:29 +08:00
2026-09-21 14:11:29 +08:00
2026-09-21 14:11:29 +08:00
2026-09-18 23:28:57 +08:00
2026-09-11 14:02:49 +08:00
2026-09-21 14:11:29 +08:00
2026-09-11 14:02:49 +08:00
2026-09-11 14:02:49 +08:00
2026-09-11 14:02:49 +08:00
2026-09-17 18:40:42 +08:00
2026-09-17 18:40:42 +08:00
2026-09-11 14:02:49 +08:00
2026-09-14 01:11:56 +08:00
2026-09-21 11:11:10 +08:00
2026-09-20 11:18:19 +08:00
2026-09-20 11:18:19 +08:00
2026-09-21 11:11:10 +08:00
2026-09-21 11:11:10 +08:00
2026-09-19 21:04:03 +08:00
2026-09-11 14:02:49 +08:00
2026-09-11 14:02:49 +08:00
2026-09-21 11:11:10 +08:00
2026-09-11 14:02:49 +08:00
2026-09-11 14:02:49 +08:00
2026-09-14 01:11:56 +08:00
2026-09-19 09:54:27 +08:00
2026-09-19 09:54:27 +08:00
2026-09-11 14:02:49 +08:00
2026-09-18 15:26:26 +08:00
2026-09-21 09:37:20 +08:00
2026-09-21 09:37:20 +08:00
2026-09-19 20:43:20 +08:00
2026-09-20 17:18:46 +08:00
2026-09-19 15:35:11 +08:00
2026-09-17 18:40:42 +08:00
2026-09-17 18:40:42 +08:00
2026-09-19 20:43:20 +08:00
2026-09-19 20:43:20 +08:00
2026-09-19 20:43:20 +08:00
2026-09-19 20:43:20 +08:00
2026-09-19 20:43:20 +08:00
2026-09-18 15:26:26 +08:00
2026-09-18 15:26:26 +08:00
2026-09-17 20:21:25 +08:00
2026-09-21 17:52:49 +08:00
2026-09-19 20:43:20 +08:00
2026-09-17 20:21:25 +08:00
2026-09-18 15:26:26 +08:00
2026-09-19 20:43:20 +08:00
2026-09-17 20:21:25 +08:00
2026-09-18 15:26:26 +08:00
2026-09-21 09:30:38 +08:00
2026-09-18 15:26:26 +08:00
2026-09-18 15:26:26 +08:00
2026-09-19 20:43:20 +08:00
2026-09-19 20:43:20 +08:00
2026-09-19 20:43:20 +08:00
2026-09-19 20:43:20 +08:00
2026-09-18 15:26:26 +08:00
2026-09-20 12:47:07 +08:00
2026-09-17 20:21:25 +08:00
2026-09-17 20:21:25 +08:00
2026-09-20 12:47:07 +08:00
2026-09-20 12:47:07 +08:00
2026-09-14 17:58:21 +08:00
2026-09-14 17:58:21 +08:00
2026-09-18 15:26:26 +08:00
2026-09-17 20:21:25 +08:00
2026-09-18 15:26:26 +08:00
2026-09-18 15:26:26 +08:00
2026-09-21 17:52:49 +08:00
2026-09-19 20:43:20 +08:00
2026-09-17 23:31:54 +08:00
2026-09-14 17:58:21 +08:00
2026-09-18 15:26:26 +08:00
2026-09-18 15:26:26 +08:00
2026-09-19 20:43:20 +08:00
2026-09-19 20:43:20 +08:00
2026-09-19 20:43:20 +08:00
2026-09-21 09:30:38 +08:00
2026-09-19 20:43:20 +08:00
2026-09-21 22:23:35 +08:00
2026-09-19 20:43:20 +08:00
2026-09-19 20:43:20 +08:00
2026-09-17 18:40:42 +08:00
2026-09-15 13:37:21 +08:00
2026-09-15 05:22:07 +08:00
2026-09-19 20:43:20 +08:00
2026-09-17 20:21:25 +08:00
2026-09-19 20:43:20 +08:00
2026-09-19 20:43:20 +08:00
2026-09-17 20:21:25 +08:00
2026-09-21 09:30:38 +08:00
2026-09-21 09:30:38 +08:00
2026-09-21 09:48:43 +08:00
2026-09-21 22:23:35 +08:00
2026-09-17 18:40:42 +08:00
2026-09-17 18:40:42 +08:00
2026-09-17 20:21:25 +08:00
2026-09-17 20:21:25 +08:00
2026-09-18 15:26:26 +08:00
2026-09-11 14:02:49 +08:00
2026-09-11 14:02:49 +08:00
2026-09-11 14:02:49 +08:00
2026-09-17 18:40:42 +08:00
2026-09-18 20:34:28 +08:00
2026-09-14 18:12:29 +08:00
2026-09-19 09:54:27 +08:00
2026-09-19 09:54:27 +08:00
2026-09-11 14:02:49 +08:00
2026-09-18 14:09:50 +08:00
2026-09-11 14:02:49 +08:00
2026-09-11 14:02:49 +08:00
2026-09-11 14:02:49 +08:00
2026-09-11 14:02:49 +08:00
2026-09-11 14:02:49 +08:00
2026-09-11 14:02:49 +08:00
2026-09-11 14:02:49 +08:00
2026-09-20 12:47:07 +08:00
2026-09-11 14:02:49 +08:00
2026-09-11 14:02:49 +08:00
2026-09-15 11:10:12 +08:00
2026-09-11 14:02:49 +08:00
2026-09-11 14:02:49 +08:00
2026-09-18 23:26:54 +08:00
2026-09-18 23:26:54 +08:00
2026-09-19 09:54:27 +08:00
2026-09-11 14:02:49 +08:00
2026-09-11 14:02:49 +08:00
2026-09-11 14:02:49 +08:00
2026-09-18 23:26:54 +08:00
2026-09-20 12:59:23 +08:00
2026-09-18 23:26:54 +08:00
2026-09-19 20:40:55 +08:00
2026-09-20 13:05:42 +08:00
2026-09-19 09:54:27 +08:00
2026-09-21 11:11:10 +08:00
2026-09-11 14:02:49 +08:00
2026-09-20 13:05:42 +08:00
2026-09-11 14:02:49 +08:00
2026-09-11 14:02:49 +08:00
2026-09-18 09:31:40 +08:00
2026-09-18 09:31:40 +08:00
2026-09-11 21:42:15 +08:00
2026-09-11 14:02:49 +08:00
2026-09-20 05:18:16 +08:00
2026-09-20 04:04:42 +08:00
2026-09-18 09:31:40 +08:00
2026-09-17 23:32:11 +08:00
2026-09-18 09:31:40 +08:00
2026-09-14 01:11:56 +08:00
2026-09-17 23:32:11 +08:00
2026-09-17 23:32:11 +08:00
2026-09-18 23:26:54 +08:00
2026-09-18 23:26:54 +08:00
2026-09-11 14:02:49 +08:00
2026-09-11 14:02:49 +08:00
2026-09-11 14:02:49 +08:00
2026-09-11 14:02:49 +08:00
2026-09-11 14:02:49 +08:00
2026-09-11 14:02:49 +08:00
2026-09-17 18:40:42 +08:00
2026-09-20 16:40:08 +08:00
2026-09-11 14:02:49 +08:00
2026-09-11 14:02:49 +08:00
2026-09-11 14:02:49 +08:00
2026-09-11 14:02:49 +08:00
2026-09-11 14:02:49 +08:00
2026-09-17 18:40:42 +08:00
2026-09-11 14:02:49 +08:00
2026-09-17 23:32:11 +08:00
2026-09-17 23:32:11 +08:00
2026-09-19 20:29:46 +08:00
2026-09-15 05:22:07 +08:00
2026-09-11 21:40:47 +08:00
2026-09-17 17:44:44 +08:00
2026-09-17 18:15:32 +08:00
2026-09-11 14:02:49 +08:00
2026-09-14 01:11:56 +08:00
2026-09-21 09:38:11 +08:00
2026-09-11 14:02:49 +08:00
2026-09-11 14:02:49 +08:00
2026-09-18 14:09:50 +08:00
2026-09-18 14:09:50 +08:00
2026-09-18 14:09:50 +08:00
2026-09-11 14:02:49 +08:00
2026-09-11 14:02:49 +08:00
2026-09-14 01:11:56 +08:00
2026-09-11 14:02:49 +08:00
2026-09-21 09:38:11 +08:00
2026-09-11 14:02:49 +08:00
2026-09-11 14:02:49 +08:00
2026-09-14 01:11:56 +08:00
2026-09-11 14:02:49 +08:00
2026-09-17 17:55:12 +08:00
2026-09-11 14:02:49 +08:00
2026-09-14 01:11:56 +08:00
2026-09-18 10:41:19 +08:00
2026-09-21 09:38:11 +08:00
2026-09-17 17:44:44 +08:00
2026-09-12 21:28:41 +08:00
2026-09-12 21:28:41 +08:00
2026-09-17 17:55:12 +08:00
2026-09-20 16:40:08 +08:00
2026-09-11 14:02:49 +08:00
2026-09-11 14:02:49 +08:00
2026-09-21 09:48:43 +08:00
2026-09-21 09:48:43 +08:00
2026-09-21 09:48:43 +08:00
2026-09-11 14:02:49 +08:00
2026-09-14 01:11:56 +08:00
2026-09-11 14:02:49 +08:00
2026-09-11 14:02:49 +08:00
2026-09-21 14:11:29 +08:00
2026-09-11 14:02:49 +08:00
2026-09-11 14:02:49 +08:00
2026-09-11 14:02:49 +08:00
2026-09-12 21:28:41 +08:00
2026-09-20 16:40:08 +08:00
2026-09-11 14:02:49 +08:00
2026-09-11 14:02:49 +08:00
2026-09-11 14:02:49 +08:00
2026-09-11 14:02:49 +08:00
2026-09-11 14:02:49 +08:00
2026-09-11 14:02:49 +08:00
2026-09-11 14:02:49 +08:00
2026-09-14 01:11:56 +08:00
2026-09-14 01:11:56 +08:00
2026-09-11 14:02:49 +08:00
2026-09-11 14:02:49 +08:00
2026-09-11 14:02:49 +08:00
2026-09-11 14:02:49 +08:00
2026-09-18 20:34:28 +08:00
2026-09-11 14:02:49 +08:00
2026-09-18 20:34:28 +08:00
2026-09-14 19:45:56 +08:00
2026-09-11 14:02:49 +08:00
2026-09-11 14:02:49 +08:00
2026-09-11 14:02:49 +08:00
2026-09-11 14:02:49 +08:00
2026-09-14 18:12:29 +08:00
2026-09-20 16:40:08 +08:00
2026-09-20 12:47:07 +08:00
2026-09-20 12:47:07 +08:00
2026-09-19 20:43:20 +08:00
2026-09-14 01:11:56 +08:00
2026-09-14 01:11:56 +08:00
2026-09-19 20:43:20 +08:00
2026-09-11 14:02:49 +08:00
2026-09-19 20:43:20 +08:00
2026-09-11 14:02:49 +08:00
2026-09-14 01:11:56 +08:00
2026-09-11 14:02:49 +08:00
2026-09-14 01:11:56 +08:00
2026-09-14 01:11:56 +08:00
2026-09-19 20:43:20 +08:00
2026-09-19 20:43:20 +08:00
2026-09-15 05:22:07 +08:00
2026-09-11 14:02:49 +08:00
2026-09-14 01:11:56 +08:00
2026-09-21 09:48:43 +08:00
2026-09-21 09:48:43 +08:00
2026-09-21 09:48:43 +08:00
2026-09-11 14:02:49 +08:00
2026-09-11 14:02:49 +08:00
2026-09-11 14:02:49 +08:00
2026-09-11 14:02:49 +08:00
2026-09-11 14:02:49 +08:00
2026-09-11 14:02:49 +08:00
2026-09-20 16:40:08 +08:00
2026-09-20 16:40:08 +08:00
2026-09-11 14:02:49 +08:00
2026-09-11 14:02:49 +08:00
2026-09-14 01:11:56 +08:00
2026-09-14 01:11:56 +08:00
2026-09-11 14:02:49 +08:00
2026-09-11 14:02:49 +08:00
2026-09-18 23:26:54 +08:00
2026-09-18 23:26:54 +08:00
2026-09-18 23:26:54 +08:00
2026-09-18 23:26:54 +08:00
2026-09-18 23:26:54 +08:00
2026-09-11 14:02:49 +08:00
2026-09-11 14:02:49 +08:00
2026-09-18 23:26:54 +08:00
2026-09-18 20:34:28 +08:00
2026-09-11 14:02:49 +08:00
2026-09-14 01:11:56 +08:00
2026-09-14 19:45:56 +08:00
2026-09-14 19:45:56 +08:00