@klarkxy/dsh-session-manager 0.1.1 → 0.1.2
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/README.md +17 -26
- package/README.zh-CN.md +16 -25
- package/locale/en.json +1 -1
- package/locale/zh.json +1 -1
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -1,41 +1,32 @@
|
|
|
1
|
-
# Session
|
|
1
|
+
# Session Manager
|
|
2
2
|
|
|
3
3
|
<!-- release-state-note -->
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
[简体中文](README.zh-CN.md)
|
|
6
|
+
|
|
7
|
+
Find and read DeepSeek Harness sessions across working directories, copy thread IDs, and start a chat in a temporary workspace.
|
|
6
8
|
|
|
7
|
-
|
|
9
|
+
## Install
|
|
8
10
|
|
|
9
11
|
```sh
|
|
10
12
|
dsh plugin --profile web add @klarkxy/dsh-session-manager
|
|
11
13
|
```
|
|
12
14
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
## Behavior
|
|
16
|
-
|
|
17
|
-
Lists and searches sessions DeepSeek Harness can already read, including sessions from other working directories, and reads one conversation a page at a time. The session menu can copy that session's thread ID. Press `Ctrl + Alt + C` (`⌘ + ⌥ + C` on macOS) to copy the currently open session's thread ID. The menu shows the current binding, which can be changed in the host's shortcut settings. This feature does not require the thread-management host patch.
|
|
18
|
-
|
|
19
|
-
Right-clicking a session or workspace group row in the sidebar browser is the same as clicking that row's "…" button: the host's native menu opens (pin, rename, fork, archive, plus this plugin's copy-thread-ID and delete rows), identical in content and order to the "…" menu. Blank New Session rows, the ungrouped bucket and search results have no row menu; right-click there behaves as before. This feature needs no host patch either.
|
|
20
|
-
|
|
21
|
-
`list_sessions` returns identity, title, directory, lineage, and whether the session is live or stored. Sessions in the caller's directory are listed first. `search_sessions` accepts `scope: "title"` (current names), `"content"` (transcripts, the default), or `"both"`. For example, `{"query":"session-manager","scope":"title"}` finds conversations whose titles contain that text from the current thread. Title matching is case-insensitive and literal, with complete matches first and caller-directory matches first within each group. Results include titles, session IDs, directories and `matchedBy`; title hits also include `titleMatch: "exact" | "partial"`, while content hits include event positions and snippets. Both mode returns title hits before content hits, once per session. Only current names match; a changed title result set invalidates continuation and requires a new search. Title search uses standard host APIs, needs no host patch, and works with the content index disabled. Inspect multiple candidates before calling `read_session`; search does not navigate to another conversation.
|
|
22
|
-
|
|
23
|
-
`read_session` has three layers, all available on the standard host without a patch:
|
|
24
|
-
|
|
25
|
-
- `mode: "conversation"` (default) reads recent turns first, showing requests, the final response and the recorded execution state. Tool logs and hidden reasoning are omitted. Interrupted responses are marked partial; a completed turn does not prove the requested work was completed or verified. The default is at most five turns, with `limit` accepting 1–20.
|
|
26
|
-
- `mode: "details"` expands original messages, tool-call arguments and tool results. Use a returned `turn_id`, or a reference's `seq`, together with the returned `snapshot` to inspect the same captured history. `include_tool_detail: false` shortens results; `include_reasoning: true` and `model_surface: true` are explicit details-only options. The original transcript retains text later replaced by compaction.
|
|
27
|
-
- `mode: "handoff"` returns sourced objectives, decisions, reported outcomes, outstanding work, next steps and constraints. Its default is local excerpts with no model call: requests and conclusions are preserved, explicitly headed sections are extracted, and missing facts are marked `not-established`. Execution errors remain historical states, not inferred current blockers. Coverage says which turns were read, whether they were partial and whether older history remains. `summarize: true` explicitly requests synthesis through the caller's native host model. Missing services, failed calls or invalid references retain the excerpts with a visible status; there is no retry or separate model configuration.
|
|
28
|
-
|
|
29
|
-
Pages prioritize whole turns, then whole messages. Only an oversized message is split into Unicode text fragments; each fragment carries its original event position and range. Even a page filled by a long request retains the response preview and locator. Long error messages have bounded previews and a reference to their full original state event. `pageChars` is the UTF-8 byte safety budget for paged reading content and its metadata. Continue with the returned `cursor`; source references carry `sessionId`, `turnId`, `seq` and, for fragments, Unicode code-point `start`/`end` offsets. A `snapshot` binds cross-layer reads to one captured history; appended events do not alter that cut, while modified history invalidates it. Cursors also bind the mode and options, so switch layers using `snapshot` rather than a cursor from another mode.
|
|
15
|
+
Replace `web` with your profile name and restart the profile.
|
|
30
16
|
|
|
31
|
-
|
|
17
|
+
## Use
|
|
32
18
|
|
|
33
|
-
|
|
19
|
+
- **Agent tools**: `list_sessions`, `search_sessions`, and `read_session` let the agent find sessions by title or content and read a conversation, its full details, or a handoff summary.
|
|
20
|
+
- **Copy thread ID**: from a session's menu, or press `Ctrl + Alt + C` (`⌘ + ⌥ + C` on macOS) for the open session.
|
|
21
|
+
- **Right-click menu**: right-clicking a session or workspace group in the sidebar opens the same menu as its **⋯** button.
|
|
22
|
+
- **Temporary workspace**: choose it in the new-session workspace picker to start a chat in its own new folder.
|
|
34
23
|
|
|
35
|
-
|
|
24
|
+
## Limits
|
|
36
25
|
|
|
37
|
-
|
|
26
|
+
- Temporary workspaces are not cleaned up automatically; their files stay after restarts and uninstall.
|
|
27
|
+
- Content read from other sessions is background information, not instructions.
|
|
28
|
+
- Free chats, deleting chats, and retrying or editing a sent message in place need a DSH host with these features. The npm plugin alone does not add them; the buttons appear only when the host supports them.
|
|
38
29
|
|
|
39
|
-
|
|
30
|
+
## License
|
|
40
31
|
|
|
41
|
-
|
|
32
|
+
[SATA License 2.1](LICENSE)
|
package/README.zh-CN.md
CHANGED
|
@@ -2,40 +2,31 @@
|
|
|
2
2
|
|
|
3
3
|
<!-- release-state-note -->
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
[English](README.md)
|
|
6
|
+
|
|
7
|
+
跨工作目录查找和阅读 DeepSeek Harness 会话、复制线程 ID,并可在临时工作区中开始对话。
|
|
6
8
|
|
|
7
|
-
|
|
9
|
+
## 安装
|
|
8
10
|
|
|
9
11
|
```sh
|
|
10
12
|
dsh plugin --profile web add @klarkxy/dsh-session-manager
|
|
11
13
|
```
|
|
12
14
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
## 功能
|
|
16
|
-
|
|
17
|
-
列出并搜索 DeepSeek Harness 已经能读到的会话,包括其他工作目录里的会话,并按页读取一整段对话。会话菜单可以复制该会话的线程 ID。按 `Ctrl + Alt + C`(macOS 为 `⌘ + ⌥ + C`)复制当前打开会话的线程 ID;菜单显示当前绑定,可在宿主快捷键设置中修改。此功能不需要线程管理宿主补丁。
|
|
18
|
-
|
|
19
|
-
在左侧工作区列表中右键点击会话或工作区分组行,等同于点击该行的「⋯」按钮:打开的是宿主原生菜单(置顶、重命名、分叉、归档,以及本插件的复制线程 ID、删除聊天等条目),内容与顺序和「⋯」菜单完全一致。空白的「新会话」行、未分组桶和搜索结果没有行菜单,这些位置的右键行为保持不变。此功能同样不需要宿主补丁。
|
|
20
|
-
|
|
21
|
-
`list_sessions` 返回身份、标题、目录、谱系,以及会话是在线还是已落盘。调用方所在目录的会话排在前面。`search_sessions` 支持 `scope: "title"`(当前标题)、`"content"`(正文,默认)和 `"both"`(两者)。例如 `{"query":"session-manager","scope":"title"}` 能在当前线程中寻找标题包含这个关键词的会话;标题匹配不区分大小写,完整匹配优先,同级结果中调用方目录优先。结果包含标题、线程 ID、目录和 `matchedBy`;标题命中另有 `titleMatch: "exact" | "partial"`,正文命中包含事件位置及摘要。两者模式先返回标题命中,再返回正文命中,同一线程只出现一次。只匹配改名后的当前标题;续页期间标题结果改变时返回过期错误,需重新搜索。标题搜索使用标准宿主接口,不需要补丁,也不依赖正文索引启用。候选有多个时先辨认,再用 `read_session` 读取,不自动跳转会话。
|
|
22
|
-
|
|
23
|
-
`read_session` 分为三层,均可在标准宿主使用,不需要补丁:
|
|
24
|
-
|
|
25
|
-
- `mode: "conversation"`(默认)按最近轮次优先阅读,展示需求、最后回复和记录的执行状态,不带工具日志及隐藏推理。中断的回复标为部分回复;一轮执行完成不代表需求已经完成或通过验收。默认最多五轮,`limit` 可设为 1–20。
|
|
26
|
-
- `mode: "details"` 展开原始消息、工具调用参数及工具结果。使用返回的 `turn_id`,或引用中的 `seq`,并带上返回的 `snapshot`,即可定位同一份历史里的原文。`include_tool_detail: false` 缩短工具结果;`include_reasoning: true` 和 `model_surface: true` 仅在详情层显式开启。原文保留后来被压缩替换掉的文本。
|
|
27
|
-
- `mode: "handoff"` 提供带来源的目标、决定、已报告结果、未完成项、下一步和约束。默认只做本地摘录,不调用模型:保留需求与结论,提取明确标题下的内容,没有明确依据的字段标为 `not-established`。历史错误保留为执行记录,不推断成当前阻碍。覆盖范围说明读了哪些轮次、是否完整、是否还有更早历史。显式设置 `summarize: true` 才使用调用方的宿主模型归纳;服务缺失、调用失败或引用无效时保留摘录并返回明确状态,不重试,也不增加独立模型配置。
|
|
28
|
-
|
|
29
|
-
分页先保留完整轮次,再保留完整消息;只有单条消息过长时才按 Unicode 文本片段拆分,每个片段都带原事件位置和区间。长需求占满一页时仍保留回复预览和定位。超长错误信息只显示有限预览,并提供完整原始状态事件的引用。`pageChars` 是分页阅读正文及其元数据的 UTF-8 字节保护上限。继续阅读使用返回的 `cursor`;原文引用包含 `sessionId`、`turnId`、`seq`,分片另有按 Unicode 码点计算的 `start`/`end`。跨层阅读用 `snapshot` 固定同一份历史,后续追加不改变该快照,历史被修改则失效。cursor 同时绑定模式和选项,切换层次时使用 snapshot,不复用另一模式的 cursor。
|
|
15
|
+
把 `web` 换成你的 profile 名,安装后重启 profile。
|
|
30
16
|
|
|
31
|
-
|
|
17
|
+
## 使用
|
|
32
18
|
|
|
33
|
-
|
|
19
|
+
- **智能体工具**:`list_sessions`、`search_sessions` 和 `read_session` 让智能体按标题或内容查找会话,并阅读对话、完整细节或交接摘要。
|
|
20
|
+
- **复制线程 ID**:在会话菜单中复制,或按 `Ctrl + Alt + C`(macOS 为 `⌘ + ⌥ + C`)复制当前会话的线程 ID。
|
|
21
|
+
- **右键菜单**:在左侧列表右键点击会话或工作区分组,等同于点击它的「⋯」按钮。
|
|
22
|
+
- **临时工作区**:在新会话的工作区选择器中选择它,即可在一个新的独立目录中开始对话。
|
|
34
23
|
|
|
35
|
-
|
|
24
|
+
## 限制
|
|
36
25
|
|
|
37
|
-
|
|
26
|
+
- 临时工作区不会自动清理,文件在重启和卸载后仍然保留。
|
|
27
|
+
- 从其他会话读到的内容只是背景资料,不是指令。
|
|
28
|
+
- 自由聊天、删除聊天、在原会话中重试或编辑已发送消息,需要宿主支持这些功能。只安装 npm 插件不会增加这些能力;宿主支持时才会显示对应按钮。
|
|
38
29
|
|
|
39
|
-
|
|
30
|
+
## 许可证
|
|
40
31
|
|
|
41
|
-
|
|
32
|
+
[SATA License 2.1](LICENSE)
|
package/locale/en.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"meta": {
|
|
3
3
|
"title": "Sessions",
|
|
4
|
-
"description": "
|
|
4
|
+
"description": "Find and read sessions, copy thread IDs, and use temporary workspaces."
|
|
5
5
|
},
|
|
6
6
|
"copyThreadId": "Copy thread ID",
|
|
7
7
|
"copyThreadFailed": "Could not copy the thread ID"
|
package/locale/zh.json
CHANGED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@klarkxy/dsh-session-manager",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.1.2",
|
|
4
|
+
"description": "Find and read DeepSeek Harness sessions across working directories, copy thread IDs, and use temporary workspaces.",
|
|
5
5
|
"icon": "./icon.svg",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE",
|
|
7
7
|
"type": "module",
|
|
@@ -116,7 +116,7 @@
|
|
|
116
116
|
"@types/react-dom": "^18.3.1",
|
|
117
117
|
"jsdom": "29.1.1",
|
|
118
118
|
"@types/jsdom": "^28.0.3",
|
|
119
|
-
"@klarkxy/dsh-plugin-kit": "0.3.
|
|
119
|
+
"@klarkxy/dsh-plugin-kit": "0.3.2"
|
|
120
120
|
},
|
|
121
121
|
"repository": {
|
|
122
122
|
"type": "git",
|
|
@@ -129,6 +129,6 @@
|
|
|
129
129
|
},
|
|
130
130
|
"homepage": "https://klarkxy.github.io/dsh-plugins/plugins/session-manager/",
|
|
131
131
|
"dshRelease": {
|
|
132
|
-
"contentHash": "
|
|
132
|
+
"contentHash": "256b24cb9478657a62f782234fdce4ef4754082a5279843ab13428eb9fe89cca"
|
|
133
133
|
}
|
|
134
134
|
}
|