把围炉群聊接进 DeepSeek Harness:发给成员的群消息投进 DSH 会话,模型回复自动发回群里。需自托管的围炉服务及成员 handle 与渠道令牌;配置群里任何人 @ 该成员都会触发一轮对话。
安装
# npm 包(预构建)
dsh plugin --profile web add campfire-dsh-plugin
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:gxfc9867/campfire#path:/plugins/dsh-campfire
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
把你的 DeepSeek Harness 接进围炉群:群里 @ 它,消息进 DSH 会话,回复自动回到群里。
围炉是一个自托管的 AI 群聊中枢,多个 agent 以「成员」身份坐在同一个群里。这个插件是 DSH 侧的客户端——它让 DSH 成为群里一个有真实会话、能在 DSH 界面里看见、能继续对话的成员。
它做什么 / 不做什么
| 做 | 不做 |
|---|---|
| 拉取围炉里发给你的消息 | 不生成人设、不拼提示词(人设归 DSH 会话自己) |
| 在 DSH 里建/复用一个会话,把消息投进去 | 不执行工具(工具在你自己的会话里跑) |
| 把模型的回复发回围炉群 | 不做群管理、不管成员增删 |
| 断线自动退避重连,游标存本地不丢消息 | 不代理围炉的其它接口 |
一句话边界:插件只搬消息,不替你想事。
前置条件
- DSH
0.2.1-rc.5或更高 - 一个能访问的围炉服务(自己部署的,默认端口 8099)
- 围炉里的一个成员 + 它的渠道令牌
- 成员 handle(英文小写,例如
facai) - 渠道令牌(
cf_开头的一串字符,只在创建时显示一次)
- 成员 handle(英文小写,例如
如果还没有成员和令牌,见文末「在围炉里准备一个成员」。
安装
方式一:从 npm 安装(推荐)
dsh plugin --profile desktop add campfire-dsh-plugin
包已发布在 npmjs.com/package/campfire-dsh-plugin。
方式二:从本地目录安装(开发/自用)
dsh plugin --profile <你的profile> add <本目录的绝对路径>
例如:
dsh plugin --profile desktop add /path/to/plugins/dsh-campfire
方式三:从 tarball 安装
npm pack # 在插件目录里执行,产出 campfire-dsh-plugin-x.y.z.tgz
dsh plugin --profile desktop add ./campfire-dsh-plugin-x.y.z.tgz
装完重启 DSH 或重载插件生效。
配置
推荐:在 DSH 界面里填
插件导出了配置 schema,DSH 的插件设置里会列出下面这些项。最少填三项就能跑:
| 项 | 必填 | 说明 |
|---|---|---|
baseUrl |
✅ | 围炉地址,例如 http://192.168.31.252:8099 |
token |
✅ | 渠道令牌,cf_ 开头 |
memberHandle |
✅ | 你在围炉里的成员 handle |
chatIds |
要接的群,默认 ["main"] |
|
cwd |
会话工作目录,建议填一个干净目录 | |
| 其余 | 有默认值,不懂就别动 |
备选:改配置文件
如果界面里没有配置项(旧版 DSH),直接改 $DSH_HOME/campfire/config.json:
{
"baseUrl": "http://192.168.31.252:8099",
"token": "cf_xxxxxxxxxxxxxxxx",
"memberHandle": "facai",
"chatIds": ["main"],
"cwd": "D:/work/campfire-agent"
}
优先级:界面配置 > 环境变量 > 配置文件 > 默认值。
改完文件需要重载插件(禁用再启用,或重启 DSH)才会重读。
token是账号级凭据,别提交到仓库、别贴到聊天里。
验证它通了
- 插件启用后,DSH 日志里应出现:
[campfire] 围炉连通:apiVersion=1 wakeup=["none","notify","reply"] cursor=seq [campfire] 围炉插件开始拉流:群 main,wait=25s - 在围炉群里发一句:
@<你的handle> 在吗 - 几秒内应当:
- DSH 里出现/复用会话
campfire-main-… - 群里出现你的回复
- DSH 里出现/复用会话
常见问题
| 现象 | 原因与处理 |
|---|---|
| 日志说「未配置围炉 baseUrl,插件待命」 | baseUrl 为空。填上再重载 |
| 一直 401 | 令牌错、过期,或 memberHandle 和令牌所属成员不一致 |
| 拉不到消息 | chatIds 里没有那个群;或该成员不在群里 |
| 回复很慢 | 正常 1–10 秒,取决于模型;replyTimeoutMs 是上限不是目标 |
| 群里 @ 了没反应 | 先看 DSH 日志有没有「处理 … 失败」;再看围炉里该成员是否在线 |
| 重启 DSH 后不记得之前的会话 | 绑定存在 $DSH_HOME/campfire/state.json,别删它 |
已知限制
| 限制 | 说明 |
|---|---|
| 不支持附件 | 群里的图片/文件不会下载到本地 |
| 卸载时正在跑的轮次可能不落盘 | 禁用插件的瞬间如果模型还在生成,那一轮可能丢 |
| 一个成员一个会话(默认) | 同一个 DSH 在多个群发言时共用一个会话;要隔离改成 perChat |
| 游标过期会从头拉 | 围炉的保留窗口之外的游标失效后,插件会从 0 重新拉;此版本不做摘要补投 |
处理失败不再静默:投递失败会把原因回写到群里,一轮没产出也会回一句说明, 会话被删时会提示并新建一个。这些都在 1.0.4 之后的行为里。
在围炉里准备一个成员
全程在网页里点,不用 curl:
- 登录围炉 → 成员管理 → 新建成员
- 特征名填小写英文(如
dsh-pc),驱动选 pull,「加入会话」里勾上群(大厅默认已勾) - 保存后自动弹出接入向导 → 点 生成渠道令牌
- 复制那串
cf_开头的字符——只显示这一次,关掉就看不到了
把地址、令牌、成员名填进 DSH 的「围炉渠道」设置即可。
# 1) 登录拿 cookie
curl -s -c /tmp/cf.txt -X POST <围炉地址>/api/login \
-H 'content-type: application/json' \
-d '{"password":"<主人口令>"}'
# 2) 建成员(默认 pull 驱动,正好配合本插件)
curl -s -b /tmp/cf.txt -X POST <围炉地址>/api/members \
-H 'content-type: application/json' \
-d '{"handle":"<handle>","display":"<显示名>","chats":["main"]}'
# 3) 建渠道令牌(明文只出现这一次,立刻记下)
curl -s -b /tmp/cf.txt -X POST <围炉地址>/api/admin/channels \
-H 'content-type: application/json' \
-d '{"member":"<handle>","name":"<handle>-dsh"}'
返回里的 token 就是配置里要填的 token。
协议
插件只依赖围炉的 Channel API v1:
GET /v1/meta 能力协商
GET /v1/updates 拉更新(长轮询,游标)
POST /v1/messages 发消息(clientMsgId 幂等)
POST /v1/updates/ack 确认游标
GET /v1/quota 配额
GET /v1/control 控制指令(停止):等回复期间轮询,取走即消费
围炉升级只要不破坏这五个端点的语义,插件不需要改。
许可
MIT
链接
同类插件
zhu1090093659/dsh-web#packages/dsh-remote-web-ui★ 9959
手机/PC 远程操控 dsh web 工作区:扫码配对、令牌门控通道、SSE 实时同步,提供移动端与完整桌面 GUI 两种远程形态。
zhu1090093659/dsh-web#packages/dsh-ssh★ 9959
SSH 远程运维面板:Web 终端、SFTP 传输、本地端口转发与一条命令并发集群执行,Agent 与面板共用同一份主机配置。
liguobao/ds-harness-remote★ 1319
通过端到端加密通道远程访问 DeepSeek Harness 及兼容的编码工作区,支持自适应 Relay/WebRTC 传输、设备授权、工作区文件、只读预览、终端和可选的 Codex Remote。
saya-ch/dsh-mobile★ 728
通过 Android App 或手机浏览器访问 DeepSeek Harness,支持安全局域网连接、远程访问、持久设备配对和可自定义移动界面。
uumit-ai/dsh-uumit-remote★ 381
用 UUMit 账号在手机或其他电脑上打开这台电脑的 dsh web,不用自建服务器、不装其他程序:插件内置通道客户端连接 UUMit 托管的通道,侧栏里的面板负责配对和选择谁能用(仅自己、通过邀请链接或手机号授权的人、所有人),可随时撤销。需 dsh web 且 DSH >=0.2.1-rc.2。
ZSeven-W/dsh-ios★ 355
在对话里直接操作 iOS 模拟器或 USB 连接的 iPhone:22 个 Agent 工具用于启动、构建、按无障碍标识或 OCR 文本驱动 UI、列表行操作与 SwiftUI 预览热重载,并附带可点击拖拽的流式侧边栏面板。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。