dsh-connect 0.5.2 → 0.6.3
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/LICENSE +21 -0
- package/README.i18n.yaml +6 -0
- package/README.md +11 -5
- package/README.zh.md +203 -0
- package/lib/binding.d.ts +2 -0
- package/lib/binding.d.ts.map +1 -1
- package/lib/binding.js +1 -0
- package/lib/binding.js.map +1 -1
- package/lib/i18n.d.ts +21 -9
- package/lib/i18n.d.ts.map +1 -1
- package/lib/i18n.js +52 -18
- package/lib/i18n.js.map +1 -1
- package/lib/index.d.ts +6 -2
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +3 -1
- package/lib/index.js.map +1 -1
- package/lib/interaction.d.ts +4 -1
- package/lib/interaction.d.ts.map +1 -1
- package/lib/interaction.js +33 -7
- package/lib/interaction.js.map +1 -1
- package/lib/runner.d.ts +12 -2
- package/lib/runner.d.ts.map +1 -1
- package/lib/runner.js +205 -68
- package/lib/runner.js.map +1 -1
- package/lib/service.d.ts +7 -1
- package/lib/service.d.ts.map +1 -1
- package/lib/service.js +12 -3
- package/lib/service.js.map +1 -1
- package/lib/types.d.ts +2 -0
- package/lib/types.d.ts.map +1 -1
- package/package.json +65 -58
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 IvanWu2015
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.i18n.yaml
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
# Bilingual-pair consistency record: the git blob hash of each side as of the
|
|
2
|
+
# last confirmed-consistent state. Both languages carry equal authority; after
|
|
3
|
+
# editing either side, bring the other along and re-record with:
|
|
4
|
+
# git hash-object README.md README.zh.md
|
|
5
|
+
README.md: 60d7d023edd88b0a136a308c90c33967b7a6bb9f
|
|
6
|
+
README.zh.md: 0258195b0c6d92a2bcee8958830a41e9ed4e8bbc
|
package/README.md
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
# dsh-connect
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
English | [中文](README.zh.md)
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
The **channel-agnostic core** for connecting [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) (**DSH**) agents to chat platforms (Feishu / Lark, Telegram, DingTalk; more to come): session binding, agent driving, streaming reply bridging, interactive menu cards, and local commands.
|
|
6
|
+
|
|
7
|
+
> Install together with a channel adapter — e.g. [dsh-connect-feishu](https://www.npmjs.com/package/dsh-connect-feishu), [dsh-connect-telegram](https://www.npmjs.com/package/dsh-connect-telegram) or the push-only [dsh-connect-dingtalk](https://www.npmjs.com/package/dsh-connect-dingtalk) — or the optional [dsh-connect-web](https://www.npmjs.com/package/dsh-connect-web) mirror monitor.
|
|
6
8
|
|
|
7
9
|
## Overview
|
|
8
10
|
|
|
@@ -120,6 +122,8 @@ Configuration lives in the DSH profile patch (`cordis.patch.yml`) under each plu
|
|
|
120
122
|
| `transport` | `websocket` | `websocket` = long connection (no public network); `webhook` needs public HTTPS |
|
|
121
123
|
| `verificationToken` | — | Webhook verification token (**secret**) |
|
|
122
124
|
| `encryptKey` | — | Webhook encrypt key (**secret**) |
|
|
125
|
+
| `webhookPort` | `9000` | HTTP port for the built-in webhook server when `transport: "webhook"` |
|
|
126
|
+
| `webhookPath` | `/` | URL path the Feishu event callback posts to (webhook transport) |
|
|
123
127
|
| `requireMention` | `true` | Groups only respond when the bot is @mentioned |
|
|
124
128
|
| `dmMode` | `open` | DM policy: `open` / `allowlist` / `pair` / `disabled` |
|
|
125
129
|
| `language` | `zh` | User-facing message language: `zh` / `en` |
|
|
@@ -169,9 +173,11 @@ This is a pnpm workspace; the plugins are independent npm packages under `packag
|
|
|
169
173
|
|
|
170
174
|
```
|
|
171
175
|
packages/
|
|
172
|
-
connect/
|
|
173
|
-
connect-feishu/
|
|
174
|
-
connect-
|
|
176
|
+
connect/ # this package — channel-agnostic core
|
|
177
|
+
connect-feishu/ # Feishu / Lark adapter
|
|
178
|
+
connect-telegram/ # Telegram adapter (getUpdates long polling)
|
|
179
|
+
connect-dingtalk/ # DingTalk group-webhook push channel
|
|
180
|
+
connect-web/ # optional Web mirror monitor
|
|
175
181
|
```
|
|
176
182
|
|
|
177
183
|
```sh
|
package/README.zh.md
ADDED
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
# dsh-connect
|
|
2
|
+
|
|
3
|
+
[English](README.md) | 中文
|
|
4
|
+
|
|
5
|
+
**与渠道无关的核心**,用于将 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness)(**DSH**)智能体连接到聊天平台(飞书 / Lark、Telegram、钉钉,更多平台陆续到来):会话绑定、智能体驱动、流式回复桥接、交互式菜单卡片与本地命令。
|
|
6
|
+
|
|
7
|
+
> 请与渠道适配器一起安装——例如 [dsh-connect-feishu](https://www.npmjs.com/package/dsh-connect-feishu)、[dsh-connect-telegram](https://www.npmjs.com/package/dsh-connect-telegram) 或仅推送的 [dsh-connect-dingtalk](https://www.npmjs.com/package/dsh-connect-dingtalk)——或可选的 [dsh-connect-web](https://www.npmjs.com/package/dsh-connect-web) 镜像监视器。
|
|
8
|
+
|
|
9
|
+
## 概述
|
|
10
|
+
|
|
11
|
+
`dsh-connect` 将聊天会话绑定到 DSH 智能体会话并端到端驱动它:
|
|
12
|
+
|
|
13
|
+
- **会话绑定与路由** —— 一个聊天 ⇄ 一个智能体会话,持久化保存在 `bindings.json` 路由存储中;会话可以创建、恢复、切换、清除,并镜像到 DSH Web GUI。
|
|
14
|
+
- **流式回复** —— DSH 的 `assistant/chunk` 事件被桥接到渠道的原生流式能力(飞书打字机卡片):思考提示开启推理阶段,推理内容带可读的段落分隔实时流出,工具调用显示为 `🔧` 进度行,心跳保活机制即使在长时间静默时(首个 token 等待过长、密集工具运行)也会让卡片保持更新,绝不会一直卡在「思考中…」。
|
|
15
|
+
- **通知级别** —— 按聊天控制过程流式的详细程度:`尽量输出过程`(完整过程)/ `输出重要节点`(关键节点)/ `只输出结果`(仅结果)。可随时通过设置菜单或 `/notify` 切换;选择按聊天持久化并立即生效。
|
|
16
|
+
- **任务结束统计** —— 每个任务结束后,一张紧凑卡片报告所用模型、输入/输出 token、耗时与上下文窗口占用,并在上下文接近占满时建议 `/compact`。
|
|
17
|
+
- **交互式菜单** —— 状态、任务、历史、目标、日程、模型/努力度切换、工作区选择、语言等按钮卡片(参见聊天内的 `/` 命令)。
|
|
18
|
+
- **媒体处理** —— 下载用户图片/附件,并将其交给支持视觉的模型(或已配置的视觉模型),使纯文本主模型不会因图片而卡住。
|
|
19
|
+
- **锁与队列** —— 按聊天的写锁协调飞书与 Web 的写入方;锁释放后排队消息自动处理。
|
|
20
|
+
- **Web 镜像(自动)** —— 每个飞书会话都会自动作为镜像会话出现在 DSH Web GUI 中(可通过 `autoMirror: false` 关闭)。
|
|
21
|
+
|
|
22
|
+
**适用人群** —— 任何运行 DSH 并希望从聊天平台操作智能体的人:为自己工作区运行机器人的个人用户,以及通过白名单在群聊中共享机器人的小团队。
|
|
23
|
+
|
|
24
|
+
## 兼容性
|
|
25
|
+
|
|
26
|
+
| 方面 | 值 |
|
|
27
|
+
|---|---|
|
|
28
|
+
| DSH 版本 | `^0.1.0-rc.6`(peer `@deepseek-ai/dsh-agent`、`dsh-llm`、`dsh-session`) |
|
|
29
|
+
| Cordis | `^4.0.1` |
|
|
30
|
+
| Node.js | ≥ 20(ESM,`NodeNext`) |
|
|
31
|
+
| 最后验证 | **2026-08-16**,在 Windows(飞书 WebSocket 传输)上针对 DSH `0.1.0-rc.6` 验证 |
|
|
32
|
+
|
|
33
|
+
插件运行在 DSH **Host 平面**(进程级单例服务)上,而不是在智能体预设内部。
|
|
34
|
+
|
|
35
|
+
## 安装 / 卸载
|
|
36
|
+
|
|
37
|
+
插件管理是 DSH profile 中对 pnpm 的轻量封装:
|
|
38
|
+
|
|
39
|
+
```sh
|
|
40
|
+
# Install (core + Feishu adapter)
|
|
41
|
+
dsh plugin --profile web add dsh-connect dsh-connect-feishu
|
|
42
|
+
|
|
43
|
+
# Optional: Web mirror monitor
|
|
44
|
+
dsh plugin --profile web add dsh-connect-web
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
**升级**
|
|
48
|
+
|
|
49
|
+
```sh
|
|
50
|
+
dsh plugin --profile web update dsh-connect dsh-connect-feishu
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
**禁用** —— 从 profile patch 中删除相应条目,插件即停止加载(参见 `~/.dsh/profiles/<profile>/cordis.patch.yml`):
|
|
54
|
+
|
|
55
|
+
```yaml
|
|
56
|
+
- insert:
|
|
57
|
+
- id: connect # delete this block (and connect-feishu) to disable
|
|
58
|
+
name: dsh-connect
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
**彻底移除** —— 卸载软件包并删除它们产生的数据:
|
|
62
|
+
|
|
63
|
+
```sh
|
|
64
|
+
dsh plugin --profile web remove dsh-connect dsh-connect-feishu
|
|
65
|
+
# then remove the plugin data (see "Permissions & data" below):
|
|
66
|
+
rm -rf .dsh-connect # binding route store (stateDir)
|
|
67
|
+
rm -f ~/.dsh/.dsh-connect/feishu-credentials.json
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## 快速开始
|
|
71
|
+
|
|
72
|
+
1. **安装插件**(见上文)。
|
|
73
|
+
2. **添加最小配置**到 `~/.dsh/profiles/<profile>/cordis.patch.yml`(另见 [`examples/profile-cordis.patch.yml`](../../examples/profile-cordis.patch.yml)):
|
|
74
|
+
|
|
75
|
+
```yaml
|
|
76
|
+
- insert:
|
|
77
|
+
- id: connect
|
|
78
|
+
name: dsh-connect
|
|
79
|
+
# workDir: D:\your\workdir # agent working directory (default: process cwd)
|
|
80
|
+
- id: connect-feishu
|
|
81
|
+
name: dsh-connect-feishu
|
|
82
|
+
config:
|
|
83
|
+
appId: cli_xxxx
|
|
84
|
+
appSecret: cli_secret_xxxx
|
|
85
|
+
transport: websocket
|
|
86
|
+
requireMention: true
|
|
87
|
+
dmMode: open
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
3. **启动宿主** —— `dsh web`(或 `dsh run`)。未配置凭据时,`dsh-connect-feishu` 会进入**一键开通**流程:扫描日志中的二维码 / 打开链接以授权机器人。
|
|
91
|
+
4. **在飞书中给机器人发一条消息**。机器人以流式卡片回复;`/help` 列出所有命令;会话也会自动出现在 DSH Web GUI 中(自动镜像)。
|
|
92
|
+
|
|
93
|
+
一个完全可复现的示例是 `examples/` 文件夹加上 `docs/feishu-setup.zh.md`(飞书应用创建、事件订阅、发布)。
|
|
94
|
+
|
|
95
|
+
## 配置
|
|
96
|
+
|
|
97
|
+
配置位于 DSH profile patch(`cordis.patch.yml`)中每个插件的 `config:` 下。项目根目录(或其父目录)中的 `dsh.shared.config.json` 可以提供工作区/状态默认值,并对这些键具有更高优先级。
|
|
98
|
+
|
|
99
|
+
### `dsh-connect`(核心)
|
|
100
|
+
|
|
101
|
+
| 键 | 默认值 | 说明 |
|
|
102
|
+
|---|---|---|
|
|
103
|
+
| `agentPreset` | roster default | 组合进每个绑定会话的智能体预设 id |
|
|
104
|
+
| `workDir` | process cwd | 每个绑定智能体的绝对工作目录 |
|
|
105
|
+
| `workspaces` | `[]` | `/dir` 选择器提供的额外工作目录 |
|
|
106
|
+
| `visionModel` | auto-detected | 当主模型无法查看图片时,用于描述图片的 `{ provider, model }` |
|
|
107
|
+
| `language` | `zh` | 面向用户的消息语言:`zh` / `en` |
|
|
108
|
+
| `allowUsers` | `[]` | 发送者白名单(open_id)。空 = 允许所有人 |
|
|
109
|
+
| `allowChats` | `[]` | 聊天白名单(chat_id)。空 = 允许所有会话 |
|
|
110
|
+
| `stateDir` | `.dsh-connect` | 保存 `bindings.json` 路由存储的目录(环境变量 `DSH_CONNECT_STATE_DIR` 可覆盖) |
|
|
111
|
+
| `autoMirror` | `true` | 为每个新会话自动创建 Web GUI 镜像 |
|
|
112
|
+
| `streamHeartbeatMs` | `60000` | 流式卡片的心跳保活间隔(毫秒);`0` 表示禁用 |
|
|
113
|
+
| `notifyLevel` | `important` | 默认通知级别:`full`(全部流式输出)/ `important`(关键节点)/ `result`(仅结果);可通过设置菜单或 `/notify` 按聊天覆盖 |
|
|
114
|
+
| `progressTimeoutMs` | `300000` | 主动进度通知间隔(毫秒):当一轮对话在此时间内没有发送独立卡片/文本时,状态卡片会报告最新节点;`0` 表示禁用;可通过设置菜单或 `/progress` 按聊天覆盖 |
|
|
115
|
+
|
|
116
|
+
### `dsh-connect-feishu`(适配器)
|
|
117
|
+
|
|
118
|
+
| 键 | 默认值 | 说明 |
|
|
119
|
+
|---|---|---|
|
|
120
|
+
| `appId` | env `FEISHU_APP_ID` | 飞书自建应用 id(**机密**) |
|
|
121
|
+
| `appSecret` | env `FEISHU_APP_SECRET` | 飞书自建应用密钥(**机密**) |
|
|
122
|
+
| `transport` | `websocket` | `websocket` = 长连接(无需公网);`webhook` 需要公网 HTTPS |
|
|
123
|
+
| `verificationToken` | — | Webhook 验证令牌(**机密**) |
|
|
124
|
+
| `encryptKey` | — | Webhook 加密密钥(**机密**) |
|
|
125
|
+
| `webhookPort` | `9000` | `transport: "webhook"` 时内置 webhook 服务的 HTTP 端口 |
|
|
126
|
+
| `webhookPath` | `/` | 飞书事件回调所 POST 的 URL 路径(webhook 传输) |
|
|
127
|
+
| `requireMention` | `true` | 群聊中仅在 @机器人 时才会响应 |
|
|
128
|
+
| `dmMode` | `open` | 私聊策略:`open` / `allowlist` / `pair` / `disabled` |
|
|
129
|
+
| `language` | `zh` | 面向用户的消息语言:`zh` / `en` |
|
|
130
|
+
|
|
131
|
+
**环境变量**
|
|
132
|
+
|
|
133
|
+
| 变量 | 用途 |
|
|
134
|
+
|---|---|
|
|
135
|
+
| `FEISHU_APP_ID` / `FEISHU_APP_SECRET` | 飞书凭据 —— 优于把机密写进配置文件 |
|
|
136
|
+
| `DSH_CONNECT_STATE_DIR` | 覆盖绑定存储的 `stateDir` |
|
|
137
|
+
| `DSH_HOME` | 覆盖凭据文件所在的 `~/.dsh` 基目录 |
|
|
138
|
+
|
|
139
|
+
**敏感项** —— `appSecret`、`verificationToken`、`encryptKey` 和 `feishu-credentials.json`。优先使用环境变量或一键开通;切勿将它们提交到版本控制。
|
|
140
|
+
|
|
141
|
+
## 权限与数据
|
|
142
|
+
|
|
143
|
+
- **写入的文件**
|
|
144
|
+
- `<stateDir>/bindings.json`(默认 `.dsh-connect/`)—— 聊天 ⇄ 会话路由存储(聊天键、会话 id、镜像与锁状态)。
|
|
145
|
+
- `~/.dsh/.dsh-connect/feishu-credentials.json` —— 一键开通时保存的飞书凭据。
|
|
146
|
+
- `<workDir>/.dsh-connect-images/` —— 为用户图片/附件暂存,供智能体工具使用。
|
|
147
|
+
- DSH 自身在 `~/.dsh/` 下的会话日志与设置(sessions、settings 等)。
|
|
148
|
+
- **网络**
|
|
149
|
+
- 飞书开放平台:WebSocket 长连接(或通过公网 HTTPS 的 webhook),以及 HTTPS API 调用(媒体下载、卡片)。
|
|
150
|
+
- DSH 为智能体模型调用的 LLM 提供商 API(如 DeepSeek),以及可选的视觉模型。
|
|
151
|
+
- **用户数据** —— 消息文本与附件经由机器人流向智能体会话;它们与任何 DSH 会话一样保存在 DSH 会话日志中。白名单(`allowUsers` / `allowChats`)限制了可以驱动机器人的人。
|
|
152
|
+
|
|
153
|
+
## 故障排查
|
|
154
|
+
|
|
155
|
+
日志来自 DSH 宿主日志器(在终端运行 `dsh web`);插件消息带有 `connect:` / `connect-feishu:` 前缀。
|
|
156
|
+
|
|
157
|
+
| 症状 | 可能原因 / 修复 |
|
|
158
|
+
|---|---|
|
|
159
|
+
| `connect-feishu: adapter init failed` / `start failed` | 凭据错误、应用未发布或网络被阻断。检查 `appId`/`appSecret`,重新运行开通流程,确认机器人在飞书开放平台后台处于在线状态。 |
|
|
160
|
+
| `connect: resume of <id> failed, creating fresh session` | 持久化会话无法恢复(工作目录缺失、持久化问题)。检查 `workDir` 和 `~/.dsh/sessions`。 |
|
|
161
|
+
| 会话锁定提示 | 另一个客户端(飞书或 Web)持有写锁。使用 `/unlock` 或等待锁超时。 |
|
|
162
|
+
| Web GUI 中的模型切换似乎被忽略 | 已在当前 main 中修复:插件不再用静态默认模型覆盖 Web GUI 的会话选择。重启 `dsh web` 以加载重建后的插件。 |
|
|
163
|
+
| `[用户发送了图片,但下载失败…]` | 应用缺少飞书 `im:resource` 权限;授予该权限并重新授权。 |
|
|
164
|
+
| 流式回复是一整块没有分段 | 已在当前 main 中修复:块边界与推理/回答分隔现在会插入空行(推理软换行已针对飞书卡片扩展)。重启 `dsh web`。 |
|
|
165
|
+
| 长时间任务中卡片卡在「思考中…」没有进展 | 已在当前 main 中修复:推理现在实时流出,工具调用显示为 `🔧` 进度行,静默期间心跳保活会更新卡片。重启 `dsh web`。 |
|
|
166
|
+
| 菜单卡片不更新 / 过期 | 设计如此:卡片空闲 60 秒后自动关闭;重新打开菜单即可。 |
|
|
167
|
+
|
|
168
|
+
**回滚** —— 重新安装之前的版本(先移除当前版本,再执行 `dsh plugin --profile web add dsh-connect@<version>`),或在源码安装中 `git checkout` 到固定的提交。
|
|
169
|
+
|
|
170
|
+
## 开发
|
|
171
|
+
|
|
172
|
+
这是一个 pnpm workspace;插件是 `packages/` 下相互独立的 npm 包:
|
|
173
|
+
|
|
174
|
+
```
|
|
175
|
+
packages/
|
|
176
|
+
connect/ # 本包 — 与渠道无关的核心
|
|
177
|
+
connect-feishu/ # 飞书 / Lark 适配器
|
|
178
|
+
connect-telegram/ # Telegram 适配器(getUpdates 长轮询)
|
|
179
|
+
connect-dingtalk/ # 钉钉群机器人 Webhook 推送渠道
|
|
180
|
+
connect-web/ # 可选的 Web 镜像监视器
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
```sh
|
|
184
|
+
pnpm install
|
|
185
|
+
|
|
186
|
+
# build & typecheck one package
|
|
187
|
+
pnpm --filter dsh-connect build
|
|
188
|
+
pnpm --filter dsh-connect typecheck
|
|
189
|
+
|
|
190
|
+
# unit tests (node:test)
|
|
191
|
+
pnpm test
|
|
192
|
+
# or run one suite
|
|
193
|
+
node packages/connect/test/unit.test.mjs
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
**结构** —— `src/runner.ts` 负责每个聊天的智能体驱动与流式桥接(`applyStreamChunk` 是纯函数、有单元测试的块组装器);`src/service.ts` 负责适配器注册表与路由;`src/i18n.ts` 存放 `zh`/`en` 词典(两种语言的关键字需保持同步);`src/binding.ts` 是路由存储。
|
|
197
|
+
|
|
198
|
+
**贡献** —— 欢迎在 [github.com/IvanWu2015/dsh-connect](https://github.com/IvanWu2015/dsh-connect) 提交 PR。对于面向用户的字符串,请在 `src/i18n.ts` 中同时为 `zh` 和 `en` 添加关键字。发布说明在 `CHANGELOG.md` 中;发布流程参见 `docs/PUBLISHING.zh.md`。
|
|
199
|
+
|
|
200
|
+
## 许可与安全
|
|
201
|
+
|
|
202
|
+
- **许可:** MIT(见 `LICENSE`)。
|
|
203
|
+
- **安全:** 请**私下**报告漏洞 —— 使用仓库的 GitHub security advisory 流程,或通过 GitHub 主页上列出的邮箱联系维护者。请不要为凭据泄露创建公开 issue。请将 `appSecret` / `verificationToken` / `encryptKey` / `feishu-credentials.json` 视为机密:优先使用环境变量,切勿提交到版本控制。
|
package/lib/binding.d.ts
CHANGED
|
@@ -22,6 +22,8 @@ export interface ChatBinding {
|
|
|
22
22
|
notifyLevel?: "full" | "important" | "result";
|
|
23
23
|
/** Per-chat proactive progress-notice interval ms (0 disables); falls back to the plugin config. */
|
|
24
24
|
progressTimeoutMs?: number;
|
|
25
|
+
/** Timestamp when the first-time welcome card was sent (undefined = not yet welcomed). */
|
|
26
|
+
welcomedAt?: number;
|
|
25
27
|
/** Web mirror session id (shared with DSH Web for viewing). */
|
|
26
28
|
webMirrorSessionId?: string;
|
|
27
29
|
/** Session lock status: which channel currently owns write access. */
|
package/lib/binding.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binding.d.ts","sourceRoot":"","sources":["../src/binding.ts"],"names":[],"mappings":"AAUA,8CAA8C;AAC9C,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,KAAK,GAAG,OAAO,CAAC;IAC1B,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,oFAAoF;IACpF,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,0FAA0F;IAC1F,WAAW,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IAC9C,oGAAoG;IACpG,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,+DAA+D;IAC/D,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,sEAAsE;IACtE,SAAS,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC;IAC7B,oEAAoE;IACpE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wDAAwD;IACxD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sEAAsE;IACtE,cAAc,CAAC,EAAE,KAAK,CAAC;QACrB,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;QAC3B,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;KAC3B,CAAC,CAAC;IACH,gEAAgE;IAChE,QAAQ,EAAE,iBAAiB,EAAE,CAAC;CAC/B;AA0BD,+CAA+C;AAC/C,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,KAAK,IAAI,CAAC;AAE5G,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAkC;IACtD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAoC;gBAExD,QAAQ,CAAC,EAAE,MAAM;IAM7B;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,GAAG,MAAM,IAAI;IAOrD;;OAEG;IACH,OAAO,CAAC,UAAU;IAUlB;;;OAGG;IACH,OAAO,IAAI,gBAAgB,CAAC,WAAW,CAAC;IAIxC;;OAEG;IACH,IAAI,IAAI,WAAW,EAAE;IAIrB;;;;OAIG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,EAAE;IAUjD,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAI9D,GAAG,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAQ/B,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAU9C,OAAO,CAAC,IAAI;
|
|
1
|
+
{"version":3,"file":"binding.d.ts","sourceRoot":"","sources":["../src/binding.ts"],"names":[],"mappings":"AAUA,8CAA8C;AAC9C,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,KAAK,GAAG,OAAO,CAAC;IAC1B,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,oFAAoF;IACpF,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,0FAA0F;IAC1F,WAAW,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IAC9C,oGAAoG;IACpG,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,0FAA0F;IAC1F,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+DAA+D;IAC/D,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,sEAAsE;IACtE,SAAS,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC;IAC7B,oEAAoE;IACpE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wDAAwD;IACxD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sEAAsE;IACtE,cAAc,CAAC,EAAE,KAAK,CAAC;QACrB,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;QAC3B,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;KAC3B,CAAC,CAAC;IACH,gEAAgE;IAChE,QAAQ,EAAE,iBAAiB,EAAE,CAAC;CAC/B;AA0BD,+CAA+C;AAC/C,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,KAAK,IAAI,CAAC;AAE5G,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAkC;IACtD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAoC;gBAExD,QAAQ,CAAC,EAAE,MAAM;IAM7B;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,GAAG,MAAM,IAAI;IAOrD;;OAEG;IACH,OAAO,CAAC,UAAU;IAUlB;;;OAGG;IACH,OAAO,IAAI,gBAAgB,CAAC,WAAW,CAAC;IAIxC;;OAEG;IACH,IAAI,IAAI,WAAW,EAAE;IAIrB;;;;OAIG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,EAAE;IAUjD,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAI9D,GAAG,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAQ/B,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAU9C,OAAO,CAAC,IAAI;IAoCZ,OAAO,CAAC,IAAI;CAQb"}
|
package/lib/binding.js
CHANGED
|
@@ -132,6 +132,7 @@ export class BindingStore {
|
|
|
132
132
|
...(b.language === "zh" || b.language === "en" ? { language: b.language } : {}),
|
|
133
133
|
...(b.notifyLevel === "full" || b.notifyLevel === "important" || b.notifyLevel === "result" ? { notifyLevel: b.notifyLevel } : {}),
|
|
134
134
|
...(typeof b.progressTimeoutMs === "number" && b.progressTimeoutMs >= 0 ? { progressTimeoutMs: b.progressTimeoutMs } : {}),
|
|
135
|
+
...(typeof b.welcomedAt === "number" ? { welcomedAt: b.welcomedAt } : {}),
|
|
135
136
|
...(typeof b.webMirrorSessionId === "string" ? { webMirrorSessionId: b.webMirrorSessionId } : {}),
|
|
136
137
|
...(b.lockOwner === "feishu" || b.lockOwner === "web" ? { lockOwner: b.lockOwner } : {}),
|
|
137
138
|
...(typeof b.lockAcquiredAt === "number" ? { lockAcquiredAt: b.lockAcquiredAt } : {}),
|
package/lib/binding.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binding.js","sourceRoot":"","sources":["../src/binding.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"binding.js","sourceRoot":"","sources":["../src/binding.ts"],"names":[],"mappings":"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"}
|
package/lib/i18n.d.ts
CHANGED
|
@@ -55,6 +55,27 @@ export interface Messages {
|
|
|
55
55
|
rejectLabel: string;
|
|
56
56
|
answerReceived: string;
|
|
57
57
|
questionToolCall(text: string): string;
|
|
58
|
+
/** Card summary shown after an approval decision was accepted. */
|
|
59
|
+
approvalDone(outcome: "allowed-once" | "rejected", toolName: string): string;
|
|
60
|
+
/** Card summary shown when the approval is no longer actionable (stale / already handled). */
|
|
61
|
+
approvalStale: string;
|
|
62
|
+
/** Shown when answering an interactive question failed (e.g. it was already answered elsewhere). */
|
|
63
|
+
questionStale: string;
|
|
64
|
+
welcomeTitle: string;
|
|
65
|
+
welcomeBody(workdir: string): string;
|
|
66
|
+
errorAdvicePermission: string;
|
|
67
|
+
errorAdviceNetwork: string;
|
|
68
|
+
errorAdviceModel: string;
|
|
69
|
+
errorAdviceGeneric: string;
|
|
70
|
+
processingFailedAdvice(detail: string, advice: string): string;
|
|
71
|
+
confirmTitle: string;
|
|
72
|
+
confirmYes: string;
|
|
73
|
+
confirmNo: string;
|
|
74
|
+
confirmClearText: string;
|
|
75
|
+
confirmNewText: string;
|
|
76
|
+
actionCancelled: string;
|
|
77
|
+
toolStepLabel(n: number, name: string): string;
|
|
78
|
+
queuedHint(n: number): string;
|
|
58
79
|
notifyFull: string;
|
|
59
80
|
notifyImportant: string;
|
|
60
81
|
notifyResult: string;
|
|
@@ -74,8 +95,6 @@ export interface Messages {
|
|
|
74
95
|
imageDownloadFailed(imageError: string): string;
|
|
75
96
|
fileDownloadFailed(fileError: string): string;
|
|
76
97
|
imagesStaged(locations: string, description: string): string;
|
|
77
|
-
imageDescriptionLabel(description: string): string;
|
|
78
|
-
imageNoDescription: string;
|
|
79
98
|
visionPrompt: string;
|
|
80
99
|
filesStaged(count: number, locations: string): string;
|
|
81
100
|
taskEnded(reasonLabel: string): string;
|
|
@@ -113,8 +132,6 @@ export interface Messages {
|
|
|
113
132
|
languageZh: string;
|
|
114
133
|
languageEn: string;
|
|
115
134
|
languageSet(lang: string): string;
|
|
116
|
-
streamLabel(on: boolean): string;
|
|
117
|
-
summaryLabel(on: boolean): string;
|
|
118
135
|
statusNoSession(workdir: string): string;
|
|
119
136
|
statusRunning: string;
|
|
120
137
|
statusIdle: string;
|
|
@@ -163,7 +180,6 @@ export interface Messages {
|
|
|
163
180
|
sessionRunning: string;
|
|
164
181
|
compactionUnavailable: string;
|
|
165
182
|
nothingToCompact: string;
|
|
166
|
-
contextCompacted: string;
|
|
167
183
|
compactFailed(message: string): string;
|
|
168
184
|
noActiveSession: string;
|
|
169
185
|
noMessagesYet: string;
|
|
@@ -190,11 +206,8 @@ export interface Messages {
|
|
|
190
206
|
workspacesCount(n: number, list: string): string;
|
|
191
207
|
currentDir: string;
|
|
192
208
|
mirrorCreated(sessionId: string): string;
|
|
193
|
-
mirrorAlreadyExists(sessionId: string): string;
|
|
194
209
|
mirrorNotConfigured: string;
|
|
195
210
|
sessionLockedBy(channel: string): string;
|
|
196
|
-
sessionReadOnly: string;
|
|
197
|
-
lockReleased: string;
|
|
198
211
|
lockTimeoutReleased(minutes: number): string;
|
|
199
212
|
unlockSuccess: string;
|
|
200
213
|
unlockNoLock: string;
|
|
@@ -207,7 +220,6 @@ export interface Messages {
|
|
|
207
220
|
exportFailed(error: string): string;
|
|
208
221
|
mirrorStatus(sessionId: string, lockedBy?: string, timeoutMin?: number, queuedCount?: number): string;
|
|
209
222
|
webMirrorIndicator: string;
|
|
210
|
-
sessionAvailableOnWeb: string;
|
|
211
223
|
helpHeader: string;
|
|
212
224
|
helpMenu: string;
|
|
213
225
|
helpSettings: string;
|
package/lib/i18n.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC;AAEnC,8EAA8E;AAC9E,MAAM,WAAW,QAAQ;IAEvB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IAGtB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IAGnB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IAEvB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;IAC/D,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7C,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IAGzC,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3C,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1D,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACnC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACnC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IAGrB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IAGpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACnD,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3C,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;IAClE,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"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"}
|
package/lib/i18n.js
CHANGED
|
@@ -53,6 +53,32 @@ const zh = {
|
|
|
53
53
|
rejectLabel: "❌ 拒绝",
|
|
54
54
|
answerReceived: "✅ 已收到你的回答,继续处理…",
|
|
55
55
|
questionToolCall: (text) => `🤔 需要你的选择 — ${text}`,
|
|
56
|
+
approvalDone: (outcome, toolName) => outcome === "allowed-once" ? `✅ 已同意授权:\`${toolName}\`` : `已拒绝授权:\`${toolName}\``,
|
|
57
|
+
approvalStale: "⚠️ 此授权请求已失效(可能已被处理或已过期),本次操作未生效。",
|
|
58
|
+
questionStale: "⚠️ 此问题已失效(可能已被处理或已过期),本次回答未生效。",
|
|
59
|
+
welcomeTitle: "👋 欢迎使用 dsh-connect",
|
|
60
|
+
welcomeBody: (workdir) => [
|
|
61
|
+
`我是接入 DeepSeek Harness 的飞书助手。工作目录:\`${workdir}\``,
|
|
62
|
+
"直接发消息即可开始任务,也可以使用这些命令:",
|
|
63
|
+
"- `/menu` 打开主菜单(工作目录 / 会话 / 设置 / 压缩等)",
|
|
64
|
+
"- `/help` 查看全部命令",
|
|
65
|
+
"- `/status` 查看会话状态与上下文占用",
|
|
66
|
+
"- `/compact` 上下文占用高时压缩",
|
|
67
|
+
"任务进行中会推送进度;需要你选择或授权时会出现带按钮的卡片,点选或直接回复即可。",
|
|
68
|
+
].join("\n"),
|
|
69
|
+
errorAdvicePermission: "可能是权限不足。请检查:飞书应用的权限(开发者后台 → 权限管理,修改后需重新发布版本)、DSH 沙箱与工作目录的访问权限。",
|
|
70
|
+
errorAdviceNetwork: "可能是网络问题。请检查本机网络连接与代理设置,稍后重试。",
|
|
71
|
+
errorAdviceModel: "可能是模型或配额问题。请检查模型配置 / API 额度,或用 /model 切换模型后重试。",
|
|
72
|
+
errorAdviceGeneric: "可发送 /status 查看会话状态,或 /stop 停止当前任务后重试。",
|
|
73
|
+
processingFailedAdvice: (detail, advice) => `⚠️ 处理失败:${detail}\n\n💡 建议:${advice}`,
|
|
74
|
+
confirmTitle: "请确认操作",
|
|
75
|
+
confirmYes: "✅ 确认",
|
|
76
|
+
confirmNo: "↩️ 取消",
|
|
77
|
+
confirmClearText: "清空当前会话将删除本会话的全部历史消息,确定继续吗?",
|
|
78
|
+
confirmNewText: "新建会话将丢弃当前对话上下文(历史仍保留在会话列表中),确定继续吗?",
|
|
79
|
+
actionCancelled: "已取消,未执行任何操作。",
|
|
80
|
+
toolStepLabel: (n, name) => `🔧 第 ${n} 次工具调用 \`${name}\``,
|
|
81
|
+
queuedHint: (n) => `(还有 ${n} 条消息排队中)`,
|
|
56
82
|
notifyFull: "尽量输出过程",
|
|
57
83
|
notifyImportant: "输出重要节点",
|
|
58
84
|
notifyResult: "只输出结果",
|
|
@@ -74,8 +100,6 @@ const zh = {
|
|
|
74
100
|
imagesStaged: (locations, description) => description !== ""
|
|
75
101
|
? `[用户发送了图片,图片已保存到以下路径(可用工具查看):\n${locations}\n图片内容说明:\n${description}]`
|
|
76
102
|
: `[用户发送了图片,图片已保存到以下路径(可用工具查看):\n${locations}\n(未能自动分析图片内容,请用文件/终端工具查看这些图片。)]`,
|
|
77
|
-
imageDescriptionLabel: (description) => `图片内容说明:\n${description}`,
|
|
78
|
-
imageNoDescription: "(未能自动分析图片内容,请用文件/终端工具查看这些图片。)",
|
|
79
103
|
visionPrompt: "请详细描述这些图片的内容(物体、场景、文字、布局、氛围等),供一个无法直接查看图片的主模型理解。",
|
|
80
104
|
filesStaged: (count, locations) => `[用户发送了 ${count} 个文件,已保存到以下路径(可用工具查看):\n${locations}]`,
|
|
81
105
|
taskEnded: (reasonLabel) => `**任务结束**:${reasonLabel}`,
|
|
@@ -113,8 +137,6 @@ const zh = {
|
|
|
113
137
|
languageZh: "中文",
|
|
114
138
|
languageEn: "English",
|
|
115
139
|
languageSet: (lang) => `语言已切换为 ${lang}。`,
|
|
116
|
-
streamLabel: (on) => `流式输出:${on ? "开" : "关"}`,
|
|
117
|
-
summaryLabel: (on) => `结束摘要:${on ? "开" : "关"}`,
|
|
118
140
|
statusNoSession: (workdir) => `状态:无活动会话\n工作目录:${workdir}`,
|
|
119
141
|
statusRunning: "🟢 执行中",
|
|
120
142
|
statusIdle: "⚪ 空闲",
|
|
@@ -163,7 +185,6 @@ const zh = {
|
|
|
163
185
|
sessionRunning: "当前会话正在运行,请稍后再试(或先 /stop)。",
|
|
164
186
|
compactionUnavailable: "压缩服务不可用(当前预设未挂载压缩后端)。",
|
|
165
187
|
nothingToCompact: "没有可压缩的历史。",
|
|
166
|
-
contextCompacted: "上下文已压缩。",
|
|
167
188
|
compactFailed: (message) => `压缩失败:${message}`,
|
|
168
189
|
noActiveSession: "当前没有活动会话。",
|
|
169
190
|
noMessagesYet: "会话里还没有消息。",
|
|
@@ -190,11 +211,8 @@ const zh = {
|
|
|
190
211
|
workspacesCount: (n, list) => `工作区(${n}):\n${list}`,
|
|
191
212
|
currentDir: "当前目录",
|
|
192
213
|
mirrorCreated: (sessionId) => `✅ Web 镜像会话已创建:${sessionId}\n在 DSH Web 中打开此会话即可查看飞书对话历史。`,
|
|
193
|
-
mirrorAlreadyExists: (sessionId) => `Web 镜像会话已存在:${sessionId}`,
|
|
194
214
|
mirrorNotConfigured: "当前会话未配置 Web 镜像。使用 /mirror 命令创建。",
|
|
195
215
|
sessionLockedBy: (channel) => `⚠️ 会话正被 ${channel === "feishu" ? "飞书" : "Web"} 占用,当前为只读模式`,
|
|
196
|
-
sessionReadOnly: "🔒 会话锁定中,只能查看不能发送消息",
|
|
197
|
-
lockReleased: "🔓 会话锁已释放",
|
|
198
216
|
lockTimeoutReleased: (minutes) => `⏰ 会话锁已超时(${minutes} 分钟无活动),自动释放`,
|
|
199
217
|
unlockSuccess: "🔓 会话锁已手动释放",
|
|
200
218
|
unlockNoLock: "当前没有活跃的会话锁",
|
|
@@ -212,7 +230,6 @@ const zh = {
|
|
|
212
230
|
return `Web 镜像会话:${sessionId}${lockInfo}${timeoutInfo}${queueInfo}`;
|
|
213
231
|
},
|
|
214
232
|
webMirrorIndicator: "🌐",
|
|
215
|
-
sessionAvailableOnWeb: "(同时在 Web 上可用)",
|
|
216
233
|
helpHeader: "可用命令(本地执行,不消耗模型):",
|
|
217
234
|
helpMenu: "打开主菜单(层级点选,可返回)",
|
|
218
235
|
helpSettings: "设置:模型 / 推理强度 / 通知 / 配置总览",
|
|
@@ -282,6 +299,32 @@ const en = {
|
|
|
282
299
|
rejectLabel: "❌ Deny",
|
|
283
300
|
answerReceived: "✅ Got your answer — continuing…",
|
|
284
301
|
questionToolCall: (text) => `🤔 Your input is needed — ${text}`,
|
|
302
|
+
approvalDone: (outcome, toolName) => outcome === "allowed-once" ? `✅ Approved: \`${toolName}\`` : `Rejected: \`${toolName}\``,
|
|
303
|
+
approvalStale: "⚠️ This approval request is no longer active (already handled or expired) — this action had no effect.",
|
|
304
|
+
questionStale: "⚠️ This question is no longer active (already handled or expired) — this answer had no effect.",
|
|
305
|
+
welcomeTitle: "👋 Welcome to dsh-connect",
|
|
306
|
+
welcomeBody: (workdir) => [
|
|
307
|
+
`I'm a Feishu assistant powered by DeepSeek Harness. Workdir: \`${workdir}\``,
|
|
308
|
+
"Just send a message to start a task, or use these commands:",
|
|
309
|
+
"- `/menu` open the main menu (workdir / sessions / settings / compact…)",
|
|
310
|
+
"- `/help` list all commands",
|
|
311
|
+
"- `/status` session status and context usage",
|
|
312
|
+
"- `/compact` compact the context when it's getting full",
|
|
313
|
+
"While a task runs you'll get progress updates; when your input or approval is needed, a card with buttons appears — just tap or reply.",
|
|
314
|
+
].join("\n"),
|
|
315
|
+
errorAdvicePermission: "This looks like a permission problem. Check the Feishu app permissions (Developer Console → Permissions; release a new version after changes) and the DSH sandbox / workdir access.",
|
|
316
|
+
errorAdviceNetwork: "This looks like a network problem. Check your connection / proxy settings and retry later.",
|
|
317
|
+
errorAdviceModel: "This looks like a model or quota problem. Check the model config / API quota, or switch models with /model and retry.",
|
|
318
|
+
errorAdviceGeneric: "You can run /status to inspect the session, or /stop to cancel the current task and retry.",
|
|
319
|
+
processingFailedAdvice: (detail, advice) => `⚠️ Processing failed: ${detail}\n\n💡 Suggestion: ${advice}`,
|
|
320
|
+
confirmTitle: "Please confirm",
|
|
321
|
+
confirmYes: "✅ Confirm",
|
|
322
|
+
confirmNo: "↩️ Cancel",
|
|
323
|
+
confirmClearText: "Clearing this conversation deletes all of its history. Continue?",
|
|
324
|
+
confirmNewText: "A new conversation discards the current context (history stays in the session list). Continue?",
|
|
325
|
+
actionCancelled: "Cancelled — nothing was changed.",
|
|
326
|
+
toolStepLabel: (n, name) => `🔧 Tool call #${n}: \`${name}\``,
|
|
327
|
+
queuedHint: (n) => `(${n} more message(s) queued)`,
|
|
285
328
|
notifyFull: "Full process",
|
|
286
329
|
notifyImportant: "Key milestones",
|
|
287
330
|
notifyResult: "Result only",
|
|
@@ -303,8 +346,6 @@ const en = {
|
|
|
303
346
|
imagesStaged: (locations, description) => description !== ""
|
|
304
347
|
? `[The user sent images, saved to the following paths (viewable with tools):\n${locations}\nImage description:\n${description}]`
|
|
305
348
|
: `[The user sent images, saved to the following paths (viewable with tools):\n${locations}\n(No image analysis available — inspect the files with the file/terminal tools.)]`,
|
|
306
|
-
imageDescriptionLabel: (description) => `Image description:\n${description}`,
|
|
307
|
-
imageNoDescription: "(No image analysis available — inspect the files with the file/terminal tools.)",
|
|
308
349
|
visionPrompt: "Describe these images in detail (objects, scene, text, layout, atmosphere, etc.) for a main model that cannot view images directly.",
|
|
309
350
|
filesStaged: (count, locations) => `[The user sent ${count} file(s), saved to the following paths (viewable with tools):\n${locations}]`,
|
|
310
351
|
taskEnded: (reasonLabel) => `**Task ended** — ${reasonLabel}`,
|
|
@@ -342,8 +383,6 @@ const en = {
|
|
|
342
383
|
languageZh: "中文",
|
|
343
384
|
languageEn: "English",
|
|
344
385
|
languageSet: (lang) => `Language switched to ${lang}.`,
|
|
345
|
-
streamLabel: (on) => `Streaming output: ${on ? "on" : "off"}`,
|
|
346
|
-
summaryLabel: (on) => `End-of-turn summary: ${on ? "on" : "off"}`,
|
|
347
386
|
statusNoSession: (workdir) => `Status: no active session\nWorkdir: ${workdir}`,
|
|
348
387
|
statusRunning: "🟢 Executing",
|
|
349
388
|
statusIdle: "⚪ Idle",
|
|
@@ -392,7 +431,6 @@ const en = {
|
|
|
392
431
|
sessionRunning: "The session is running — try again later (or `/stop` first).",
|
|
393
432
|
compactionUnavailable: "Compaction service unavailable (the current preset does not mount a compaction backend).",
|
|
394
433
|
nothingToCompact: "Nothing to compact.",
|
|
395
|
-
contextCompacted: "Context compacted.",
|
|
396
434
|
compactFailed: (message) => `Compaction failed: ${message}`,
|
|
397
435
|
noActiveSession: "No active session.",
|
|
398
436
|
noMessagesYet: "No messages in the session yet.",
|
|
@@ -419,11 +457,8 @@ const en = {
|
|
|
419
457
|
workspacesCount: (n, list) => `Workspaces (${n}):\n${list}`,
|
|
420
458
|
currentDir: "Current directory",
|
|
421
459
|
mirrorCreated: (sessionId) => `✅ Web mirror session created: ${sessionId}\nOpen this session in DSH Web to view the Feishu conversation history.`,
|
|
422
|
-
mirrorAlreadyExists: (sessionId) => `Web mirror session already exists: ${sessionId}`,
|
|
423
460
|
mirrorNotConfigured: "No Web mirror configured for this session. Use /mirror to create one.",
|
|
424
461
|
sessionLockedBy: (channel) => `⚠️ Session is locked by ${channel === "feishu" ? "Feishu" : "Web"}, currently in read-only mode`,
|
|
425
|
-
sessionReadOnly: "🔒 Session locked, view-only mode",
|
|
426
|
-
lockReleased: "🔓 Session lock released",
|
|
427
462
|
lockTimeoutReleased: (minutes) => `⏰ Session lock timed out (${minutes} minutes of inactivity), auto-released`,
|
|
428
463
|
unlockSuccess: "🔓 Session lock manually released",
|
|
429
464
|
unlockNoLock: "No active session lock",
|
|
@@ -441,7 +476,6 @@ const en = {
|
|
|
441
476
|
return `Web mirror session: ${sessionId}${lockInfo}${timeoutInfo}${queueInfo}`;
|
|
442
477
|
},
|
|
443
478
|
webMirrorIndicator: "🌐",
|
|
444
|
-
sessionAvailableOnWeb: "(also available on Web)",
|
|
445
479
|
helpHeader: "Available commands (run locally, no model tokens):",
|
|
446
480
|
helpMenu: "open the main menu (hierarchical, back supported)",
|
|
447
481
|
helpSettings: "settings: model / reasoning effort / notifications / config overview",
|