Bundle
paper-plane-x-dsh
Paper Plane X plugin for DeepSeek Harness Web: context panel + /ppx-paper search
- Source
- WindLX
- License
- AGPL-3.0-or-later
- Updated
- Updated 3 days ago
Readme
# Paper Plane X × DeepSeek Harness 插件
将 Paper Plane X(ppx)的研究上下文接入 DeepSeek Harness Web 控制台:
1. **上下文面板(`/ppx-context`)**:通过 `ppx` CLI 查看/管理当前 context(`base_url`、`project_id`,读写同一份 CLI context 文件),并提供跳转到 ppx 前端项目页(`/projects/{projectId}`)的新标签页链接。
2. **论文检索(`/ppx-paper`)**:输入 `/ppx-paper` 在输入框上方打开检索面板,面板内输入关键词(支持空格)或 paper_id 复用 ppx Librarian 搜索(`simple_query` / `paper_id`)选择并引用。选中后仅把 `paper_id` 写入输入框(不注入冗余提醒,避免污染上下文)。
这是一个 DeepSeek Harness **bundle** 插件(`dsh.bundle` + `dsh.client`),浏览器半走 `exports["./client"]`,React 实现。


## 安装与运行
要求:Node 22+、pnpm、以及一个可运行的 DeepSeek Harness 环境(`dsh` CLI)。
### 1. 构建插件
```bash
cd paper_plane_x_dsh
pnpm install && pnpm build # 产出 lib/index.js 与 lib/client.js
```
### 2. 装入 Web profile
DSH 的 Web 界面由内置 **`web` profile**(`@deepseek-ai/dsh-base` + `@deepseek-ai/dsh-web-app`)承载,插件必须装进它才会随 Web 一起加载:
```bash
# 本地路径安装(首次会自动初始化 web profile)
dsh plugin --profile web add /path/to/paper_plane_x_dsh
# 或从 Git 安装(SSH / HTTPS 二选一;prepare 会自构建;
# pnpm ≥10 需在 profile 的 pnpm-workspace.yaml 里 allowBuilds)
dsh plugin --profile web add github:WindLX/paper_plane_x_dsh # SSH
dsh plugin --profile web add git+https://github.com/WindLX/paper_plane_x_dsh.git # HTTPS
```
### 3. 启动 Web
```bash
dsh web # 等价于 dsh --profile web
```
打开 `http://127.0.0.1:3080`。可先 `dsh --profile web --dump-config` 确认 `paper-plane-x-dsh`(行 id 为 `ppx`)已进入 composition。
> `@deepseek-ai/dsh-client-*` 与 `react` **不随插件安装**:它们由 DSH Web shell 的模块表在运行时提供(client bundle 已将其 external)。`pnpm install` 只装构建工具与类型,因此可在插件目录内独立 `pnpm install && pnpm build && pnpm test`。
### 配置存储位置
- **DSH profile 配置**:`~/.dsh/profiles/<name>/`(`package.json` 的 `dsh.profile.bundles` + `cordis.patch.yml`);根目录可用 `$DSH_HOME` 覆盖。
- **ppx context**:由 `ppx` CLI 统一管理(`ppx context show` / `ppx context set`),插件通过宿主侧的 `/ppx/*` 接口读写同一份 context 文件,保证与 CLI 一致。全局在 `~/.config/paper-plane-x/context.json`,本地在 `./.paper-plane-x/context.json`(相对 DSH 进程 cwd),环境变量 `PPX_BASE_URL` / `PPX_PROJECT_ID` 优先。
## 卸载
```bash
# 从 web profile 移除插件(pnpm 卸载依赖,并自动从 dsh.profile.bundles 层移除)
dsh plugin --profile web remove paper-plane-x-dsh
```
如需连整个 profile 一起删除(连同自动初始化的 `dsh-base`/`dsh-web-app` 清单):
```bash
rm -rf ~/.dsh/profiles/web
```
> `dsh web` 每次启动都会重读 profile,所以卸载后**重启 `dsh web`** 即不再加载插件。
## 配置(ppx context)
context 由 `ppx` CLI 统一管理,插件不自己存配置。面板打开时读 `ppx context show` 的 resolved 结果,保存时调 `ppx context set`(可勾选写入全局)。
| 字段 | 说明 |
| ----------- | ------------------------------------------------------------------ |
| `baseUrl` | ppx 后端 API 地址(默认 `http://127.0.0.1:8000/api/v1`) |
| `projectId` | 当前项目 ID(可选,留空清除) |
| 项目页链接 | 由 `baseUrl` 去掉 `/api/v1` 推导前端地址 + `/projects/{projectId}` |
> 前置条件:用户需已安装 `paper-plane-x-cli`(`ppx` 在 PATH 中);否则面板会提示未找到 CLI。
## 使用
在 DSH Web 输入框里:
| 命令 | 作用 |
| -------------- | ---------------------------------------------------------------------- |
| `/ppx-context` | 在输入框上方打开上下文面板(查看/修改 baseUrl、projectId,跳转项目页) |
| `/ppx-paper` | 在输入框上方打开论文检索面板,面板内输入关键词(支持空格)检索并引用 |
两个命令都会在输入 `/` 时出现在命令菜单里(前缀匹配);选中后命令 token 从草稿移除,面板浮在输入框上方。检索在面板自己的输入框里进行,因此多词查询(含空格)正常。
## 开发命令
```bash
just setup # pnpm install
just build # pnpm build(tsdown 产出 lib/)
just test # pnpm test(vitest)
just pre-commit # test + build
```
## 结构
```
src/index.ts # node 半:/ppx/* 路由(ppx CLI + 后端检索)
src/shared/types.ts # /ppx/* 接口的共享类型
src/client/index.ts # 浏览器半:注册 /ppx-paper、/ppx-context + 面板 + locale
src/client/ppx-paper-source.ts # /ppx-paper 命令源(打开检索面板)
src/client/ppx-context-source.ts # /ppx-context 命令源(打开上下文面板)
src/client/ppx-panel.tsx # 组合面板(上下文表单 + 论文检索,ui-primitives + DSH token)
src/client/panel-store.ts # 面板开/关 + 模式状态
src/client/locales.ts # ppx 命名空间 zh/en 字典
src/client/ppx/api.ts # /ppx/* 的浏览器 fetch 封装
tsdown.config.ts # 复刻 DSH client bundle 契约(__ModuleLoader__ 工厂)
cordis.patch.yml # bundle patch:insert 插件行
```
## License
AGPL-3.0-or-later,与 Paper Plane X 主仓库一致。
Install
dsh plugin --profile web add github:WindLX/paper_plane_x_dsh#dc3d5127dc6c1102111fb0abe13f11e7b72049ca
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 paper-plane-x-dsh from the hub
- This package builds from source on install. pnpm will ask you to allow its build script — that is permission to run the package’s code on your machine, outside the agent sandbox. Only allow sources you trust.