Skip to content
dsh.fish
Bundle

dsh-request-manager

请求管理插件(bundle):按全局配置管理 Agent→LLM 请求——「请求额外间隔」(每个请求发送前固定多等 N 毫秒,0=不介入)、重试次数覆盖(留空=沿用 provider 默认)、拦截「请求失败」(终态失败后挂起等待人工决议:重试原地重发同一请求 / 放弃按原生路径终结)。入口为会话头部 utilities 槽位的「请求管理」按钮;设置跨会话全局生效,按值决定是否介入;界面跟随 dsh 语言中英切换。

Source
tree-func
License
MIT
Updated
Updated 6 days ago

Readme

# dsh-request-manager

中文 | [English](./README_en.md)

管理 DeepSeek Harness 的 LLM API 请求策略,修改默认的请求行为策略。

插件在会话区顶部加入了「请求管理」按钮,点击打开「请求管理面板」。所有设置全局生效、跨会话共享,无需独立开关——每个功能由其配置值决定是否介入。

![请求管理面板](assets/screenshot.png)

## 功能

### 请求额外间隔

在每个 API 请求之间插入额外的延时(毫秒)。各会话的首个请求不等待,自动与手动重试同样生效;`0` = 不介入。

### 重试次数

修改默认 API 请求失败后的自动重试次数(DSH 当前版本默认 5 次),留空 = 不覆盖。某些类型的 API 请求失败 DSH 默认不会重试(例如 `SSE stream ended without [DONE]`、`NETWORK ERROR` 等),本选项不影响这类失败的重试策略。

### 拦截「请求失败」

API 请求失败后,请求管理面板自动展开,显示拦截的失败请求处理方式卡片:

![拦截「请求失败」](assets/screenshot2.png)

- **🔁 重试**:原地重发同一请求(仍受额外间隔约束);若再次失败会再次显示,可反复重试。
- **🚩 放弃**:按 DSH 原生路径终结该轮。

本选项对 DSH 默认不会重试的失败也统一生效。超时时长(秒)与超时动作可配置:超过设定时长后按所选动作自动重试或自动放弃,`0` = 不启用超时;点击停止或销毁会话会立即放行。选择「自动重试」时,持续失败的请求会按超时周期反复重发。

## 安装方法

```sh
dsh plugin --profile web add github:tree-func/dsh-request-manager
```

安装后重启 DSH 进程生效。

## 卸载方法

```sh
dsh plugin --profile web remove dsh-request-manager
```

## 架构

单包 bundle 插件,host 与 client 两半:

```
dsh-request-manager/
├── package.json         # dsh.bundle.patch + dsh.client.platform: web 声明
├── cordis.patch.yml     # 在 profile root 层插入本 bundle
├── index.js             # host 半边
└── client.js            # 浏览器半边
```

- **host(index.js)**:以 bundle 形式挂在 web profile 根层,在 root 层监听所有会话的 `agent/request`(插入额外间隔)与 `agent/request-error`(重试次数覆盖、拦截挂起)事件;并注册 `/reqmgr-api` 常驻路由,供浏览器读写全局配置、提交拦截决议。
- **client(client.js)**:经官方 ModuleLoader 加载,向 `conversation.session.header.utilities` 槽位注册「请求管理」按钮与下拉面板;每秒轮询拦截挂起状态,样式全部使用 `--dsw-*` 语义令牌以适配浅色/深色主题;配置经浏览器 localStorage 持久化,页面加载时自动恢复到宿主。

## 已知局限

- **会话之间相互隔离**:失败拦截的提示(按钮警示圆点、自动展开的面板)只出现在发生失败的那个会话里;停留在其他会话时不会收到任何提示。若长时间不切回,该挂起会按超时设置被自动重试或放弃。

## 本地化

界面文案经官方 locale 服务注册词典(命名空间 `requestManager`),跟随 DSH 语言设置在中英文间自动切换。

## 构建方法

本插件为纯 JavaScript,源码即产物,无需构建步骤:

```sh
npm test    # 语法校验(node --check index.js && node --check client.js)
```

开发期迭代:修改 `client.js` 后刷新浏览器页面即可;修改 `index.js` 需重启 DSH 进程。

## 许可证

[MIT](./LICENSE)

---

本插件使用 AI 辅助制作。

Install

dsh plugin --profile web add github:tree-func/dsh-request-manager

Profile: web

  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source