feat!: publish as @dsh-plugin/session-delete with an automated Gitea npm release
publish / npm (push) Failing after 1m49s

The registry owner is the scope the package must publish under, so the name moves from @local/ to @dsh-plugin/ in all three places that must agree: package.json, cordis.patch.yml, and the client module id. `private` goes away because npm refuses to publish such a package, and publishConfig pins the registry to this organization's npm endpoint.

The tag workflow publishes whatever version the pushed v* tag names, using the built-in Gitea job token, and refuses a tag that disagrees with package.json.
This commit is contained in:
pyh
2026-09-30 11:00:39 +08:00
parent 29060db8dc
commit 37468d6ac9
6 changed files with 128 additions and 8 deletions
+43 -3
View File
@@ -51,10 +51,50 @@ DeepSeek Harness 原本只能归档会话,归档只是从列表里移开、日
这是一个 DeepSeek Harness **bundle** 包(普通 Node 包 + `cordis.patch.yml`),由 Harness 的插件管理机制安装,而不是单独运行的程序:
- `package.json` 声明 `dsh.bundle.patch`(bundle 补丁)与 `dsh.client`(web 平台客户端半)
- `cordis.patch.yml` 把 `@local/dsh-session-delete` 插进 profile
- 安装后 profile 的依赖会是 `link:<本目录绝对路径>`,并在 `node_modules` 下建立链接
- `cordis.patch.yml` 把 `@dsh-plugin/session-delete` 插进 profile
- 安装后 profile 的依赖是 `link:<本目录绝对路径>`(本地目录安装)或注册表/git 解析出的版本,并在 `node_modules` 下建立链接
> 包名在三个地方必须完全一致:`package.json` 的 `name`、`cordis.patch.yml` 里 `name:`、以及 `client.js` 顶部 `__ModuleLoader__.load({ id })`。Cordis 是按 `name` 在 profile 的 `node_modules` 里解析模块的。
### 安装方式
在 DeepSeek Harness 的 **插件 → 添加插件** 里,以下三种都可用:
| 方式 | 输入 |
| --- | --- |
| 本地目录 | 本仓库在本机的绝对路径(`D:\DeepSeek Harness Plugins\dsh-session-delete`),适合边改边用 |
| Git 仓库地址 | `https://gitea.iwake.top/dsh-plugin/session-delete.git#v1.0.0`(`#` 后可跟标签或提交) |
| npm 源 | 安装源选「自定义地址」填 `https://gitea.iwake.top/api/packages/dsh-plugin/npm/`,包名填 `@dsh-plugin/session-delete` |
用 npm 源或私有源时,凭据放在本机 `~/.npmrc`(客户端提示里也是这么说的):
```bash
npm config set @dsh-plugin:registry=https://gitea.iwake.top/api/packages/dsh-plugin/npm/
npm config set //gitea.iwake.top/api/packages/dsh-plugin/npm/:_authToken=<带 package 权限的 token>
```
公开的 git 地址不需要凭据。安装或升级后:**宿主半需要重启客户端**,只改浏览器半时刷新页面即可。
### 发布到 Gitea 的 npm 仓库
仓库自带工作流 [`.gitea/workflows/publish.yml`](.gitea/workflows/publish.yml):推送 `v*` 标签(或在 Actions 页面手动运行)就会把当前版本发布到 `https://gitea.iwake.top/api/packages/dsh-plugin/npm/`,用的是 Gitea 内置的任务令牌,不需要额外配置密钥。
```bash
git tag -a v1.0.1 -m "v1.0.1" && git push origin v1.0.1
```
前提:实例启用了 Actions 并注册了 runner(`runs-on` 的标签要与 runner 一致),且 Actions 的令牌权限没有把 `packages` 限制成只读(组织 Settings → Actions → General)。
手工发布等价于:
```bash
npm config set @dsh-plugin:registry=https://gitea.iwake.top/api/packages/dsh-plugin/npm/
npm config set //gitea.iwake.top/api/packages/dsh-plugin/npm/:_authToken=<TOKEN>
npm publish # registry 已写在 package.json 的 publishConfig 里,无需再传 --registry
```
同一版本不能重复发布:改内容要同时提升 `package.json` 的 `version`。
安装或升级后:**宿主半需要重启客户端**,只改浏览器半时刷新页面即可。
## 结构