dbydd/dsh-onlyne

IM gateway for DeepSeek Harness agents — send and receive QQ, WeChat, Feishu and Telegram messages from dsh sessions.

项目介绍Project Overview

dsh-onlyne 是 DeepSeek Harness 的 Onlyne 插件,为代理接入本地 IM 通道守护进程。它提供收发、广播、回环唤醒、守护进程管理等工具,并通过 watch 循环把 Telegram、飞书、QQ、微信等入站消息转为会话跟进,适合让代理接收通知并回复。需先安装并初始化 Onlyne,且工作区需含 .onlyne/

dsh-onlyne is a DeepSeek Harness plugin for Onlyne, a workspace-local IM channel daemon. It gives agents tools to start or stop the daemon, reply, send, broadcast, and use loopback wake-ups. A watch loop surfaces inbound messages from Telegram, Feishu/Lark, QQ Bot, or WeChat as session follow-ups. Use it when an agent needs an IM inbox/outbox. Onlyne must be installed and initialized, and the workspace must contain .onlyne/.

或使用命令行安装(适合开发者)Or use CLI install (for developers)

命令行安装CLI Install

dsh plugin --profile web add dsh-onlyne

dbydd/dsh-onlyne 加入你的 DSH 配置(web profile)即可启用。

READMEREADME

dsh-onlyne

English | 中文

Give DeepSeek Harness agents a real IM inbox/outbox through Onlyne.

dsh-onlyne is the DeepSeek Harness (dsh) plugin for Onlyne, the workspace-local IM channel daemon. It adds model-facing tools and a watch loop so a dsh agent can receive messages from IM channels (Telegram, Feishu/Lark, QQ Bot, WeChat) and send replies — without pretending a chat platform is a terminal or a workflow engine.

It is the dsh counterpart of pi-onlyne and shares the same per-project config file (.pi/onlyne.json), so one workspace can be bridged by either harness without reconfiguration.

Install

Onlyne is a single binary; see the Onlyne README to install and initialize a workspace:

onlyne init

Then install the plugin into a dsh profile and mount it:

dsh plugin --profile web add dsh-onlyne

Add a row to the profile's cordis.patch.yml ($DSH_HOME/profiles/<name>/cordis.patch.yml):

- insert:
    - id: onlyne
      name: dsh-onlyne

The plugin finds the workspace by walking up from the dsh process's invoking directory to the nearest .onlyne/.

Tools

onlyne_daemon_start()
onlyne_daemon_stop()
onlyne_daemon_restart()
onlyne_reply({ text })
onlyne_send({ channelId, text, rawText? })
onlyne_broadcast({ targets, text, rawText? })
onlyne_loopback({ text, rawText? })
onlyne_mark_no_reply({ reason? })

Send one message

onlyne_send({
  channelId: "telegram",
  text: "# Build report\n\nAll checks passed."
})

Set rawText: true to send literal text instead of Markdown.

Broadcast

onlyne_broadcast({
  targets: [{ channelId: "telegram" }, { channelId: "feishu" }],
  text: "# Release shipped"
})

Loopback wake-up

From any local script, inject an inbound message into the running daemon:

onlyne client '{"id":"wake","op":"loopback","text":"background job finished","raw_text":true}'

Channel loopback is wake-up-only: it surfaces a follow-up in the session but does not expect onlyne_reply.

Command

/onlyne status
/onlyne watch on
/onlyne watch off
/onlyne daemon start
/onlyne daemon stop
/onlyne daemon restart
/onlyne config auto-start

watch on subscribes to the daemon's event stream; inbound messages are surfaced into the current dsh session as user follow-ups, and the agent replies with onlyne_reply or acknowledges with onlyne_mark_no_reply. Control messages such as /handshake are consumed silently. config auto-start toggles watching automatically at session start.

Config

Shared with pi-onlyne at .pi/onlyne.json:

{
  "watch": { "autoStart": false },
  "inbound": {
    "defaultMode": "auto-handle",
    "rules": [{ "channel": "telegram", "mode": "queue-only" }]
  },
  "outbound": {
    "defaultReplyMode": "guarded-explicit",
    "retry": { "attempts": 2, "concurrency": 8 }
  }
}

Development

npm install
npm run check     # build + tests
npm pack          # build the publishable tarball

Links

上一个 Prev dsh-plugin-description 下一个 Next dsh-atelier