dsh-lark-bot 0.15.0 → 0.15.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 +253 -579
- package/package.json +12 -4
package/README.md
CHANGED
|
@@ -1,31 +1,11 @@
|
|
|
1
|
-
> [
|
|
2
|
-
> **⚠️ 官方渠道声明 · Official channels only**
|
|
3
|
-
>
|
|
4
|
-
> 唯一官方仓库是 [PlutoKeating/dsh-lark-bot](https://github.com/PlutoKeating/dsh-lark-bot);唯一官方 npm 包是
|
|
5
|
-
> `dsh-lark-bot`(同源双包 `dsh-feishu-bot`,维护者 `plutokeating`)。**本项目从不提供 Windows 可执行文件
|
|
6
|
-
> (.exe),也没有任何“下载即运行”的安装包。** 任何以本项目名义提供 exe / “下载后双击运行”的页面、仓库或
|
|
7
|
-
> 第三方分发渠道(例如 `tarraencompassing61/dsh-lark-bot` 这类仿冒仓库)均为**假冒 / 恶意来源**——请勿下载
|
|
8
|
-
> 或运行其中的任何附件。官方安装唯一命令:
|
|
9
|
-
>
|
|
10
|
-
> `npx dsh-lark-bot@latest setup --profile dsh-lark`
|
|
11
|
-
>
|
|
12
|
-
> The **only official repository** is [PlutoKeating/dsh-lark-bot](https://github.com/PlutoKeating/dsh-lark-bot);
|
|
13
|
-
> the **only official npm packages** are `dsh-lark-bot` and `dsh-feishu-bot` (maintainer `plutokeating`).
|
|
14
|
-
> **This project never ships Windows executables (.exe) or any “download-and-run” installer.** Any page,
|
|
15
|
-
> repository, or third-party channel offering such downloads under this project’s name (including impostor
|
|
16
|
-
> repositories like `tarraencompassing61/dsh-lark-bot`) is a **counterfeit / malicious source** — do not download
|
|
17
|
-
> or execute anything from it. The only official install command:
|
|
18
|
-
>
|
|
19
|
-
> `npx dsh-lark-bot@latest setup --profile dsh-lark`
|
|
20
|
-
>
|
|
21
|
-
> 仿冒仓库停留在 v0.7.0 快照;正版版本差距见上方徽章。Evidence:
|
|
22
|
-
> [docs/security/2026-08-17-impostor-repo-evidence/](docs/security/2026-08-17-impostor-repo-evidence/README.md) ·
|
|
23
|
-
> Official download page: [docs/DOWNLOAD.md](docs/DOWNLOAD.md)
|
|
1
|
+
> **⚠️ 仅认准官方渠道:** 唯一官方仓库 [PlutoKeating/dsh-lark-bot](https://github.com/PlutoKeating/dsh-lark-bot),唯一官方 npm 包 `dsh-lark-bot`(同源双包 `dsh-feishu-bot`,维护者 `plutokeating`)。**本项目从不提供 Windows 可执行文件(.exe),也没有任何“下载即运行”的安装包**——任何以本项目名义提供 exe / “下载后双击运行”的页面、仓库或第三方分发渠道均为**假冒 / 恶意来源**,请勿下载或运行。官方安装唯一命令:`npx dsh-lark-bot@latest setup --profile dsh-lark`。仿冒仓库取证与完整声明见文末「假冒仓库警告」及 [docs/security/2026-08-17-impostor-repo-evidence/](docs/security/2026-08-17-impostor-repo-evidence/README.md)。
|
|
24
2
|
|
|
25
3
|
<h1 align="center">dsh-lark-bot</h1>
|
|
26
4
|
|
|
5
|
+
<p align="center">🌏 英文版:[README_EN.md](README_EN.md)</p>
|
|
6
|
+
|
|
27
7
|
<p align="center">
|
|
28
|
-
<strong>把 DeepSeek Harness
|
|
8
|
+
<strong>把 DeepSeek Harness 接入飞书</strong>
|
|
29
9
|
</p>
|
|
30
10
|
|
|
31
11
|
<p align="center">
|
|
@@ -35,6 +15,7 @@
|
|
|
35
15
|
<img src="https://img.shields.io/badge/License-AGPLv3-blue" alt="License">
|
|
36
16
|
<img src="https://img.shields.io/badge/status-released-blue" alt="Status">
|
|
37
17
|
<a href="https://dshfind.com/zh/plugins/PlutoKeating/dsh-lark-bot?ref=badge"><img src="https://dshfind.com/api/badge/PlutoKeating/dsh-lark-bot?lang=zh" alt="dshfind"></a>
|
|
18
|
+
<a href="https://dshbase.com/zh/plugins/dsh-lark-bot"><img src="https://dshbase.com/badges/dsh-lark-bot.svg" alt="dshbase 实测可装"></a>
|
|
38
19
|
<a href="https://github.com/PlutoKeating/dsh-lark-bot/releases"><img src="https://img.shields.io/github/v/release/PlutoKeating/dsh-lark-bot?sort=semver&label=latest%20release" alt="Latest release"></a>
|
|
39
20
|
<a href="https://github.com/PlutoKeating/dsh-lark-bot/commits/main"><img src="https://img.shields.io/github/commits-since/PlutoKeating/dsh-lark-bot/v0.7.0?label=commits%20since%20v0.7.0" alt="Commits since v0.7.0"></a>
|
|
40
21
|
</p>
|
|
@@ -45,184 +26,119 @@
|
|
|
45
26
|
|
|
46
27
|
让 **DeepSeek Harness(`dsh`)** 成为你飞书里的一员:在手机、群聊、话题里指挥本机 coding agent,把对话、任务、卡片和**项目工作区**都收进同一个协作流。
|
|
47
28
|
|
|
48
|
-
<br>
|
|
49
|
-
|
|
50
|
-
*Turn **DeepSeek Harness (`dsh`)** into a member of your Feishu / Lark workspace — drive your local coding agent from mobile, group chats and topics, and fold conversations, tasks, cards and **project workspaces** into one collaborative flow.*
|
|
51
|
-
|
|
52
29
|
</div>
|
|
53
30
|
|
|
54
|
-
<
|
|
31
|
+
<p align="center">
|
|
32
|
+
🌐 官网落地页 <a href="https://dsh-lark-bot.arr2018.dpdns.org">dsh-lark-bot.arr2018.dpdns.org</a>
|
|
33
|
+
· 备用 <a href="https://plutokeating.github.io/dsh-lark-bot/">GitHub Pages</a>
|
|
34
|
+
</p>
|
|
55
35
|
|
|
56
|
-
|
|
36
|
+
---
|
|
57
37
|
|
|
58
|
-
|
|
38
|
+
## 场景
|
|
59
39
|
|
|
60
|
-
|
|
40
|
+
**你的 DeepSeek Harness 只能“贴身”用?** dsh 跑在本机,每次看进度、改任务都得回到电脑前;离开工位后任务卡住、跑偏甚至 dsh 崩了,你都收不到任何消息——回来才发现白等半天。
|
|
61
41
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
**用在什么场景?** 你在飞书 / Lark(私聊、群聊、话题)里指挥本机 DeepSeek Harness(`dsh`)
|
|
65
|
-
coding agent:发消息就收流式卡片与工具调用过程,把项目工作区、并行任务、会话归档都收进同一
|
|
66
|
-
个协作流。适合需要多项目隔离、角色分工、并行任务与故障自愈的开发者与团队。
|
|
67
|
-
|
|
68
|
-
**Where does it fit?** Drive your local DeepSeek Harness (`dsh`) coding agent from Feishu /
|
|
69
|
-
Lark — DMs, group chats and topics — with streaming cards, isolated project workspaces,
|
|
70
|
-
parallel tasks, session archival and self-healing when things break.
|
|
71
|
-
|
|
72
|
-
**功能亮点(以下六项为 dsh-lark-bot 全网独有组合)| Highlights (exclusive to dsh-lark-bot)**:
|
|
73
|
-
|
|
74
|
-
- 🆘 **Guardian 安全网守护 —— “永远叫得应”**:DSH 进程一崩,其他方案的机器人就变成死号,只能回
|
|
75
|
-
服务器手动重启;dsh-lark-bot 的守护进程在 DSH 崩溃后**仍然会在飞书回复你**——告诉你引擎已挂、
|
|
76
|
-
可进入仅核心安全模式,直接在飞书对话里发控制信号把它重启。**唯一“出故障时用户不会失联”的项目。**
|
|
77
|
-
*When DSH crashes, this bot still answers in Feishu: enter core-only safe mode and send a
|
|
78
|
-
control signal to restart it. The only project where users never lose contact.*
|
|
79
|
-
- 👥 **多角色 Agent —— “一个机器人,一整个团队”**:在飞书里用 `/role` 切换或指派 PM / 开发 /
|
|
80
|
-
文档等角色,每个角色有持久化的人设、模型偏好与规则。
|
|
81
|
-
*Switch or assign PM / dev / docs personas in chat with `/role` — each with its own
|
|
82
|
-
persisted persona. One bot, a whole team.*
|
|
83
|
-
- ⚡ **并行多任务 —— “不用排队”**:同一群里可以**同时跑多个任务**,各自会话隔离;其他方案同聊
|
|
84
|
-
串行,上一个没跑完下一个只能等。
|
|
85
|
-
*Run multiple tasks in the same chat simultaneously with isolated sessions — no queueing.*
|
|
86
|
-
- 🗂 **会话归档与清理 —— “会话列表不会烂掉”**:`/archive` 归档旧任务、`/retention` 配置自动保留
|
|
87
|
-
策略;长期使用也不会越积越多。
|
|
88
|
-
*Archive old tasks and auto-prune with retention policies — your session list stays clean.*
|
|
89
|
-
- 📣 **跨会话主动通知 + @人 —— “活干完了它会来找你”**:Agent 在 A 群跑完任务,可以**主动发消息到
|
|
90
|
-
B 群或私聊并 @ 你**;而不是“你问它答”。
|
|
91
|
-
*Agents proactively report to other chats or DMs and @mention you when work finishes.*
|
|
92
|
-
- 🔑 **对话内管理模型和密钥 —— “不用离开飞书”**:`/providers` `/provider` `/key` 直接在聊天里
|
|
93
|
-
查看、切换供应商、热更新密钥,全程闭环。
|
|
94
|
-
*View providers, switch vendors and hot-update API keys entirely in chat — no server-side
|
|
95
|
-
edits.*
|
|
42
|
+
**dsh-lark-bot 把遥控器装进你的飞书**:在私聊、群聊、话题里直接指挥本机 dsh coding agent,流式卡片实时看思考与工具调用;任务完成主动推送到你所在的任何群并 @ 你;即使 dsh 崩溃下线,飞书里依然叫得应——发 `/safemode` 进入仅核心安全模式,直接在聊天里定位问题、重启引擎。**这是唯一“dsh 挂了你不会失联”的桥接方案。**
|
|
96
43
|
|
|
97
|
-
|
|
44
|
+
## 能做什么
|
|
98
45
|
|
|
99
|
-
|
|
46
|
+
**基础能力**:
|
|
100
47
|
|
|
101
|
-
|
|
48
|
+
- 私聊、群聊、话题(thread)里指挥本机 dsh coding agent,图片 / 文本文件直接发给 bot 即可;
|
|
49
|
+
- 流式卡片实时展示思考、工具调用与结果,支持交互按钮(停止 / 审批 / 问答卡);
|
|
50
|
+
- 会话自动归档与保留策略;Git 仓库内为每个会话自动创建隔离 worktree 项目工作区,多项目互不干扰。
|
|
102
51
|
|
|
103
|
-
|
|
104
|
-
标准插件方式加载桥接引擎(`dsh.bundle.patch` 已声明,`dsh plugin add` 可直接安装)。
|
|
52
|
+
**六项全网独有组合**:
|
|
105
53
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
54
|
+
- 🆘 **Guardian 安全网守护——“永远叫得应”**:DSH 崩溃后飞书仍会回复你,`/safemode` 进入仅核心安全模式直接重启。
|
|
55
|
+
- 👥 **多角色 Agent——“一个机器人,一整个团队”**:`/role` 切换或指派 PM / 开发 / 文档等角色,每个角色独立人设、模型偏好与规则。
|
|
56
|
+
- ⚡ **并行多任务——“不用排队”**:同一群聊同时跑多个任务、会话隔离;其他方案只能串行排队。
|
|
57
|
+
- 🗂 **会话归档与清理——“会话列表不会烂掉”**:`/archive` 归档旧任务、`/retention` 配置自动保留策略。
|
|
58
|
+
- 📣 **跨会话主动通知 + @人——“活干完了它会来找你”**:A 群跑完任务主动推送到 B 群 / 私聊并 @ 你。
|
|
59
|
+
- 🔑 **对话内管理模型和密钥——“不用离开飞书”**:`/providers` `/provider` `/key` 直接查看、切换供应商、热更新密钥。
|
|
109
60
|
|
|
110
|
-
|
|
111
|
-
# 唯一安装命令(无需先全局安装任何东西)| the only install command (no prior global install)
|
|
112
|
-
npx dsh-lark-bot@latest setup --profile dsh-lark
|
|
113
|
-
```
|
|
61
|
+
## 30 秒上手
|
|
114
62
|
|
|
115
|
-
|
|
116
|
-
`dsh plugin --profile dsh-lark add dsh-lark-bot@<版本>`(版本号由当前包固定,避免 pnpm
|
|
117
|
-
裸名解析到旧版本),并**默认同时安装「安全网守护」**——系统级
|
|
118
|
-
常驻、dsh 全部下线后仍保留飞书救援入口(核心能力之一,见下文「安全网守护」一节)。
|
|
119
|
-
一条命令即完成全部安装。
|
|
63
|
+
**前置条件(先装好本体,再装遥控器)**:
|
|
120
64
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
package so pnpm never resolves an outdated bare-name release), and **also installs the safety-net
|
|
124
|
-
guardian by default** — a system-level resident process that keeps the Feishu rescue entrance
|
|
125
|
-
alive even when dsh is fully down (one of the core features; see "Safety-net guardian" below).
|
|
126
|
-
One command installs everything.
|
|
65
|
+
1. **DeepSeek Harness(`dsh`)已安装并配置好 `DEEPSEEK_API_KEY`** —— dsh-lark-bot 是 dsh 的插件,dsh 才是 agent 本体,缺一不可;
|
|
66
|
+
2. **Node.js ≥ 22.19**(见 `package.json` engines)与一个飞书 / Lark 账号。
|
|
127
67
|
|
|
128
|
-
|
|
68
|
+
**三步上线**:
|
|
129
69
|
|
|
130
70
|
```bash
|
|
71
|
+
# ① 一键安装(无需先全局安装任何东西;自动装进 dsh profile,并默认同时安装「安全网守护」)
|
|
72
|
+
npx dsh-lark-bot@latest setup --profile dsh-lark
|
|
73
|
+
|
|
74
|
+
# ② 启动
|
|
131
75
|
dsh --profile dsh-lark
|
|
132
76
|
```
|
|
133
77
|
|
|
134
|
-
|
|
135
|
-
dsh-lark-bot 的桥接引擎即在 dsh 进程内运行(飞书通道、会话/工作区、卡片、通知回调),
|
|
136
|
-
私聊直接发消息,群聊 / 话题里 `@bot`。常驻与守护由 dsh 自己负责。
|
|
137
|
-
|
|
138
|
-
On first boot the terminal prints a QR code: scan it with the Feishu / Lark app to create or
|
|
139
|
-
choose a PersonalAgent app. After binding, the bridge engine runs **inside the dsh process**
|
|
140
|
-
(Feishu channel, sessions/workspaces, cards, notify callback); message it directly in private
|
|
141
|
-
chat, or use `@bot` in groups/topics. dsh owns the daemon lifecycle.
|
|
78
|
+
③ 首次启动终端打印二维码 → 飞书 / Lark App 扫码创建或选择 PersonalAgent 应用 → 绑定后私聊直接发消息,群聊 / 话题里 `@bot`。
|
|
142
79
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
(see Configuration):
|
|
80
|
+
`setup` 会自动完成:定位本机 dsh → 预批准 pnpm 构建策略(protobufjs)→ 执行标准
|
|
81
|
+
`dsh plugin --profile dsh-lark add dsh-lark-bot@<版本>`(版本号由当前包固定)→ 默认安装「安全网守护」系统服务。
|
|
82
|
+
一条命令即完成全部安装。
|
|
147
83
|
|
|
148
|
-
|
|
149
|
-
DSH_LARK_APP_ID=cli_xxx DSH_LARK_APP_SECRET=<secret> DSH_LARK_TENANT=feishu
|
|
150
|
-
|
|
151
|
-
```
|
|
84
|
+
> **无需公网 IP / 域名 / 服务器 / 内网穿透**(飞书 WebSocket 出站长连接),Linux / macOS / Windows 通用。
|
|
85
|
+
> 已有 PersonalAgent 应用时可跳过扫码(见「配置」):`DSH_LARK_APP_ID=cli_xxx DSH_LARK_APP_SECRET=<secret> DSH_LARK_TENANT=feishu dsh --profile dsh-lark`
|
|
86
|
+
> 升级同样一条命令:`npx dsh-lark-bot@latest upgrade --profile dsh-lark --yes`
|
|
152
87
|
|
|
153
|
-
|
|
154
|
-
> Uninstall: `dsh plugin --profile dsh-lark remove dsh-lark-bot`.
|
|
88
|
+
## 完整使用方式
|
|
155
89
|
|
|
156
|
-
###
|
|
90
|
+
### 常用命令
|
|
157
91
|
|
|
158
92
|
在飞书里向 bot 发送普通消息即可开始工作,常用命令:
|
|
159
93
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
| 命令 Command | 作用 Description |
|
|
94
|
+
| 命令 | 作用 |
|
|
163
95
|
| --- | --- |
|
|
164
|
-
| `/new` `/reset` |
|
|
165
|
-
| `/newg <群名>` |
|
|
166
|
-
| `/cd <path>` |
|
|
167
|
-
| `/ws list` |
|
|
168
|
-
| `/ws save <name>` |
|
|
169
|
-
| `/ws use <name>` |
|
|
170
|
-
| `/ws remove <name>` |
|
|
171
|
-
| `/status` |
|
|
172
|
-
| `/resume` |
|
|
173
|
-
| `/stop` |
|
|
174
|
-
| `/timeout [N\|off\|default]` |
|
|
175
|
-
| `/concurrency [N\|default]` | 查看或设置当前 scope 并行任务数(默认 2
|
|
176
|
-
| `/role list`、`/role show <id>` | 查看角色列表 /
|
|
177
|
-
| `/role set <id>`、`/role clear` | 为当前 scope 绑定 /
|
|
178
|
-
| `/role save <id> <name> [--persona 文案] [--model <id>] [--tools <csv>] [--rules 文案]` | 创建 /
|
|
179
|
-
| `/role remove <id>` |
|
|
180
|
-
| `/notify <scope\|chatId> <text>` |
|
|
181
|
-
| `/notify list` | 查看 bridge 已注册的 scope
|
|
182
|
-
| `/retention [N\|default]` |
|
|
183
|
-
| `/archive [note]`、`/archive list [N]`、`/archive clean` | 手动归档 / 查看 /
|
|
184
|
-
| `/density [compact\|standard\|detailed]` |
|
|
185
|
-
| `/model` | 查看当前模型、dsh
|
|
186
|
-
| `/model use <id>` |
|
|
187
|
-
| `/model default <id>` | 写入 dsh 默认模型 `agent-default-model
|
|
188
|
-
| `/model add\|remove <provider> <modelId>` | 添加 / 删除 provider
|
|
189
|
-
| `/providers` | 查看 dsh 已配置 providers
|
|
190
|
-
| `/provider add\|update\|remove <id>` | 管理 provider(管理员;deepseek-official 与自定义 pi-ai
|
|
191
|
-
| `/key set\|remove\|list <引用名>` | 管理 dsh 凭据(set / remove
|
|
192
|
-
| `/ask <问题>` |
|
|
193
|
-
| `/invite user\|admin\|group <id>`、`/invite list`、`/invite remove user\|group <id>` |
|
|
194
|
-
| `/help` |
|
|
96
|
+
| `/new` `/reset` | 开始新会话|
|
|
97
|
+
| `/newg <群名>` | 自动新建群聊(拉你入群)并开新会话,当前会话保留|
|
|
98
|
+
| `/cd <path>` | 切换工作目录并重置会话|
|
|
99
|
+
| `/ws list` | 查看命名工作空间|
|
|
100
|
+
| `/ws save <name>` | 保存当前工作空间|
|
|
101
|
+
| `/ws use <name>` | 切换到命名工作空间|
|
|
102
|
+
| `/ws remove <name>` | 删除命名工作空间|
|
|
103
|
+
| `/status` | 查看当前状态|
|
|
104
|
+
| `/resume` | 查看当前会话最近上下文|
|
|
105
|
+
| `/stop` | 终止当前任务|
|
|
106
|
+
| `/timeout [N\|off\|default]` | 查看或设置当前会话运行超时|
|
|
107
|
+
| `/concurrency [N\|default]` | 查看或设置当前 scope 并行任务数(默认 2)|
|
|
108
|
+
| `/role list`、`/role show <id>` | 查看角色列表 / 详情|
|
|
109
|
+
| `/role set <id>`、`/role clear` | 为当前 scope 绑定 / 解除角色|
|
|
110
|
+
| `/role save <id> <name> [--persona 文案] [--model <id>] [--tools <csv>] [--rules 文案]` | 创建 / 更新角色(管理员)|
|
|
111
|
+
| `/role remove <id>` | 删除角色(管理员)|
|
|
112
|
+
| `/notify <scope\|chatId> <text>` | 跨会话发送通知(管理员)|
|
|
113
|
+
| `/notify list` | 查看 bridge 已注册的 scope|
|
|
114
|
+
| `/retention [N\|default]` | 查看或设置保留消息条数(超出自动归档)|
|
|
115
|
+
| `/archive [note]`、`/archive list [N]`、`/archive clean` | 手动归档 / 查看 / 清理会话记录|
|
|
116
|
+
| `/density [compact\|standard\|detailed]` | 查看或设置卡片密度|
|
|
117
|
+
| `/model` | 查看当前模型、dsh 默认模型与可用模型列表|
|
|
118
|
+
| `/model use <id>` | 热切换当前会话模型(下一轮生效,无需重启)|
|
|
119
|
+
| `/model default <id>` | 写入 dsh 默认模型 `agent-default-model`(管理员)|
|
|
120
|
+
| `/model add\|remove <provider> <modelId>` | 添加 / 删除 provider 的模型(管理员)|
|
|
121
|
+
| `/providers` | 查看 dsh 已配置 providers、模型与凭据状态|
|
|
122
|
+
| `/provider add\|update\|remove <id>` | 管理 provider(管理员;deepseek-official 与自定义 pi-ai)|
|
|
123
|
+
| `/key set\|remove\|list <引用名>` | 管理 dsh 凭据(set / remove 需管理员)|
|
|
124
|
+
| `/ask <问题>` | 发送问答卡,回答写入会话上下文|
|
|
125
|
+
| `/invite user\|admin\|group <id>`、`/invite list`、`/invite remove user\|group <id>` | 管理访问白名单|
|
|
126
|
+
| `/help` | 查看帮助|
|
|
195
127
|
|
|
196
128
|
飞书消息中的图片会下载到本地 media 目录并传给 dsh;文本类文件会读取内容并注入任务上下文。
|
|
197
129
|
|
|
198
|
-
Images in Feishu messages are downloaded to the local media directory and passed to dsh; text files are read and their content is injected into the task context.
|
|
199
|
-
|
|
200
130
|
**`/newg <群名>`**:通过飞书 API 自动新建一个私密群、把发送者拉入群,并回复群链接——在新群里发消息即为新 scope / 新会话,当前会话不受影响。需要应用具备 `im:chat` 与 `im:chat.members:write_only` 权限(在开发者后台「权限管理」申请)。
|
|
201
131
|
|
|
202
|
-
**`/newg <group name>`**: auto-creates a private group via the Feishu API, invites the sender, and replies with a group link — chatting in the new group starts a fresh scope/session while the current session is untouched. Requires the `im:chat` and `im:chat.members:write_only` scopes (apply in the developer console).
|
|
203
|
-
|
|
204
132
|
同一 scope(私聊 / 群聊 / 话题)默认允许 **2 个任务并行**(`DSH_LARK_SCOPE_CONCURRENCY` 或
|
|
205
133
|
`/concurrency` 调整):连续发来的多条消息会以独立 run 并行推进,每个 run 使用独立的 dsh
|
|
206
134
|
session 与独立 runId,`/status` 展示全部运行中的 run,`/stop` 一次性终止全部任务。
|
|
207
135
|
|
|
208
|
-
Each scope (DM / group / topic) runs up to **2 tasks in parallel** by default (adjust with
|
|
209
|
-
`DSH_LARK_SCOPE_CONCURRENCY` or `/concurrency`): successive messages become independent runs,
|
|
210
|
-
each with its own dsh session and run id. `/status` lists every active run and `/stop` interrupts
|
|
211
|
-
them all.
|
|
212
|
-
|
|
213
136
|
**多角色 Agent**:管理员用 `/role save <id> <name> --persona <文案> [--model <id>] [--tools
|
|
214
137
|
<csv>] [--rules <文案>]` 定义 PM / 开发 / 文档等角色(persona、模型偏好、工具指引、角色规则),
|
|
215
138
|
`/role set <id>` 把角色绑定到当前 scope:下一轮起该 scope 的每个 run 都携带角色 persona 与
|
|
216
139
|
规则,并优先使用角色模型(角色模型 < 每会话 `/model use`)。角色定义持久化在
|
|
217
140
|
`~/.dsh-lark/profiles/<profile>/roles.json`。
|
|
218
141
|
|
|
219
|
-
**Multi-role agents**: admins define roles (PM / dev / docs / …) with `/role save <id> <name>
|
|
220
|
-
--persona <text> [--model <id>] [--tools <csv>] [--rules <text>]` — persona, model preference,
|
|
221
|
-
tool guidance and role rules — then bind one to the current scope with `/role set <id>`. Every
|
|
222
|
-
run in that scope carries the role instructions, and the role model wins below the per-session
|
|
223
|
-
`/model use` override. Role definitions persist in
|
|
224
|
-
`~/.dsh-lark/profiles/<profile>/roles.json`.
|
|
225
|
-
|
|
226
142
|
**出站 @ 提及与跨会话通知**:bridge 出站契约支持 `mentions`(@ 提及)与跨 chat/thread 发送;
|
|
227
143
|
`/notify <scope|chatId> <text>` 可向其他会话推送汇报(管理员)。agent 侧还内置 `lark_notify`
|
|
228
144
|
dsh 工具(SDK / ACP 两种 runtime 均可装配):agent 完成任务后可主动向其他群 / 话题发消息并
|
|
@@ -233,20 +149,7 @@ dsh 工具(SDK / ACP 两种 runtime 均可装配):agent 完成任务后可
|
|
|
233
149
|
你回答后任务自动继续——无需额外命令。问答卡等待期间任务不会被运行超时打断。
|
|
234
150
|
(与 `/ask` 的“你主动发结构化问题”方向相反:这是 agent 主动来问你。)
|
|
235
151
|
|
|
236
|
-
|
|
237
|
-
cross-chat/thread sends; `/notify <scope|chatId> <text>` pushes a report to another session
|
|
238
|
-
(admin). The agent also gets a built-in `lark_notify` dsh tool (wired into both SDK and ACP
|
|
239
|
-
runtime profiles): after a task finishes it can push messages to other groups/topics and @mention
|
|
240
|
-
members. The bridge listens on 127.0.0.1 with a random per-boot token — nothing is exposed to the
|
|
241
|
-
public network.
|
|
242
|
-
|
|
243
|
-
**Mid-task questions (question cards)**: when the agent needs a decision, confirmation, or
|
|
244
|
-
missing information, it proactively sends a **question card** to the current chat via the
|
|
245
|
-
`lark_ask_user` tool (single choice / multi choice / free text) and resumes automatically once
|
|
246
|
-
you answer — no extra command needed. The run-timeout watchdog pauses while a card is waiting.
|
|
247
|
-
(This is the opposite direction of `/ask`, which is you asking the agent.)
|
|
248
|
-
|
|
249
|
-
**安全网守护(Safe-mode guardian)**:默认随 `setup` 一起安装的、独立于 dsh 进程、系统级常驻的
|
|
152
|
+
**安全网守护**:默认随 `setup` 一起安装的、独立于 dsh 进程、系统级常驻的
|
|
250
153
|
最小守护进程(Linux systemd user unit / macOS LaunchAgent / Windows 启动项)。dsh 正常运行时守护保持静默;
|
|
251
154
|
一旦 dsh 进程下线或无法 boot(例如某个第三方插件破坏了整个 profile 组合),守护自动接管飞书
|
|
252
155
|
通道,用户无需接触命令行即可发送控制信号自救:
|
|
@@ -272,45 +175,11 @@ dsh-lark-bot guardian install --dsh-profile dsh-lark
|
|
|
272
175
|
```
|
|
273
176
|
不需要守护时,安装时加 `--no-guardian` 跳过;单独卸载用 `dsh-lark-bot guardian uninstall`。
|
|
274
177
|
|
|
275
|
-
|
|
276
|
-
`setup`**, independent of the dsh process. While dsh runs, the guardian stays silent; once dsh goes down or
|
|
277
|
-
fails to boot (e.g. a third-party plugin breaks the whole profile composition), the guardian
|
|
278
|
-
takes over the Feishu channel so you can self-heal without touching the command line:
|
|
279
|
-
|
|
280
|
-
- `/safemode`: enter **core-only safe mode** — the guardian provisions
|
|
281
|
-
`~/.dsh/profiles/<profile>-safe` with only the two official core bundles (`dsh-base` +
|
|
282
|
-
`dsh-headless`, **no third-party plugins**) and proxies a restricted conversation to that core
|
|
283
|
-
dsh so you can locate / fix / disable the offending plugin. Safe mode prefers the official
|
|
284
|
-
**SDK streaming engine** (real-time reasoning / tool calls / web search / typewriter text on the
|
|
285
|
-
same streaming card as normal mode) and falls back to headless with a live activity card
|
|
286
|
-
("thinking / elapsed Ns / no response Ns") when the SDK runtime cannot be provisioned;
|
|
287
|
-
- `/safemode plugins`: list the plugins installed into the broken profile;
|
|
288
|
-
- `/safemode status`: show guardian / dsh / safe-mode state;
|
|
289
|
-
- `/safemode stop`: interrupt the currently running safe-mode task (or use the ⏹ button on the card);
|
|
290
|
-
- `/safemode exit`: leave safe mode — the guardian relaunches the full profile and hands the
|
|
291
|
-
Feishu channel back;
|
|
292
|
-
|
|
293
|
-
Safe-mode tasks are bounded by an **idle timeout**
|
|
294
|
-
(`DSH_LARK_GUARDIAN_SAFE_TIMEOUT_MS`, default 10 minutes: a task is stopped only after it has
|
|
295
|
-
been silent for the whole window, so active streaming work is never cut short); timeouts and failures always surface a
|
|
296
|
-
clear terminal state on the card instead of hanging silently. No command line is needed for the
|
|
297
|
-
whole rescue flow; once dsh is back, the guardian releases the channel automatically. Install:
|
|
298
|
-
|
|
299
|
-
```bash
|
|
300
|
-
# Installed by default with setup (no extra flag); can also be installed / refreshed later:
|
|
301
|
-
dsh-lark-bot guardian install --dsh-profile dsh-lark
|
|
302
|
-
```
|
|
303
|
-
Pass `--no-guardian` to setup to skip it; remove it later with `dsh-lark-bot guardian uninstall`.
|
|
304
|
-
|
|
305
|
-
### 模型 / Provider / 凭据管理 | Models / Providers / Credentials
|
|
178
|
+
### 模型 / Provider / 凭据管理
|
|
306
179
|
|
|
307
180
|
模型与 provider 的配置以 dsh 官方方式持久化(与 dsh Web **Settings → Models** 页面完全相同的
|
|
308
181
|
存储协议),改动在下一个请求生效,无需重启 bot:
|
|
309
182
|
|
|
310
|
-
Model and provider configuration is persisted the official dsh way (the exact storage protocol
|
|
311
|
-
used by the dsh Web **Settings → Models** page); changes take effect on the next request without
|
|
312
|
-
restarting the bot:
|
|
313
|
-
|
|
314
183
|
- `/model use <id>`:按会话热切换模型,下一轮消息即用新模型。
|
|
315
184
|
- `/model default <id>`:写入 dsh 的 `agent-default-model`,作为新会话的默认模型。
|
|
316
185
|
- `/providers`:展示 dsh 已配置的 provider、模型与凭据状态(DeepSeek 官方 + 自定义 pi-ai)。
|
|
@@ -320,30 +189,15 @@ restarting the bot:
|
|
|
320
189
|
- `/key set|remove|list`:读写 `~/.dsh/.credentials.yaml`(0600)。settings 只保存 `apiKeyEnv`
|
|
321
190
|
引用,字面密钥不进入 settings 或聊天记录。
|
|
322
191
|
|
|
323
|
-
- `/model use <id>`: hot-switch the model for this session; the next message uses it.
|
|
324
|
-
- `/model default <id>`: write the dsh `agent-default-model` as the default for new sessions.
|
|
325
|
-
- `/providers`: show configured providers, models and credential status (official DeepSeek + custom pi-ai).
|
|
326
|
-
- `/provider add|update|remove`: manage custom providers (`llm-pi-ai`) or `deepseek-official`;
|
|
327
|
-
a custom provider needs `--api` (`openai-completions` / `openai-responses` / `anthropic-messages`),
|
|
328
|
-
`--base-url` and at least one `--model`, matching the official schema.
|
|
329
|
-
- `/key set|remove|list`: read / write `~/.dsh/.credentials.yaml` (0600). Settings keep only
|
|
330
|
-
`apiKeyEnv` references; literal keys never enter settings or chat history.
|
|
331
|
-
|
|
332
192
|
安全提醒:在飞书会话里输入密钥会对该会话的可见成员暴露密钥,建议仅在私聊中使用,或优先用
|
|
333
193
|
`--api-key-env` 引用已配置的环境变量 / dsh Web 页面录入。bot 不会在任何回复中回显密钥值。
|
|
334
194
|
|
|
335
|
-
|
|
336
|
-
chat; prefer private chats, `--api-key-env` references to existing environment variables, or the
|
|
337
|
-
dsh Web UI. The bot never echoes key values in any reply.
|
|
338
|
-
|
|
339
|
-
## 安装与卸载 | Install & Uninstall
|
|
195
|
+
## 安装与卸载
|
|
340
196
|
|
|
341
|
-
### 安装
|
|
197
|
+
### 安装
|
|
342
198
|
|
|
343
199
|
唯一安装方式(标准 dsh profile bundle):
|
|
344
200
|
|
|
345
|
-
The only install path (a standard dsh profile bundle):
|
|
346
|
-
|
|
347
201
|
```bash
|
|
348
202
|
npx dsh-lark-bot@latest setup --profile dsh-lark
|
|
349
203
|
```
|
|
@@ -352,12 +206,7 @@ npx dsh-lark-bot@latest setup --profile dsh-lark
|
|
|
352
206
|
`dsh plugin --profile dsh-lark add dsh-lark-bot`,并**默认同时安装「安全网守护」**
|
|
353
207
|
(见「安全网守护」一节;不需要时加 `--no-guardian` 跳过)。已安装时重复执行即升级到最新版。
|
|
354
208
|
|
|
355
|
-
|
|
356
|
-
`dsh plugin --profile dsh-lark add dsh-lark-bot`. It **also installs the safety-net guardian by
|
|
357
|
-
default** (see "Safety-net guardian" above; pass `--no-guardian` to skip). Re-running it upgrades
|
|
358
|
-
to the latest version.
|
|
359
|
-
|
|
360
|
-
### 升级 | Upgrade
|
|
209
|
+
### 升级
|
|
361
210
|
|
|
362
211
|
**推荐:一行命令彻底升级(v0.12.0+ 新增,issue #10)**
|
|
363
212
|
|
|
@@ -386,92 +235,80 @@ npx dsh-lark-bot@latest upgrade --profile dsh-lark --yes
|
|
|
386
235
|
- CLI 工具(可选):`npm i -g dsh-lark-bot@latest`;使用 `npx` 时无需全局安装。
|
|
387
236
|
- 升级后重启 profile(未用 `--restart` 时):`dsh --profile dsh-lark`。
|
|
388
237
|
|
|
389
|
-
|
|
238
|
+
### 禁用
|
|
239
|
+
|
|
240
|
+
保持插件加载但停止桥接引擎:启动 profile 前导出 `DSH_LARK_DISABLED=1`。彻底移除见下节。
|
|
241
|
+
|
|
242
|
+
### 卸载
|
|
390
243
|
|
|
391
244
|
```bash
|
|
392
|
-
|
|
245
|
+
dsh plugin --profile dsh-lark remove dsh-lark-bot
|
|
393
246
|
```
|
|
394
247
|
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
service**, then runs `doctor` verification. Running instances are handled safely:
|
|
248
|
+
卸载后 profile 不再加载本插件。本地状态(配置 / 会话 / 归档 / 角色)保留在 `~/.dsh-lark`;
|
|
249
|
+
如需清除,先备份再删除该目录。
|
|
398
250
|
|
|
399
|
-
|
|
400
|
-
(config / sessions / credentials are untouched);
|
|
401
|
-
- `--restart`: also restarts the guardian service and (managed/detached) dsh profile processes;
|
|
402
|
-
- `--check`: report versions and running state only, no changes;
|
|
403
|
-
- `--rollback`: reinstall the version recorded before the last upgrade
|
|
404
|
-
(`~/.dsh-lark/upgrade-state.json`);
|
|
405
|
-
- `--force`: reinstall the running version when npm is unreachable (offline);
|
|
406
|
-
- `--no-guardian`: skip the guardian upgrade.
|
|
251
|
+
更详细的安装、状态目录、日志和排障说明见 [`docs/QUICK_START.md`](docs/QUICK_START.md)。
|
|
407
252
|
|
|
408
|
-
|
|
409
|
-
Alternatives:
|
|
253
|
+
---
|
|
410
254
|
|
|
411
|
-
|
|
412
|
-
npm release.
|
|
413
|
-
- Safety-net guardian: installed / upgraded together with `upgrade` / `setup` (idempotent), or
|
|
414
|
-
standalone via `dsh-lark-bot guardian install`.
|
|
415
|
-
- CLI tool (optional): `npm i -g dsh-lark-bot@latest`; not needed when using `npx`.
|
|
416
|
-
- Restart the profile after upgrading (when not using `--restart`): `dsh --profile dsh-lark`.
|
|
255
|
+
## FAQ(典型用例与常见问题)
|
|
417
256
|
|
|
418
|
-
###
|
|
257
|
+
### 典型用例
|
|
419
258
|
|
|
420
|
-
|
|
259
|
+
**Q: 出门在外,想用手机指挥本机的 DeepSeek Harness?**
|
|
421
260
|
|
|
422
|
-
|
|
423
|
-
the profile. For full removal see the next subsection.
|
|
261
|
+
**A:** 可以。安装并扫码绑定后,用飞书手机 App 给机器人发消息即可指挥本机 dsh coding agent 读代码、跑命令、完成任务;任务完成还能跨会话主动推送并 @ 你。安装只需:`npx dsh-lark-bot@latest setup --profile dsh-lark` → `dsh --profile dsh-lark` → 飞书扫码 → 开聊。
|
|
424
262
|
|
|
425
|
-
|
|
263
|
+
**Q: 多个项目 / 多人协作,怎么隔离与分工?**
|
|
426
264
|
|
|
427
|
-
|
|
428
|
-
dsh plugin --profile dsh-lark remove dsh-lark-bot
|
|
429
|
-
```
|
|
265
|
+
**A:** 每个会话自动落在独立的 git worktree(`~/.dsh-lark/profiles/<profile>/worktrees/<scope>/`),项目级 `AGENTS.md` 规则自动注入,多项目互不干扰;管理员用 `/role` 定义 PM / 开发 / 文档等角色并绑定到群,用 `/invite` 管理访问白名单;同一群内默认 2 个任务并行(`/concurrency` 调整),`/archive` + `/retention` 控制会话归档与保留。
|
|
430
266
|
|
|
431
|
-
|
|
432
|
-
如需清除,先备份再删除该目录。
|
|
267
|
+
**Q: dsh 崩溃 / 掉线后,飞书机器人还能用吗?**
|
|
433
268
|
|
|
434
|
-
|
|
435
|
-
stays in `~/.dsh-lark`; back it up before deleting it.
|
|
269
|
+
**A:** 能。`setup` 默认安装独立于 dsh 进程的「安全网守护」(systemd / LaunchAgent / Windows 启动项)。dsh 崩溃或无法启动时,守护自动接管飞书通道并先尝试自动重启完整 profile;仍失败时你直接发 `/safemode` 进入仅核心安全模式(官方核心 bundle,不加载任何第三方插件),在聊天里定位 / 修复问题,`/safemode exit` 重启完整 profile 并交还通道。全程不需要命令行。
|
|
436
270
|
|
|
437
|
-
|
|
271
|
+
### 常见问题
|
|
272
|
+
|
|
273
|
+
**Q: DeepSeek Harness 怎么接入飞书?**
|
|
274
|
+
|
|
275
|
+
**A:** 安装 Node.js ≥ 22 与 DeepSeek Harness(已配置 `DEEPSEEK_API_KEY`),执行 `npx dsh-lark-bot@latest setup --profile dsh-lark`,再 `dsh --profile dsh-lark` 启动并用飞书 App 扫描终端二维码绑定 PersonalAgent 应用。私聊直接发消息,群聊 / 话题里 `@bot`。
|
|
276
|
+
|
|
277
|
+
**Q: 需要公网 IP、域名或服务器吗?**
|
|
278
|
+
|
|
279
|
+
**A:** 不需要。飞书通道使用 WebSocket 长连接(出站连接),本机在 NAT 后面也能用,免公网服务器、免域名、免内网穿透。
|
|
280
|
+
|
|
281
|
+
**Q: dsh-lark-bot 和其他 DeepSeek Harness 飞书插件(如 harness-lark)有什么区别?**
|
|
282
|
+
|
|
283
|
+
**A:** 功能组合最全:安全网守护(dsh 崩溃后飞书仍叫得应)、多角色 Agent、并行多任务、会话归档、跨会话主动通知、对话内模型 / 密钥管理六项合为一体;安装上是标准 dsh profile bundle,`npx dsh-lark-bot@latest setup` 一条命令装进 dsh profile,无需独立 Docker / 后台服务。
|
|
284
|
+
|
|
285
|
+
**Q: 项目从哪下载?会不会有假冒版本?**
|
|
438
286
|
|
|
439
|
-
|
|
440
|
-
logs and troubleshooting.
|
|
287
|
+
**A:** 唯一官方仓库是 [github.com/PlutoKeating/dsh-lark-bot](https://github.com/PlutoKeating/dsh-lark-bot),唯一官方 npm 包是 `dsh-lark-bot` / `dsh-feishu-bot`(维护者 `plutokeating`)。本项目从不提供 .exe 或“下载即运行”的安装包;任何以项目名义分发 exe 的仓库或页面都是假冒来源,请勿运行(详见文末「假冒仓库警告」)。
|
|
441
288
|
|
|
442
289
|
---
|
|
443
290
|
|
|
444
|
-
## 关键词
|
|
291
|
+
## 关键词
|
|
445
292
|
|
|
446
|
-
`dsh` · `deepseek` · `deepseek harness` · `feishu` · `lark` · `bridge` · `bot`
|
|
293
|
+
`dsh` · `deepseek` · `deepseek harness` · `feishu` · `lark` · `bridge` · `bot` ·
|
|
294
|
+
`chatbot` · `messaging` · `qrcode` · `typescript` · `feishu-bot` · `lark-bot` ·
|
|
295
|
+
`dsh-plugin` · `deepseek-harness` · `im-bridge` · `ai-agent` · `workspace` · `self-healing`
|
|
447
296
|
|
|
448
|
-
## 这是什么
|
|
297
|
+
## 这是什么
|
|
449
298
|
|
|
450
299
|
**dsh-lark-bot** 是一个轻量桥接工具,把本机的 DeepSeek Harness(`dsh`)接入飞书 / Lark,复刻当年 OpenCode Telegram Bot / MiMoCode Telegram Bot 的体验——在 IM 里与 coding agent 对话、收流式卡片、审阅 diff,并在此基础上叠加**完整的项目工作区管理**。
|
|
451
300
|
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
**适合谁 / Who it is for**:在飞书 / Lark(私聊、群聊、话题)里指挥本机 dsh coding agent 的
|
|
301
|
+
**适合谁**:在飞书 / Lark(私聊、群聊、话题)里指挥本机 dsh coding agent 的
|
|
455
302
|
开发者与团队,尤其是需要多项目隔离、角色分工、并行任务与会话归档的协作场景。
|
|
456
303
|
|
|
457
|
-
|
|
458
|
-
topics) — especially those needing multi-project isolation, role-based collaboration, parallel
|
|
459
|
-
tasks and session archival.
|
|
460
|
-
|
|
461
|
-
## 目标 | Goals
|
|
304
|
+
## 目标
|
|
462
305
|
|
|
463
306
|
- **一条命令安装部署**:`npx dsh-lark-bot@latest setup --profile dsh-lark` 装进 dsh profile,
|
|
464
307
|
随后 `dsh --profile dsh-lark` 启动并扫码,桥接引擎作为标准插件在 dsh 进程内运行。
|
|
465
308
|
- **飞书原生体验**:流式卡片、交互按钮、图片 / 文件,全程双语(文档评论为规划中能力)。
|
|
466
309
|
- **完整工作区管理**:多项目隔离、git worktree、项目级规则注入、上下文持久化。
|
|
467
310
|
|
|
468
|
-
|
|
469
|
-
`dsh --profile dsh-lark` and scan once — the bridge engine runs as a standard plugin inside
|
|
470
|
-
the dsh process.
|
|
471
|
-
- **Native Feishu experience**: streaming cards, interactive buttons, images / files, doc comments.
|
|
472
|
-
- **Full workspace management**: multi-project isolation, git worktrees, per-project rules, persistent context.
|
|
473
|
-
|
|
474
|
-
## 兼容性 | Compatibility
|
|
311
|
+
## 兼容性
|
|
475
312
|
|
|
476
313
|
- **DeepSeek Harness(`dsh`)**:已验证 **dsh 0.1.0-rc.6**(最后验证 2026-08-15:SDK JSON-RPC / ACP runtime 握手 +
|
|
477
314
|
真实任务流式验证),通过官方 `@deepseek-ai/dsh-sdk-client` / `@deepseek-ai/dsh-acp` 接入;
|
|
@@ -485,23 +322,7 @@ tasks and session archival.
|
|
|
485
322
|
`/api/events.mux`,网页端成为唯一写者,从根上消除多写者会话损坏)。首次启动自动在
|
|
486
323
|
`~/.dsh/profiles/dsh-lark-sdk`(或 `dsh-lark-acp`)创建 runtime profile。
|
|
487
324
|
|
|
488
|
-
|
|
489
|
-
runtime handshake + real streaming task verification), connected through the official
|
|
490
|
-
`@deepseek-ai/dsh-sdk-client` / `@deepseek-ai/dsh-acp`; see
|
|
491
|
-
[`docs/COMPATIBILITY.md`](docs/COMPATIBILITY.md) for pinned versions, the upgrade policy and
|
|
492
|
-
automated probing, and [`docs/adapter-notes.md`](docs/adapter-notes.md) for adapter details.
|
|
493
|
-
- **Runtime**: Node.js ≥ 22.19 (see `engines` in `package.json`).
|
|
494
|
-
- **Platform**: Linux / macOS / Windows (Feishu outbound WebSocket long connection; no public
|
|
495
|
-
server, domain or tunneling required).
|
|
496
|
-
- The default adapter is the official **`@deepseek-ai/dsh-sdk-client`** (SDK JSON-RPC runtime with
|
|
497
|
-
native session continuation and token-level streaming events); `DSH_LARK_ADAPTER=acp` switches
|
|
498
|
-
to the official **ACP server** (approval cards); `headless` keeps the legacy subprocess
|
|
499
|
-
fallback; `DSH_LARK_ADAPTER=web` drives the **local dsh web agent** (`session.prompt` +
|
|
500
|
-
`/api/events.mux` — the web agent becomes the single writer, eliminating multi-writer
|
|
501
|
-
session-log corruption at the root). On first start the bot creates the runtime profile at
|
|
502
|
-
`~/.dsh/profiles/dsh-lark-sdk` (or `dsh-lark-acp`).
|
|
503
|
-
|
|
504
|
-
## 已知限制 | Known limitations
|
|
325
|
+
## 已知限制
|
|
505
326
|
|
|
506
327
|
- ACP 模式会话每次全新(上游限制,无续跑);SDK 协议暂无 mid-turn cancel,`/stop` 会关闭
|
|
507
328
|
对应 runtime 并自动重建。
|
|
@@ -514,19 +335,7 @@ tasks and session archival.
|
|
|
514
335
|
`ERR_PNPM_IGNORED_BUILDS`,按官方指引在 profile 的 `pnpm-workspace.yaml` 加
|
|
515
336
|
`allowBuilds: { protobufjs: true }` 后重试。
|
|
516
337
|
|
|
517
|
-
|
|
518
|
-
so `/stop` closes and recreates the runtime.
|
|
519
|
-
- The engine runs in-process as a dsh plugin; agent execution uses the official dsh SDK runtime
|
|
520
|
-
subprocess — a deliberate nested-runtime design for per-workspace runtime pools and parallel
|
|
521
|
-
runs. The one process-level exception is the optional safety-net guardian — a minimal
|
|
522
|
-
resident process independent of dsh / Cordis that only takes over the Feishu channel after
|
|
523
|
-
dsh goes down and stays silent otherwise.
|
|
524
|
-
- Feishu doc comments and rich-text replies are planned, not yet implemented.
|
|
525
|
-
- pnpm ≥ 10 build policy is handled by `setup`; when installing manually and
|
|
526
|
-
`ERR_PNPM_IGNORED_BUILDS` appears, add `allowBuilds: { protobufjs: true }` to the profile's
|
|
527
|
-
`pnpm-workspace.yaml` and retry.
|
|
528
|
-
|
|
529
|
-
## 配置 | Configuration
|
|
338
|
+
## 配置
|
|
530
339
|
|
|
531
340
|
- 本地配置:`~/.dsh-lark/config.json`
|
|
532
341
|
- 状态根目录可用 `DSH_LARK_HOME` 覆盖
|
|
@@ -535,81 +344,58 @@ tasks and session archival.
|
|
|
535
344
|
- 敏感项:`DSH_LARK_APP_SECRET`、`DEEPSEEK_API_KEY` 等凭据只保存在本机配置 / 环境中,日志与
|
|
536
345
|
卡片自动脱敏,仓库只提交 `.env.example` 模板。
|
|
537
346
|
|
|
538
|
-
- Local config: `~/.dsh-lark/config.json`
|
|
539
|
-
- The state root can be overridden with `DSH_LARK_HOME`
|
|
540
|
-
- Environment variables use the `DSH_LARK_*` prefix
|
|
541
|
-
- Template: [`.env.example`](.env.example)
|
|
542
|
-
- Sensitive values: credentials (`DSH_LARK_APP_SECRET`, `DEEPSEEK_API_KEY`, …) stay in local
|
|
543
|
-
config/env only; logs and cards are redacted; only `.env.example` is committed.
|
|
544
|
-
|
|
545
347
|
会话运行在 Git 仓库中时,会自动在 `~/.dsh-lark/profiles/<profile>/worktrees/<scope>/` 创建隔离 worktree,并复制项目级 `AGENTS.md`。
|
|
546
348
|
|
|
547
|
-
When the session runs inside a Git repository, an isolated worktree is created at
|
|
548
|
-
`~/.dsh-lark/profiles/<profile>/worktrees/<scope>/` and a project-level `AGENTS.md` is copied in.
|
|
549
|
-
|
|
550
349
|
每个飞书 scope 默认保存最近 40 条对话消息(可用 `/retention` 或 `DSH_LARK_RETENTION_MSGS`
|
|
551
350
|
调整);超出保留窗口的消息自动归档到 `~/.dsh-lark/profiles/<profile>/archives/`(Markdown +
|
|
552
351
|
JSONL,目录本身是 Git 仓库,每次归档独立 commit),支持 `/archive` 手动归档与保留策略清理。
|
|
553
352
|
SDK 模式下 dsh 原生 session 续跑,headless 模式则把历史注入下一次 prompt 实现近似记忆。
|
|
554
353
|
|
|
555
|
-
Each Feishu scope keeps the last 40 conversation messages by default (adjustable with
|
|
556
|
-
`/retention` or `DSH_LARK_RETENTION_MSGS`); messages beyond the retention window are archived to
|
|
557
|
-
`~/.dsh-lark/profiles/<profile>/archives/` (Markdown + JSONL inside a Git repository, one commit
|
|
558
|
-
per archive), and `/archive` exports the full session on demand. The SDK mode continues the native
|
|
559
|
-
dsh session, while headless mode approximates memory by injecting history into the next prompt.
|
|
560
|
-
|
|
561
354
|
当前核心环境变量:
|
|
562
355
|
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
| 变量 Variable | 默认值 Default | 说明 Description |
|
|
356
|
+
| 变量 | 默认值 | 说明 |
|
|
566
357
|
| :--- | :--- | :--- |
|
|
567
|
-
| `DSH_LARK_HOME` | `~/.dsh-lark` |
|
|
568
|
-
| `DSH_LARK_TENANT` | `feishu` | `feishu` 或 `lark
|
|
569
|
-
| `DSH_LARK_WORKSPACE` | 未设置 |
|
|
570
|
-
| `DSH_LARK_DSH_COMMAND` | `自动发现` | dsh
|
|
571
|
-
| `DSH_LARK_DSH_ARGS` | `自动发现` | dsh
|
|
572
|
-
| `DSH_LARK_ADAPTER` | `sdk` | `sdk`(默认)/ `acp`(审批)/ `headless`(legacy)/ `web`(本地 dsh web agent
|
|
573
|
-
| `DSH_LARK_PROVIDER` | `deepseek-official` | 模型 provider
|
|
574
|
-
| `DSH_LARK_MODEL` | `deepseek-v4-flash` |
|
|
575
|
-
| `DSH_LARK_MAX_TOKENS` | 未设置 | SDK agent 每请求输出 token
|
|
576
|
-
| `DSH_LARK_WEB_URL` | `http://127.0.0.1:3080` | `web` 适配器:本地 dsh web agent 的 base URL
|
|
577
|
-
| `DSH_LARK_WEB_PUSH` | `true` | `web` 适配器:网页端回合完成时推送到飞书并自动切换会话映射(`0`
|
|
578
|
-
| `DSH_LARK_ACCESS_DEFAULT_DENY` | `false` |
|
|
579
|
-
| `DSH_LARK_EVENT_FRESHNESS_MS` | `600000` | 过期消息拒绝窗口(0
|
|
580
|
-
| `DSH_LARK_RUN_TIMEOUT_MS` | `300000` |
|
|
581
|
-
| `DSH_LARK_STOP_GRACE_MS` | `5000` | SIGTERM 后等待优雅退出再 SIGKILL
|
|
582
|
-
| `DSH_LARK_SCOPE_CONCURRENCY` | `2` | 每个 scope 的并行任务数(1
|
|
583
|
-
| `DSH_LARK_RETENTION_MSGS` | `40` | 每个 scope 保留的消息条数(0
|
|
584
|
-
| `DSH_LARK_ARCHIVE_MAX` | `50` | 每个 scope 最多保留的归档数(0
|
|
585
|
-
| `DSH_LARK_ARCHIVE_MAX_AGE_DAYS` | `90` | 归档最大保留天数(0
|
|
586
|
-
| `DSH_LARK_HEARTBEAT_MS` | `5000` |
|
|
587
|
-
| `DSH_LARK_GUARDIAN_DISABLED` | `false` | `1`
|
|
588
|
-
| `DSH_LARK_GUARDIAN_PROFILE` | `dsh-lark` | 守护监视 / 重启的 dsh profile
|
|
589
|
-
| `DSH_LARK_GUARDIAN_BRIDGE_PROFILE` | `default` | 提供飞书凭据与白名单的桥接状态 profile
|
|
590
|
-
| `DSH_LARK_GUARDIAN_POLL_MS` | `2000` |
|
|
591
|
-
| `DSH_LARK_GUARDIAN_STALE_MS` | `15000` | 心跳超时阈值,超过且无 dsh
|
|
592
|
-
| `DSH_LARK_GUARDIAN_ENGINE_DEAD_MS` | `120000` | dsh
|
|
593
|
-
| `DSH_LARK_GUARDIAN_SAFE_ADAPTER` | `auto` | 安全模式引擎:`auto` 优先 SDK 流式、失败回退 headless;`sdk` 强制 SDK;`headless`
|
|
594
|
-
| `DSH_LARK_GUARDIAN_SAFE_TIMEOUT_MS` | `600000` |
|
|
595
|
-
| `DSH_LARK_GUARDIAN_CARD_DENSITY` | `detailed` | 安全模式任务卡片密度(compact / standard / detailed
|
|
596
|
-
| `DSH_LARK_UPGRADE_REGISTRY` | `https://registry.npmjs.org` | `upgrade` 探测最新版本的 npm registry
|
|
597
|
-
| `DSH_LARK_UPGRADE_CHECK` | `1` | `doctor` / `/version` 是否探测 npm 最新版本(`0` 关闭,best-effort
|
|
598
|
-
| `DSH_LARK_UPGRADE_CHECK_INTERVAL_MS` | `21600000` | 桥接引擎检查新版本的间隔(`0` 关闭,默认 6h
|
|
599
|
-
| `DSH_LARK_UPGRADE_NOTIFY` | `false` | `true` 时发现新版本向指定 chat
|
|
600
|
-
| `DSH_LARK_UPGRADE_NOTIFY_CHAT` | — | 接收更新通知的 chat id(配合 `DSH_LARK_UPGRADE_NOTIFY=true
|
|
358
|
+
| `DSH_LARK_HOME` | `~/.dsh-lark` | 本地状态根目录|
|
|
359
|
+
| `DSH_LARK_TENANT` | `feishu` | `feishu` 或 `lark`|
|
|
360
|
+
| `DSH_LARK_WORKSPACE` | 未设置 | 新会话默认工作目录|
|
|
361
|
+
| `DSH_LARK_DSH_COMMAND` | `自动发现` | dsh 启动命令;通常无需设置|
|
|
362
|
+
| `DSH_LARK_DSH_ARGS` | `自动发现` | dsh 启动参数,逗号分隔;通常无需设置|
|
|
363
|
+
| `DSH_LARK_ADAPTER` | `sdk` | `sdk`(默认)/ `acp`(审批)/ `headless`(legacy)/ `web`(本地 dsh web agent,单写者)|
|
|
364
|
+
| `DSH_LARK_PROVIDER` | `deepseek-official` | 模型 provider|
|
|
365
|
+
| `DSH_LARK_MODEL` | `deepseek-v4-flash` | 默认模型|
|
|
366
|
+
| `DSH_LARK_MAX_TOKENS` | 未设置 | SDK agent 每请求输出 token 上限|
|
|
367
|
+
| `DSH_LARK_WEB_URL` | `http://127.0.0.1:3080` | `web` 适配器:本地 dsh web agent 的 base URL|
|
|
368
|
+
| `DSH_LARK_WEB_PUSH` | `true` | `web` 适配器:网页端回合完成时推送到飞书并自动切换会话映射(`0` 关闭)|
|
|
369
|
+
| `DSH_LARK_ACCESS_DEFAULT_DENY` | `false` | 无白名单时拒绝私聊|
|
|
370
|
+
| `DSH_LARK_EVENT_FRESHNESS_MS` | `600000` | 过期消息拒绝窗口(0 关闭)|
|
|
371
|
+
| `DSH_LARK_RUN_TIMEOUT_MS` | `300000` | 单次运行空闲超时:持续无活动事件才终止(活跃任务不会被误杀)|
|
|
372
|
+
| `DSH_LARK_STOP_GRACE_MS` | `5000` | SIGTERM 后等待优雅退出再 SIGKILL 的宽限期|
|
|
373
|
+
| `DSH_LARK_SCOPE_CONCURRENCY` | `2` | 每个 scope 的并行任务数(1=严格串行)|
|
|
374
|
+
| `DSH_LARK_RETENTION_MSGS` | `40` | 每个 scope 保留的消息条数(0=全部保留)|
|
|
375
|
+
| `DSH_LARK_ARCHIVE_MAX` | `50` | 每个 scope 最多保留的归档数(0=不清理)|
|
|
376
|
+
| `DSH_LARK_ARCHIVE_MAX_AGE_DAYS` | `90` | 归档最大保留天数(0=不清理)|
|
|
377
|
+
| `DSH_LARK_HEARTBEAT_MS` | `5000` | 桥接引擎心跳写入间隔(守护存活信号)|
|
|
378
|
+
| `DSH_LARK_GUARDIAN_DISABLED` | `false` | `1` 时安全网守护进程保持停止|
|
|
379
|
+
| `DSH_LARK_GUARDIAN_PROFILE` | `dsh-lark` | 守护监视 / 重启的 dsh profile(首次安装时写入状态)|
|
|
380
|
+
| `DSH_LARK_GUARDIAN_BRIDGE_PROFILE` | `default` | 提供飞书凭据与白名单的桥接状态 profile|
|
|
381
|
+
| `DSH_LARK_GUARDIAN_POLL_MS` | `2000` | 守护看门狗轮询间隔|
|
|
382
|
+
| `DSH_LARK_GUARDIAN_STALE_MS` | `15000` | 心跳超时阈值,超过且无 dsh 进程则接管飞书通道|
|
|
383
|
+
| `DSH_LARK_GUARDIAN_ENGINE_DEAD_MS` | `120000` | dsh 进程存活但心跳持续超时该时长,判定桥接引擎已死并接管|
|
|
384
|
+
| `DSH_LARK_GUARDIAN_SAFE_ADAPTER` | `auto` | 安全模式引擎:`auto` 优先 SDK 流式、失败回退 headless;`sdk` 强制 SDK;`headless` 跳过预置|
|
|
385
|
+
| `DSH_LARK_GUARDIAN_SAFE_TIMEOUT_MS` | `600000` | 安全模式单任务空闲超时(持续无活动事件才停止并出超时卡)|
|
|
386
|
+
| `DSH_LARK_GUARDIAN_CARD_DENSITY` | `detailed` | 安全模式任务卡片密度(compact / standard / detailed)|
|
|
387
|
+
| `DSH_LARK_UPGRADE_REGISTRY` | `https://registry.npmjs.org` | `upgrade` 探测最新版本的 npm registry(可指向镜像)|
|
|
388
|
+
| `DSH_LARK_UPGRADE_CHECK` | `1` | `doctor` / `/version` 是否探测 npm 最新版本(`0` 关闭,best-effort)|
|
|
389
|
+
| `DSH_LARK_UPGRADE_CHECK_INTERVAL_MS` | `21600000` | 桥接引擎检查新版本的间隔(`0` 关闭,默认 6h)|
|
|
390
|
+
| `DSH_LARK_UPGRADE_NOTIFY` | `false` | `true` 时发现新版本向指定 chat 推送飞书通知(默认仅日志)|
|
|
391
|
+
| `DSH_LARK_UPGRADE_NOTIFY_CHAT` | — | 接收更新通知的 chat id(配合 `DSH_LARK_UPGRADE_NOTIFY=true`)|
|
|
601
392
|
|
|
602
393
|
启动时会自动查找本机常见的 `@deepseek-ai/dsh` 安装位置。只有自动发现失败或需要指定特殊 profile 时,才需要设置这两个变量。
|
|
603
394
|
|
|
604
|
-
|
|
605
|
-
variables only when auto-discovery fails or a special profile is required.
|
|
606
|
-
|
|
607
|
-
## 权限与数据 | Permissions & Data
|
|
395
|
+
## 权限与数据
|
|
608
396
|
|
|
609
397
|
本工具在**本机**运行,安装前请知悉它会访问:
|
|
610
398
|
|
|
611
|
-
This tool runs **locally**; before installing, be aware that it accesses:
|
|
612
|
-
|
|
613
399
|
- **飞书凭据**:PersonalAgent 应用的 `app_id` / `app_secret`,明文写入本机 `~/.dsh-lark/config.json`(文件权限 600)。
|
|
614
400
|
- **文件系统**:读取 / 写入你通过 `/cd`、`/ws` 指定的工作目录(含执行 shell 命令、修改文件)。
|
|
615
401
|
- **网络**:向飞书开放平台建立 WebSocket 出站长连接收发消息;向 DeepSeek API 发送任务上下文。
|
|
@@ -624,106 +410,49 @@ This tool runs **locally**; before installing, be aware that it accesses:
|
|
|
624
410
|
`/safemode` 时创建仅官方核心的 dsh profile(headless 或 SDK JSON-RPC runtime,均无第三方插件)
|
|
625
411
|
并逐条执行任务;SDK 引擎会以官方 `dsh-sdk-jsonrpc-server` 子进程提供实时流式事件。
|
|
626
412
|
|
|
627
|
-
- **Feishu credentials**: the PersonalAgent app `app_id` / `app_secret`, stored in plaintext at
|
|
628
|
-
`~/.dsh-lark/config.json` (file mode 600).
|
|
629
|
-
- **File system**: reads / writes the working directories you choose with `/cd` and `/ws`
|
|
630
|
-
(including running shell commands and modifying files).
|
|
631
|
-
- **Network**: an outbound WebSocket long connection to the Feishu open platform for messages, and
|
|
632
|
-
task context sent to the DeepSeek API.
|
|
633
|
-
- **Local callback**: when the `lark_notify` tool runs, the dsh runtime subprocess calls the
|
|
634
|
-
bridge process back over a random 127.0.0.1 port with a per-boot token (loopback only).
|
|
635
|
-
- **Processes**: spawns local `dsh` runtime subprocesses (`dsh-sdk-jsonrpc-server` / `dsh-acp`
|
|
636
|
-
profiles) to run agent tasks.
|
|
637
|
-
- **dsh configuration**: `/model` `/providers` `/provider` `/key` read / write
|
|
638
|
-
`~/.dsh/settings.yaml` and `~/.dsh/.credentials.yaml` using the official dsh storage protocol
|
|
639
|
-
(admin-only writes; settings keep only `apiKeyEnv` references; credentials file mode 0600,
|
|
640
|
-
directory 0700; literal keys never enter settings or chat history).
|
|
641
|
-
- **Safety-net guardian (optional)**: when installed, a system-level resident process reads the
|
|
642
|
-
Feishu credentials from `~/.dsh-lark/config.json`; it takes over the same bot's Feishu long
|
|
643
|
-
connection only after dsh goes down and scans local processes (command lines via `ps` only, no
|
|
644
|
-
memory access). On `/safemode` it provisions a core-only dsh profile at
|
|
645
|
-
`~/.dsh/profiles/<profile>-safe` and runs `dsh --profile <safe> "<prompt>"` per message.
|
|
646
|
-
|
|
647
413
|
所有数据仅在本机与飞书、DeepSeek 之间流转,不收集、不上传任何遥测。密钥不会提交进仓库(见 `.gitignore`)。
|
|
648
414
|
|
|
649
|
-
|
|
650
|
-
as telemetry. Keys are never committed to the repository (see `.gitignore`).
|
|
651
|
-
|
|
652
|
-
## 排障 | Troubleshooting
|
|
415
|
+
## 排障
|
|
653
416
|
|
|
654
417
|
先运行 `dsh-lark-bot doctor`,它会检查 profile、工作目录,并对当前 adapter 做真实可用性探测
|
|
655
418
|
(`sdk` / `acp` / `headless` 对应 runtime 的初始化握手)。
|
|
656
419
|
|
|
657
|
-
Run `dsh-lark-bot doctor` first; it checks the profile and working directory and performs a real
|
|
658
|
-
availability probe for the current adapter (`sdk` / `acp` / `headless` runtime handshake).
|
|
659
|
-
|
|
660
420
|
常见问题:
|
|
661
421
|
|
|
662
|
-
Common issues:
|
|
663
|
-
|
|
664
422
|
- **bot 静默 / 长连接失败**:查看 stderr 上的 JSONL 日志,关注 `channel` 与 `channel-command` 类别;SDK 会自动重连。
|
|
665
423
|
- **agent 无响应**:发送 `/status` 查看当前 scope、cwd 和 active run;发送 `/stop` 终止当前任务;持续无响应超过 `DSH_LARK_RUN_TIMEOUT_MS` 时看门狗会自动终止(空闲超时,活跃任务不会被误杀)。
|
|
666
424
|
- **首次扫码失败**:确认本机时间准确、网络可访问飞书开放平台;已拿到 App ID/Secret 时可用 `--app-id` / `--app-secret` 跳过扫码。
|
|
667
425
|
|
|
668
|
-
- **Silent bot / long-connection failure**: check the JSONL logs on stderr, focusing on the
|
|
669
|
-
`channel` and `channel-command` categories; the SDK reconnects automatically.
|
|
670
|
-
- **Unresponsive agent**: send `/status` to view the scope, cwd and active run; send `/stop` to
|
|
671
|
-
terminate the current task; the idle watchdog terminates it automatically after it has been
|
|
672
|
-
silent for `DSH_LARK_RUN_TIMEOUT_MS` (active streaming work is never cut short).
|
|
673
|
-
- **First QR binding fails**: make sure the local clock is accurate and the Feishu open platform
|
|
674
|
-
is reachable; with an existing App ID/Secret you can skip scanning via `--app-id` /
|
|
675
|
-
`--app-secret`.
|
|
676
|
-
|
|
677
426
|
桥接引擎日志以 JSON Lines 输出到 stderr(由 dsh 宿主进程捕获;`logs/bot.log` 是 0.6.0
|
|
678
427
|
独立服务时代的遗留路径,0.7.0 起不再写入);dsh 宿主日志走 dsh 自己的日志体系。
|
|
679
428
|
|
|
680
|
-
|
|
681
|
-
leftover path from the 0.6.0 standalone-service era and is no longer written since 0.7.0); the
|
|
682
|
-
dsh host uses its own logging.
|
|
683
|
-
|
|
684
|
-
**回滚 / Rollback**:`dsh plugin --profile dsh-lark remove dsh-lark-bot` 后重装固定版本即可
|
|
429
|
+
**回滚**:`dsh plugin --profile dsh-lark remove dsh-lark-bot` 后重装固定版本即可
|
|
685
430
|
(如 `dsh plugin --profile dsh-lark add dsh-lark-bot@0.6.0`);`~/.dsh-lark` 状态独立于插件
|
|
686
431
|
本体,升级 / 回滚不会丢失配置与会话。
|
|
687
432
|
|
|
688
|
-
|
|
689
|
-
`dsh plugin --profile dsh-lark add dsh-lark-bot@0.6.0`); `~/.dsh-lark` state is independent of
|
|
690
|
-
the package, so config and sessions survive upgrades / rollbacks.
|
|
691
|
-
|
|
692
|
-
## 开发 | Development
|
|
433
|
+
## 开发
|
|
693
434
|
|
|
694
435
|
```bash
|
|
695
436
|
pnpm install
|
|
696
437
|
pnpm typecheck
|
|
697
438
|
pnpm test
|
|
698
439
|
pnpm build
|
|
699
|
-
pnpm check:publish-bundle # 校验 dist 与全部 exports/bin
|
|
440
|
+
pnpm check:publish-bundle # 校验 dist 与全部 exports/bin 入口一致(发布前防线)
|
|
700
441
|
pnpm ci:local
|
|
701
|
-
pnpm release:check # ci:local + 上游一致性检查
|
|
702
|
-
pnpm compat:probe # 临时 DSH_HOME 安装锁定版 dsh,跑真实 SDK 握手
|
|
703
|
-
pnpm dsh:upstream # 对比 npm 上游 stable 与锁定矩阵
|
|
704
|
-
pnpm security:monitor #
|
|
442
|
+
pnpm release:check # ci:local + 上游一致性检查
|
|
443
|
+
pnpm compat:probe # 临时 DSH_HOME 安装锁定版 dsh,跑真实 SDK 握手
|
|
444
|
+
pnpm dsh:upstream # 对比 npm 上游 stable 与锁定矩阵
|
|
445
|
+
pnpm security:monitor # 假冒仓库与仿冒包监控(建议每周)
|
|
705
446
|
```
|
|
706
447
|
|
|
707
448
|
开发规范见 [`AGENTS.md`](AGENTS.md),模块契约见 [`docs/API.md`](docs/API.md),架构见 [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md)。
|
|
708
449
|
兼容矩阵的升级政策与自动化见 [`docs/COMPATIBILITY.md`](docs/COMPATIBILITY.md)。
|
|
709
450
|
|
|
710
|
-
|
|
711
|
-
module contracts, and [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md) for the architecture. See
|
|
712
|
-
[`docs/COMPATIBILITY.md`](docs/COMPATIBILITY.md) for the compatibility matrix, upgrade policy
|
|
713
|
-
and automation.
|
|
714
|
-
|
|
715
|
-
**贡献 / Contributing**:欢迎 Issue 与 PR。开发流程见 [`AGENTS.md`](AGENTS.md)(必读文档、
|
|
451
|
+
**贡献**:欢迎 Issue 与 PR。开发流程见 [`AGENTS.md`](AGENTS.md)(必读文档、
|
|
716
452
|
提交规范与推送边界),生态交付标准见 [`docs/ECOSYSTEM.md`](docs/ECOSYSTEM.md)。
|
|
717
453
|
|
|
718
|
-
Contributions are welcome via Issues and PRs; see [`AGENTS.md`](AGENTS.md) for the workflow
|
|
719
|
-
(required reading, commit conventions, push policy) and [`docs/ECOSYSTEM.md`](docs/ECOSYSTEM.md)
|
|
720
|
-
for ecosystem delivery standards.
|
|
721
|
-
|
|
722
454
|
发布双包(`dsh-lark-bot` 与 `dsh-feishu-bot` 共享同一份 dist / 版本 / 依赖):
|
|
723
455
|
|
|
724
|
-
Publishing both packages (`dsh-lark-bot` and `dsh-feishu-bot` share the same dist / version /
|
|
725
|
-
dependencies):
|
|
726
|
-
|
|
727
456
|
```bash
|
|
728
457
|
pnpm publish:dual:dry-run
|
|
729
458
|
pnpm publish:dual
|
|
@@ -731,64 +460,37 @@ pnpm publish:dual
|
|
|
731
460
|
|
|
732
461
|
`scripts/publish-dual-packages.mjs` 从根 `package.json` 生成两份仅 `name` / `bin` 不同的发布清单,避免两份源码漂移。发布时整目录同步 `dist/`,并在发布前校验 `package.json` 每个 `exports` 子路径与 CLI 入口在产物中都存在——任何缺失(如 v0.9.0 的 `ask` 入口漏拷)都会直接中止发布。GitHub tag `v*` 会触发 [`release.yml`](.github/workflows/release.yml) 自动发布两个 npm 包并创建 Release。
|
|
733
462
|
|
|
734
|
-
`scripts/publish-dual-packages.mjs` generates two publish manifests from the root
|
|
735
|
-
`package.json`, differing only in `name` / `bin`, so the two copies never drift. A GitHub tag
|
|
736
|
-
`v*` triggers [`release.yml`](.github/workflows/release.yml) to publish both npm packages and
|
|
737
|
-
create a Release automatically.
|
|
738
|
-
|
|
739
463
|
同一份 dist 还会以 `@plutokeating/dsh-lark-bot` 和 `@plutokeating/dsh-feishu-bot` 发布到 GitHub Packages,便于在 GitHub Packages 页面查看。
|
|
740
464
|
|
|
741
|
-
|
|
742
|
-
`@plutokeating/dsh-feishu-bot`, viewable on the GitHub Packages page.
|
|
743
|
-
|
|
744
|
-
## 维护与支持 | Maintenance
|
|
465
|
+
## 维护与支持
|
|
745
466
|
|
|
746
|
-
-
|
|
467
|
+
- 状态:**活跃维护**。主维护者:**PlutoKeating**。
|
|
747
468
|
- 问题 / 建议:优先在 GitHub Issues 提交;安全漏洞请走 [`SECURITY.md`](SECURITY.md) 的私下报告渠道。
|
|
748
469
|
|
|
749
|
-
|
|
750
|
-
- Bugs / feature requests: GitHub Issues; security issues via the private channel in
|
|
751
|
-
[`SECURITY.md`](SECURITY.md).
|
|
752
|
-
|
|
753
|
-
社区收录情况见下节「社区收录情况 | Community Listings」。
|
|
470
|
+
社区收录情况见下节「社区收录情况」。
|
|
754
471
|
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
## 作者 | Author
|
|
472
|
+
## 作者
|
|
758
473
|
|
|
759
474
|
本项目由 **PlutoKeating** 开发并维护。作者专注于自动化与开发者工具,习惯从真实使用场景出发
|
|
760
475
|
做软件:本项目正是从“用飞书 / Lark 群聊驱动 DeepSeek Agent”的日常需求长出来的,逐步演进为
|
|
761
476
|
一套带守护、自愈与一键升级能力的完整桥接方案。更多信息见个人主页:
|
|
762
477
|
[PlutoKeating](https://github.com/PlutoKeating)。
|
|
763
478
|
|
|
764
|
-
|
|
765
|
-
developer tooling and prefers building software from real usage. It grew out of the daily need
|
|
766
|
-
to drive DeepSeek agents from Feishu/Lark group chats, evolving into a complete bridge with
|
|
767
|
-
guardian, self-healing, and one-command upgrade capabilities. See the author's profile:
|
|
768
|
-
[PlutoKeating](https://github.com/PlutoKeating).
|
|
769
|
-
|
|
770
|
-
## 贡献者 | Contributors
|
|
479
|
+
## 贡献者
|
|
771
480
|
|
|
772
481
|
感谢以下贡献者(按合入 / 提交时间):
|
|
773
482
|
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
| 贡献者 Contributor | 贡献 Contribution | 状态 Status |
|
|
483
|
+
| 贡献者 | 贡献 | 状态 |
|
|
777
484
|
| :--- | :--- | :--- |
|
|
778
|
-
| [koprivnikarurnaa-oss](https://github.com/koprivnikarurnaa-oss) | [PR #9](https://github.com/PlutoKeating/dsh-lark-bot/pull/9):web 单写者适配器 + self-heal v2 +
|
|
779
|
-
| [Normanyin](https://github.com/Normanyin) | [PR #11](https://github.com/PlutoKeating/dsh-lark-bot/pull/11):`/newg`
|
|
485
|
+
| [koprivnikarurnaa-oss](https://github.com/koprivnikarurnaa-oss) | [PR #9](https://github.com/PlutoKeating/dsh-lark-bot/pull/9):web 单写者适配器 + self-heal v2 + 守护自动重启| ✅ 已合入|
|
|
486
|
+
| [Normanyin](https://github.com/Normanyin) | [PR #11](https://github.com/PlutoKeating/dsh-lark-bot/pull/11):`/newg` 自动建群命令| ✅ 已合入(cherry-pick)|
|
|
780
487
|
|
|
781
488
|
> 说明:GitHub 贡献者图按 commit 作者邮箱归因。PR #9 合入时的提交使用了本地通用身份
|
|
782
489
|
> `dsh-user <dsh-user@local>`(未绑定 GitHub 账号),因此未自动计入贡献者图;本表为仓库侧
|
|
783
490
|
> 的明确署名,PR #11 的提交身份已绑定其账号,合入后会自动计入。
|
|
784
491
|
>
|
|
785
|
-
> Note: GitHub's contributor graph attributes commits by author email. The commits merged via
|
|
786
|
-
> PR #9 carried a local generic identity (`dsh-user <dsh-user@local>`, not linked to a GitHub
|
|
787
|
-
> account), so they are not auto-counted in the graph; this table is the repository's explicit
|
|
788
|
-
> acknowledgment. PR #11's commits are authored under the contributor's linked account and will
|
|
789
|
-
> be credited automatically once merged.
|
|
790
492
|
|
|
791
|
-
## 许可与安全
|
|
493
|
+
## 许可与安全
|
|
792
494
|
|
|
793
495
|
- **许可证**:GNU Affero General Public License v3.0(见 `LICENSE`)。
|
|
794
496
|
- **版权归属**:源码版权归项目维护者所有,按 AGPL-3.0 授权;「DeepSeek」「飞书 / Lark」等
|
|
@@ -797,39 +499,30 @@ Thanks to the following contributors (by merge / submission time):
|
|
|
797
499
|
- **安全模型**:默认拒绝、密钥脱敏、路径 containment、SSRF 防护、过期事件拒绝与交互工具
|
|
798
500
|
默认禁用——详见 [`SECURITY.md`](SECURITY.md)。
|
|
799
501
|
|
|
800
|
-
|
|
801
|
-
- **Copyright**: source is owned by the maintainers and licensed under AGPL-3.0; "DeepSeek" and
|
|
802
|
-
"Feishu / Lark" trademarks belong to their respective owners.
|
|
803
|
-
- **Security reports**: report vulnerabilities privately via GitHub Security Advisory; do not
|
|
804
|
-
open a public issue.
|
|
805
|
-
- **Security model**: default-deny, secret redaction, path containment, SSRF protection, stale
|
|
806
|
-
event rejection and default-disabled interactive tools — see [`SECURITY.md`](SECURITY.md).
|
|
807
|
-
|
|
808
|
-
## 文档 | Documentation
|
|
502
|
+
## 文档
|
|
809
503
|
|
|
810
504
|
> 接手本项目的工程师:**先读 [`docs/REQUIREMENTS.md`](docs/REQUIREMENTS.md) 和 [`docs/RESEARCH.md`](docs/RESEARCH.md)**,即可完整理解项目诉求与来龙去脉,无需线下沟通。
|
|
811
|
-
> Engineers taking over this project: **read [`docs/REQUIREMENTS.md`](docs/REQUIREMENTS.md) and [`docs/RESEARCH.md`](docs/RESEARCH.md) first**.
|
|
812
505
|
|
|
813
|
-
| 文档
|
|
506
|
+
| 文档 | 内容 |
|
|
814
507
|
| :--- | :--- |
|
|
815
|
-
| [`docs/REQUIREMENTS.md`](docs/REQUIREMENTS.md) |
|
|
816
|
-
| [`docs/RESEARCH.md`](docs/RESEARCH.md) |
|
|
817
|
-
| [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md) |
|
|
818
|
-
| [`docs/API.md`](docs/API.md) |
|
|
819
|
-
| [`docs/QUICK_START.md`](docs/QUICK_START.md) |
|
|
820
|
-
| [`docs/COMPATIBILITY.md`](docs/COMPATIBILITY.md) |
|
|
821
|
-
| [`docs/MANUAL.md`](docs/MANUAL.md) |
|
|
822
|
-
| [`docs/adapter-notes.md`](docs/adapter-notes.md) | dsh adapter 接入说明(接口 / 落点 /
|
|
823
|
-
| [`docs/UPGRADE.md`](docs/UPGRADE.md) | 更新链路架构审查、生效机制与已知边界(issue #15
|
|
824
|
-
| [`docs/ECOSYSTEM.md`](docs/ECOSYSTEM.md) |
|
|
825
|
-
| [`docs/roadmap.md`](docs/roadmap.md) |
|
|
826
|
-
| [`docs/PLAN.md`](docs/PLAN.md) |
|
|
827
|
-
| [`SECURITY.md`](SECURITY.md) |
|
|
828
|
-
| [`AGENTS.md`](AGENTS.md) | AI Agent
|
|
829
|
-
|
|
830
|
-
## 架构
|
|
831
|
-
|
|
832
|
-
> 详见 [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md)
|
|
508
|
+
| [`docs/REQUIREMENTS.md`](docs/REQUIREMENTS.md) | 完整项目诉求、产出预期、规范与约束|
|
|
509
|
+
| [`docs/RESEARCH.md`](docs/RESEARCH.md) | 调研报告:官方现状、参考项目、可行性、技术差异|
|
|
510
|
+
| [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md) | 架构分层与目录映射|
|
|
511
|
+
| [`docs/API.md`](docs/API.md) | 模块接口与契约|
|
|
512
|
+
| [`docs/QUICK_START.md`](docs/QUICK_START.md) | 安装与快速开始|
|
|
513
|
+
| [`docs/COMPATIBILITY.md`](docs/COMPATIBILITY.md) | 兼容矩阵、升级政策与自动化|
|
|
514
|
+
| [`docs/MANUAL.md`](docs/MANUAL.md) | 完整用户手册|
|
|
515
|
+
| [`docs/adapter-notes.md`](docs/adapter-notes.md) | dsh adapter 接入说明(接口 / 落点 / 路线)|
|
|
516
|
+
| [`docs/UPGRADE.md`](docs/UPGRADE.md) | 更新链路架构审查、生效机制与已知边界(issue #15)|
|
|
517
|
+
| [`docs/ECOSYSTEM.md`](docs/ECOSYSTEM.md) | 生态兼容与交付标准(实现工程师必读)|
|
|
518
|
+
| [`docs/roadmap.md`](docs/roadmap.md) | 路线图与里程碑|
|
|
519
|
+
| [`docs/PLAN.md`](docs/PLAN.md) | 主线开发计划与验收标准|
|
|
520
|
+
| [`SECURITY.md`](SECURITY.md) | 安全模型与报告渠道|
|
|
521
|
+
| [`AGENTS.md`](AGENTS.md) | AI Agent 开发工作流规范|
|
|
522
|
+
|
|
523
|
+
## 架构
|
|
524
|
+
|
|
525
|
+
> 详见 [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md)。
|
|
833
526
|
|
|
834
527
|
```
|
|
835
528
|
飞书 / Lark ──WebSocket 长连接──▶ bridge/ ──▶ session/ ──▶ workspace/ ──▶ adapters/ ──▶ dsh ──▶ DeepSeek V4
|
|
@@ -841,102 +534,83 @@ Thanks to the following contributors (by merge / submission time):
|
|
|
841
534
|
通道接收 `/safemode` 控制信号,以仅核心 profile(`dsh-base` + `dsh-headless`)拉起受限对话
|
|
842
535
|
用于自愈,`/safemode exit` 重启完整 profile 并交还通道。
|
|
843
536
|
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
The optional safety-net guardian (`src/guardian/`) runs as a separate resident process: silent
|
|
847
|
-
while dsh is up, it takes over the Feishu channel when dsh goes down, accepts `/safemode` control
|
|
848
|
-
signals, runs a restricted core-only conversation (`dsh-base` + `dsh-headless`) for self-healing,
|
|
849
|
-
and relaunches the full profile on `/safemode exit`.
|
|
537
|
+
## 目录结构
|
|
850
538
|
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
| 目录 Dir | 职责 Responsibility |
|
|
539
|
+
| 目录 | 职责 |
|
|
854
540
|
| :--- | :--- |
|
|
855
|
-
| `src/bridge/` |
|
|
856
|
-
| `src/onboard/` | 首次扫码创建 / 绑定 PersonalAgent
|
|
857
|
-
| `src/session/` |
|
|
858
|
-
| `src/workspace/` | 项目工作区、git worktree
|
|
859
|
-
| `src/adapters/` | agent 后端适配器(sdk 默认 / acp 审批 / headless legacy / web
|
|
860
|
-
| `src/card/` |
|
|
861
|
-
| `src/bot/` |
|
|
862
|
-
| `src/commands/` | 斜杠命令(/cd /ws /new
|
|
863
|
-
| `src/cli/` | CLI 入口:`setup`(唯一安装命令)/ `doctor`(诊断)/ `upgrade`(一键升级)/ 隐藏 `run
|
|
864
|
-
| `src/upgrade/` | 一键升级(issue #10):版本探测、升级状态、运行检测、guardian/profile 重启助手、runtime
|
|
865
|
-
| `src/guardian/` | 安全网守护:心跳、进程观察、仅核心安全 profile
|
|
866
|
-
| `src/config/` | profile / 配置 / 访问白名单 / dsh
|
|
867
|
-
| `src/core/` |
|
|
868
|
-
| `src/media/` |
|
|
869
|
-
| `src/platform/` |
|
|
870
|
-
| `docs/` |
|
|
871
|
-
| `reference/` |
|
|
872
|
-
|
|
873
|
-
## 路线图
|
|
874
|
-
|
|
875
|
-
见 [`docs/roadmap.md`](docs/roadmap.md)
|
|
876
|
-
|
|
877
|
-
## 参考项目
|
|
878
|
-
|
|
879
|
-
| 项目
|
|
541
|
+
| `src/bridge/` | 飞书通道接入(消息、卡片、媒体)|
|
|
542
|
+
| `src/onboard/` | 首次扫码创建 / 绑定 PersonalAgent 应用|
|
|
543
|
+
| `src/session/` | 会话路由、排队、访问控制|
|
|
544
|
+
| `src/workspace/` | 项目工作区、git worktree 隔离与规则注入|
|
|
545
|
+
| `src/adapters/` | agent 后端适配器(sdk 默认 / acp 审批 / headless legacy / web 单写者)|
|
|
546
|
+
| `src/card/` | 流式卡片状态与渲染|
|
|
547
|
+
| `src/bot/` | 运行注册、消息排队、审批/问答注册表|
|
|
548
|
+
| `src/commands/` | 斜杠命令(/cd /ws /new …)|
|
|
549
|
+
| `src/cli/` | CLI 入口:`setup`(唯一安装命令)/ `doctor`(诊断)/ `upgrade`(一键升级)/ 隐藏 `run`|
|
|
550
|
+
| `src/upgrade/` | 一键升级(issue #10):版本探测、升级状态、运行检测、guardian/profile 重启助手、runtime 链接修复|
|
|
551
|
+
| `src/guardian/` | 安全网守护:心跳、进程观察、仅核心安全 profile、接管状态机、系统服务安装|
|
|
552
|
+
| `src/config/` | profile / 配置 / 访问白名单 / dsh 配置管理|
|
|
553
|
+
| `src/core/` | 结构化日志|
|
|
554
|
+
| `src/media/` | 附件下载与文本注入|
|
|
555
|
+
| `src/platform/` | 跨平台原子写入|
|
|
556
|
+
| `docs/` | 架构、路线图等文档|
|
|
557
|
+
| `reference/` | 参考研究用的克隆仓库(不提交)|
|
|
558
|
+
|
|
559
|
+
## 路线图
|
|
560
|
+
|
|
561
|
+
见 [`docs/roadmap.md`](docs/roadmap.md)。
|
|
562
|
+
|
|
563
|
+
## 参考项目
|
|
564
|
+
|
|
565
|
+
| 项目 | 说明 |
|
|
880
566
|
| :--- | :--- |
|
|
881
|
-
| [`zarazhangrui/lark-coding-agent-bridge`](https://github.com/zarazhangrui/lark-coding-agent-bridge) | 飞书 ↔ Claude Code / Codex
|
|
882
|
-
| [`deepseek-ai/deepseek-harness`](https://github.com/deepseek-ai/deepseek-harness) | DeepSeek Harness(`dsh`),agent
|
|
883
|
-
| [`grinev/opencode-telegram-bot`](https://github.com/grinev/opencode-telegram-bot) | OpenCode 的 Telegram
|
|
567
|
+
| [`zarazhangrui/lark-coding-agent-bridge`](https://github.com/zarazhangrui/lark-coding-agent-bridge) | 飞书 ↔ Claude Code / Codex 桥接,本项目的直接参照|
|
|
568
|
+
| [`deepseek-ai/deepseek-harness`](https://github.com/deepseek-ai/deepseek-harness) | DeepSeek Harness(`dsh`),agent 后端|
|
|
569
|
+
| [`grinev/opencode-telegram-bot`](https://github.com/grinev/opencode-telegram-bot) | OpenCode 的 Telegram 手机端,另一参照|
|
|
884
570
|
|
|
885
|
-
## 社区收录情况
|
|
571
|
+
## 社区收录情况
|
|
886
572
|
|
|
887
|
-
>
|
|
888
|
-
> Community listing & recommendation status, kept current as update requests land. As of v0.14.0 (re-verified 2026-08-17):
|
|
573
|
+
<div align="center">
|
|
889
574
|
|
|
890
|
-
|
|
891
|
-
| :--- | :--- | :--- |
|
|
892
|
-
| [awesome-dsh-plugins](https://github.com/AdamPlatin123/awesome-dsh-plugins) | ✅ 已收录 · 运行级可用<br>Listed · runtime-verified | 社区榜单标注 `✅ 运行级可用`(agent 实测通过);收录条目 v0.8.0 经 [PR #127](https://github.com/AdamPlatin123/awesome-dsh-plugins/pull/127) 合并,榜单行同步 [issue #139](https://github.com/AdamPlatin123/awesome-dsh-plugins/issues/139) 已关闭;数据刷新至 v0.14.0 待跟进<br>Shown as `✅ 运行级可用` (agent-tested); v0.8.0 entry merged via [PR #127](https://github.com/AdamPlatin123/awesome-dsh-plugins/pull/127); leaderboard sync [#139](https://github.com/AdamPlatin123/awesome-dsh-plugins/issues/139) closed; refresh to v0.14.0 pending |
|
|
893
|
-
| [dshfind](https://dshfind.com/zh/plugins/PlutoKeating/dsh-lark-bot) | ✅ 已收录 · 详情页在线<br>Listed · detail page live | 条目名称修正 [issue #2](https://github.com/hikariming/dshfind/issues/2) 已关闭;v0.10.1 数据刷新 [issue #6](https://github.com/hikariming/dshfind/issues/6) 待处理;v0.14.0 刷新待跟进;顶部徽章 / 展示卡来自 dshfind<br>Entry name fixed ([issue #2](https://github.com/hikariming/dshfind/issues/2) closed); v0.10.1 refresh ([issue #6](https://github.com/hikariming/dshfind/issues/6)) pending; v0.14.0 refresh pending; the header badge / card comes from dshfind |
|
|
894
|
-
| [omdsh-dev/community](https://github.com/orgs/omdsh-dev/discussions/11) | ✅ 收录申请通过 · 讨论活跃<br>Accepted · discussion active | `[Plugin]` 收录申请(Discussion #11)已通过并持续维护,最新更新说明 v0.10.2;v0.14.0 更新待跟进<br>`[Plugin]` submission (Discussion #11) accepted and active, latest notes v0.10.2; v0.14.0 update pending |
|
|
575
|
+
<a href="https://dshfind.com/zh/plugins/PlutoKeating/dsh-lark-bot?ref=badge"><img src="https://dshfind.com/api/card/PlutoKeating/dsh-lark-bot?lang=zh" alt="dshfind" width="440"></a>
|
|
895
576
|
|
|
896
|
-
|
|
577
|
+
</div>
|
|
897
578
|
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
579
|
+
> 本项目的社区收录 / 推荐状态,随提交的更新请求持续维护。截至 v0.15.1(2026-08-17 复核):
|
|
580
|
+
|
|
581
|
+
| 平台 | 状态 | 说明 |
|
|
582
|
+
| :--- | :--- | :--- |
|
|
583
|
+
| [awesome-dsh-plugins](https://github.com/AdamPlatin123/awesome-dsh-plugins) | ✅ 已收录 · 运行级可用| 社区榜单标注 `✅ 运行级可用`(agent 实测通过);收录条目 v0.8.0 经 [PR #127](https://github.com/AdamPlatin123/awesome-dsh-plugins/pull/127) 合并,榜单行同步 [issue #139](https://github.com/AdamPlatin123/awesome-dsh-plugins/issues/139) 已关闭;**v0.15.1 数据刷新 [PR #230](https://github.com/AdamPlatin123/awesome-dsh-plugins/pull/230) 已提交 · 待合并**|
|
|
584
|
+
| [awesome-dsh-plugin](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin) | 📨 收录 PR 已提交 · 待合并| 7.2k+ star 的社区插件精选大榜(`dsh-plugin` 生态流量入口);收录 PR [#1408](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin/pull/1408) 已提交,合并后回填状态|
|
|
585
|
+
| [dshfind](https://dshfind.com/zh/plugins/PlutoKeating/dsh-lark-bot) | ✅ 已收录 · 详情页在线| 条目名称修正 [issue #2](https://github.com/hikariming/dshfind/issues/2) 已关闭;**v0.15.1 数据刷新请求 [#6 跟进评论](https://github.com/hikariming/dshfind/issues/6#issuecomment-5317081509) 已提交 · 待维护方处理**;顶部徽章 / 展示卡来自 dshfind|
|
|
586
|
+
| [dshbase](https://dshbase.com/zh/plugins/dsh-lark-bot) | ✅ 已收录 · 实测可装| 中文插件目录(收录 1771+ 插件),自动化 CI 实测 `dsh plugin add` 可装可启动,标注 `✅ 已验证 · 实测可装`;顶部徽章来自 dshbase|
|
|
587
|
+
| [omdsh-dev/community](https://github.com/orgs/omdsh-dev/discussions/11) | ✅ 收录申请通过 · 讨论活跃| `[Plugin]` 收录申请(Discussion #11)已通过并持续维护,最新更新说明 v0.10.2;**v0.15.1 更新说明已备妥,待人工粘贴(org 级 discussion 不支持 API)**|
|
|
902
588
|
|
|
903
|
-
|
|
589
|
+
**更新请求进度(截至 2026-08-17 复核)**:
|
|
904
590
|
|
|
905
|
-
- awesome-dsh-plugins v0.8.0
|
|
906
|
-
-
|
|
907
|
-
-
|
|
908
|
-
-
|
|
591
|
+
- awesome-dsh-plugins 收录条目 v0.8.0:[#127](https://github.com/AdamPlatin123/awesome-dsh-plugins/pull/127) — ✅ 已合并;榜单行同步:[#139](https://github.com/AdamPlatin123/awesome-dsh-plugins/issues/139) — ✅ 已关闭
|
|
592
|
+
- awesome-dsh-plugin 大榜收录:[#1408](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin/pull/1408) — 📨 已提交(2026-08-17,v0.15.0 数据;v0.15.1 [跟进评论](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin/pull/1408#issuecomment-5317081726) 已提交)
|
|
593
|
+
- dshfind 条目名称修正 + v0.8.0 刷新:[#2](https://github.com/hikariming/dshfind/issues/2) — ✅ 已关闭;v0.10.1 刷新:[#6](https://github.com/hikariming/dshfind/issues/6) — 📨 待处理(v0.15.1 [跟进评论](https://github.com/hikariming/dshfind/issues/6#issuecomment-5317081509) 已提交)
|
|
594
|
+
- omdsh-dev/community 收录:[Discussion #11](https://github.com/orgs/omdsh-dev/discussions/11) — ✅ 通过,讨论活跃(最新更新说明 v0.10.2);v0.15.1 更新说明 — 📨 已备妥,待人工粘贴
|
|
595
|
+
- 平台数据刷新(v0.14.0 → v0.15.1)— ✅ 已恢复提交(2026-08-17):awesome-dsh-plugins [PR #230](https://github.com/AdamPlatin123/awesome-dsh-plugins/pull/230) · dshfind [#6 跟进](https://github.com/hikariming/dshfind/issues/6#issuecomment-5317081509) · omdsh 说明备妥
|
|
909
596
|
|
|
910
|
-
|
|
597
|
+
**亮点跟进**(六项独家能力与 issue #6 设计实现):
|
|
911
598
|
|
|
912
599
|
- awesome-dsh-plugins 榜单行同步(仓库描述 → 最新)与 agent-test 报告名称异常:[#139](https://github.com/AdamPlatin123/awesome-dsh-plugins/issues/139) — 📨 已提交(维护方已确认,等待渲染周期同步)
|
|
913
600
|
- dshfind 详情页补「对话内管理模型和密钥」亮点:[#2 跟进评论](https://github.com/hikariming/dshfind/issues/2#issuecomment-5301019067) — 📨 已提交
|
|
914
601
|
- omdsh 六项独家亮点补充(含 Guardian 设计实现):[Discussion #11 亮点评论](https://github.com/orgs/omdsh-dev/discussions/11#discussioncomment-18026370) — 📨 已提交
|
|
915
602
|
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
- awesome-dsh-plugins leaderboard row sync (repo description → latest) & agent-test name anomaly: [#139](https://github.com/AdamPlatin123/awesome-dsh-plugins/issues/139) — 📨 submitted (maintainer confirmed; awaiting the snapshot/render cycle)
|
|
919
|
-
- dshfind detail page: add the in-chat model/key management highlight: [#2 follow-up](https://github.com/hikariming/dshfind/issues/2#issuecomment-5301019067) — 📨 submitted
|
|
920
|
-
- omdsh six-exclusive-highlights summary (incl. the Guardian design): [Discussion #11 highlights comment](https://github.com/orgs/omdsh-dev/discussions/11#discussioncomment-18026370) — 📨 submitted
|
|
921
|
-
|
|
922
|
-
## 假冒仓库警告 | Impostor Repository Warning
|
|
603
|
+
## 假冒仓库警告
|
|
923
604
|
|
|
924
|
-
> [!WARNING]
|
|
925
605
|
> 2026-08-17 发现假冒仓库 **`tarraencompassing61/dsh-lark-bot`**:非 fork 重新上传、114 个 commit 中
|
|
926
606
|
> 113 个作者为 PlutoKeating、删除全部 CI、关闭 Issues、Releases 为 0,却以“下载 Windows exe 双击运行”的
|
|
927
607
|
> SEO 诱饵 README 冒充官方分发。**本项目从不提供 exe,任何此类下载均为假冒 / 恶意来源。**
|
|
928
|
-
> On 2026-08-17 an impostor repository **`tarraencompassing61/dsh-lark-bot`** was found: re-uploaded as a
|
|
929
|
-
> non-fork with 113/114 commits authored by PlutoKeating, all CI deleted, Issues disabled, zero Releases,
|
|
930
|
-
> and a SEO-bait README offering “Windows exe download & run”. **This project never ships executables —
|
|
931
|
-
> treat any such download as counterfeit / malicious.**
|
|
932
608
|
>
|
|
933
|
-
>
|
|
934
|
-
>
|
|
935
|
-
>
|
|
609
|
+
> 取证存档:[`docs/security/2026-08-17-impostor-repo-evidence/`](docs/security/2026-08-17-impostor-repo-evidence/README.md) ·
|
|
610
|
+
> 官方下载渠道:[`docs/DOWNLOAD.md`](docs/DOWNLOAD.md) ·
|
|
611
|
+
> 持续监控:`pnpm security:monitor`
|
|
936
612
|
|
|
937
|
-
## 免责声明
|
|
613
|
+
## 免责声明
|
|
938
614
|
|
|
939
|
-
> [!NOTE]
|
|
940
615
|
> 本项目为非官方社区工具,与 DeepSeek、字节跳动 / 飞书(Lark)无关联,亦未获得其背书。DeepSeek Harness、Feishu / Lark 及相关商标归各自权利人所有。
|
|
941
616
|
>
|
|
942
|
-
> This is an unofficial community tool, not affiliated with or endorsed by DeepSeek or ByteDance / Feishu (Lark). DeepSeek Harness, Feishu / Lark and related trademarks belong to their respective owners.
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-lark-bot",
|
|
3
|
-
"version": "0.15.
|
|
4
|
-
"description": "Bridge DeepSeek Harness (dsh) into Feishu / Lark
|
|
3
|
+
"version": "0.15.2",
|
|
4
|
+
"description": "把 DeepSeek Harness (dsh) 装进飞书/Lark 的 bot,扫码即用:流式卡片、项目工作区、并行任务、多角色 Agent、安全网守护。| Bridge DeepSeek Harness (dsh) into Feishu / Lark, scan-to-connect: streaming cards, project workspaces, parallel tasks, multi-role agents, safety-net guardian.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"packageManager": "pnpm@10.33.0",
|
|
7
7
|
"bin": {
|
|
@@ -92,15 +92,23 @@
|
|
|
92
92
|
"dsh",
|
|
93
93
|
"deepseek",
|
|
94
94
|
"deepseek harness",
|
|
95
|
+
"deepseek-harness 插件",
|
|
96
|
+
"deepseek harness 飞书",
|
|
95
97
|
"feishu",
|
|
98
|
+
"飞书",
|
|
99
|
+
"飞书机器人",
|
|
96
100
|
"lark",
|
|
97
101
|
"bridge",
|
|
98
102
|
"bot",
|
|
103
|
+
"扫码",
|
|
104
|
+
"scan to connect",
|
|
99
105
|
"typescript",
|
|
100
106
|
"chatbot",
|
|
101
|
-
"messaging",
|
|
102
107
|
"deepseek-harness",
|
|
103
|
-
"dsh-plugin"
|
|
108
|
+
"dsh-plugin",
|
|
109
|
+
"feishu-plugin",
|
|
110
|
+
"lark-integration",
|
|
111
|
+
"remote-coding"
|
|
104
112
|
],
|
|
105
113
|
"license": "AGPL-3.0",
|
|
106
114
|
"engines": {
|