统一检索(unified_search)
一句话讲清楚
平台里所有"找东西"的能力——找文档、找历史聊天、找别人 session 里的结论、找代码——
对外只有一个工具:unified_search。
不管你或 AI 想找什么,都是同一个工具调一个 action,参数不同而已。这个设计的好处是:
- AI 学一个工具就会用全部检索能力,不必区分十几个分散的接口
- 跨数据源能拼:一次问"过去三个月这个客户提过的需求 + 相关代码 + 上次审核结论",平台内部联动,对 AI 透明
它能查什么(按场景看)
| 你想找什么 | 怎么调 | 返回什么 |
|---|---|---|
| 知识库里的文档 | action="search" + kb_ids=[...] | 命中的 chunk + 高亮 + 元数据 |
| 历史结论 / 偏好 / Bug 模式(长期记忆) | action="search" + memory_type=fact / preference / error_pattern | 结构化的 memory 条目 |
| 某个 session 的成果 | action="get_digest" + session_id=... | 该 session 的关键产出摘要 |
| 某次对话的精确内容 | action="get_round" + round_id=... | 那一轮的完整原文 |
| 可嫁接的会话清单 | action="list_sessions" + query=... | 别人或自己历史 session 列表 |
| 代码搜索(v3.13+) | action="code_search" + mode=text / ast / semantic / navigate / hybrid | 代码片段 + 文件位置 + 调用关系 |
想看代码搜索五种
mode各自能干嘛、什么时候用哪个,请翻 代码索引三档能力。
为什么把所有检索归到一个工具
历史上平台有过四五个并列的"检索类工具":知识库搜索、记忆搜索、代码搜索、跨 session 嫁接…… 后果是 AI 经常用错工具——同一个问题在不同工具里查得到查不到、参数命名不一致、返回结构不一样。
统一以后:
Rendering diagram…
- 一个工具,一套使用习惯:AI 学会一次终身受用
- 可以混合检索:
unified_search(action="search", sources=["fact","kb"], ...)一次拿回记忆 + 知识库联合命中 - 可以联动重排:内部用 RRF(Reciprocal Rank Fusion)把多源结果归并,避免某一个源排名虚高
三个行业的实际用法
专利代理(xIPnex)
- "找一下三个月前同一个客户提过的同类技术交底书" →
action="search"+tags=["customer:X"] - "他上次让我修改的权利要求结构是什么样" →
action="get_round" - "类似的审查意见我们以前怎么答辩" →
action="search"+memory_type="fact"+tags=["bug_pattern"]
汽车研发(auto)
- "这条需求关联的所有代码 + 测试用例" →
action="code_search"+mode="hybrid"+kb_ids=[需求库, 代码库] - "上次基线 v1.14 的追溯结论" →
action="get_digest"+session_id="v1.14-基线追溯" - "我们对 ASIL-D 模块的代码审核反馈池" →
action="search"+memory_type="error_pattern"
智能制造(mfg)
- "去年这个客户工单里关于压机故障的所有记录" →
action="search"+kb_ids=[工单库]+ 时间范围过滤 - "上次类似故障是怎么定位的" →
action="list_sessions"+query="压机液压"
跟其他概念的关系
| 概念 | 它和 unified_search 是什么关系 |
|---|---|
| Parser SKILL | 决定进库时怎么切块、抽什么字段——unified_search 检索时能不能命中得很大程度看这一步 |
| 代码索引三档 | 是 unified_search.code_search 这个 action 的底层实现细节——零索引/轻索引/重索引的能力差异 |
| 记忆系统 | unified_search 是它对外暴露检索的唯一入口 |
| 跨会话嫁接 graft | 是 unified_search 的 list_sessions / get_digest / get_round 三个 action 的封装应用 |
给开发者的指引
如果你写 SKILL 时需要从平台拿数据,永远调 unified_search,不要自己直连 ES / DB。
原因:
- 平台会自动加上租户隔离、权限校验、审计日志
- 平台会做相关性重排和去重
- 平台升级换底层(比如 ES → 别的引擎)时你的 SKILL 不用改