v0.7.0 · 2026年4月

eCan.ai 用户手册

AI 原生、隐私优先的跨平台电商智能体平台 — 在 Windows、macOS、Linux 和 Web 上用 AI 智能体运营您的电商业务。

跨平台 多渠道 可视化工作流编辑器 隐私优先

什么是 eCan.ai?

eCan.ai(电商智能体网络,E-Commerce Agent Network)是一个 AI 原生平台,让电商卖家能够用 AI 智能体自动化业务的每个环节——从商品采购到销售、从营销调研到广告投放、从法律咨询到客户服务——最大程度减少人工干预。

智能体运行在载体(host computer,即主机)上,通过局域网或广域网相互连接。一台电脑充当指挥节点,其他电脑作为承载智能体的载体节点。参谋设备(PC、手机或平板)可通过互联网远程监控和指挥整个智能体网络。

🤖

网络化智能体

在多台机器上部署智能体,每个智能体通过 LangGraph 工作流独立执行任务。

🎨

可视化技能编辑器

拖拽式流程图画布,构建 LangGraph 工作流,无需编写繁杂样板代码。

🌐

多渠道集成

支持 Telegram、Slack、Discord、WhatsApp、钉钉、Messenger、X 及内置网页聊天。

🔒

隐私优先

支持本地部署大模型(Ollama、Qwen),您的数据无需离开您的基础设施。

🖥️

浏览器自动化

集成 Playwright、Selenium、Browser-use 和 Crawl4ai,轻松处理任何网站、验证码及指纹浏览器。

👁️

视觉识别 / OCR

eCanOCR 融合 Tesseract + PaddleOCR,实现精准的屏幕文字识别和 CV 引导的自动化操作。

核心概念

智能体(Agent)

智能体是 eCan.ai 中的核心执行者。每个智能体有名称、头像及一组可执行的任务。智能体运行在载体(主机)上,通过渠道与人类或其他智能体进行通信。

任务(Task)与技能(Skill)

任务是分配给智能体的具体工作(例如"每天监控商品价格")。每个任务都需要一个技能——一个基于 LangGraph 的工作流,描述如何完成这项工作。技能可以在技能编辑器中可视化构建,也可以直接用 Python 编写。

任务可以由人工命令触发、按一次性计划执行,或按周期性计划执行(例如每天 08:00)。

载体(Vehicle)

载体是承载一个或多个智能体的任何计算机(桌面电脑、服务器、虚拟机)。载体加入 eCan.ai 网络后,从指挥节点接收任务分配。

技能(Skill)

技能存储在 $SKILL_ROOT/my_skills/ 目录下。图形化表示存放在 diagram_dir 子目录;直接编写的 LangGraph 技能存放在 code_dir。两者可以共存,并可相互转换。

安装

桌面客户端(Windows / macOS)

ecan.ai/download 下载最新安装包。安装程序内置了 Python、所有依赖项及 Chromium 浏览器,无需单独安装 Python。

安装完成后,从应用程序目录或开始菜单启动 eCan.ai。首次启动时会提示创建账户或登录。

无界面服务器模式(Linux / Ubuntu)

对于无 GUI 的服务器部署,eCan.ai 以 Web 模式运行——一个通过 WebSocket/REST 接口交互的后端服务器。

系统要求 Ubuntu 20.04 LTS 或更新版本 · Python 3.10+(推荐 3.12+)· 4 GB RAM(推荐 8 GB)· 20 GB 磁盘空间
1

安装系统依赖

sudo apt-get update
sudo apt-get install -y python3 python3-venv python3-pip \
    libpq-dev gcc libffi-dev tesseract-ocr poppler-utils git
2

克隆仓库并运行部署脚本

git clone <仓库地址> eCan.ai && cd eCan.ai
chmod +x scripts/deploy-ubuntu.sh
./scripts/deploy-ubuntu.sh setup
3

配置 API 密钥

# 编辑 .env.web,填入您的大模型提供商密钥:
OPENAI_API_KEY=sk-...
ANTHROPIC_API_KEY=sk-ant-...
DASHSCOPE_API_KEY=...   # 通义千问 / 阿里云
4

启动服务器

./scripts/deploy-ubuntu.sh start
# 验证:curl http://localhost:8765/health
DEPLOYMENT_UBUNTU.md — Ubuntu 完整部署指南 WEB_DEPLOYMENT.md — Web/Docker 部署架构

