# @dr-co/dsh-assistants 中文文档

规范地址：https://npmcn.com/package/%40dr-co/dsh-assistants/

版本：0\.9\.12
npm 元数据更新时间：2026-11-12T15:49:06.609Z
中文译文更新时间：2026-11-12T20:04:28.329Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40dr-co/dsh-assistants
原文对照：https://npmcn.com/package/%40dr-co/dsh-assistants/?lang=original

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：538 kB，29 个文件
- 模块格式：ES Module
- TypeScript 类型：未声明
- Node.js 要求：\>=22
- 运行依赖：0 个
- peer 依赖：@huggingface/transformers \>=4\.2\.0 \<5
- 首次发布：2026-10-27T10:57:24.460Z
- 最新版本发布：2026-11-12T15:42:09.456Z
- 近 30 天下载量：5256（2026-10-13 至 2026-11-11，npm 官方下载统计）
- 已发布版本数：35（近 12 个月 35 个）

## 中文简介

DSH 插件: 助理、 虚拟用户和绑定到会话的对内存( 主机部分)

## 安装

```sh
npm install @dr-co/dsh-assistants
```

也可以使用：`pnpm add @dr-co/dsh-assistants`、`yarn add @dr-co/dsh-assistants`、`bun add @dr-co/dsh-assistants`

## README

# @ dr-co/dsh- 助手

DSH 捆绑/插件,每个会话都有一个 **谁回答** (单位:千美元) **谁问**, (中文(简体) ), 并保持那对夫妇的记忆。 当一个DSH安装服务时有用 几个助手、个人、bots或预定的工作,每期都需要一个 可以预测的人a 不改变基础的代理预设.

## 为什么这样有用

一个DSH安装可以由几个人共享,同时给予每个人一个 独立助理和对齐的背景。 用来设置 否则 需要多个独立的产品装置,例如OpenClaw,一个DSH主机可以 通过会话路由和虚拟用户提供同样的分离方式, 而不是声称要取代这些产品的每一个特性.

行政UI是创建和管理助手和虚拟用户的地方 变相. 这也对子代理工作流程有用: 您可以定义诸如 然后,建筑师、程序员和审查员要求一个序列,例如“让..... 建筑师设计一个计划,然后让程序员加以执行”。 每个副剂是 以为选定角色配置的快捷键解决.

每个助手都有自己的双镜内存: 对用户的了解和如何 用户要求它回应。 内存跟随助手 - 用户对比 比运输或机器人.

此包包含主机插件和浏览器客户端捆绑. 没有 补丁 DSH 核心并不会取代主机的预设、工具、任务或 运输的实施.

## 安装和捆绑元数据

使用 DSH 主机的普通插件/ bundle 机制安装软件包 。 这个 软件包是自定义 : `package.json` 声明 `dsh.bundle.patch` 元数据, 财务报告和审定财务报表 `cordis.patch.yml` 插入 `dsh-assistants` 排入主机插件列表. 同一软件包元数据宣布浏览器条目为 `dsh.client`; 主机负载 `lib/client.js` 当Web客户端可用时。 没有手动编辑到 `index.html` 或者说 需要DSH核心.

捆绑是有意通过主机的插件列表选择进入的. 它的状态是 与 DSH 核心分开保存,并可由主机的普通设备禁用或删除 插件控件 。 如果主机不执行 DSH 捆绑/插件元数据 加载器, 此软件包不能安装到那里; 使用支持的主机版本 而不是用手操作补丁.

## 兼容性和限制

该插件仅使用公共主机服务和可选集成. 没有 承诺官方DSH核心补丁 API. 特别是:

-   iM 会话的身份查询需要主机 `dshIm.describeConversation`· ; 没有它,只能识别运输;
-   cron 身份需要包含匹配的调度条目 `sessionId`· ;
-   页:1 `subagentPersona.resolve` 仅当主机曝光时才使用成分钩 `ctx.provide`;更古老的主机保持继承的助手行为;
-   不可用的浏览器槽被报告并跳过,所以设置卡和 旧的Web主机可能缺少作曲控制;
-   客户端捆绑为 Web; 主机部分仍然可以提供即时,内存,以及 没有浏览器客户端的HTTP功能.

倒置行为是故意的:缺失的可选服务并不能使 插件声称DSH核心支持新的 API, 并且它们不会阻止其余部分 来自加载的插件.

## 什么样的模型

两个独立的轴:

