聊天渠道渠道与网关
渠道与网关
从聊天 app 驱动 hara —— 十个平台,支持语音、文件、图片,以及每个聊天可恢复的会话。
运行一个网关
hara gateway 是一个可选开启的守护进程,让你能从聊天 app 驱动你 本地 的 hara。
每条进来的消息都会在该聊天自己可恢复的会话上启动一次无界面运行;回复会回到聊天里。
该守护进程是 主动向外连接 的(长轮询或 WebSocket),因此不需要任何公网 webhook ——
它在你 NAT 后面的笔记本上也能正常运行。
hara gateway --platform <name>平台一览
| 平台 | 传输 | 图片 | 备注 |
|---|---|---|---|
| Telegram | 长轮询 | ✅ 双向 | token 来自 @BotFather |
| WeChat(微信) | iLink 长轮询 | ✅ 双向 | 扫码登录 |
| Discord | WebSocket | ✅ 双向 | 需要 Message Content Intent |
| Feishu / Lark | WS 长连接 | ✅ 双向 | 点对点私聊(v1) |
| Slack | Socket Mode | ✅ 双向 | App + Bot token |
| Mattermost | WebSocket + REST | ✅ 双向 | 自托管或云 |
| Matrix | /sync 长轮询 | ✅ 双向 | 未加密房间(v1) |
| DingTalk(钉钉) | Stream Mode | 仅文本 | 回复窗口按单条消息计 |
| WeCom(企业微信) | AI-Bot WS | ✅ 双向 | 主动外连;AES 媒体 |
| Signal | signal-cli(JSON-RPC) | ✅ 双向 | 需要本地 signal-cli 守护进程 |
通用配置
HARA_GATEWAY_ALLOWED—— 允许驱动该 bot 的用户 id,逗号分隔。留空 = 无人可用 (安全默认值;网关绝不会处于完全开放状态)。--cwd <dir>—— 把它指向一个真实项目。默认是一个安全的草稿工作区 (~/.hara/workspace),这样full-auto的 bot 永远不会意外落到真实仓库上。- 每个
(聊天 × 目录)都是一个稳定、可恢复的会话。 - 会话卫生:聊天闲置超过 8 小时,下一条消息自动开新线程(一次性提示带
/resume <id>,旧线程仍在)。 用HARA_GATEWAY_IDLE_HOURS调整;0关闭。
各平台凭据
| 平台 | 环境变量 |
|---|---|
| Telegram | HARA_TELEGRAM_TOKEN |
hara gateway --platform weixin --login(扫码;扫码者会被自动允许) | |
| Discord | HARA_DISCORD_TOKEN |
| Feishu / Lark | HARA_FEISHU_APP_ID · HARA_FEISHU_APP_SECRET(+ HARA_FEISHU_DOMAIN=lark) |
| Slack | HARA_SLACK_APP_TOKEN(xapp-…)· HARA_SLACK_BOT_TOKEN(xoxb-…) |
| Mattermost | HARA_MATTERMOST_URL · HARA_MATTERMOST_TOKEN |
| Matrix | HARA_MATRIX_HOMESERVER · HARA_MATRIX_TOKEN · HARA_MATRIX_USER_ID |
| DingTalk | HARA_DINGTALK_CLIENT_ID · HARA_DINGTALK_CLIENT_SECRET |
| WeCom(企业微信) | HARA_WECOM_BOT_ID · HARA_WECOM_SECRET(在企业微信管理后台创建一个 AI Bot) |
| Signal | HARA_SIGNAL_RPC_URL · HARA_SIGNAL_NUMBER(运行一个本地 signal-cli 守护进程) |
# Telegram
HARA_TELEGRAM_TOKEN=… HARA_GATEWAY_ALLOWED=<your id> hara gateway --platform telegram
# Slack(Socket Mode —— 主动外连,无需 Request URL)
HARA_SLACK_APP_TOKEN=xapp-… HARA_SLACK_BOT_TOKEN=xoxb-… HARA_GATEWAY_ALLOWED=U0123 \
hara gateway --platform slack聊天内命令
| 命令 | 作用 |
|---|---|
/pwd · /cd <dir> | 显示 / 切换该聊天所操作的项目 |
/sessions · /new · /resume <id> | 列出 / 新建分叉 / 在当前目录的线程间跳转 |
/voice · /say <text> | 开关语音回复 · 朗读一条消息 |
/send <path> | 发送一个文件(图片内联,其他作为附件) |
其余任何输入都是一个任务 —— hara 会在该聊天的会话上运行它并回复。
语音与媒体
- 语音输入 —— 语音消息会被转写并作为文本交给 hara,并打上标记让它知道这来自语音。
- 语音输出 —— 回复可以通过可插拔的 TTS 朗读(见下文)。
- 图片与文件 —— 发一张照片,hara 就能看见它(视觉模型可内联,否则通过你的
visionModel描述);让它发回一个文件,它会用send_file工具。在上面标记为双向的 每个平台上,这两者都能在普通对话中工作。
文本转语音
| 环境变量 | 用于 |
|---|---|
HARA_TTS_PROVIDER | say(macOS,默认)· openai · cmd |
HARA_TTS_VOICE | 语音名称(如 macOS 上普通话用 Tingting) |
HARA_TTS_MODEL · HARA_TTS_BASE_URL · HARA_TTS_API_KEY | 一个 OpenAI 兼容的 /audio/speech 端点 |
HARA_TTS_CMD | 本地命令 —— 文本走 stdin,{out} → 输出路径 |
让它持续运行
hara gateway 在前台运行;用 launchd / systemd / pm2 来托管它,或者:
nohup hara gateway --platform <name> > ~/.hara/<name>-gw.log 2>&1 &Was this helpful?