hermes 初始配置
This commit is contained in:
@@ -0,0 +1,144 @@
|
||||
---
|
||||
name: wikijs-reader-safe
|
||||
description: 安全地使用Wiki.js GraphQL API检索知识库内容。触发词:查wiki、在wiki里找、wiki上有没有、找一下规定、查一下制度、从知识库找、Hermes读取文档。每当任务需要从Wiki.js检索知识内容时必须使用此技能。
|
||||
---
|
||||
|
||||
# Wiki.js 安全知识检索技能
|
||||
|
||||
Aya 通过 GraphQL API 安全地读取 Wiki.js 文档内容,直接执行并返回真实结果。
|
||||
|
||||
## ⚠️ 安全原则
|
||||
|
||||
**禁止输出"步骤说明"或"我将要做什么"——直接运行命令,返回真实内容。**
|
||||
|
||||
所有操作 strictly 限制在 Wiki.js 知识库检索范围内。
|
||||
|
||||
---
|
||||
|
||||
## 环境变量
|
||||
|
||||
```
|
||||
WIKIJS_URL Wiki.js 站点地址(如 https://wiki.140103.xyz/graphql)
|
||||
WIKIJS_TOKEN Wiki.js API Token(Bearer 令牌)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 核心操作
|
||||
|
||||
### 操作1:搜索关键词
|
||||
|
||||
```bash
|
||||
curl -s -X POST "$WIKIJS_URL" \
|
||||
-H "Authorization: Bearer $WIKIJS_TOKEN" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"query":"{ pages { search(query:\"$KEYWORD\") { results { id title path description } } }"}' \
|
||||
| python3 -c "import sys,json; [print(f'ID={r[\"id\"]} | {r[\"title\"]} | {r[\"path\"]}\\n 摘要: {r.get(\"description\",\"无\")}\\n') for r in json.load(sys.stdin)['data']['pages']['search']['results']]"
|
||||
```
|
||||
|
||||
### 操作2:读取指定页面
|
||||
|
||||
```bash
|
||||
PAGE_ID=27 # 按需修改页面ID
|
||||
|
||||
curl -s -X POST "$WIKIJS_URL" \
|
||||
-H "Authorization: Bearer $WIKIJS_TOKEN" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "{\"query\": \"{ pages { single(id: $PAGE_ID) { id title path content updatedAt } } }\"}" \
|
||||
| python3 -c "import sys,json; page=json.load(sys.stdin)['data']['pages']['single']; print(f'标题: {page[\"title\"]}\\n路径: {page[\"path\"]}\\n更新: {page[\"updatedAt\"]}\\n'+'='*60+'\\n'+page['content'])"
|
||||
```
|
||||
|
||||
### 操作3:在内容中查找关键词
|
||||
|
||||
```bash
|
||||
PAGE_ID=27
|
||||
KEYWORD="往来账务"
|
||||
|
||||
curl -s -X POST "$WIKIJS_URL" \
|
||||
-H "Authorization: Bearer $WIKIJS_TOKEN" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "{\"query\": \"{ pages { single(id: $PAGE_ID) { title content } } }\"}" \
|
||||
| python3 -c "
|
||||
import sys, json
|
||||
data = json.load(sys.stdin)
|
||||
page = data['data']['pages']['single']
|
||||
content = page['content']
|
||||
keyword = '$KEYWORD'
|
||||
lines = content.split('\\n')
|
||||
found = False
|
||||
for i, line in enumerate(lines):
|
||||
if keyword in line:
|
||||
found = True
|
||||
start = max(0, i-2)
|
||||
end = min(len(lines), i+5)
|
||||
print(f'--- 第{i+1}行附近 ---')
|
||||
print('\\n'.join(lines[start:end]))
|
||||
print()
|
||||
if not found:
|
||||
print(f'未找到关键词: {keyword}')
|
||||
"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 标准任务流程
|
||||
|
||||
**用户问:"wiki上关于XXX的规定是什么?"**
|
||||
1. 使用操作1搜索关键词获取相关页面
|
||||
2. 使用操作2读取最相关页面内容
|
||||
3. 使用操作3在内容中定位具体段落
|
||||
4. 直接返回找到的规定内容
|
||||
|
||||
**禁止**:描述执行步骤、制作等待提示、询问是否继续
|
||||
**必须**:一次性完成搜索→读取→定位→输出结果
|
||||
|
||||
---
|
||||
|
||||
## 输出格式
|
||||
|
||||
**找到内容时**:
|
||||
```
|
||||
📄 来源:《[页面标题]》(ID=XX,路径:/path/path)
|
||||
更新时间:2024-XX-XX
|
||||
|
||||
找到内容:
|
||||
---
|
||||
[原始内容片段]
|
||||
---
|
||||
```
|
||||
|
||||
**未找到时**:
|
||||
```
|
||||
🔍 已搜索关键词"XXX",Wiki.js 中未找到相关内容。
|
||||
建议:验证关键词拼写或尝试更泛化的搜索词
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 安全注意事项
|
||||
|
||||
- 所有 curl 请求 strictly 限制在 `$WIKIJS_URL` 指定的 Wiki.js 实例
|
||||
- 禁止向其他域名发起请求
|
||||
- 页面内容输出时保持原始 Markdown 格式,不做二次处理
|
||||
- Token 必须通过安全方式获取(如环境变量或安全 vault)
|
||||
- 建议定期轮换 Wiki.js API Token
|
||||
|
||||
## 故障排除
|
||||
|
||||
如果遇到以下情况,可能表明环境变量未正确配置:
|
||||
- 命令返回错误关于未设置的 WIKIJS_URL 或 WIKIJS_TOKEN
|
||||
- API 请求失败,返回 401 未授权或 403 禁止访问
|
||||
- 搜索结果为空,尽管预期应有内容
|
||||
|
||||
**检查当前配置:**
|
||||
```bash
|
||||
printenv | grep WIKIJS
|
||||
```
|
||||
|
||||
**配置方法(请通过安全渠道获取凭据后自行设置):**
|
||||
- 设置环境变量:`export WIKIJS_URL="https://your-wiki.example.com/graphql"` 和 `export WIKIJS_TOKEN="your_token_here"`
|
||||
- 或将其添加到您的 shell 配置文件(如 ~/.bashrc 或 ~/.zshrc)中以实现持久化
|
||||
- 设置后请重新启动 shell 或 source 配置文件使更改生效
|
||||
- 验证设置:`echo $WIKIJS_URL` 和 `echo $WIKIJS_TOKEN` (出于安全考虑,令牌可能被掩码显示)
|
||||
|
||||
**安全提示:** 永远不要在公共频道、日志或版本控制系统中共享 API 令牌。使用最小权限原则的令牌,并定期轮换。
|
||||
Reference in New Issue
Block a user