dsh-agent-chat:两台机器上的 DSH Agent 跨机消息与上下文注入

DSH 的 agent 不是常驻进程,只在收到消息时才运行。这导致在多台机器间传递上下文比较麻烦。dsh-agent-chat 插件通过 HTTP 提供了一个基于回合注入的跨机消息通道,让两台机器上的 DSH agent 能够互相留言,并在回合开始时将未读消息拼入上下文。

插件介绍

这是一个 DSH host plugin(web profile),无客户端半边,仅依赖 Node 内置模块。插件的状态为自用,已在两台机器(Windows 笔记本 ↔ NAS)上跑通。

安装与启用

使用官方安装命令添加插件到 web profile:

dsh plugin --profile web add github:harmless0819-dev/dsh-agent-chat

安装后重启 dsh web 即可生效。

配置

在 profile 的 cordis.patch.yml 中配置该行,整行替换该条目,不是深合并。配置项包括:

  • selfLabel:本机在对话里的名字。
  • peerBase:对端基础地址;空则只收不发。
  • enabled:是否启用后台轮询。
  • pollMs:轮询间隔(最小 1000)。
  • maxInject:每次注入最多几条。
  • logFile:消息日志路径。
  • tokenFile:密钥文件,每条请求重读,支持热轮换。

示例配置:

- id: dsh-agent-chat
  name: dsh-agent-chat
  config:
    selfLabel: "laptop"
    peerBase: "http://192.168.1.100:6061"
    enabled: true
    pollMs: 3000
    maxInject: 5
    logFile: "D:/deepseek/logs/agent-chat.jsonl"
    tokenFile: "C:/Users/<you>/.agent-chat/token"

工作原理

消息流转分为三步:

  1. 落盘:本插件把消息落进本地日志(默认 <workspace>/.agent-chat/chat.log.jsonl)。
  2. 轮询:后台轮询对端的 /agent-chat/messages,把新消息拉进本地日志(带游标,不重复)。
  3. 注入:每次 agent 要开新步时(agent/pre-step),把尚未注入过的消息拼成一块上下文追加进本次对话。

自己发出的消息同时会 POST 给对端的 /agent-chat/send。

HTTP 接口

插件在 DSH 的 webServer 上提供了以下路由:

  • GET /agent-chat/health.json:探针,返回游标、待注入数、对端可达性。
  • GET /agent-chat/messages?since=<id>:自 since 之后的消息(对端轮询用)。
  • POST /agent-chat/send:投入一条消息 {from,text,ts}。
  • GET /agent-chat/log?limit=50:查看最近的消息。

安全

/agent-chat/send 会把任意文本注入 agent 的下一回合。如果部署把 HTTP 面暴露到 LAN(甚至叠了路由器端口转发),必须配置 token。

Token 取值的优先级为:

  1. cfg.token
  2. 环境变量 DSH_AGENT_CHAT_TOKEN
  3. tokenFile

三者都空时退回旧行为(开放),但启动日志会告警 auth=open。

请求需带 x-agent-chat-token: <token> 或 Authorization: Bearer <token>。

注意事项

  • 仅依赖 Node 内置模块,无需额外安装依赖。
  • 自用插件:插件作者已在两台机器(Windows 笔记本 ↔ NAS)上跑通,但未提供广泛的生产级测试数据。
  • 生态背景:本插件基于 DSH 生态,DSH 理念是「一切皆插件」,社区目录与 DeepSeek / 幻方无官方从属关系。
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