Skip to content
dsh.fish
Bundle

@ryuu-64/dsh-session-tools

Let the agent start a new chat session, send a message to another one, or wait for it to finish.

Source
Ryuu-64
License
MIT
Updated
Updated 3 days ago

Readme

# dsh-session-tools

让对话里的 AI 能**新建会话**、**给别的会话发消息**、**看看有哪些会话**,以及**等别的会话干完活**。

四个工具,`session_create`、`session_send`、`list_sessions`、`session_wait`。新会话会出现在左侧会话列表里,和手动新建的完全一样;想让它归到某个工作区下面也可以。

典型用法:你说"帮我开一个会话去查一下这件事"——AI 直接建好,不用你自己新建再复制粘贴。或者你已经有一个会话在跑,说"等它弄完把结果告诉我",AI 把活派过去,等它做完了再回来接着讲。

## session_create:新建会话

| 参数 | 是否必填 | 说明 |
|---|---|---|
| `prompt` | 必填 | 新会话要做的第一件事。**新会话看不到当前这个会话**,所以要把背景写全。 |
| `workspacePath` | 可选 | 工作区的完整路径。填了,新会话就归到这个工作区下面;不填就是未分组。 |
| `title` | 可选 | 会话标题。不填就和手动新建一样,由第一句话自动生成。 |
| `wait` | 可选 | 默认不等。只有一种情况需要等:你要在新建的那个会话跑完第一轮之后才继续。 |

做完返回新会话的名字和 id,你在左侧列表里就能看到它。如果中途失败,会把建了一半的东西清理掉,不留垃圾。

## session_send:给别的会话发消息

| 参数 | 是否必填 | 说明 |
|---|---|---|
| `sessionId` | 必填 | 目标会话的 id,形如 `session-9311a0fb-65c7-4b04-b142-1444642a627e`。 |
| `message` | 必填 | 要发的内容。对方看不到当前这个会话,所以要写清楚。 |
| `wait` | 可选 | 默认不等:发出去就返回。填 `true` 就等对方把这条消息处理完,并把它的回答带回来。 |
| `timeoutMs` | 可选 | 等多久(毫秒)。默认 60000(一分钟),最多 300000(五分钟)。等超了不报错,只告诉你"它还在忙"。 |

默认发出即返回,返回只代表对方收到了、开始排队处理。消息来源标记为插件,不会被当成是你本人打的字。目标会话如果没开着,会被自动打开再把消息排进去。

填了 `wait` 就变成"发完等它做完",AI 拿到对方的回答之后可以接着往下办——比如让一个会话去跑测试,跑完再根据结果决定下一步。

## session_wait:等别的会话干完

如果消息已经发出去了,或者那个会话本来就在忙,用这个等它收尾。

| 参数 | 是否必填 | 说明 |
|---|---|---|
| `sessionId` | 必填 | 目标会话的 id。 |
| `timeoutMs` | 可选 | 等多久(毫秒),默认 60000,最多 300000。 |

它只负责等和看,不去动那个会话:不会打开它、不会改它、也不会打断它。对方本来就没在忙的话,立刻返回,把最后一条回答给你。等超了就说一句"还在忙",不算失败——你可以过会儿再问一次。

## list_sessions:先看看有哪些会话

不用记 id。当你要说的是"发给那个讨论发布的会话",AI 可以先列出会话(名字、目录、哪个是当前会话、现在在干什么),你说清是哪一个,它再发。

| 参数 | 是否必填 | 说明 |
|---|---|---|
| `limit` | 可选 | 最多列几个,默认 20,按最近活动排序。 |

每条会带一个状态,就是侧边栏上显示的那个东西:

| 状态 | 意思 |
|---|---|
| `running` | 进行中,正忙着。 |
| `idle` | 空闲,没在干活(开着或者躺着都算)。 |
| `archived` | 已归档,你把它从侧边栏收起来了。 |

子代理会话不会列出来(那是 AI 自己派出去的活)。

## 动手前会先问你

新建会话、或者往别的会话发消息,**都会先弹一个确认卡**,写清它要干什么,比如:

> 允许一次:在工作区 `E:\Users\Ryuu\Desktop` 新建会话,内容是「查一下某件事」

你点了"允许一次"它才动手;拒绝或没应答,它就什么都不做。你自己完全关掉审批(切到完全权限模式)时,它不再打扰你——那是你的选择,不是它擅自跳过。

只是等一个会话做完、或者列一下有哪些会话,不会弹卡:这两件事不往任何地方写东西。

## 建好的会话,卡片上点一下就能过去

做完之后,对话里那张卡片会变成「已创建会话」加一个按钮——**点一下直接跳到新建的那个会话**,不用去左侧列表里找。

(这一部分由插件的浏览器端负责渲染,所以旧的对话记录也会跟着变成可点。)

## 安装

```
dsh plugin --profile desktop add @ryuu-64/dsh-session-tools@0.5.3
```

从源码装:

```
git clone https://github.com/Ryuu-64/dsh-session-tools.git
dsh plugin --profile desktop add link:C:\path\to\dsh-session-tools
```

装完重启 DSH 就能用,不需要其它设置。用 `link:` 方式装的,改完源码要重启应用才生效。

## 使用限制

- **不会顺手新建工作区**。`workspacePath` 必须是已经存在的那个工作区的路径;写错了它会报错,并把现有的工作区列出来给你挑。
- **不能给子代理发消息**。目标必须是普通会话;AI 派出去的子代理要用 `send_message`。也不能给当前这个会话自己发。
- **重启期间收不到**。新建会话是立刻生效的;发出去的消息要等对方会话被打开处理,所以 DSH 得开着。等待也一样,DSH 关了就没法等。
- **归属定了就不能改**。会话归到哪个工作区是记在账上的,建完之后没法在工作区之间搬。
- **需要桌面版**。工作区归属靠桌面版才挂载的那个工作区服务,插件把它列为必需依赖,所以命令行无界面模式(headless)下这个插件不会加载。

Install

dsh plugin --profile web add github:Ryuu-64/dsh-session-tools

Profile: web

  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source