-   **助理人员** 一个人,有一个关于自己的文本块;
-   **虚拟用户** - 具有即时性的人,关于该人的事实和接触 模式,会话运行在下.

两者都是独立解决的:自己的规则,自己的默认,自己的日志 线条。 一条规则从不分配双轴.

模型看到的提示是包含四个部分的一节,每个部分空出时会掉入:

```
# who you are                             the assistant's own text
# who you are talking to                  user prompt + facts
# about the person you are talking to      memory about-user
# additional information about you         memory for-this-user
```

内存由 **组合**从不在机器人旁边 机器人就是运输 四个 桶,在公共词汇中,工具和即时使用(存储键为 内部短而永不漏入提示或工具描述中 :

| 桶头 | 含义 | 范围 | 撰写人: |
| --- | --- | --- | --- |
| `about-user` | 这个助理知道这个人什么 | 用户 | 模型,通过 `dsha_save` |
| `for-this-user` | 这个人要这个助手怎么回答 | 这对 | 模型,通过 `dsha_save` |
| `memory` | 长期可搜索集摘要 | 用户 | 模型,通过 `dsha_save target=memory` |
| `assistant-notes` | 助理本人的笔记 | 助理人员 | 模型,通过 `dsha_save target=assistant-notes` |

`about-user` 财务报告和审定财务报表 `for-this-user` 被注入到提示中. `memory` 财务报告和审定财务报表 `assistant-notes` 只搜索:它们从未注入过,只能通过 `dsha_search` (结果为桶取名). 两家只有搜索的银行在后面 一只旗帜 `memoryBanks: false` (或 `DSH_ASSISTANTS_MEMORY_BANKS=0`) 禁用 写入目标及其快速规则块. `dsha_search` 无 `bucket` 搜索 全部四个.

每双水桶还有一个 **目录** —— 说 `rau:<assistant>:<user>` 页:1 `about-user`, (中文(简体) ), `rua:<user>:<assistant>` 页:1 `for-this-user` ——并及时打印摘要 当它存在时, 掉回生行。 一份简要记录记录行数 是从这里建造的,所以"stale"是一个比较. `POST /api/assistants/summary` 重算一个 通过主机 `llm` 服务;没有这种服务,它就会回答 `503 llm-unavailable` 并且摘要可以在同一领域用手书写.

关于助手本身或一般人的一切都是个人物a 字段——人类编辑它,模型没有.

## 匹配

规则是两份订购名单(助手、用户)。 一个规则是一套条件加 `assign`;每个条件必须具备,而且会议不能满足的条件 答案让规则落空 第一场比赛获胜. 没有条件的规则就是轴 默认.

```yaml
users:
  - sender_id: "161161619"        # this person, in any chat
    assign: u-unera
  - bot_id: telegram_fc1c…        # everybody else who writes to this bot
    assign: u-marish
  - assign: u-unera               # the axis default
```

条件 : `transport` (单位:千美元)`web`, (中文(简体) ), `im:telegram`, (中文(简体) ), `im:discord`, (中文(简体) ), `cron`, (中文(简体) ), `bot_id`, (中文(简体) ), `group_id`, (中文(简体) ), `chat_id`, (中文(简体) ), `sender_id`, (中文(简体) ), `regexp` (通过对话键).

身份来自会话的创造者:

| 运输 | 身份来自哪里 |
| --- | --- |
| 额 | `dshIm.describeConversation(sessionId)` |
| 曲线 | 调度中的任务 `sessionId` 匹配 |
| 网络 | 除了"web",直到人选择表格 |

## 访问模式

模式属于 **虚拟用户**,而不是对助手: 来的人 不是回答的人物 一个人来了,一个模式 应用,所以没有什么可调和的.

## 配置

```yaml
- id: dsh-assistants
  name: '@dr-co/dsh-assistants'
  config:
    promptLimit: 6000
```

`promptLimit` 盖住已提供的部分;在盖上,尾部被放下 损失记录一次。 国家生活 `$DSH_HOME/storages/dsh-assistants.json`,为 以解剖法写出,观看,并应用而不重新启动。 货船 `defaults.json`它的种子有一次,在第一个靴子上.

## 内存搜索(语义,可选)

`dsha_search` 是杂交的: 精确的 FTS , 然后是语义上的上- k 存储向量,按确定性合并。 嵌入器完全为本地 ONNX 推论 结束 `@huggingface/transformers` (transfers.js)——无HTTP嵌入API和无 API密钥. 唯一的网络使用是ONNX重量的一次性下载 第一次使用时发生懒惰,从未在插件靴子时发生,也从未在内存写入路径上发生.

-   默认模式 : `Xenova/multilingual-e5-small` (384个尺寸,处理俄语和 (英语). BGE 模型使用 CLS 集合, 其他都使用 平均集合, 以及向量 是 L2 的正则化; 集合按模型家族选择.
-   模式缓存目录 : `$DSH_HOME/dsh-assistants/models` (可以通过 `embedCacheDir`) (中文(简体) ). 新写作在到达时被索引; 先前存在的行是 根据管理员卡或 `POST /api/assistants/memory/embedding/reindex`。 。 。 .
-   要完全禁用, 设置 `embedDisabled: true` (或 `DSH_ASSISTANTS_EMBED_DISABLED=1`) (中文(简体) ). 搜索后保持纯FTS,没有任何内容被下载. 型号是 可配置为 `embedModel` (单位:千美元)`DSH_ASSISTANTS_EMBED_MODEL`) (中文(简体) ).

当无法使用模型或依赖性时,搜索会完全降低到FTS 和记忆写 保持快速和离线。 嵌入式管理者表面生活在 设置卡( “累积内存” 标签): 它显示模型是否 下载,运行中的下载/再索引进度,以及矢量计数.

## HTTP 密码

面板对插件进行讲解 `/api/assistants`,该 主机只接收一个经认证的拥有者——同一门 `/api/settings` 坐着 后面 后面那个 身份识别者在JSON体内旅行,从不走道.

| 路径 | 方法 | 机构 |
| --- | --- | --- |
| `/api/assistants/state` | 获取 | —— 说 |
| `/api/assistants/bots` | 获取 | —— 说 |
| `/api/assistants/models` | 获取 | ——(提供者、模式及其推理努力) |
| `/api/assistants/diag` | 邮政 | `{ session? }` |
| `/api/assistants/preview` | 邮政 | `{ assistant?, user? }` |
| `/api/assistants/prompt` | 邮政 | `{ session }` |
| `/api/assistants/resolve` | 邮政 | `{ session? }` 或者说 `{ transport, bot_id, … }` |
| `/api/assistants/session-info` | 邮政 | `{ session }` |
| `/api/assistants/save` | 邮政 | `{ assistants?, users?, rules?, defaults?, models?, summaries?, memory? }` |
| `/api/assistants/session` | 邮政 | `{ session, assistant?, user?, source?, none?, force? }` |
| `/api/assistants/memory` | 邮政 | `{ session?, assistant?, user?, text?, target?, action?, id? }` |
| `/api/assistants/client-report` | 邮政 | 客户端挂载报告 |
| `/api/assistants/summary` | 邮政 | 已禁用( e)`410 summary-disabled`(中文(简体) ) |
| `/api/assistants/memory/embedding` | 获取 | —— 说 |
| `/api/assistants/memory/embedding/download` | 邮政 | —— 说 |
| `/api/assistants/memory/embedding/reindex` | 邮政 | `{ batch? }` |
| `/api/assistants/memory/rows` | 邮政 | `{ bank, after?, user?, assistant?, limit? }` |

## 代表团

东道主的股票 `subagent` 编号 : `subagent_fork` 工具不包含人a (`persona` 现在 被彻底拒绝, `agentPreset` 因为只有产卵,所以一个孩子不能从它们开始 告诉它扮演的助手 插件注册自己的两个工具: `dsha_subagent_fork` (孩子继承这个谈话)和 `dsha_subagent` (续) 双胞胎 `assistant` 加上常号 `prompt`, (中文(简体) ), `description`, (中文(简体) ), `cwd` 财务报告和审定财务报表 `provider`编号 :`model`编号 :`reasoning_effort`。 。 。 .

他们不通过股票工具。 他们称宿主自己为接缝, `ctx.subagents.startActivation`,带有儿童身份证明 **插件生成**,并撰写 (助手、用户、行距)在会话前按该编号装入商店 已存在。 所以孩子的第一个提示已经解决了 正确的人a,没有呼叫命令 队列涉及, 两个代表团可以同时运行, 一个失败的启动会放弃绑定 再来一次 唯一依赖的主机表面是 `subagents` 服务`startActivation`, (中文(简体) ), `resolveMaxDepth`),而不是工具定义.

叉使根的系统迅速逐字记录——前缀是即时缓存键—— 和孩子自己的人a 在任务文本中旅行, 只有在没有继承 历史来叙. 叉子从定义上看保持了呼叫者的个性 所以它的图谋 没有 `assistant`· ; `dsha_subagent` 需要身份证明,或者 `null` 对于一个完全没有人格的儿童来说 (其具有约束力的记录) `none` 而提示部分却一无所有.

### 模型

管理页面有一个 **模型** 选项卡——一个模型被分配到一个 助理人员。 保单上写着任务的来源: **默认** (东道主) 决定, **从牌** (助理本人) `model` 字段),或两个名称之一 每个助理都适用插槽。 每个槽都是提供商+模型+推理努力, 从东道主自己的目录中挑选(`GET /api/assistants/models`),从来没有硬码 id; 不提供广告模式的提供者, 除非路由已经指定 临Τ 面板指定的路由胜出 `provider`编号 :`model` 在工具调用中; a 无广告路线被登录,至今仍在使用.

