diff --git a/.env.example b/.env.example index e5a35b0..795b662 100644 --- a/.env.example +++ b/.env.example @@ -39,9 +39,8 @@ BOOTSTRAP_ADMIN_TOKEN= # 服务端口(两种启动模式均生效) API_PORT=8031 # API 服务对外端口 -# Frontend lives in C:\c\Users\Administrator\projects\open-cli-admin. -NOVNC_PORT=3010 # Agent 实例 1 noVNC 对外端口(docker-compose port mapping) -NOVNC_BASE_PORT=3010 # 与 NOVNC_PORT 保持一致;API 用此值推算各实例 noVNC 端口 +NOVNC_PORT=6080 # Agent 实例 1 noVNC 对外端口(docker-compose port mapping) +NOVNC_BASE_PORT=6080 # 与 NOVNC_PORT 保持一致;API 用此值推算各实例 noVNC 端口 # 中心节点对外地址(远端 Agent 注册时使用,也用于生成安装脚本里的 CENTRAL_API_URL) # 必须是远端 Agent 能访问到的地址。留空时系统尝试从请求头推断(代理环境下可能不准确)。 diff --git a/CONTEXT.md b/CONTEXT.md index b4a6f13..e385c21 100644 --- a/CONTEXT.md +++ b/CONTEXT.md @@ -1,6 +1,18 @@ -# OpenCLI Operations Platform +# OpenCLI Operations Platform Context -OpenCLI is an Agent-driven data collection, processing, and delivery platform. OpenCLI Admin is its operator console for turning recurring data needs into observable, governable work. +OpenCLI is an Agent-driven research and intelligence pipeline for continuously collecting, processing, reviewing, and delivering data. OpenCLI Admin is its self-hosted operator console for turning recurring data needs into observable, governable Projects and Workflows. + +## Public Release Baseline + +The public v0.4.0 release has one end-to-end product path: + +Project → Workflow → Run → Records / Evidence → Delivery + +The default Docker installation includes the Admin frontend, FastAPI backend, SQLite storage, and an interactive Chromium/noVNC browser execution resource for QR-code or account login. OpenCLI, RSS, API, web, and tool nodes feed the same Workflow runtime; runs expose node events, traces, outputs, evidence, and records. + +AI providers, authenticated websites, and notification channels require operator-owned credentials or browser sessions. Remote Agents, PostgreSQL, Celery/Redis, Kats, Dify/Graphon, ODP/III, and other compatibility runtimes are optional deployment profiles rather than default-install promises. + +This document defines product language and object boundaries. It is not a release checklist; [README.md](README.md) is the public installation and capability contract. ## Language diff --git a/README.md b/README.md index e861013..9370fc4 100644 --- a/README.md +++ b/README.md @@ -1,515 +1,216 @@ # OpenCLI Admin -[](https://github.com/2233admin/opencli-admin/releases) +[](https://github.com/2233admin/opencli-admin/releases/latest) [](https://github.com/2233admin/opencli-admin/actions/workflows/ci.yml) +[](LICENSE) +[](https://github.com/2233admin/opencli-admin/pkgs/container/opencli-admin-api) -**现代化的数据采集系统** — 可视化管理多渠道数据采集,接入 [opencli](https://github.com/jackwener/opencli) 驱动国内外主流平台,支持 AI 处理、多节点分布式调度与实时通知推送。 +开源、自托管的研究与情报管线。把浏览器 / OpenCLI / RSS / API 数据采集、可视化工作流、AI 处理、证据关系和结果交付放进一个可运行、可审计的系统。 -## 当前仓库边界 +
+
+
v1,并完成了基于该发布版本的真实运行与 Trace 记录。
-**OpenCLI WebUI** OpenCLI 可视化界面 [opencli-webui](https://github.com/2233admin/opencli-webui)
+当前公开版本 v0.4.0 已打通:
-**仪表盘**
-
+登录采集账号 → 创建研究项目 → 编排工作流 → 执行与追踪 → 查看记录和证据 → 定时运行 / 对外交付
-**Agent 节点自动路由**
-BOOTSTRAP_ADMIN_TOKEN:首次进入管理界面使用;
+- API_AUTH_TOKEN:Fleet、Agent、API 和 MCP 访问使用。
----
+两者同时保存在安装目录的 .env。不要公开 noVNC、令牌或浏览器调试端口;远程部署建议使用 HTTPS、反向代理或 SSH 隧道。
-### 定时抓取 + AI 摘要 + 推送工作流
+## 正常的研究流程
-无需写代码,全程可视化配置:
+1. 打开 :6080,在内置 Chromium 中扫码或登录目标平台。公开 RSS、API 和网页来源可跳过这一步。
+2. 在「插件中心」确认 OpenCLI、RSS、API 或工具能力,在「项目」中从模板或空白项目开始。
+3. 在 Dify 风格的画布中连接来源、处理、Agent、Gate 和交付节点;右侧参数面板配置当前节点实际声明的业务参数。
+4. 保存、验证并发布工作流,手动执行已发布版本;Webhook 也可直接提交 workflowProject 触发运行。
+5. 在运行记录中查看节点事件、Trace、错误、重试和输出;采集结果统一进入「成果与数据」。
+6. 在项目内查看数据、逻辑与证据、证据关系和 Galaxy 视图。Galaxy 是证据关系的一种查看方式,不是独立的项目模块。
+7. 配置 Webhook、飞书、钉钉、企业微信或 Email,将通过规则和质量门的数据交付出去。
-1. **数据源** — 添加知乎热榜、HN、Twitter 列表
-2. **定时计划** — 每小时执行,绑定对应 Agent
-3. **AI 智能体** — 采集完成后自动调用 DeepSeek 提取摘要、打标签
-4. **通知推送** — AI 完成后推送到飞书 / 企业微信
+## 产品界面
-每天早晨打开飞书,信息流已处理好等你阅读。
+### 可视化工作流
----
+来源、处理、校验和数据集节点在同一画布完成编排;草稿、验证、发布和运行使用同一项目上下文。
-### 舆情监控实战闭环
+
-当前实战链路已经投到真实运行面,而不是只停留在配置说明:
+### 统一数据结果
-1. **多账号 / 多节点采集** — 通过「节点管理」和站点绑定,把 `opencli` 采集路由到指定 WS agent;验收脚本会证明 `chrome_endpoint` 和 `node_url` 都落在绑定节点。
-2. **AI 摘要与打标** — `collect → normalize → store → ai → notify` 流水线会把模型输出写入 `ai_enrichment`,监控台读取真实记录展示摘要、标签和情绪分布。
-3. **飞书推送** — 飞书模板可以直接引用 `{{summary}}`、`{{tags}}`、`{{sentiment}}`,把 AI 处理后的内容推到群机器人。
-4. **可视化验收** — 「监控台」的舆情监控卡片读取 `/api/v1/dashboard/opinion-monitor`,展示最近热点、AI 处理量、Feishu sent/failed 证据和来源贡献。
+采集结果保留原始数据、标准化字段和完整血缘,可搜索、查看详情,也可继续进入 AI、关系分析和交付节点。
-一键生成实战配置:
+
-```bash
-curl -X POST http://localhost:8000/api/v1/presets/opinion-monitor/apply \
- -H "Content-Type: application/json" \
- -d '{
- "source_prefix": "实战舆情",
- "feishu_webhook_url": "https://open.feishu.cn/open-apis/bot/v2/hook/xxx"
- }'
-```
+### 证据与关系
-这会创建两条默认 `aibase news` 多账号采集源、对应定时计划,以及一个飞书规则。
-如果暂时不填 `feishu_webhook_url`,飞书规则会以 disabled 状态创建,不会伪造推送成功。
+项目证据、实体关系和 Galaxy 共用同一份项目数据,支持搜索、图谱控制和运行证据回溯。
-关键验收命令:
+
-```powershell
-scripts\acceptance\fleet-acceptance.ps1 `
- -Site aibase `
- -Command news `
- -Limit 1 `
- -CenterPort 8032 `
- -AgentPort 19824 `
- -FreshDb
-```
+### 运行与治理
-如果本机已有旧 API/agent 进程占用端口,可以换一组固定端口,例如
-`-CenterPort 8035 -AgentPort 19828`。
+每次运行都能看到发布版本、状态、触发方式、节点事件、耗时和 Trace;下图第一条记录即为 Published v1 的成功运行。
-最终应输出:
+
-```text
-ACCEPTANCE: PASS
-```
+## 已支持的能力
----
+| 层次 | 能力 |
+| --- | --- |
+| 项目与工作流 | 项目模板、可视化节点编排、草稿、验证、版本发布、运行记录 |
+| 数据采集 | OpenCLI 浏览器适配、RSS、REST API、网页抓取、CLI / 工具节点 |
+| 登录态 | Docker 内置 Chromium + noVNC;Bridge / CDP;浏览器 Profile 持久化 |
+| 处理与分析 | 归一化、去重、AI 摘要 / 标签、关系与证据视图、Kats 时序工具(可选运行时) |
+| 自动化 | 已发布版本手动执行、Webhook ingress、节点级事件、重试与可观测 Trace |
+| 交付 | Webhook、飞书、钉钉、企业微信、Email,以及 API / MCP 消费 |
+| 执行资源 | 单机内置浏览器执行资源;可选远程 Agent、WS 反向通道、HTTP 直连与按站点路由 |
-## 快速开始
+OpenCLI 提供小红书、Bilibili、知乎、微博、X / Twitter、Reddit、YouTube、LinkedIn、Hacker News、财经和公开内容等适配能力。实际可用性取决于上游适配器、地区、登录态、站点风控和页面变更;请在自己的账号与网络环境中先运行连接测试。
-### 方式零:前后端本地开发
+## 默认、需配置与可选能力
-新前端在仓库内 `frontend/` 下开发和构建:
+| 开箱即用 | 配置后可用 | 可选部署 |
+| --- | --- | --- |
+| 项目 / 工作流 Studio | 需要登录的平台采集 | 远程多机 Agent |
+| SQLite 数据库 | 模型提供方与 AI 处理 | PostgreSQL |
+| 内置 Chromium / noVNC | 通知与交付渠道 | Redis + Celery |
+| 记录、运行和证据界面 | OIDC、API / MCP 客户端 | Kats、Dify / Graphon、ODP / III 等隔离运行时 |
-```bash
-cd frontend
-pnpm install
-pnpm dev # Next.js dev server, proxies /api/v1/* to backend
-pnpm lint
-pnpm exec tsc --noEmit
-```
+默认安装不会下载组织私有适配包,也不会伪造第三方凭证或交付成功。AI、通知和需要登录的平台必须由部署者显式配置。
-也可以从仓库根目录调用:
+## 分布式采集
-```bash
-npm run dev:frontend
-npm run lint:frontend
-npm run typecheck:frontend
-```
+需要把登录态留在本地电脑,或让多台机器分担不同站点时,可注册远程 Agent:
-### 方式一:原生 Shell
+~~~text
+OpenCLI Admin (:3010 / :8031)
+ │
+ ├── WS 反向通道 ── Agent A ── 已登录的小红书 / Bilibili
+ ├── WS 反向通道 ── Agent B ── 已登录的 X / LinkedIn
+ └── HTTP 直连 ── Agent C ── RSS / 公开网页
+~~~
-直接复用本地 opencli 和 Chrome,适合开发和个人使用。
+进入「执行资源」→「新增节点」,系统会按当前部署生成安装命令。Agent 路由优先级:
-**前置要求**:Python 3.11+、Node.js 18+、[opencli Browser Bridge 扩展](https://github.com/jackwener/opencli/blob/main/README.zh-CN.md#playwright-mcp-bridge-%E6%89%A9%E5%B1%95%E9%85%8D%E7%BD%AE)
+1. 本次运行手动指定;
+2. 自动化 / 计划绑定;
+3. 站点绑定;
+4. 自动选择可用实例。
-```bash
-cp .env.example .env
-./start.sh
-```
+远端机器默认使用 19823 端口。NAT 或跨网环境优先使用 WS 反向通道,无需在 Agent 侧开放入站端口。
-| 服务 | 地址 |
-|------|------|
-| API 文档 | http://localhost:8031/docs |
+## 架构
-`start.sh` 启动后端与 Chrome;前端另开终端运行 `npm run dev:frontend`。
+~~~mermaid
+flowchart LR
+ A["浏览器 / OpenCLI / RSS / API"] --> B["Project Workflow"]
+ B --> C["Run + Node Events + Trace"]
+ C --> D["Records + Evidence + Artifacts"]
+ D --> E["AI / Rules / Relationships"]
+ E --> F["Webhook / IM / Email / API / MCP"]
+ G["Local or Remote Agent"] --> A
+ H["Webhook / Human"] --> B
+~~~
-```bash
-./start.sh --no-chrome # 跳过 Chrome(RSS/API 渠道不需要)
-./start.sh --cdp-port 9223 # 自定义 Chrome CDP 端口
-```
+- 前端:Next.js 16、React 19、TypeScript、Tailwind CSS
+- 后端:FastAPI、SQLAlchemy 2.0 async、Alembic
+- 默认数据层:SQLite;可选 PostgreSQL
+- 执行层:本地 asyncio;可选 Celery / Redis 与远程 Agent
+- 浏览器:Chromium、noVNC、OpenCLI Bridge / CDP
-**停止**:`Ctrl+C`,自动关闭所有进程。
+更完整的对象模型和边界见 [CONTEXT.md](CONTEXT.md),系统结构见 [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)。
----
+## 从源码开发
-### 方式二:Docker
+前置要求:Python 3.13+、Node.js 26.3.1(见 .nvmrc)、uv、pnpm。
-**前置要求**:Docker & Docker Compose
+~~~bash
+git clone https://github.com/2233admin/opencli-admin.git
+cd opencli-admin
-Linux / macOS:
+uv sync
+uv run uvicorn backend.main:app --host 127.0.0.1 --port 8031
+~~~
-```bash
-curl -fsSL https://raw.githubusercontent.com/2233admin/opencli-admin/v0.4.0/scripts/install.sh | sh
-```
+另开终端:
-Windows PowerShell:
+~~~bash
+cd frontend
+pnpm install
+pnpm dev --hostname 127.0.0.1 --port 3010
+~~~
-```powershell
-Invoke-WebRequest https://raw.githubusercontent.com/2233admin/opencli-admin/v0.4.0/scripts/install.ps1 -OutFile install.ps1
-.\install.ps1
-```
+常用验证:
-安装器会生成安全密钥、拉取公开 GHCR 镜像并等待健康检查通过。终端会打印首次登录用的 `BOOTSTRAP_ADMIN_TOKEN` 和边缘节点用的 `API_AUTH_TOKEN`。
+~~~bash
+npm run lint:frontend
+npm run typecheck:frontend
+npm run build:frontend
+uv run pytest
+~~~
-从源码构建:
+从源码构建完整 Docker 栈:
-```bash
+~~~bash
cp .env.docker.example .env
-# 填写 API_AUTH_TOKEN、BOOTSTRAP_ADMIN_TOKEN、SECRET_KEY、CREDENTIAL_ENCRYPTION_KEY
+# 设置 API_AUTH_TOKEN、BOOTSTRAP_ADMIN_TOKEN、SECRET_KEY、CREDENTIAL_ENCRYPTION_KEY
docker compose -f docker-compose.yml -f docker-compose.build.yml up --build -d
-```
-
-| 服务 | 地址 |
-|------|------|
-| 管理界面 | http://localhost:3010 |
-| API 文档 | http://localhost:8031/docs |
-| 内置浏览器 / 扫码登录 | http://localhost:6080 |
-
-**停止**:`docker compose down`
-
-公开镜像只包含 OpenCLI 核心能力,不会隐式下载组织私有适配包;需要额外适配包时必须显式提供经过审计的仓库。
-
-首次打开管理界面时,在“管理员身份令牌”中输入 `BOOTSTRAP_ADMIN_TOKEN`;“Fleet API 令牌”中输入 `API_AUTH_TOKEN`,用于调用受保护的采集与节点接口。
-
----
-
-### 登录采集账号
-
-opencli 渠道依赖浏览器登录态,首次使用需手动登录各平台账号,之后持久保存。
-
-| 启动方式 | 操作 |
-|----------|------|
-| 原生 Shell | 脚本启动后在 Chrome 窗口中登录。登录态保存在 `~/.opencli-admin/chrome-profile/` |
-| Docker 单实例 | 打开 http://localhost:6080,在内置 Chromium 中扫码或登录 |
-| 远程服务器 | 先执行 `ssh -L 6080:127.0.0.1:6080 user@server`,再访问本机 `http://localhost:6080` |
-
-> 需要登录:小红书、Bilibili、知乎、微博、Twitter/X、LinkedIn、YouTube。Hacker News、BBC、RSS 等公开内容无需登录。
-
-## 边缘节点
-
-将任意远端机器注册为采集节点,形成分布式集群。
+~~~
-### 注册模式
-
-| 模式 | 原理 | 适用场景 |
-|------|------|----------|
-| **WS 反向通道** | Agent 主动连接中心,中心通过长连接推送任务 | NAT / 跨网,Agent 无需开放入站端口 |
-| **HTTP 直连** | Agent 启动后注册到中心,中心直接请求 Agent | 局域网,中心可直达 Agent |
-
-### 安装
+## 发布镜像
-进入管理界面 → **节点管理** → **新增节点**,选择安装方式,复制命令在目标机器执行:
+v0.4.0 同时发布 linux/amd64 和 linux/arm64:
-**Docker 安装**
+- ghcr.io/2233admin/opencli-admin-api:0.4.0
+- ghcr.io/2233admin/opencli-admin-frontend:0.4.0
+- ghcr.io/2233admin/opencli-admin-chrome:0.4.0
+- ghcr.io/2233admin/opencli-admin-agent:0.4.0
+- ghcr.io/2233admin/opencli-admin-agent:0.4.0-chrome
-```bash
-# WS 模式(NAT / 跨网)
-docker run -d --name opencli-agent --restart unless-stopped \
- --add-host=host.docker.internal:host-gateway \
- -e CENTRAL_API_URL=http://