DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

shenmingsolar-01 /

shenmingsolar-01/dsh-memory-hub

Verified

多端 DSH 角色的本机记忆中枢:来源隔离、快照恢复、分端收发件箱、离线并回、模型接入、可选支付意图。Local memory hub for multi-channel DSH characters.

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHubProject homepage
READMESource: main@c9f8382b

dsh-memory-hub

版本:be-0.3.0

多端 DSH 角色的本机记忆中枢:按来源隔离记忆、自动快照与恢复,支持分端收件箱/发件箱、离线来源并回,以及可选的支付意图配置。

这个包不含任何个人数据、账号、路径或聊天记录。 安装后只会保存安装者自己客户端写进来的数据。

它做什么

  • 记忆:按角色和客户端分开存,互不覆盖;写入前自动备份,删错一条也能恢复。;
  • 收发:电脑、手机、QQ 等端之间可以按端发消息;对方离线时先存本地,上线再收;离线期间的记忆能并回正常记忆。;
  • 模型接入:安装者自己的 AI 可以直接读写记忆;会自动寻找本机可用的 AI 服务;也能用日常说话改设置,同一项再改会覆盖,不需要设置按钮。;
  • 支付:按金额生成付款入口,只给入口,不接触支付密码或银行卡。;
  • 本机运行:自动选择可用端口,数据只存在安装者自己的目录;能接多少端、存多少条由本机资源决定,不写死上限。;
  • 隐私:不统计使用情况、不主动联网;收集任何数据前都必须先明确同意。;
  • 开关:可随时停用;停用后不启动服务、不写数据,也不影响 AI 正常使用。;

它不做什么

  • 不自带 QQ 机器人、桌宠或聊天客户端;
  • 不包含模型、不调用任何外部 AI 服务;
  • 不会上传数据到云端;
  • 不会自动读取你的其他插件数据。

端数与容量不设固定上下限

  • 角色名、来源名支持任意 Unicode,插件不限制角色/来源数量;
  • 客户端能接多少端,取决于安装者自己的模型和软件端口,插件不设白名单;
  • 同一个插件实例可以被任意多个本地客户端调用;
  • 容量默认有软上限,但都可配置,0 表示不限制:
config:
  historyLimit: 1000   # 每个来源保留条数,0 = 不限
  snapshotLimit: 100   # 快照份数,0 = 不限
  inboxLimit: 200      # 收件箱条数,0 = 不限
  outboxLimit: 200     # 发件箱条数,0 = 不限

实际能存多少只受安装者本机磁盘限制。

隐私与同意

这个插件默认:

  • 没有遥测,不统计安装量、不发送使用数据;
  • 不主动联网,不访问任何外部服务器;
  • 数据只写安装者本机的 ~/.dsh/memory-hub.json 及其派生文件;
  • 不读取安装者的其他插件、聊天或账号,除非模型通过工具显式写入;
  • Outbox 只会在安装者配置了通道、并且主动调用时,才把消息发到该通道。

任何未来的数据收集都必须:

  1. 在代码和文档中明确说明收集什么;
  2. 由安装者显式开启;
  3. 涉及终端用户的数据时,还要取得用户本人同意;
  4. 默认保持关闭。

查看当前状态:

GET /privacy

返回 telemetry: false、collectsData: false、consentRequired: true,以及是否已同意。

安装即用,停用无感

装好后无需额外配置:

  • 本机服务自动选择可用端口,端口写入 <DSH_HOME>/memory-hub.port;
  • memory_hub_* 工具默认注册,安装者自己的模型可直接调用;
  • 默认角色 default、来源 model,不写任何人的真实身份;
  • 不主动读取聊天,只有模型调用工具时才写入。

不想用时,二选一:

# 1. 总开关
- id: memory-hub
  config:
    enabled: false
# 2. 直接停用插件行
- id: memory-hub
  disabled: true

停用后:

  • 不启动 HTTP 服务;
  • 不注册任何工具;
  • 不读写记忆文件;
  • 不影响安装者自己的模型运行。

安装

dsh plugin --profile <你的 profile> add <这个包的路径或 npm 包名>

重启该 profile 后生效。

配置

在 profile 的 cordis.patch.yml 加一条同名覆盖:

- id: memory-hub
  config:
    host: 127.0.0.1
    port: 0   # 0 = 自动选端口
    snapshotLimit: 100
    file: ""   # 默认 ~/.dsh/memory-hub.json

HTTP API

所有请求/响应均为 JSON,已开启 CORS。

健康检查

GET /health

一键跨端(Inbox + Outbox)

POST /cross
{
  "character": "assistant",
  "from": "qq",
  "to": "qq-channel",
  "text": "我到家了"
}

先写入收件箱,再按 to 投递到已配置通道;适合「一端说一句,另一端也收到」。

读取

GET /memory
GET /memory?character=shenshen
GET /memory/backups?character=shenshen

写入

POST /memory
{
  "character": "shenshen",
  "source": "mobile",
  "history": [
    { "role": "user", "text": "在吗" },
    { "role": "assistant", "text": "在的,老爹" }
  ]
}

重复消息会自动去重,不会重复写入。

删除(只删指定来源)

POST /memory/delete
{ "character": "shenshen", "source": "mobile", "text": "要删掉的那句" }

也可以用 "at": 时间戳 精确定位。

恢复

POST /memory/restore
{ "character": "shenshen", "source": "mobile" }

不带 snapshotAt 时恢复最近一份快照;带 snapshotAt 可恢复指定快照。

跨端收件箱(Inbox)

任意一端把消息写进收件箱,其他端轮询取走。适合「QQ 让角色在鲸聊里回复」这类跨端投递。

写入

POST /inbox
{
  "character": "assistant",
  "from": "qq",
  "text": "我到家了"
}

