| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
JustSearch 是一款基于大语言模型(LLM)和浏览器桥接技术的深度搜索工具。它不仅仅是一个搜索界面,更是一个能够像人类一样"思考、搜索、阅读、总结"的智能代理。它能自动拆解复杂问题,深入网页正文提取关键信息,并生成带有精确引用的详尽答案。
v2.0 起,JustSearch 不再内置无头浏览器,而是通过 自建 Chrome 扩展 + 本地 WebSocket 桥接 驱动你真实的 Chrome——直接复用你的登录态/Cookie,反爬与验证码大幅减少。详见 浏览器桥接 与 extension/README.md。
传统的搜索引擎往往只给你一系列链接,而 JustSearch 会:
我们提供了一键部署脚本,支持 Docker 和本地环境。推荐使用 Docker 以获得最佳体验。
git clone https://github.com/yeahhe365/JustSearch.git
cd JustSearchchmod +x deploy.sh
./deploy.sh双击运行 deploy.bat。
脚本逻辑说明:
- 优先检查 Docker 环境,若存在则自动构建镜像并启动容器。
- 若无 Docker,则自动回退至本地 Python 环境,创建虚拟环境、安装依赖并启动服务。
如果您希望手动控制开发环境:
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r backend/requirements.txt扩展只需加载一次;后端重启无需重载扩展(它会自动重连)。
前端 JS/CSS 采用分片源文件 + esbuild 打包:业务 JS 与各 CSS 分片位于 backend/static/js/modules/ 与 backend/static/css/sections/,运行时直接加载源文件即可正常开发。
如需生产级优化(JS 合并压缩、CSS 拼接压缩、自动缓存指纹),执行:
npm install # 首次;安装 esbuild
npm run build # 生成 backend/static/dist/ 产物构建后 backend/app/main.py 会优先伺服 dist/index.html(自动缓存指纹 ?v=<hash>, 改代码后无需手动递增版本号);未构建时回退到源 index.html,开发体验不受影响。 本地开发可运行 npm run dev 生成未压缩产物。
# 使用脚本运行
./run.sh
# 或手动启动
python3 -m uvicorn backend.app.main:app --host 0.0.0.0 --port 8000 --reload| 变量名 | 默认值 | 说明 |
|---|---|---|
| JUSTSEARCH_BRIDGE_WS_HOST | 127.0.0.1 | 桥接 WebSocket 监听地址(Docker 内用 0.0.0.0) |
| JUSTSEARCH_BRIDGE_WS_PATH | /justsearch | 桥接 WebSocket 路径 |
| BRIDGE_REQUEST_TIMEOUT_MS | 30000 | 单次桥接 RPC 请求超时(毫秒) |
| JUSTSEARCH_LLM_CONCURRENCY | 5 | 进程级 LLM 请求并发上限;同时进行多个对话时可调大(如 8),注意过大会触发上游限流 |
| JUSTSEARCH_INTERACTIVE_CONCURRENCY | 2 | 全局「交互模式」爬取并发上限(CDP 点击);放宽后允许多个对话并行交互爬取 |
| CORS_ORIGINS | http://localhost:8000,http://127.0.0.1:8000,http://localhost,http://127.0.0.1 | 允许的 CORS 来源(逗号分隔) |
| OPENAI_API_KEY | - | API Key 环境变量回退(优先使用设置面板中的配置) |
docker-compose up -d访问 http://localhost:8001(compose 将容器 8000 映射到宿主机 127.0.0.1:8001)。认证 Token 会自动注入到本机页面中,无需手动配置;远程访问请显式提供 token。
浏览器桥接扩展请连 ws://127.0.0.1:8001/justsearch(与页面端口一致)。若扩展连的不是本机 loopback,可在 URL 后加 ?token=<token>。
升级提示:镜像以非 root 用户 justsearch 运行。若旧数据卷由 root 创建导致无法写入,可在宿主机执行:
docker compose run --rm --user root justsearch chown -R justsearch:justsearch /app/data
如果您需要更新到最新版本,请执行以下步骤:
git pull直接运行:
./deploy.sh或者手动运行:
docker-compose up -d --build注意:使用 --build 参数确保 Docker 重新构建镜像以应用最新的代码和依赖变更。运行数据保存在 data/ 中,会通过 Docker volume 保留。Docker 部署下,桥接 WebSocket 与 HTTP 共用端口,扩展连接地址与页面访问地址端口一致。
./deploy.sh或者手动更新:
source venv/bin/activate
pip install -r backend/requirements.txtJustSearch 采用多阶段迭代流程,确保回答的深度和准确性:
JustSearch 用一个自建 Chrome 扩展 + 后端 WebSocket 服务驱动你真实的 Chrome。好处:
你的 Chrome(装了 JustSearch Bridge 扩展)
│ WebSocket 出站连接(JSON-RPC 2.0,自动重连)
▼
JustSearch 后端 FastAPI
└── extension_bridge.py ← WS 服务端(ws://127.0.0.1:8000/justsearch)
持有唯一扩展连接、JSON-RPC 路由、tab 池
扩展借鉴了 browser-control-bridge 的设计(chrome.debugger CDP 路径 + 虚拟光标 + tab 生命周期),但完全自建、只服务 JustSearch,无 MCP 层、无 CDP allowlist(自用)。
搜索过程中如果遇到验证码,JustSearch 会在你的真实 Chrome 里检测到,并在对话流里提示「请在 Chrome 中手动完成」。你只需切到那个标签页完成验证,JustSearch 会自动检测通过并继续搜索,无需中断流程。
旧版的「弹窗远程操作验证码」与「预登录脚本」在 v2.0 已移除——真实浏览器下这两者都不再需要。
JustSearch/
├── backend/
│ ├── app/
│ │ ├── main.py # FastAPI 入口,路由定义
│ │ ├── workflow.py # 搜索工作流引擎(迭代式搜索核心)
│ │ ├── llm_client.py # LLM 客户端(任务分析/评估/生成/交互决策)
│ │ ├── openai_client.py # OpenAI 兼容客户端构造
│ │ ├── browser_manager.py # 搜索引擎抓取(经桥接驱动真实 Chrome)
│ │ ├── extension_bridge.py # 浏览器桥接:WS 服务端 + JSON-RPC 客户端 + tab 池
│ │ ├── page_crawler.py # 页面正文爬取与 GitHub 等站点专用提取器
│ │ ├── crawler/ # URL 安全校验与搜索引擎重定向解析
│ │ ├── search_result_cleanup.py # 搜索结果标题/内部页过滤
│ │ ├── database.py # SQLite 模型、对话历史、设置持久化
│ │ ├── legacy_migration.py # 旧 JSON 数据一次性迁移
│ │ ├── auth.py # Token 认证与 HTML 启动参数注入
│ │ ├── routers/ # API 路由(chat/history/settings/stats)
│ │ ├── prompts.py # LLM Prompt 模板
│ │ └── search_engine.py # 搜索引擎 CSS 选择器配置加载
│ ├── static/
│ │ ├── css/style.css # 样式入口,按顺序导入 sections/
│ │ ├── css/sections/ # base/sidebar/chat/modal/markdown/responsive 等样式分层
│ │ ├── js/
│ │ │ ├── main.js # 前端启动编排
│ │ │ └── modules/ # api/auth/chat/history/sidebar/settings/source-renderer.js/ui 等模块
│ │ └── index.html
│ ├── settings.json.example # 配置模板
│ └── requirements.txt
├── extension/ # 自建 Chrome 扩展(MV3):WS 桥接 + CDP + 虚拟光标
├── data/ # SQLite 数据库运行目录(自动创建)
├── Dockerfile # Docker 构建文件(无 Chromium)
├── docker-compose.yml
├── deploy.sh / deploy.bat # 一键部署脚本 (推荐)
└── run.sh # 本地启动脚本
欢迎贡献代码!请遵循以下步骤:
| 变量 | 默认值 | 说明 |
|---|---|---|
| JUSTSEARCH_BRIDGE_WS_HOST | 127.0.0.1 | 桥接 WS 监听地址 |
| JUSTSEARCH_BRIDGE_WS_PATH | /justsearch | 桥接 WS 路径 |
| BRIDGE_REQUEST_TIMEOUT_MS | 30000 | 桥接 RPC 请求超时(毫秒) |
| JUSTSEARCH_LLM_CONCURRENCY | 5 | 进程级 LLM 请求并发上限;同时进行多个对话时可调大(如 8) |
| JUSTSEARCH_INTERACTIVE_CONCURRENCY | 2 | 全局「交互模式」爬取并发上限(CDP 点击) |
| CORS_ORIGINS | http://localhost:8000,http://127.0.0.1:8000,http://localhost,http://127.0.0.1 | CORS 允许的源(逗号分隔) |
| OPENAI_API_KEY | — | 备用 API Key |
| Back | FazBrowse Home | New Git URL |