任务达到两地. 一个授权的孩子在开始请求中得到了路线, 所以它从来没有运行一个转 错误的模型。 一个会话,当小组自己的拾取者 写入其对: 插件调用主机 `sessionController.selectModel` 一样 操纵主机的模型拾取器使用——仅在会话仍为空白时使用; a 对话开始 保持它的模型. `selectModel` 并坚持路线作为 nEW 会话的默认值, 所以以前的默认值会被写回: 此选项是 每届,不是新的全球默认.

## 客户一半

浏览器侧面是一个真实的客户端插件( 形状相同) `@dr-co/dsh-skills` 使用), 不是注入到脚本 `index.html`数字 : `package.json` 声明 `dsh.client`,则 主机负载 `lib/client.js` 和电话 `apply(ctx)`,每笔捐款 通过公共时间档登记.

| 插槽 | 画什么 |
| --- | --- |
| `settings.section` | 管理员页面:助手、用户、模型、规则列表、会话 |
| `conversation.input.left` | 作曲排行中的两个选手,每场都瞄准 |
| `conversation.chat.node` | 助手的姓名和图标在转弯上方(显示官员) `turn-process` 节点和使其内部,不变) |

字符串居住 `src/client/locales.js` (ru / en / zh); 测试比较密钥集 所以翻译不能默默地错过一个密钥.