快速开始

1

创建智能体

在侧边栏点击 智能体 → 新建智能体,为其命名,并可选择上传头像图片或视频。

2

构建或加载技能

打开 技能 → 技能编辑器,将节点拖拽到画布并连接,然后点击保存。也可以加载内置的示例技能。

3

创建任务

进入 任务 → 新建任务,选择智能体、选择技能、设置触发方式(手动、计划或事件触发),然后保存。

4

运行并对话

点击任务卡片上的运行,智能体开始执行技能。在内置网页聊天面板中与智能体对话(或通过任意已连接的渠道)。

智能体与任务

管理智能体

每个智能体有名称、描述、头像及默认任务分配。您可以创建多个智能体,并将其分配到网络中的不同载体(机器)上。

任务触发方式

触发类型说明
手动点击"运行"后立即执行
一次性计划在指定日期和时间运行一次
周期性计划类 Cron 的周期执行(如每天 08:00)
事件触发由传入消息、Webhook 或系统事件触发

多智能体 · 多任务

多个智能体可以同时运行,每个智能体在独立线程中并行处理不同任务。智能体之间通过 A2A 协议(Agent-to-Agent)进行通信——这是一个正在成为业界标准的开放式智能体间通信协议。

技能编辑器

技能编辑器是构建 LangGraph 工作流的可视化 IDE。它使用流程图画布,您可以在其中放置并连接节点来描述智能体的行为逻辑。

skill_editor_help.md — 技能编辑器完整指南 mapping-dsl.md — 数据映射 DSL 参考 prompt-variable-resolution.md — Prompt 变量系统

画布基础操作

添加节点

在画布空白处右键(或点击工具栏中的节点图标)打开节点选择菜单。选择节点类型后,点击画布上的目标位置放置节点。双击节点可打开其配置面板。

连接节点

从节点的输出端口拖拽到另一节点的输入端口,即可绘制一条边。将边的端点拖到空白处可删除该边;拖到其他输入端口可重新路由。

画布导航

多页签工作流

复杂的工作流可以拆分到多个页签(Sheet,即画布)上。使用右上角的页签菜单(图层图标)来添加、删除或重命名页签。

重要命名约定 包含工作流入口 Start 节点的页签必须命名为 main。其他页签通过 sheet-call 节点调用。

跨页签引用

调用另一个页签的逻辑:

  1. 在被调用页签上添加 sheet-inputs 节点(声明输入名称)和 sheet-outputs 节点(声明输出名称)。
  2. 在调用方页签上插入 sheet-call 节点,从下拉框中选择目标页签。
  3. 在侧边栏中将每个输入/输出映射到常量或本地节点端口。

多页签工作流会保存为一个 -bundle.json 伴生文件。

数据流转 — 映射 DSL

节点之间通过共享的节点状态对象交换数据。由于每个工作流的状态结构各不相同,eCan.ai 使用基于 JSON 的映射 DSL来描述数据在节点间以及外部事件与节点状态之间的流转方式。

当工作流中断后需要恢复时(例如等待人工输入或定时器到期),相同的 DSL 也用于处理恢复载荷(resume payload)。

mapping-dsl.md — 映射 DSL 完整参考

保存与加载

运行与调试

调试技能时,它作为特殊的开发任务在测试智能体下运行。如果您的工作流涉及聊天,测试消息需以 dev> 前缀开头,以路由到测试智能体。

断点

打开节点右上角菜单,切换断点开关。执行到断点时,流程在该节点执行前暂停。您可以检查和修改节点状态,然后继续运行。

受控执行

使用工具栏控制按钮:暂停 · 单步 · 继续 · 停止。当前正在执行的节点会显示运行动画。

测试运行

点击测试运行,在隔离环境中执行工作流。在输入面板中提供 JSON 输入;在输出面板中查看每个节点的输出及最终 End 节点的结果。

版本控制

节点参考

Start / End
开始 / 结束节点

Start 节点输出初始状态值;End 节点收集并展示工作流的最终输出结果。

Code
代码节点

内置 Monaco 编辑器,支持 Python、JavaScript 和 TypeScript。可切换语言、重置为模板代码或从磁盘加载文件。

LLM
大模型节点

调用语言模型。从下拉框选择提供商和模型。约定:始终要求 LLM 返回结构化 JSON:{"message": "...", "meta_data": {...}}——这会让节点间数据传递更加便捷。

