Install
openclaw skills install everything-searchEverything Windows 文件搜索技能 — HTTP API 快速搜索、中英文模糊匹配、文件类型过滤
openclaw skills install everything-search通过 Everything HTTP Server API 实现快速文件搜索功能。支持中文/英文搜索、模糊匹配、文件类型过滤。
D:\Program Files\Everything\⚠️ 关键步骤 - 必须手动操作:
☑ Enable HTTP server2853# 测试 HTTP 服务器是否运行
python -c "import urllib.request; r = urllib.request.urlopen('http://127.0.0.1:2853/', timeout=5); print('OK:', r.status)"
问题: 配置文件不会自动启用 HTTP 服务器
原因: Everything 的安全设计,必须在 GUI 界面中手动勾选
解决方案:
Everything.ini 不会生效问题: 有时有两个 Everything 进程运行,其中一个可能不读取用户配置
症状:
解决方案:
问题: 修改配置后 HTTP 服务器未立即响应
解决方案:
问题: 端口 2853 无法连接
诊断方法:
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
result = sock.connect_ex(('127.0.0.1', 2853))
if result == 0:
print("端口开放")
else:
print("端口关闭")
正确的 API 格式:
http://127.0.0.1:2853/?search=关键词&json=1&maxresults=20
错误的 API 格式(会导致 404):
http://127.0.0.1:2853/everything/?search=关键词&json=1
http://127.0.0.1:2853/api/search?query=关键词&json=1
症状:
✗ Connection failed: [WinError 10061] 由于目标计算机积极拒绝,无法连接
排查过程:
Everything.ini根本原因:
enabled=1 不会自动启用 HTTP 服务器解决方案:
☑ Enable HTTP server 已勾选验证命令:
python /workspace/check-port.py
# 输出:✓ Port 2853 is OPEN and listening!
症状:
✗ Search failed: HTTP Error 404: Not Found
排查过程:
/ 返回正常 HTML/everything/?search=test 返回 404/api/search?query=test 返回 404/?search=test&json=1 返回正常 JSON根本原因:
/,不是 /everything/解决方案: 使用正确的 API 格式:
http://127.0.0.1:2853/?search=关键词&json=1&maxresults=20
症状:
0 B原因:
解决方案:
在 API URL 中添加 &size=1 参数:
http://127.0.0.1:2853/?search=关键词&json=1&size=1&maxresults=20
症状:
原因:
解决方案:
使用 urllib.parse.quote() 编码中文:
import urllib.parse
keyword = "数据资产"
encoded = urllib.parse.quote(keyword)
url = f"http://127.0.0.1:2853/?search={encoded}&json=1"
#!/usr/bin/env python3
import urllib.request
import urllib.parse
import json
PORT = 2853
KEYWORD = "数据资产"
# 编码关键词
encoded = urllib.parse.quote(KEYWORD)
url = f"http://127.0.0.1:{PORT}/?search={encoded}&json=1&maxresults=20"
# 发送请求
req = urllib.request.Request(url)
req.add_header('User-Agent', 'Mozilla/5.0')
with urllib.request.urlopen(req, timeout=10) as response:
data = json.loads(response.read().decode())
total = data.get("totalResults", 0)
results = data.get("results", [])
print(f"找到 {total} 个结果")
for item in results[:10]:
name = item.get("name", "Unknown")
path = item.get("path", "")
full_path = f"{path}\\{name}" if path else name
print(f" - {full_path}")
# 搜索特定类型的文件
keywords = [
"张三 jpg", # 搜索 JPG 照片
"张三 png", # 搜索 PNG 图片
"数据资产 xlsx", # 搜索 Excel 文件
"报告 pdf", # 搜索 PDF 文档
]
for keyword in keywords:
encoded = urllib.parse.quote(keyword)
url = f"http://127.0.0.1:2853/?search={encoded}&json=1&maxresults=10"
# ... 处理结果
# 只搜索文件(不包括文件夹)
关键词 file:
# 只搜索文件夹
关键词 folder:
# 搜索特定扩展名
关键词 ext:jpg
关键词 ext:png
# 在特定路径中搜索
关键词 path:"D:\Documents"
# 排除特定路径
关键词 !path:"C:\Windows"
# 大于 1MB 的文件
关键词 size:>1mb
# 小于 100KB 的文件
关键词 size:<100kb
# 今天修改的文件
关键词 dm:today
# 本周修改的文件
关键词 dm:thisweek
# 特定日期之后修改的文件
关键词 dm:>2024-01-01
# check-port.py
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(3)
result = sock.connect_ex(('127.0.0.1', 2853))
if result == 0:
print("✓ Port 2853 is OPEN")
else:
print("✗ Port 2853 is CLOSED")
# test-api.py
import urllib.request
endpoints = [
"/",
"/?search=test&json=1",
"/version",
]
for endpoint in endpoints:
url = f"http://127.0.0.1:2853{endpoint}"
try:
with urllib.request.urlopen(url, timeout=5) as r:
print(f"✓ {endpoint} - {r.status}")
except Exception as e:
print(f"✗ {endpoint} - {e}")
配置 Everything 后,按此清单检查:
最后更新: 2026-04-02
作者: nanobot
版本: 1.0