Web、桌面端与微信/IM (agentica-gateway)¶
agentica-gateway 把你的本地 Agent 变成一个常驻服务:既提供本地网页(Web UI)和桌面应用(Desktop App),又能同时接入个人微信、飞书、企业微信、Telegram、QQ、钉钉、Discord、Slack,让你在手机上直接对话,或者遥控电脑上正在跑的 CLI 终端会话。

一、安装与启动¶
1. 安装¶
如果你还没装过 Agentica,或者之前只装了 CLI,运行以下命令安装带 Web/IM 能力的完整版:
如果需要接入个人微信、企微、Telegram 等 IM 渠道,把渠道名一起写进引号里即可:
uv tool install --force "agentica[gateway,wechat]" # 个人微信(扫码即用)
uv tool install --force "agentica[gateway,wechat,wecom,telegram]" # 同时安装多个渠道依赖
飞书(
feishu)已默认包含在[gateway]中,无需额外追加。
2. 启动本地 Web 服务¶
在你的项目目录下直接运行:
默认监听 http://127.0.0.1:8881。终端启动日志会打印出:
- 首次免密打开的地址(http://127.0.0.1:8881/chat?token=...)
- 或者初始管理员账号 default 的随机登录密码(用于 /login 页面登录)
常用启动参数:
agentica-gateway --set-password # 设置或修改网页登录密码
agentica-gateway --host 0.0.0.0 # 允许局域网其他设备访问(必须先设置密码)
agentica-gateway --port 8890 # 指定监听端口
3. 桌面应用(Desktop App)¶
直接下载对应系统的安装包(每个 GitHub Release 页面同样附带):
| 系统 | 安装包下载 |
|---|---|
| macOS 11+ | Apple Silicon (arm64) · Intel (x64) |
| Windows 10+ | x64 安装包 (.exe) |
| Linux x64 | AppImage · deb |
桌面版与 CLI、Web 共用同一个 ~/.agentica 配置与历史记录。安装包自带 Python 3.12 和同版本的 agentica + agentica-gateway[feishu],不依赖本机 Python、Node、uv,首次打开也不需要联网。
安装包当前未签名,首次启动若被系统拦截,按对应系统处理一次即可:
- macOS 提示「已损坏,无法打开」:把
Agentica.app拖进「应用程序」后,在终端执行一次sudo xattr -rd com.apple.quarantine /Applications/Agentica.app。 - Windows 提示「Windows 已保护你的电脑」:点「更多信息」→「仍要运行」。
- Linux 双击 AppImage 无反应:先赋执行权限
chmod +x Agentica-x86_64.AppImage。
几点说明(开发者与进阶用户):
- 优先级:
AGENTICA_GATEWAY_BIN→ 安装包内置运行环境 → 本机agentica-gateway(仅npm start或不带运行环境的构建)。 - 终端命令:菜单
Help › Install 'agentica' Command in Terminal…生成调用内置 Python 的agentica命令(macOS 优先/usr/local/bin,否则~/.local/bin;Windows 写用户 PATH),不会覆盖不是它创建的同名文件。 - 自动更新:基于
electron-updater读取 GitHub Release。macOS 只接受已签名应用的更新,未签名构建会跳过检查,升级请重新下载安装包;AGENTICA_DESKTOP_NO_UPDATE=1可全局关闭。 - 签名:在仓库 secrets 配置
CSC_LINK、CSC_KEY_PASSWORD、APPLE_ID、APPLE_APP_SPECIFIC_PASSWORD、APPLE_TEAM_ID(macOS 签名 + 公证)和WIN_CSC_LINK、WIN_CSC_KEY_PASSWORD(Windows)即可,不配则产出未签名安装包。 - 源码运行:
cd desktop && npm install && npm start(Node 22+),详见desktop/README.md。
工作区¶
侧栏按工作区(本机一个文件夹)归组对话:
- 添加:标题行的文件夹图标,选择已存在的目录;不会替你创建目录。添加后立刻新建一个对话,空工作区也会显示。
- 重命名 / 删除:工作区行的
⋯菜单(双击名称也可重命名)。重命名只改显示名;删除会移除该工作区下的对话,有运行中对话时拒绝,磁盘文件夹不动。 - 存储:账号偏好
~/.agentica/gateway/prefs/<账号>.json的workspaces([{dir, name?}]),经GET/PUT /api/prefs读写。 - 调宽:拖拽侧栏右边缘(220–480px),双击恢复 280px。
会话侧栏¶
- 侧栏默认只列 gateway 会话(Web、桌面端、IM)。设置 › 常规「显示 CLI 会话」打开后才加入 CLI 会话;SDK 脚本和没有记录来源的旧日志不进这个列表。正在运行的会话始终列出。接口是
GET /api/sessions?scope=recent|all&recent_days=30,默认recent。 recent里 CLI 会话只保留最近recent_days天(默认 30);gateway 会话和已归档会话不受这个天窗口限制。all去掉天窗口,仍然不含 SDK 和无来源的旧日志。- 来源写在
<session_id>.meta.json的source(gateway/cli)。没有该字段时:sidecar 里有 CLI 偏好的算 CLI,有last_read_at的算网页会话,其余不列出。 - 每个项目分组默认显示 5 条,当前会话和运行中的会话不会被折叠;搜索同时匹配标题、项目名和首条消息。
- 实测 5000 个会话:默认请求约 0.4 秒、12KB(原来约 5.5 秒、1.9MB)。
4. Docker 部署(可选)¶
镜像内已编译好 Web UI,运行时不需要 Node。数据保存在 named volume,当前目录挂载到容器 /workspace:
启动后打开 http://127.0.0.1:8881/chat。
二、多账号与权限控制¶
1. 多账号隔离¶
Gateway 支持多用户登录:
- 管理员(default)登录后,点击网页右侧 「用户管理」(/users)即可新增普通账号、重置密码或删除账号。
- 每个账号拥有自己独立的会话列表、记忆(MEMORY.md / AGENTS.md)和定时任务,互相不可见。
2. 工具审批档位(ask / auto / allow-all)¶
在网页右上角或设置中可以随时切换工具权限档位(默认 auto):
| 档位 | 自动放行的操作 | 会弹出审批卡等你的操作 |
|---|---|---|
ask |
读取文件、只读命令、搜索记忆、子任务 | 修改文件、会改动状态的命令、联网搜索/抓取、高危命令 |
auto(默认) |
读取文件、当前工作区内的文件修改、普通命令、联网搜索 | 工作区外或敏感路径的文件写入、高危命令 |
allow-all |
全部自动放行 | 无 |
当弹出审批卡时,你可以选择:
- 允许一次 / 拒绝一次:仅对当前这次调用生效。
- 允许同类 / 拒绝同类:记住这类命令前缀(如 pytest、git status),当前项目内后续遇到同类命令自动放行或直接拒绝。
三、用手机遥控电脑上的 CLI 会话¶
只要本机跑着 agentica-gateway 并连上了任意一个 IM 渠道(如个人微信),你出门在外就能用手机直接查看并指挥电脑终端里开着的 agentica 会话:
| 你在微信/IM 里发送 | 效果 |
|---|---|
@list |
列出电脑上所有正在运行的 CLI 会话(名称、忙闲状态、所在目录、当前分支与正在做的任务) |
@nlp-f1 把测试重新跑一遍 |
把这句话直接敲进名为 nlp-f1 的终端会话,并将该会话置顶为默认目标 |
看下报错日志(不带 @) |
置顶后,后续直接发文字就会继续发给同一个终端会话 |
@off |
取消置顶,恢复和 Gateway 自己的个人助理对话 |
甚至不需要记会话名:你也可以不打 @,直接对微信里的助理说「帮我看看电脑上跑着的几个会话都在干嘛,让改完代码的那个把改动提交了」,网关 Agent 会自己调用 list_agents 和 send_message 替你安排并把结果汇总发回手机。
如果不需要手机访问本机终端会话,可在启动时设置
PEER_BRIDGE=false agentica-gateway关闭。
四、接入个人微信与各 IM 平台¶
所有 IM 渠道均采用长轮询或 WebSocket 长连接,不需要公网 IP、不需要域名、也不需要配置公网 Webhook,在家里或公司内网电脑上直接启动即可连通。
1. 个人微信(扫码即用,最推荐)¶
无需注册任何开放平台应用:
- 安装微信依赖并启动网关:
- 打开浏览器进入 设置 › 个人助理(
/assistant),找到「个人微信」点击 「配置」。 - 用手机微信扫描页面弹出的二维码即可完成绑定(登录凭证保存在
~/.agentica/cache/wxbot_token.json,下次启动免扫码)。
发送语音与视频:如果主模型本身不支持直接听语音/看视频,可以在
~/.agentica/config.yaml的settings.media_model里配一个 Gemini 模型用于自动转写和描述。
2. 其他 IM 渠道配置一览¶
在 ~/.agentica/.env(或启动环境变量)中填入对应平台的凭证即可自动启用:
| 渠道 | 安装依赖 (uv tool install --force ...) |
必填环境变量 | 限制可访问用户的白名单变量(可选,留空为不限) |
|---|---|---|---|
| 飞书 (Lark) | "agentica[gateway]"(已内置) |
FEISHU_APP_IDFEISHU_APP_SECRET |
FEISHU_ALLOWED_USERSFEISHU_ALLOWED_GROUPS |
| 企业微信 (WeCom) | "agentica[gateway,wecom]" |
WECOM_BOT_IDWECOM_SECRET |
WECOM_ALLOWED_USERS |
| Telegram | "agentica[gateway,telegram]" |
TELEGRAM_BOT_TOKEN |
TELEGRAM_ALLOWED_USERS |
| QQ 机器人 | "agentica[gateway,qq]" |
QQ_APP_IDQQ_APP_SECRET |
QQ_ALLOWED_USERS |
| 钉钉 (DingTalk) | "agentica[gateway,dingtalk]" |
DINGTALK_CLIENT_IDDINGTALK_CLIENT_SECRET |
DINGTALK_ALLOWED_USERS |
不用 uv、直接装网关包时,同名 extra 写在 agentica-gateway 上:pip install "agentica-gateway[feishu,wecom]",[all] 是全部渠道。注意单装 agentica-gateway 不带飞书 SDK,agentica[gateway] 才默认带。
| Discord | "agentica[gateway,discord]" | DISCORD_BOT_TOKEN | DISCORD_ALLOWED_USERSDISCORD_ALLOWED_GUILDS |
| Slack | "agentica[gateway,slack]" | SLACK_BOT_TOKEN (xoxb-...)SLACK_APP_TOKEN (xapp-...) | SLACK_ALLOWED_USERSSLACK_ALLOWED_CHANNELS |
各平台创建机器人的简要入口:
- 飞书:飞书开放平台 → 创建企业自建应用 → 开启机器人能力与「接收消息」权限 → 事件订阅选择使用长连接接收事件。
- 企业微信:企业微信管理后台 → 安全与管理 / 智能机器人 → 创建 AI Bot → 获取 bot_id 与 secret。
- Telegram:私聊 @BotFather 发送 /newbot 拿 token。
- QQ:QQ 开放平台 创建机器人获取 AppID 与 AppSecret。
- 钉钉:钉钉开放平台 创建企业内部应用 → 开启机器人能力并选用 Stream 模式。
五、通过代码调用 Gateway(TypeScript / HTTP API)¶
如果你有外部脚本或前端想调用正在运行的 agentica-gateway,可以直接使用官方 TypeScript SDK 或 HTTP 接口(网关启动后可访问 http://127.0.0.1:8881/docs 查看完整交互式 OpenAPI 文档)。
TypeScript SDK (@agentica-ai/sdk)¶
import { Agentica } from "@agentica-ai/sdk";
const agentica = new Agentica({
baseURL: "http://127.0.0.1:8881",
// 机器令牌可从 ~/.agentica/cache/gateway/runtime.json 读取,或通过环境变量 AGENTICA_GATEWAY_TOKEN 固定
apiKey: process.env.AGENTICA_GATEWAY_TOKEN,
});
for await (const event of agentica.chat.stream({
message: "帮我总结一下当前目录的 README",
session_id: "demo-session",
})) {
if (event.event === "content") {
process.stdout.write(String(event.data));
}
}
主动向 IM 渠道发送通知 (/api/send)¶
你可以在部署脚本或告警钩子里直接让 Gateway 往你的微信、飞书或 QQ 推消息:
TOKEN=$(python -c "import json,os;print(json.load(open(os.path.expanduser('~/.agentica/cache/gateway/runtime.json')))['token'])")
curl -X POST http://127.0.0.1:8881/api/send \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"channel": "feishu",
"channel_id": "ou_xxx",
"message": "线上构建已完成 ✅"
}'
下一步¶
- CLI 终端指南 — 终端交互与斜杠命令
- 定时任务 (/cron) — 让 Gateway 或 CLI 按计划定时执行任务
- 统一配置文件 (config.yaml) — 配置主模型、副模型与全局开关