HTTP
HTTP 节点

配置出站 HTTP 请求(方法、URL、请求头、参数、请求体、超时、API 密钥)。响应存储在节点状态的 http_response 字段中。

Condition
条件节点

根据对节点状态求值的谓词,将执行流路由到不同分支。

Loop
循环节点

遍历节点状态中的数组,对每个元素执行嵌套的逻辑块。

Group
分组节点

将相关节点进行视觉分组,提升工作流可读性。不影响执行逻辑。

MCP Tool Call
MCP 工具调用节点

调用 MCP(模型上下文协议)工具。输入需存放在节点状态的 tool_input 字段中。原始结果(TextContentImageContentAudioContent)存储在 tool_result 字段中。

Pend For Event
等待事件节点

暂停工作流,直到特定事件到达(人工消息、定时器到期、Webhook、SSE 推送等)。i_tag 将中断点与正确的恢复位置绑定。典型用途:人机协作、异步 API 回调、发布/订阅事件。

Sheet Call
页签调用节点

调用同一项目中另一个页签上定义的工作流,传入映射的输入并接收映射的输出。

浏览器自动化

eCan.ai 集成了多个先进的网页自动化库,能够处理从常规爬取到在反爬电商网站上执行复杂多步骤操作的各类场景。

最适合场景集成方式
Browser-use基于自然语言指令的 AI 驱动浏览可作为 LangGraph 节点调用
Crawl4ai快速、AI 就绪的网页抓取可作为 LangGraph 节点调用
Playwright现代无头浏览器自动化浏览器内 MCP 工具(点击、输入、滚动、等待、脚本)
Selenium / ChromeDriver指纹浏览器(AdsPower 等)Selenium MCP 工具(点击、输入、滚动、键盘)

计算机视觉引导操作

当浏览器内自动化不够用时(弹窗、验证码、非标准 UI),eCan.ai 的 eCanOCR 服务提供屏幕理解和 CV 引导的鼠标/键盘操作——让您完全掌控任何桌面窗口或浏览器。

eCanMCP.md — MCP 工具完整参考 BROWSER_EVENT_MONITOR.md — 浏览器事件监控

OCR 服务(eCanOCR)

eCanOCR 是一个将屏幕图像转换为结构化文本的 API 服务。它融合了 Tesseract 的速度与改进版 PaddleOCR 引擎的高精度,自动将原始 OCR 输出重组为层级化的段落、行和词语。

核心能力

内容技能文件(.csk)

.csk 文件使用 JSON 指令集描述预期的页面内容。它定义锚点(独特的文本或图标地标)和信息区域(相对于锚点的感兴趣区域)。这使得智能体能够可靠地从重复出现的页面布局中提取结构化数据。

eCanOCR.md — OCR 服务参考

MCP 工具

eCan.ai 提供一套可流式传输的 HTTP MCP 工具,任何集成了 LLM 的工作流均可调用。这些工具分为五个类别:

🖱️

鼠标与键盘

单击、双击、右键、拖放、滚动、文字输入、按键。支持按锚点名称或文本进行 CV 引导定位。

👁️

屏幕视觉

屏幕截图、通过 eCanOCR 提取结构化文本、按名称和类型搜索特定元素。

📁

文件与目录

操作系统级文件和目录操作——读取、写入、列出、移动、删除。

🌐

浏览器操作

Playwright 和 Selenium 浏览器内工具:点击、输入、滚动、执行脚本、等待元素、键盘组合键。

🔌

API 请求

可配置方法、请求头和请求体的通用 HTTP 请求——从工作流中调用任意外部 API。

eCanMCP.md — MCP 工具语法完整参考 MULTI_TOOL_CALLS.md — 串行与并行多工具调用

多渠道集成

渠道系统让 eCan.ai 智能体能够接收并回复来自外部消息平台的消息。每个渠道适配器将入站消息规范化为统一格式,路由到智能体处理管道,再将回复发送回原始平台。

💬
网页聊天内置(始终激活)
✈️
Telegram长轮询,无需 Webhook
💼
SlackSocket 模式(WebSocket)
🎮
DiscordGateway Bot(WebSocket)
📱
WhatsAppCloud API + Webhook*
📎
钉钉Stream 模式(WebSocket)
👤
Facebook MessengerGraph API + Webhook*
🐦
X(Twitter)账号活动 API + Webhook*