可选 deliverTo:写入后同时投递到已配置的通道。

一键跨端(Inbox + Outbox)

POST /cross
{
  "character": "assistant",
  "from": "qq",
  "to": "qq-channel",
  "text": "我到家了"
}

先写入收件箱,再按 to 投递到已配置通道;适合「一端说一句,另一端也收到」。

读取

GET /inbox?character=assistant&since=0

只返回 since 之后的新消息,避免重复显示。

客户端可以轮询这个接口做本地通知;插件本身不直接发系统通知。

收件箱与 Outbox 默认都不含任何地址、账号或数据。

跨通道发送(Outbox)

插件本身不内置任何聊天通道。你可以在配置里声明自己的本机 HTTP 通道,然后调用 /outbox 把消息投递过去。

配置示例(你自己的 profile,不在本包内)

- id: memory-hub
  config:
    channels:
      qq:
        url: https://channel.example.invalid/hook
        body:
          who: your-character
          action: message
          text: '{{text}}'

{{text}}、{{character}}、{{channel}} 会被替换。

发送

POST /outbox
{
  "channel": "qq",
  "character": "assistant",
  "text": "晚上好,记得吃饭"
}

插件会用配置里的 url、method、headers、body 发起请求,并返回目标的状态码和响应片段。

查看最近投递

GET /outbox

返回最近 50 条投递记录(成功/失败都会记录)。

默认 channels: {},不带任何地址、账号或 ID。

离线来源并回

断线时可以先写入独立来源(例如 offline),恢复后合并回正常来源:

POST /memory/flush
{
  "character": "assistant",
  "from": "offline",
  "to": "default"
}

返回 { "ok": true, "added": N };合并会去重,成功后清空 from 来源,并保留快照。

也可以在配置里声明启动时自动并回:

- id: memory-hub
  config:
    flush:
      - character: assistant
        from: offline
        to: default

默认 flush: [],不会自动处理任何来源,也不含任何外部数据。

支付配置(可选)

插件只保存支付入口配置,不处理支付凭证。

- id: memory-hub
  config:
    payment:
      enabled: true
      provider: alipay
      checkoutUrl: https://your-provider.example/top_up
      currency: CNY
      presets: [10, 20, 50, 100, 300, 500]

默认 enabled: false、checkoutUrl: '',不含任何商户号或账号。

读取配置

GET /payment

创建支付意图

POST /payment/intent
{ "amount": 50, "target": "mobile" }

返回金额、币种、支付方式和带金额参数的支付地址;只记录本地意图,不发起扣款。

查看意图

GET /payment/intents

模型自动写入(Tools)

安装者自己的模型可以直接调用这些工具,把数据写进安装者本机的记忆中枢:

  • memory_hub_write:写入一条或一批消息;
  • memory_hub_read:读取指定角色/来源的最近记忆;
  • memory_hub_delete:删除某来源的一条记录;
  • memory_hub_flush:把离线来源并回正常来源;
  • memory_hub_payment_intent:按配置生成支付意图。

配置:

- id: memory-hub
  config:
    tools: true
    defaultCharacter: default
    defaultSource: model

默认 tools: true,但角色和来源都是通用名,不含任何人的数据;模型写入的内容只存在安装者自己的 ~/.dsh/memory-hub.json。

模型适配(通用)

记忆工具本身不依赖某一家模型。插件会探测本机常见的 AI 服务:

  • Ollama:127.0.0.1:11434
  • LM Studio:127.0.0.1:1234
  • vLLM / 其他 OpenAI 兼容服务:127.0.0.1:8000、8080、5000

也可以手动登记:

models:
  - name: local-ollama
    baseUrl: http://127.0.0.1:11434
    protocol: ollama
  - name: my-openai-compatible
    baseUrl: http://127.0.0.1:9000
    apiKeyEnv: MY_MODEL_KEY
    protocol: openai

接口:

GET /models
POST /models/probe
{ "baseUrl": "http://127.0.0.1:11434" }

只探测模型列表,不发送记忆内容、不上传数据。

没有开放 API 的桌面 AI 软件无法直接适配,需要它的客户端主动调用本插件的 HTTP 接口或模型工具。

对话配置(无设置按键)

没有设置页面,也没有按钮。安装者直接和自己的 AI 说话:

把默认角色改成 role-a
默认来源用 client-x
模型地址是 https://model.example.invalid/v1
支付地址换成 https://pay.example.invalid/checkout,档位 10,20,50

模型调用 memory_hub_configure,从原话里识别键值并写入:

<DSH_HOME>/memory-hub-settings.json

规则:

  • 支持任意语言;
  • 同一个键再次配置会覆盖旧值,不追加;
  • 没识别到的内容不会写;
  • 不读取聊天,不自动弹窗,不影响 AI 软件主界面。

数据格式

{
  "version": 2,
  "characters": {
    "shenshen": {
      "sources": {
        "qq": { "history": [], "updatedAt": 0 },
        "pc": { "history": [], "updatedAt": 0 },
        "mobile": { "history": [], "updatedAt": 0 }
      },
      "snapshots": []
    }
  }
}

接入建议

  • QQ 桥:每轮消息写入 source: "qq";
  • 电脑客户端:写入 source: "pc";
  • 手机网页/APP:写入 source: "mobile";
  • 模型回复前读取最近 N 条,作为跨端共同记忆。

已知限制

  • 只做本机 HTTP 存储,多设备同步需要你自己加隧道或中转;
  • 快照是整份来源的副本,不做逐条版本树;
  • 没有鉴权,默认只监听本机;如果要监听局域网,请自行加防火墙/反代和鉴权。

License

MIT

—/ 5

No ratings yet

Verified DSH bundle

Commit c9f8382b58be

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout