--- name: ocrag description: 代码库 RAG 技能,用于向知识库添加代码或搜索已有代码。 --- # 代码库 RAG 技能 ## 何时使用此技能 - 用户要求"把当前文件/这个目录加入知识库" - 用户询问关于代码库的问题,需要基于已有代码回答 - 用户明确提到"RAG"、"知识库"、"语义搜索"等关键词 ## 如何使用 ### 添加代码到知识库 当用户提供文件路径或目录时,使用 `rag_add` 工具: - 如果用户说"把这个文件加入知识库",提取路径并调用 `rag_add`,recursive 设为 false - 如果用户说"添加 src/ 目录下所有代码",调用 `rag_add` 并设置 recursive = true ### 搜索知识库 当用户询问代码相关问题(如"这段代码做什么?"、"如何配置XX?")时: 1. 先用 `rag_search` 工具查询,query 参数为用户的自然语言问题 2. 获得返回的代码片段后,结合片段内容回答用户 3. 如果结果不相关,可以告知用户未找到,并建议添加更多代码 ### 管理知识库 - `rag_list` 可选传入 pattern 参数进行通配符筛选,如 `"*.py"` 或 `"src/**"` - `rag_remove` 支持通配符模式批量删除,如 `"**/test_*.py"` 删除所有测试文件 ## 示例 - 用户:"帮我记住这个文件的知识" → 调用 `rag_add` 传入当前文件路径 - 用户:"认证模块是怎么实现的?" → 调用 `rag_search` query="认证模块实现" - 用户:"把 ./src 目录下所有 Python 文件加入知识库" → 调用 `rag_add` paths=["./src"] recursive=true - 用户:"知识库里有几个测试文件?" → 调用 `rag_list` pattern="**/test_*.py" - 用户:"把测试文件都删了" → 调用 `rag_remove` pattern="**/test_*.py" ## 注意事项 - 搜索结果会显示代码片段的来源文件 - 可以通过 top_k 参数调整返回结果数量 - 添加文件后,搜索会立即包含新添加的内容 - remove 和 list 支持 fnmatch 通配符:`*` 匹配任意字符,`**` 匹配路径分隔符