* 需要可公开访问的端点(例如通过 ngrok 或反向代理)。

快速配置

所有渠道配置位于 agent/agent_files/channels.json。启用渠道、填入凭证,重启 eCan.ai 后渠道管理器会自动启动。

{
  "channels": {
    "telegram": {
      "enabled": true,
      "bot_token": "您的机器人令牌",
      "allowed_chat_ids": [],
      "default_agent_id": ""
    }
  }
}

default_agent_id 设置为指定智能体 ID,可将该渠道的消息路由给特定智能体;留空则路由给第一个可用智能体。

Telegram 配置步骤

  1. 在 Telegram 上与 @BotFather 对话 → 发送 /newbot → 复制机器人令牌。
  2. 将令牌填入 channels.json"telegram" 部分。
  3. 重启 eCan.ai — 机器人立即上线。

Slack 配置步骤

  1. api.slack.com/apps 创建 Slack 应用。
  2. 启用 Socket 模式,订阅 message.* 事件。
  3. bot_tokenapp_token 填入 channels.json
  4. 在频道中邀请机器人:/invite @您的机器人名称

WhatsApp / Messenger / X(Twitter)

这些渠道需要公开可访问的 Webhook 端点。开发阶段可使用 ngrok:

ngrok http 8443   # WhatsApp
ngrok http 8444   # Messenger
ngrok http 8445   # X(Twitter)

在各平台的开发者控制台中注册 ngrok URL 为 Webhook 地址,然后在 channels.json 中填入对应凭证。

钉钉配置步骤

  1. 钉钉开放平台创建机器人应用。
  2. 启用 Stream 模式,记录 AppKey(client_id)和 AppSecret(client_secret)。
  3. 将凭证填入 channels.json"dingtalk" 部分。
  4. 在群聊中 @ 提及机器人,或通过单聊直接与其对话(单聊无需 @)。
channels.md — 渠道完整配置与故障排查

头像系统

每个智能体可以设置静态图片头像或动态视频头像。头像文件存储在本地,并在后台自动同步到 AWS S3。

支持格式

类型格式展示方式
图片PNG、JPG、GIF、WebP静态图片
视频WebM、MP4、MOV、AVI循环播放、静音、自动播放

S3 云端同步

上传后,文件先保存到本地,然后在后台线程中上传到 AWS S3,不阻塞界面操作。S3 URL 存入数据库,在智能体数据同步到云端时使用。

可选:安装 ffmpeg 如果安装了 ffmpeg,视频上传时会自动提取首帧作为封面图。未安装 ffmpeg 时,视频仍可正常使用,只是不会显示封面图。
AVATAR_GUIDE.md — 头像系统参考 S3_SETUP.md — S3 配置指南

CLI 命令行参考

eCan.ai CLI 在无界面模式下提供对服务器和所有资源的完整控制,无需 GUI。

python ecan_cli.py --help          # 全局帮助
python ecan_cli.py version         # 显示版本
python ecan_cli.py status          # 系统状态

身份验证

python ecan_cli.py auth login -u 用户名 -p 密码
python ecan_cli.py auth status
python ecan_cli.py auth logout

资源命令

资源子命令
agents(智能体)list · get · add · update · remove · run · stop · monitor
tasks(任务)list · get · add · remove
skills(技能)list · get · add · remove
vehicles(载体)list · get · add · remove
knowledge(知识库)list · get
prompts(提示词)list · get · add · remove
tools(工具)list · get
settings(设置)show · set · reset
server(服务器)start · stop · restart · status · logs

服务器管理

python ecan_cli.py server start                        # 后台启动
python ecan_cli.py server start --host 0.0.0.0 --port 8080
python ecan_cli.py server start --foreground           # 前台运行(调试用)
python ecan_cli.py server logs --follow                # 跟踪日志
python ecan_cli.py server stop

输出格式

大多数列表命令支持 --output table(默认)和 --output json(用于脚本化处理):

python ecan_cli.py agents list --output json | jq '.agents[0].name'
CLI_GUIDE.md — CLI 完整参考

服务器部署

环境变量

变量默认值说明
ECAN_MODEweb无界面模式下必须设为 web
ECAN_WS_HOST0.0.0.0WebSocket 绑定地址
ECAN_WS_PORT8765WebSocket 端口
ECAN_LOG_LEVELINFODEBUG / INFO / WARNING / ERROR

Docker 部署

