Files
iAs/resources/skills/search_web/scripts/search.sh
T
wunianxiao a549bd3b2f fix: manage_scheduled_task + search_web 注入 + 删除 LM Studio
- manage_scheduled_task: INSERT 加 user_id='', 检查 psql 退出码
- search_web: 用 python json.dumps 构造请求体(防止注入)
- 删除 lmstudio.rs / LmStudioConfig,仅保留 DeepSeek
- config.json 移除 lmstudio 段
2026-06-02 13:51:46 +08:00

37 lines
1.4 KiB
Bash
Executable File

#!/bin/bash
# Tavily 搜索 → JSON 输出
read -r input
QUERY=$(echo "$input" | python3 -c "import sys,json; print(json.load(sys.stdin).get('query',''))" 2>/dev/null)
COUNT=$(echo "$input" | python3 -c "import sys,json; print(json.load(sys.stdin).get('count',5))" 2>/dev/null)
[ -z "$QUERY" ] && echo '{"error":"请提供 query 参数"}' && exit 0
API_KEY="${TAVILY_API_KEY}"
[ -z "$API_KEY" ] && echo '{"error":"请设置 TAVILY_API_KEY"}' && exit 0
export SEARCH_QUERY="$QUERY" SEARCH_COUNT="$COUNT"
RESP=$(python3 -c "
import urllib.request, json, os
key = os.environ['TAVILY_API_KEY']
query = os.environ['SEARCH_QUERY']
count = int(os.environ.get('SEARCH_COUNT', 5))
body = json.dumps({'api_key': key, 'query': query, 'max_results': count, 'include_answer': True}).encode()
req = urllib.request.Request('https://api.tavily.com/search', data=body, headers={'Content-Type': 'application/json'})
print(urllib.request.urlopen(req).read().decode())
" 2>/dev/null)
export RESP QUERY COUNT
python3 -c "
import os, json
d = json.loads(os.environ['RESP'])
result = {
'query': os.environ['QUERY'],
'answer': d.get('answer', ''),
'results': [
{'title': r.get('title', ''), 'url': r.get('url', ''), 'content': r.get('content', '')[:300]}
for r in d.get('results', [])[:int(os.environ['COUNT'])]
]
}
print(json.dumps(result, ensure_ascii=False))
" 2>/dev/null || echo '{"error":"搜索请求失败"}'