ASTER CODE / 功能参考
资料检索与有效性检查
词法与语义索引、网络搜索、语言服务和宿主知识包。
四类资料来源
源码检索查询当前工作区;持久记忆保留经授权的历史事实;网页搜索读取外部资料;代码智能由语言服务解释源码结构。它们可以同时进入上下文,但来源、更新机制和授权各不相同。
| 需求 | 首选入口 | 必要前提 |
|---|---|---|
| 已知路径或函数名的一部分 | glob、grep、search 的路径或文本模式 | 工作区支持相应读与搜索能力 |
| 按词相关度找文件片段 | search 的 BM25 词法路线 | 可用的索引后端或支持的回退路线 |
| 按语义找实现 | semantic_search | 明确注入 embedding 与检索选项 |
| 同时考虑词法和语义 | hybrid_search | 两条路线均可用,检查融合状态 |
| 查询符号、引用、诊断和格式化 | code_* | 宿主准入语言服务与相应操作能力 |
| 查公开资料或已知页面 | web_search、web_fetch | 网络授权与当前搜索路线 |
配置语义检索
Rust 宿主使用 EmbeddingProvider、WorkspaceRetrievalOptions、with_workspace_retrieval 接入。模型 ID、维度和索引身份必须一致。聊天模型配置不隐式提供 embedding。
本地 CPU 与远程 embedding 是不同路线。远程路线需要可信宿主明确授权源码外发;自动发现的工作区配置不能替用户作这个决定。ACP 的 local_cpu 有内置后端;内部 Rust 工厂接口不是通过环境变量加载代码的机制。
先检查 workspace_retrieval_status(),再判断语义工具是否可调用。没有后端时应显示不可用的原因,而不是用词法结果假冒语义结果。
索引运维
首次查询可能触发索引准备,注册工具时不应提前打开所有本地索引。入库要受文本类型、文件大小、切块、批次和结果数量约束。变更后更新对应文件,删除后撤除旧记录;命中返回前复核当前源码摘要。
遇到旧命中时先检查源码身份、索引 generation 和 embedding 路线;不要直接清空整个共享数据目录。更换模型或维度要生成一致的新索引,完成后再发布。取消构建后保留旧的完整 generation,不应发布半成品。
操作步骤和各后端限制见检索运维手册。它也说明什么情况会拒绝、降级或回退,回退行为不应靠界面猜测。
搜索网页与读取页面
普通 API、HTTP、RSS 路线不依赖浏览器;headless-search 增加浏览器路线。只有进入浏览器搜索阶段才准备运行时,构建搜索级联本身不应触发下载。启用后默认 Moli,宿主可选择支持的其他引擎;取消、超时和进程清理仍要工作。
web_fetch 受重定向、响应大小、地址和内容类型限制。PDF 文本提取是 web-fetch-pdf 的特定能力,不等于 Office 的 PDF/OCR 支持。检索结果保留来源链接和日期;结果中的提示注入按外部数据处理。
代码智能和包
code_symbols、code_navigation、code_diagnostics、code_format 需要宿主提供权威语言服务。没有服务时,模型不能用同名提示补出这个能力。查询和修改都应绑定文档版本;版本已变化时刷新再操作。
package_binding() 和 current_package_binding() 返回宿主已绑定的包身份。它不是任意插件加载器。use_runtime_task 同样需要宿主的 Use 任务 provider、能力范围和生命周期,不能因为目录里有任务说明就宣布可执行。
验收
用相同查询分别测试未配置语义后端、正确后端和维度错误;修改命中文件后再查询,确认不会把过期片段当成当前源码。网络测试覆盖重定向与取消;语言服务测试覆盖文档版本冲突。