docker-compose -f docker-compose.web.yml up -d
docker-compose -f docker-compose.web.yml logs -f

Nginx 反向代理(生产环境)

server {
    listen 80;
    server_name your-domain.com;
    location / {
        proxy_pass http://127.0.0.1:8765;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_read_timeout 86400;
    }
}

Systemd 服务(生产环境)

[Unit]
Description=eCan.ai Web Server
After=network.target

[Service]
Type=simple
User=www-data
WorkingDirectory=/opt/eCan.ai
EnvironmentFile=/opt/eCan.ai/.env.web
ExecStart=/opt/eCan.ai/venv/bin/python -m uvicorn web_server:app \
          --host 127.0.0.1 --port 8765
Restart=always

[Install]
WantedBy=multi-user.target

Web 模式限制

功能桌面模式Web / 无界面模式
文件对话框❌(使用文件路径代替)
屏幕截图
桌面自动化
原生通知
DEPLOYMENT_UBUNTU.md — Ubuntu 部署指南 WEB_DEPLOYMENT.md — Web/Docker 部署架构

代理管理

eCan.ai 内置代理管理系统,支持通过 HTTP/SOCKS 代理路由浏览器自动化流量——这对于需要 IP 轮换或地理位置访问的电商工作流至关重要。

代理可以按智能体或按任务进行配置,自动应用于 Playwright、Selenium 及 HTTP 请求节点。

PROXY_MANAGEMENT_SYSTEM.md — 代理管理完整参考

设置与 API 密钥

大模型提供商

为您希望使用的大模型提供商添加 API 密钥。密钥存储在 .env(桌面模式)或 .env.web(服务器模式)中。

提供商环境变量
OpenAI(GPT-4o、o1 等)OPENAI_API_KEY
Anthropic(Claude)ANTHROPIC_API_KEY
Google(Gemini)GOOGLE_API_KEY
阿里云(通义千问 / DashScope)DASHSCOPE_API_KEY
本地(Ollama)无需密钥——在设置中配置 Base URL 即可

应用内设置

从侧边栏打开设置,可配置大模型默认选项、浏览器自动化选项、内存限制、更新偏好等。更改无需重启即可生效。

键盘快捷键

技能编辑器

Ctrl/Cmd + Z撤销 Ctrl/Cmd + Y重做 Ctrl/Cmd + S保存工作流 Ctrl + 滚轮缩放画布 鼠标中键平移画布 Shift + 拖拽多选节点 双击节点打开节点编辑器 右键单击画布添加节点菜单

通用快捷键

Ctrl/Cmd + ,打开设置 Ctrl/Cmd + K命令面板 Escape关闭弹窗 / 取消操作

常见问题与故障排查

技能编辑器无法加载

刷新页面,并确保 eCan.ai 后端服务器正在运行。在桌面模式下,检查系统托盘图标——如果显示错误,请重启应用。

智能体在渠道上无响应

  1. 确认 channels.json 中已设置 "enabled": true
  2. 确保至少有一个智能体有正在运行的任务,且该任务的技能包含聊天节点或等待事件节点。
  3. 查看应用日志中的 [ChannelBridge] 条目,查找"No agent available"或"dispatch_inbound error"等错误信息。
  4. 对于 Webhook 类渠道(WhatsApp、Messenger、X):确认 Webhook URL 可公开访问,且验证令牌与配置一致。

服务器无法启动

# 检查端口是否被占用
netstat -an | grep 8765
# 或使用不同端口
./scripts/deploy-ubuntu.sh start -- --port 8080
# 查看日志
./scripts/deploy-ubuntu.sh logs

LLM 调用失败

浏览器自动化报错

如何在代码节点中切换语言?

使用代码节点编辑器面板中 Monaco 编辑器上方的语言下拉框。支持 Python、JavaScript 和 TypeScript。

全部文档

各子系统的详细参考文档:

用户指南

技能编辑器帮助 多渠道集成 CLI 命令行参考 头像系统 MCP 工具 OCR 服务 映射 DSL Prompt 变量 多工具调用

部署与运维

Ubuntu 部署 Web / Docker 部署 S3 头像存储 代理管理 内存监控 Token 使用追踪 浏览器事件监控

架构与内部设计

IPC 架构 事件驱动聊天 构建系统 OTA 更新路径 发布指南 发布环境配置 前端 Store 架构 Python 3.14 异步兼容