Files
2026-05-03 19:13:24 +00:00

144 lines
4.5 KiB
Markdown
Raw Permalink 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: 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 TokenBearer 令牌)
```
---
## 核心操作
### 操作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 令牌。使用最小权限原则的令牌,并定期轮换。