dsh-carryon 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -4,6 +4,16 @@ All notable changes to dsh-carryon. Versions follow [SemVer](https://semver.org/
4
4
  release may change behaviour or configuration. Each release supports exactly one dsh release, given by
5
5
  `engines.dsh` in `package.json`.
6
6
 
7
+ ## 0.1.1 (2026-11-06)
8
+
9
+ Documentation only; the code is the same as 0.1.0. It supports dsh `0.2.2-alpha.3`.
10
+
11
+ - **npm page.** The READMEs use full GitHub URLs for images and links, so they work on npmjs.com.
12
+ - **Quick start.** How to check that the plugin is installed, update it, and remove it.
13
+ - **Troubleshooting.** New `docs/troubleshooting.md`: install errors, no folds, failed folds and their messages.
14
+ - **Issue forms** for bug reports and feature requests.
15
+ - **Release.** Published from GitHub Actions through npm trusted publishing (OIDC).
16
+
7
17
  ## 0.1.0 (2026-11-06)
8
18
 
9
19
  First release. It supports dsh `0.2.2-alpha.3`.
package/README.md CHANGED
@@ -8,14 +8,15 @@
8
8
  <a href="https://ethannju.github.io/carryon/"><img src="https://img.shields.io/badge/Project-Page-2d6bb1?style=flat-square" alt="Project Page"></a>
9
9
  <a href="https://arxiv.org/abs/2610.18784"><img src="https://img.shields.io/badge/arXiv-2610.18784-B31B1B?style=flat-square&amp;logo=arxiv&amp;logoColor=white" alt="arXiv 2610.18784"></a>
10
10
  <a href="https://huggingface.co/papers/2610.18784"><img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fhuggingface.co%2Fapi%2Fpapers%2F2610.18784&amp;query=%24.upvotes&amp;label=Hugging%20Face&amp;prefix=%E2%96%B2%20&amp;suffix=%20upvotes&amp;color=ffd21e&amp;logo=huggingface&amp;style=flat-square" alt="Hugging Face Paper upvotes"></a>
11
+ <a href="https://www.npmjs.com/package/dsh-carryon"><img src="https://img.shields.io/npm/v/dsh-carryon?style=flat-square&amp;logo=npm" alt="npm"></a>
11
12
  <a href="https://github.com/xuan-tu-ai/dsh-carryon/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/xuan-tu-ai/dsh-carryon/ci.yml?branch=main&amp;style=flat-square&amp;logo=githubactions&amp;logoColor=white&amp;label=CI" alt="CI"></a>
12
- <a href="LICENSE"><img src="https://img.shields.io/badge/License-Apache--2.0-blue?style=flat-square" alt="License Apache-2.0"></a>
13
+ <a href="https://github.com/xuan-tu-ai/dsh-carryon/blob/main/LICENSE"><img src="https://img.shields.io/badge/License-Apache--2.0-blue?style=flat-square" alt="License Apache-2.0"></a>
13
14
  <a href="https://github.com/deepseek-ai/deepseek-harness"><img src="https://img.shields.io/badge/dsh-0.2.2--alpha.3-4D6BFE?style=flat-square" alt="dsh 0.2.2-alpha.3"></a>
14
15
  <img src="https://img.shields.io/badge/Node.js-%E2%89%A522-339933?style=flat-square&amp;logo=nodedotjs&amp;logoColor=white" alt="Node.js 22 or later">
15
16
  </p>
16
17
 
17
18
  <p align="center">
18
- <strong>English</strong> · <a href="README.zh-CN.md">简体中文</a>
19
+ <strong>English</strong> · <a href="https://github.com/xuan-tu-ai/dsh-carryon/blob/main/README.zh-CN.md">简体中文</a>
19
20
  </p>
20
21
 
21
22
  When a [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) (dsh) session grows long, dsh compacts it
@@ -29,9 +30,9 @@ https://github.com/user-attachments/assets/5f4a6889-5cf6-41a4-aff1-327a9d5d6b7b
29
30
  <p align="center"><sub>CarryOn demo by the paper's authors. Also on the <a href="https://ethannju.github.io/carryon/">project page</a>.</sub></p>
30
31
 
31
32
  <p align="center"><img src="https://raw.githubusercontent.com/Ethannju/carryon/2d5c8db78e136a74d6e1cccfdf984607b565ee6e/docs/assets/overview.png" alt="Overview of CarryOn" width="860"></p>
32
- <p align="center"><sub>The CarryOn runtime, from the paper. In dsh-carryon, dsh decides when to fold and keeps the recent turns; the Grounder is not ported yet (<a href="docs/how-it-works.md">details</a>).</sub></p>
33
+ <p align="center"><sub>The CarryOn runtime, from the paper. In dsh-carryon, dsh decides when to fold and keeps the recent turns; the Grounder is not ported yet (<a href="https://github.com/xuan-tu-ai/dsh-carryon/blob/main/docs/how-it-works.md">details</a>).</sub></p>
33
34
 
34
- [Configuration](docs/configuration.md) · [How it works](docs/how-it-works.md) · [Development](docs/development.md) · [Benchmark](bench/README.md) · [Releasing](docs/release.md) · [Changelog](CHANGELOG.md)
35
+ [Configuration](https://github.com/xuan-tu-ai/dsh-carryon/blob/main/docs/configuration.md) · [How it works](https://github.com/xuan-tu-ai/dsh-carryon/blob/main/docs/how-it-works.md) · [Development](https://github.com/xuan-tu-ai/dsh-carryon/blob/main/docs/development.md) · [Benchmark](https://github.com/xuan-tu-ai/dsh-carryon/blob/main/bench/README.md) · [Troubleshooting](https://github.com/xuan-tu-ai/dsh-carryon/blob/main/docs/troubleshooting.md) · [Releasing](https://github.com/xuan-tu-ai/dsh-carryon/blob/main/docs/release.md) · [Changelog](https://github.com/xuan-tu-ai/dsh-carryon/blob/main/CHANGELOG.md)
35
36
 
36
37
  ## Highlights
37
38
 
@@ -61,7 +62,7 @@ flowchart LR
61
62
  The checkpoint holds every carrier and the execution context. dsh keeps the most recent turns verbatim after it.
62
63
  A fold costs one Tracker call, plus one Compiler call when the Tracker asks for compilation; dsh's own compaction
63
64
  makes one summary call. The engine, the state format and how this port differs from the paper are described in
64
- [How it works](docs/how-it-works.md).
65
+ [How it works](https://github.com/xuan-tu-ai/dsh-carryon/blob/main/docs/how-it-works.md).
65
66
 
66
67
  ## Results reported in the paper
67
68
 
@@ -99,16 +100,36 @@ Restart dsh. In the terminal UI, every compaction is now a CarryOn fold. In the
99
100
  **CarryOn mode**, which you can switch from the mode menu next to the chat box:
100
101
 
101
102
  <p align="center">
102
- <img src="docs/images/web-carryon-mode-menu.png" alt="CarryOn mode in the dsh Web UI mode menu" width="720">
103
+ <img src="https://raw.githubusercontent.com/xuan-tu-ai/dsh-carryon/main/docs/images/web-carryon-mode-menu.png" alt="CarryOn mode in the dsh Web UI mode menu" width="720">
103
104
  </p>
104
105
 
105
- The plugin is listed under **Plugins → Installed plugins**. A fold's checkpoint appears where dsh shows a compaction
106
- summary, and its full state is under Trajectory → Raw Output. To remove the plugin:
106
+ ### Check, update, remove
107
+
108
+ `dsh plugin` passes its arguments to pnpm in the profile's directory, so pnpm's commands work. Check that the plugin
109
+ is installed:
110
+
111
+ ```bash
112
+ npx @deepseek-ai/dsh@0.2.2-alpha.3 plugin --profile tui list
113
+ ```
114
+
115
+ In the Web UI it is also listed under **Plugins → Installed plugins**. Once the session is long enough to compact
116
+ (or after `/compact`), a fold's checkpoint appears where dsh shows a compaction summary, and its full state is under
117
+ Trajectory → Raw Output.
118
+
119
+ Update to the latest release for your dsh version:
120
+
121
+ ```bash
122
+ npx @deepseek-ai/dsh@0.2.2-alpha.3 plugin --profile tui update dsh-carryon
123
+ ```
124
+
125
+ Remove it:
107
126
 
108
127
  ```bash
109
128
  npx @deepseek-ai/dsh@0.2.2-alpha.3 plugin --profile tui remove dsh-carryon
110
129
  ```
111
130
 
131
+ Use `--profile web` for the Web UI. Something not working? See [Troubleshooting](https://github.com/xuan-tu-ai/dsh-carryon/blob/main/docs/troubleshooting.md).
132
+
112
133
  ## Configuration
113
134
 
114
135
  The plugin's config row is `carryon-compaction`. It accepts dsh's own compaction keys (`thresholdRatio`,
@@ -124,7 +145,7 @@ half of the context window and run the CarryOn roles on the cheaper `deepseek-fl
124
145
  ```
125
146
 
126
147
  dsh replaces a row's whole `config` with the patched one, so list all your keys together. See
127
- [Configuration](docs/configuration.md) for every key, the defaults, and the Web UI's limits.
148
+ [Configuration](https://github.com/xuan-tu-ai/dsh-carryon/blob/main/docs/configuration.md) for every key, the defaults, and the Web UI's limits.
128
149
 
129
150
  ## Citation
130
151
 
@@ -147,5 +168,5 @@ paper's authors or with DeepSeek.
147
168
 
148
169
  ## License
149
170
 
150
- dsh-carryon's code is [Apache-2.0](LICENSE). The demo video and the figures shown above belong to the paper's authors,
171
+ dsh-carryon's code is [Apache-2.0](https://github.com/xuan-tu-ai/dsh-carryon/blob/main/LICENSE). The demo video and the figures shown above belong to the paper's authors,
151
172
  who gave permission to show them here; they are not covered by that license.
package/README.zh-CN.md CHANGED
@@ -8,14 +8,15 @@
8
8
  <a href="https://ethannju.github.io/carryon/"><img src="https://img.shields.io/badge/Project-Page-2d6bb1?style=flat-square" alt="Project Page"></a>
9
9
  <a href="https://arxiv.org/abs/2610.18784"><img src="https://img.shields.io/badge/arXiv-2610.18784-B31B1B?style=flat-square&amp;logo=arxiv&amp;logoColor=white" alt="arXiv 2610.18784"></a>
10
10
  <a href="https://huggingface.co/papers/2610.18784"><img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fhuggingface.co%2Fapi%2Fpapers%2F2610.18784&amp;query=%24.upvotes&amp;label=Hugging%20Face&amp;prefix=%E2%96%B2%20&amp;suffix=%20upvotes&amp;color=ffd21e&amp;logo=huggingface&amp;style=flat-square" alt="Hugging Face Paper upvotes"></a>
11
+ <a href="https://www.npmjs.com/package/dsh-carryon"><img src="https://img.shields.io/npm/v/dsh-carryon?style=flat-square&amp;logo=npm" alt="npm"></a>
11
12
  <a href="https://github.com/xuan-tu-ai/dsh-carryon/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/xuan-tu-ai/dsh-carryon/ci.yml?branch=main&amp;style=flat-square&amp;logo=githubactions&amp;logoColor=white&amp;label=CI" alt="CI"></a>
12
- <a href="LICENSE"><img src="https://img.shields.io/badge/License-Apache--2.0-blue?style=flat-square" alt="License Apache-2.0"></a>
13
+ <a href="https://github.com/xuan-tu-ai/dsh-carryon/blob/main/LICENSE"><img src="https://img.shields.io/badge/License-Apache--2.0-blue?style=flat-square" alt="License Apache-2.0"></a>
13
14
  <a href="https://github.com/deepseek-ai/deepseek-harness"><img src="https://img.shields.io/badge/dsh-0.2.2--alpha.3-4D6BFE?style=flat-square" alt="dsh 0.2.2-alpha.3"></a>
14
15
  <img src="https://img.shields.io/badge/Node.js-%E2%89%A522-339933?style=flat-square&amp;logo=nodedotjs&amp;logoColor=white" alt="Node.js 22 或更高版本">
15
16
  </p>
16
17
 
17
18
  <p align="center">
18
- <a href="README.md">English</a> · <strong>简体中文</strong>
19
+ <a href="https://github.com/xuan-tu-ai/dsh-carryon/blob/main/README.md">English</a> · <strong>简体中文</strong>
19
20
  </p>
20
21
 
21
22
  [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness)(dsh)的会话变长时,dsh 会把较早的轮次总结成一段自由文本来压缩上下文。dsh-carryon 用论文 [*Pack Light, CarryOn*](https://arxiv.org/abs/2610.18784) 中的 **CarryOn** 替换这一步:较早的轮次被折叠(fold)成两部分。一部分是记录智能体已确立内容的小型、带版本的记录,称为“载体”(carrier)。另一部分是执行上下文,包含任务、未完成的义务和下一步。每次折叠在提交前都会经过校验,被拒绝的折叠不会改变任何东西。
@@ -25,9 +26,9 @@ https://github.com/user-attachments/assets/5f4a6889-5cf6-41a4-aff1-327a9d5d6b7b
25
26
  <p align="center"><sub>论文作者制作的 CarryOn 演示视频,也可在<a href="https://ethannju.github.io/carryon/">项目主页</a>观看。</sub></p>
26
27
 
27
28
  <p align="center"><img src="https://raw.githubusercontent.com/Ethannju/carryon/2d5c8db78e136a74d6e1cccfdf984607b565ee6e/docs/assets/overview.png" alt="Overview of CarryOn" width="860"></p>
28
- <p align="center"><sub>论文中的 CarryOn 运行时示意图。在 dsh-carryon 中,何时折叠以及保留哪些最近轮次由 dsh 决定;Grounder 尚未移植(<a href="docs/how-it-works.md">详情</a>,英文)。</sub></p>
29
+ <p align="center"><sub>论文中的 CarryOn 运行时示意图。在 dsh-carryon 中,何时折叠以及保留哪些最近轮次由 dsh 决定;Grounder 尚未移植(<a href="https://github.com/xuan-tu-ai/dsh-carryon/blob/main/docs/how-it-works.md">详情</a>,英文)。</sub></p>
29
30
 
30
- [配置](docs/configuration.md) · [工作原理](docs/how-it-works.md) · [开发](docs/development.md) · [基准测试](bench/README.md) · [发布](docs/release.md) · [更新日志](CHANGELOG.md)
31
+ [配置](https://github.com/xuan-tu-ai/dsh-carryon/blob/main/docs/configuration.md) · [工作原理](https://github.com/xuan-tu-ai/dsh-carryon/blob/main/docs/how-it-works.md) · [开发](https://github.com/xuan-tu-ai/dsh-carryon/blob/main/docs/development.md) · [基准测试](https://github.com/xuan-tu-ai/dsh-carryon/blob/main/bench/README.md) · [故障排除](https://github.com/xuan-tu-ai/dsh-carryon/blob/main/docs/troubleshooting.md) · [发布](https://github.com/xuan-tu-ai/dsh-carryon/blob/main/docs/release.md) · [更新日志](https://github.com/xuan-tu-ai/dsh-carryon/blob/main/CHANGELOG.md)
31
32
 
32
33
  以上文档为英文。
33
34
 
@@ -52,7 +53,7 @@ flowchart LR
52
53
  R -.->|上下文接近上限| F["退回:<br/>dsh 的总结"]
53
54
  ```
54
55
 
55
- 检查点包含所有载体和执行上下文,dsh 会在它之后原样保留最近的轮次。每次折叠调用一次 Tracker;Tracker 请求编译时,再调用一次 Compiler。dsh 自带的压缩只调用一次总结。引擎、状态格式以及本移植与论文的差异,见[工作原理](docs/how-it-works.md)。
56
+ 检查点包含所有载体和执行上下文,dsh 会在它之后原样保留最近的轮次。每次折叠调用一次 Tracker;Tracker 请求编译时,再调用一次 Compiler。dsh 自带的压缩只调用一次总结。引擎、状态格式以及本移植与论文的差异,见[工作原理](https://github.com/xuan-tu-ai/dsh-carryon/blob/main/docs/how-it-works.md)。
56
57
 
57
58
  ## 论文报告的结果
58
59
 
@@ -85,15 +86,33 @@ npx @deepseek-ai/dsh@0.2.2-alpha.3 plugin --profile web add dsh-carryon
85
86
  重启 dsh。在终端界面中,每次压缩都会变成一次 CarryOn 折叠。在 Web UI 中,新会话默认使用 **CarryOn mode**,可以在输入框旁的模式菜单中切换:
86
87
 
87
88
  <p align="center">
88
- <img src="docs/images/web-carryon-mode-menu.png" alt="dsh Web UI 模式菜单中的 CarryOn mode" width="720">
89
+ <img src="https://raw.githubusercontent.com/xuan-tu-ai/dsh-carryon/main/docs/images/web-carryon-mode-menu.png" alt="dsh Web UI 模式菜单中的 CarryOn mode" width="720">
89
90
  </p>
90
91
 
91
- 插件会出现在 **Plugins → Installed plugins** 中。折叠的检查点显示在 dsh 显示压缩总结的位置,完整状态在 Trajectory → Raw Output 中。卸载插件:
92
+ ### 检查、更新、卸载
93
+
94
+ `dsh plugin` 会把参数转交给配置目录中的 pnpm,所以 pnpm 的命令都可以使用。检查插件是否已安装:
95
+
96
+ ```bash
97
+ npx @deepseek-ai/dsh@0.2.2-alpha.3 plugin --profile tui list
98
+ ```
99
+
100
+ 在 Web UI 中,插件也会出现在 **Plugins → Installed plugins** 中。会话长到触发压缩(或执行 `/compact`)后,折叠的检查点显示在 dsh 显示压缩总结的位置,完整状态在 Trajectory → Raw Output 中。
101
+
102
+ 更新到适用于你的 dsh 版本的最新发布:
103
+
104
+ ```bash
105
+ npx @deepseek-ai/dsh@0.2.2-alpha.3 plugin --profile tui update dsh-carryon
106
+ ```
107
+
108
+ 卸载:
92
109
 
93
110
  ```bash
94
111
  npx @deepseek-ai/dsh@0.2.2-alpha.3 plugin --profile tui remove dsh-carryon
95
112
  ```
96
113
 
114
+ Web UI 请使用 `--profile web`。遇到问题?见[故障排除](https://github.com/xuan-tu-ai/dsh-carryon/blob/main/docs/troubleshooting.md)(英文)。
115
+
97
116
  ## 配置
98
117
 
99
118
  插件的配置行是 `carryon-compaction`。它接受 dsh 自带压缩的键(`thresholdRatio`、`retainTokens` 等),以及少量 CarryOn 专用的键。例如,下面的配置写入 `$DSH_HOME/profiles/tui/cordis.patch.yml` 后,会在上下文窗口用到一半时折叠,并让 CarryOn 的角色调用使用更便宜的 `deepseek-flash`:
@@ -106,7 +125,7 @@ npx @deepseek-ai/dsh@0.2.2-alpha.3 plugin --profile tui remove dsh-carryon
106
125
  runtimeModel: deepseek-flash
107
126
  ```
108
127
 
109
- dsh 会用补丁中的 `config` 整体替换该行的配置,所以请把所有要改的键写在一起。全部键、默认值以及 Web UI 中的限制见[配置](docs/configuration.md)。
128
+ dsh 会用补丁中的 `config` 整体替换该行的配置,所以请把所有要改的键写在一起。全部键、默认值以及 Web UI 中的限制见[配置](https://github.com/xuan-tu-ai/dsh-carryon/blob/main/docs/configuration.md)。
110
129
 
111
130
  ## 引用
112
131
 
@@ -128,4 +147,4 @@ carrycode 和 dsh-carryon 是仅依据论文完成的独立实现,与论文作
128
147
 
129
148
  ## 许可证
130
149
 
131
- dsh-carryon 的代码采用 [Apache-2.0](LICENSE)。上文的演示视频和图片属于论文作者,经作者许可在此展示,不在该许可证范围内。
150
+ dsh-carryon 的代码采用 [Apache-2.0](https://github.com/xuan-tu-ai/dsh-carryon/blob/main/LICENSE)。上文的演示视频和图片属于论文作者,经作者许可在此展示,不在该许可证范围内。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-carryon",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "CarryOn context folding (arXiv:2610.18784) as a compaction plugin for DeepSeek Harness (experimental)",
5
5
  "keywords": [
6
6
  "dsh-plugin",