Gateway
什么是 Gateway?
Gateway 是 Neotask 的核心 -- 一个单一的长期运行服务,管理所有代理会话、消息频道、工具执行和设备连接。一切都通过 Gateway 流转。
它是一个 WebSocket 服务器,监听来自客户端(桌面应用、移动应用、Web 仪表盘)的连接,并管理整个 AI 助手的生命周期。
架构
组件
- WebSocket 服务器 -- 接受客户端连接(默认端口 18789)
- HTTP 服务器 -- 提供控制 UI、画布主机和健康端点
- 频道适配器 -- 维护与消息平台(WhatsApp、Telegram、Discord 等)的连接
- 会话管理器 -- 持久化和管理代理对话状态
- Cron 调度器 -- 运行计划任务和心跳唤醒
- 插件运行时 -- 加载和管理插件生命周期
- 浏览器服务 -- 控制 Chromium 实例用于 Web 自动化
绑定模式
| 模式 | 描述 |
|---|---|
| Loopback | 默认。仅可从 localhost(127.0.0.1)访问 |
| LAN | 在本地网络上可访问。通过 Bonjour/mDNS 自动发现 |
| Tailnet | 通过 Tailscale VPN 使用 MagicDNS 访问 |
| Custom | 绑定到特定地址 |
认证
| 方法 | 描述 |
|---|---|
| Token | WebSocket bearer token(UUID 或自定义字符串) |
| Password | 基于密码的认证(bcrypt 哈希) |
| Trusted Proxy | 用于带预认证头的反向代理 |
| Local Trust | 回环连接自动信任 |
配置
Gateway 通过 neotask.json(JSON5 格式)配置。关键部分:
| 部分 | 控制内容 |
|---|---|
agents |
代理列表、默认值、工作空间 |
gateway |
端口、绑定模式、认证、重载行为 |
channels |
按频道的配置和凭据 |
tools |
工具权限、配置、安全 |
plugins |
插件加载、启用、按插件配置 |
models |
提供商认证、回退、提供商设置 |
skills |
技能目录、按技能配置 |
browser |
浏览器配置、端口、无头模式 |
cron |
调度器配置 |
session |
重置规则、压缩阈值 |
messages |
TTS 设置、媒体策略 |
memory |
记忆索引配置 |
security |
沙箱、提升模式、审批 |
热重载
配置更改可以在不重启的情况下应用:
| 模式 | 行为 |
|---|---|
| Hybrid(默认) | 热应用安全更改,其他需要重启 |
| Hot | 仅应用热安全更改,忽略其他 |
| Restart | 在任何需要重载的更改时重启 |
| Off | 不自动重载 |
远程访问
Tailscale(推荐)
Tailscale 提供安全的零配置远程访问:
- 将 Gateway 绑定到您的 Tailnet
- 从同一 Tailscale 网络上的任何设备访问
- 通过 MagicDNS 自动 DNS
- Tailscale Serve 可以通过 HTTPS 暴露仪表盘
SSH 隧道
通过 SSH 转发 Gateway 端口:
- 简单、安全,无需配置更改
- 适用于任何支持 SSH 的机器
- 支持完整的 WebSocket 协议和控制 UI
安全规则
- Loopback + SSH/Tailscale 是最安全的组合
- 非回环绑定需要配置认证 token
- 可用 TLS 指纹固定以增强安全性
- 远程连接默认禁用浏览器控制
健康监控
健康端点
/health HTTP 端点返回:
- Gateway 状态
- RPC 活跃性
- 按频道健康状态(已连接、认证状态、账户数量)
- 浏览器就绪状态
- 活跃代理和连接的节点
- 运行时间
探针
- RPC 活跃性 -- WebSocket 连接 + 回声测试
- 频道健康 -- 按频道的认证检查 + API ping
- 浏览器就绪 -- 端口检查、进程检查
- 节点连接 -- 最后心跳时间戳
发现
Bonjour/mDNS
绑定到 LAN 时,Gateway 通过多播 DNS 广播自己:
- 服务类型:
_neotask-gw._tcp - 包括端口、传输协议、TLS 状态和 Tailscale DNS 信息
- 伴侣应用自动发现 Gateway
广域发现
使用可配置的超时跨网络发现 Gateway。支持本地 Bonjour 和 Tailscale DNS 发现。
多 Gateway
您可以使用配置文件在同一台机器上运行多个 Gateway 实例:
- 每个配置文件有独立的配置、工作空间、会话和状态
- 每个 Gateway 使用不同端口
- 适用于隔离(个人 vs 工作)或测试
诊断
Doctor
内置诊断工具检查:
- 配置有效性
- 文件权限
- 频道连接性
- 模型认证状态
- Node.js 版本兼容性
- 常见错误配置
在获得许可后,它可以自动修复许多问题。
日志
Gateway 日志写入每日 JSONL 文件:
- 按完成的 token 使用跟踪
- 频道事件日志
- 带结构化上下文的错误日志
- 可配置的日志级别