AtomCode-Channel:基于 Node.js 与微信飞书生态的 IM 渠道插件市场项目

可用于将 AtomCode 接入微信或飞书,在 IM 内收发消息并审批工具执行。项目提供渠道插件市场,内置微信 iLink 与飞书长连接插件,支持外置配置、自动拉起 daemon、白名单与卡片审批。【此简介由AI生成】

分支2Tags0

atomcode-channel

atomcode 渠道插件市场。当前插件:

  • weixin — 个人微信(腾讯 iLink Bot 协议)。通用层(adapter/) + atomcode 胶水(atomcode/)。 在微信里与 atomcode 收发消息,工具执行在微信内审批。整个插件零外部依赖(纯 Node 内置 + vendored QR 渲染器),装好即用、无需 npm install。
  • feishu — 飞书/Lark(@larksuite/channel SDK + WebSocket 长连接)。通用层(adapter/) + atomcode 胶水(atomcode/)。 在飞书里与 atomcode 收发消息,工具执行用交互式卡片按钮审批。基于飞书官方 @larksuite/channel SDK,无需公网回调域名,无需扫码登录,appId + appSecret 即连。

微信渠道 (weixin)

用户流程(共两步手动:装 + 扫码一次)

1. 装插件

atomcode TUI 内:

/plugin marketplace add https://atomgit.com/atomgit_atomcode/AtomCode-Channel
/plugin install weixin@atomcode-channel

2. 配置(一次)

配置外置在 ~/.atomcode/weixin/config.json(不随插件副本、重装不丢):

mkdir -p ~/.atomcode/weixin
cp <插件目录>/plugins/weixin/config.example.json ~/.atomcode/weixin/config.json
# 编辑:daemonBaseUrl(你的 atomcode daemon)、workingDir、provider(可选);allowlist 可留空(放行所有)

3. 登录并启动(扫码一次)

在 atomcode 里运行:

/wechat

agent 会显示二维码 → 用微信「扫一扫」扫码 → 登录成功后自动后台启动 sidecar(无需重启 atomcode)。之后微信直接对话即可;以后每次 atomcode 启动,SessionStart hook 会自动复用 token 拉起 sidecar。

开发/调试也可在终端跑:cd plugins/weixin/atomcode && npm run login(同样零安装)。

前置:daemon(可自动启动)

sidecar 连 config.daemonBaseUrl 指向的 atomcode daemon。sidecar 启动时会自动确保 daemon 在跑:health 探测,未起则按 config.daemonCmd 以 --port <端口> --idle-timeout 0 detached 拉起(--idle-timeout 0 防止 headless daemon 30 分钟空闲自退)。

要点:

  • 该 daemon 必须是含渠道审批能力的构建(SessionMode::Channel,见 atomcode 主仓 Phase 1)。官方版尚未合入前,把 daemonCmd 指向你自己的构建二进制,例如 "/path/to/atomcode/target/debug/atomcode-daemon";合入后用默认 "atomcode daemon" 即可。
  • 审批仅在 daemon 绑定回环 127.0.0.1 + 请求带 X-AtomCode-Client: channel 头时生效(adapter 已自动带;daemon 默认绑回环)。
  • 若已有 daemon 在该端口跑(如 VSCode 的 13456),sidecar 探测到就直接复用、不重复起。

配置字段

ilinkBaseUrl / daemonBaseUrl / tokenPath / channelVersion / workingDir / allowlist(空=放行所有) / provider(空=daemon 默认) / thinkingAck(默认 true,turn 开始发「🤔 正在思考…」) / daemonCmd(未起 daemon 时用它自动拉起;指向 channel-mode 构建)。

已知边界

  • iLink 对此类 bot 无可用文本流式(实测:client_id 去重、GENERATING 不原地编辑、上行流协议端点缺失);感知延迟用 thinkingAck 提示气泡缓解。
  • 首登需人扫码一次(微信 bot 鉴权要求,无法消除)。

日志

sidecar 日志:${TMPDIR}/atomcode-weixin.log。


飞书渠道 (feishu)

用户流程(装 + 配置,无需扫码)

1. 装插件

atomcode TUI 内:

/plugin marketplace add https://atomgit.com/atomgit_atomcode/AtomCode-Channel
/plugin install feishu@atomcode-channel

2. 安装依赖

飞书渠道依赖 @larksuite/channel SDK,需在 adapter 目录安装:

cd <插件目录>/plugins/feishu/adapter && npm install

3. 配置(一次)

配置外置在 ~/.atomcode/feishu/config.json(不随插件副本、重装不丢):

mkdir -p ~/.atomcode/feishu
cp <插件目录>/plugins/feishu/config.example.json ~/.atomcode/feishu/config.json
# 编辑:appId、appSecret(飞书开放平台应用凭证)、daemonBaseUrl、workingDir

4. 自动启动

atomcode 启动时 SessionStart hook 自动拉起 sidecar(WebSocket 连接飞书),无需手动操作。

开发/调试也可在终端跑:cd plugins/feishu/atomcode && node src/launch.js

前置:daemon(可自动启动)

与微信渠道相同:sidecar 启动时自动探测并拉起 daemon。要求 SessionMode::Channel 构建。

配置字段

字段 说明
appId 飞书开放平台 App ID(必填)
appSecret 飞书开放平台 App Secret(必填)
domain "Feishu" (国内) 或 "Lark" (海外),默认 "Feishu"
daemonBaseUrl atomcode daemon 地址,默认 http://127.0.0.1:13456
workingDir 默认工作目录(沙箱)
allowlist 聊天 ID 白名单,空=放行所有
provider 指定模型 provider,空=daemon 默认
thinkingAck turn 开始发「🤔 正在思考…」,默认 true
daemonCmd 未起 daemon 时自动拉起命令
policy.requireMention 群聊中是否要求 @机器人 才响应,默认 true
policy.dmMode 私聊策略:"open" (所有私聊响应) / "allowlist"

飞书渠道优势

特性 说明
交互式卡片审批 工具执行审批用按钮点击,无需手动输入 y/n
无需扫码登录 appId + appSecret 直连,无登录步骤
WebSocket 长连接 SDK 内置自动重连 + keepalive 看门狗
消息归一化 SDK 处理文本/图片/文件/表情等,统一 NormalizedMessage 格式
安全管道 SDK 内置去重、防重放、策略门(requireMention、dmMode)
无需公网域名 WebSocket 出站连接,无需回调 URL

控制命令

  • /pwd — 查看当前工作目录
  • /cd <path> — 切换工作目录(切换后开新会话);/cd 无参回到默认目录

日志

sidecar 日志:${TMPDIR}/atomcode-feishu.log。

项目介绍

可用于将 AtomCode 接入微信或飞书,在 IM 内收发消息并审批工具执行。项目提供渠道插件市场,内置微信 iLink 与飞书长连接插件,支持外置配置、自动拉起 daemon、白名单与卡片审批。【此简介由AI生成】

定制我的领域