Bundle
dsh-notepad
DSH Web GUI 右侧常驻记事本:钉在页面最右边的便签面板,自动保存到 ~/.dsh/notepad/notes.md,Agent 可通过 notepad_read/notepad_write 读写。
- Source
- 43456-awa
- License
- MIT
- Updated
- Updated 7 days ago
Readme
# dsh-notepad
钉在 DeepSeek Harness Web GUI 的常驻记事本插件(可拖动、可固定)。
- 双作用域:**全局页**(所有会话共享)+ **本会话隔离页**,可切换或分屏同看
- 输入自动保存到 `~/.dsh/notepad/`(UTF-8 BOM、原子写、revision 乐观锁、冲突可合并/覆盖)
- 保存失败自动重试;刷新后检测到未保存内容可一键恢复
- SSE 实时推送 + 轮询兜底;Markdown 预览(勾选框可点击)、完成率统计、时间戳插入、全文搜索、历史快照(每次保存前自动存档 20 份)、复制/下载导出
- Agent 工具:`notepad_read` / `notepad_write`(append 按行去重、可选时间戳)/ `notepad_search`(跨作用域)
- 窗口可拖到任意位置、可锁定固定;宽度可调;窄屏自动收起;`Ctrl+Enter` 立即保存、`Esc` 收起
- 纯客户端样式,只用 `--dsw-*` 主题 token,跟随明暗主题
## 安装
```sh
dsh plugin --profile web add dsh-notepad
```
重启 dsh web 后刷新页面即可。卸载:`dsh plugin --profile web remove dsh-notepad`(便签文件默认保留)。
### 本地开发
源码放在 `~/.dsh/profiles/` 树**内**(`link:` 安装按插件的 realpath 向上解析依赖,
放在树外会够不到 `profiles/node_modules` 里宿主自带的 `@deepseek-ai/*`):
```sh
# <yourProfileDir> 为 ~/.dsh/profiles/ 下的实际路径
dsh plugin --profile web add link:<yourProfileDir>/dsh-notepad
```
## 结构
```
dsh-notepad/
├── package.json # dsh.bundle + dsh.client(浏览器半区)
├── cordis.patch.yml # 把宿主行插入组合的 patch
├── lib/
│ ├── index.js # 宿主办:存储/API/SSE + 模型工具
│ └── client.js # 浏览器半区:shell.overlay 常驻面板
```
## HTTP API
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | `/api/notepad` | `?scope=global\|session&sessionId=&since=` 读取(未变返回 `text:null`) |
| PUT | `/api/notepad` | body `{ scope, sessionId?, text, baseRevision?, force? }`,冲突返回 409 |
| GET | `/api/notepad/stream` | SSE 推送:`{ scope, revision }` 变更广播 |
| GET | `/api/notepad/history` | `?scope=&sessionId=` 历史快照列表 |
| GET | `/api/notepad/history/<id>` | 载入单份快照 |
Install
dsh plugin --profile web add github:43456-awa/dsh-notepad
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install dsh-notepad from the hub
- This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.