Skip to content
dsh.fish
Bundle

dsh-instruct-manager

DSH 全局指令管理插件 — 在设置界面中编辑 Agents.md 指令文件

Source
KeyboardPrince
Updated
Updated 19 days ago

Readme

# dsh-instruct-manager

DSH 指令管理插件 —— 在 DSH Web 的「设置 → 通用设置」中新增一个「指令」面板,用于编辑全局指令与项目级指令,让 AI 在每次会话中遵循自定义指令。

- **全局指令**:写入 `~/.dsh/Agents.md`,对所有会话生效。
- **项目指令**:写入 `<workspace>/.dsh/Agents.md`,仅对该项目会话生效,不影响全局。

![指令设置面板](./assets/screenshot.png)

## 功能

- **设置面板集成**:在「语言」与「外观」之间插入可折叠的「指令」设置项。
- **全局 / 项目分段**:以胶囊 tab 平铺所有已配置工作区,切换不同项目即可编辑对应项目指令。
- **不自动创建文件**:插件加载时不生成任何文件;只有点击「保存」且内容非空时,才会落盘 `~/.dsh/Agents.md` 或 `<workspace>/.dsh/Agents.md`。
- **折叠状态记忆**:首次安装默认展开,收起/展开后会记住选择,刷新或重新打开设置仍保持。
- **实时字数统计**:右下角显示 `当前字数/1500`;超过 1500 字后统计变红,保存按钮禁用。
- **保存反馈**:保存成功后右上角显示绿色 `已保存 ✓`,3 秒后自动消失。
- **空状态提示**:textarea 为空时显示占位文案,引导用户写入指令。
- **system prompt 注入**:通过 `ctx.systemPrompt.section` 将全局指令与当前项目指令拼接后注入每轮对话。

## 文件结构

```
dsh-instruct-manager/
├── index.js            # 服务端入口:注册 /instruct/api/* 路由 + systemPrompt 注入
├── client/
│   └── client.js       # 客户端入口:注册 settings.general.item 插槽 UI
├── cordis.patch.yml    # cordis bundle 补丁
├── assets/
│   └── screenshot.png  # 设置面板截图
└── README.md
```

## 安装

### 从 GitHub 安装(推荐)

```bash
dsh plugin add https://github.com/KeyboardPrince/dsh-instruct-manager
```

> 提示:git 源安装会执行仓库的 `prepare` 脚本;pnpm ≥10 可能需要你授权 `allowBuilds`。

### 从 npm registry 安装

```bash
dsh plugin --profile web add dsh-instruct-manager@latest
```

> 若插件以其他包名发布,替换为实际包名即可。

## 卸载

```bash
# 从当前 profile 移除插件
dsh plugin --profile web remove dsh-instruct-manager

# 如需彻底删除已写入的指令文件(可选)
rm ~/.dsh/Agents.md
rm <workspace>/.dsh/Agents.md
```

> 卸载插件不会自动删除你已保存的 `Agents.md` 文件,避免误删自定义指令。

## 技术要点

- **合法 cordis bundle**:服务端使用 `ctx.webServer.register` 注册标准 Node HTTP 路由,不依赖 dynamic-package 的 `harness` 全局。
- **客户端插槽**:客户端通过 `settings.general.item` 插槽注入设置项,使用原生 DOM + React.createElement 渲染。
- **工作区来源**:项目 tab 列表通过读取 DSH 工作区配置 `~/.dsh/storages/workspace.json` 获取,不依赖当前 session 是否已打开工作区。
- **安全限制**:API 仅接受本机回环(localhost / 127.0.0.1)请求;写入前会对 workspace 路径做规范化与绝对路径校验。

## 注意事项

- 字数上限为 **1500 字**(按 JavaScript 字符串长度计数)。
- 全局指令文件路径固定为 `~/.dsh/Agents.md`。
- 项目指令文件路径为 `<workspace>/.dsh/Agents.md`,保存后仅对该项目会话生效。
- 在任意目录启动 `dsh web` 都能看到全部已配置工作区;切换到项目 tab 时,编辑和保存都针对所选工作区。

Install

dsh plugin --profile web add github:KeyboardPrince/dsh-instruct-manager#08e356be18a70b417f4ca9ed265b533d87ed21d3

Profile: web

Source