ocrag/opencode-skill/SKILL.md

42 lines
2.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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 通配符:`*` 匹配任意字符,`**` 匹配路径分隔符