### 构建和测试

```sh
npm install          # esbuild only
npm run build        # writes lib/client.js
npm test             # full Node test suite, including the built bundle
npm pack --dry-run    # inspect the public package file list
```

CI任务在测试前运行该建筑,并用 `npm pack --dry-run`。软件包本身不发布或安装任何内容.

建筑是单层建筑 加上 `window.__ModuleLoader__` 包装 壳期望,所以 `lib/client.js` 可以从 `src/client/`。 。 。 .

### 客户端信标

在结束时 `apply` 捆绑的帖子 `{ok, mounted, failed}` 改为 `POST /api/assistants/client-report`;主机将其记录为一行:

```
[dsh-assistants] client mounted=settings.section,sidebar.panellist,main failed=conversation.input.dock: not mounted on this host
```

浏览器警告从未到达服务器日志,“页面不存在”就是 该报告需要在日记中填入一行,而不是DevTools会话.

## 常见问题

### @dr-co/dsh-assistants 是什么？

DSH 插件: 助理、 虚拟用户和绑定到会话的对内存\( 主机部分\)

### 如何安装 @dr-co/dsh-assistants？

在项目目录运行 npm install @dr-co/dsh-assistants，或使用 pnpm add / yarn add / bun add。

### @dr-co/dsh-assistants 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/dr-co\_\_dsh-assistants 是否存在。

### @dr-co/dsh-assistants 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @dr-co/dsh-assistants 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=22。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @dr-co/dsh-assistants 可以商用吗？

@dr-co/dsh-assistants 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @dr-co/dsh-assistants 的下载量有多少？

根据 npm 官方下载统计，@dr-co/dsh-assistants 在 2026/10/13 – 2026/11/11 这 30 天内被下载 5,256 次，日均约 175 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @dr-co/dsh-assistants 还在维护吗？

最新版本 0\.9\.12 发布于 2026/11/12（今天）；至今共发布 35 个版本，其中过去 12 个月发布了 35 个；首次发布于 2026/10/27。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

