dsh-lark-bot 0.4.1 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +39 -5
- package/SECURITY.md +6 -0
- package/dist/cli.js +907 -110
- package/dist/cli.js.map +1 -1
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -101,12 +101,36 @@ dsh-lark-bot start \
|
|
|
101
101
|
| `/stop` | 终止当前任务 |
|
|
102
102
|
| `/timeout [N\|off\|default]` | 查看或设置当前会话运行超时 |
|
|
103
103
|
| `/density [compact\|standard\|detailed]` | 查看或设置卡片密度 |
|
|
104
|
+
| `/model` | 查看当前模型、dsh 默认模型与可用模型列表 |
|
|
105
|
+
| `/model use <id>` | 热切换当前会话模型(下一轮生效,无需重启) |
|
|
106
|
+
| `/model default <id>` | 写入 dsh 默认模型 `agent-default-model`(管理员) |
|
|
107
|
+
| `/model add\|remove <provider> <modelId>` | 添加 / 删除 provider 的模型(管理员) |
|
|
108
|
+
| `/providers` | 查看 dsh 已配置 providers、模型与凭据状态 |
|
|
109
|
+
| `/provider add\|update\|remove <id>` | 管理 provider(管理员;deepseek-official 与自定义 pi-ai) |
|
|
110
|
+
| `/key set\|remove\|list <引用名>` | 管理 dsh 凭据(set / remove 需管理员) |
|
|
104
111
|
| `/ask <问题>` | 发送问答卡,回答写入会话上下文 |
|
|
105
112
|
| `/invite user\|admin\|group <id>`、`/invite list`、`/invite remove user\|group <id>` | 管理访问白名单 |
|
|
106
113
|
| `/help` | 查看帮助 |
|
|
107
114
|
|
|
108
115
|
飞书消息中的图片会下载到本地 media 目录并传给 dsh;文本类文件会读取内容并注入任务上下文。
|
|
109
116
|
|
|
117
|
+
### 模型 / Provider / 凭据管理
|
|
118
|
+
|
|
119
|
+
模型与 provider 的配置以 dsh 官方方式持久化(与 dsh Web **Settings → Models** 页面完全相同的
|
|
120
|
+
存储协议),改动在下一个请求生效,无需重启 bot:
|
|
121
|
+
|
|
122
|
+
- `/model use <id>`:按会话热切换模型,下一轮消息即用新模型。
|
|
123
|
+
- `/model default <id>`:写入 dsh 的 `agent-default-model`,作为新会话的默认模型。
|
|
124
|
+
- `/providers`:展示 dsh 已配置的 provider、模型与凭据状态(DeepSeek 官方 + 自定义 pi-ai)。
|
|
125
|
+
- `/provider add|update|remove`:管理自定义 provider(`llm-pi-ai`)或 `deepseek-official`;
|
|
126
|
+
自定义 provider 需要 `--api`(`openai-completions` / `openai-responses` / `anthropic-messages`)、
|
|
127
|
+
`--base-url` 与至少一个 `--model`,与官方 schema 一致。
|
|
128
|
+
- `/key set|remove|list`:读写 `~/.dsh/.credentials.yaml`(0600)。settings 只保存 `apiKeyEnv`
|
|
129
|
+
引用,字面密钥不进入 settings 或聊天记录。
|
|
130
|
+
|
|
131
|
+
安全提醒:在飞书会话里输入密钥会对该会话的可见成员暴露密钥,建议仅在私聊中使用,或优先用
|
|
132
|
+
`--api-key-env` 引用已配置的环境变量 / dsh Web 页面录入。bot 不会在任何回复中回显密钥值。
|
|
133
|
+
|
|
110
134
|
### 5. 卸载
|
|
111
135
|
|
|
112
136
|
```bash
|
|
@@ -131,11 +155,11 @@ rm -rf ~/.dsh-lark
|
|
|
131
155
|
|
|
132
156
|
## 目标 · Goals
|
|
133
157
|
|
|
134
|
-
- **一条命令启动**:clone
|
|
158
|
+
- **一条命令启动**:clone 后一键安装运行,已发布到 npm,`npm i -g dsh-lark-bot && dsh-lark-bot start` 即可拉起后台服务。
|
|
135
159
|
- **飞书原生体验**:流式卡片、交互按钮、图片 / 文件,全程双语(文档评论为规划中能力)。
|
|
136
160
|
- **完整工作区管理**:多项目隔离、git worktree、项目级规则注入、上下文持久化。
|
|
137
161
|
|
|
138
|
-
- **One-command start**: clone and run in one step,
|
|
162
|
+
- **One-command start**: clone and run in one step, published to npm — `npm i -g dsh-lark-bot && dsh-lark-bot start`.
|
|
139
163
|
- **Native Feishu experience**: streaming cards, interactive buttons, images / files, doc comments.
|
|
140
164
|
- **Full workspace management**: multi-project isolation, git worktrees, per-project rules, persistent context.
|
|
141
165
|
|
|
@@ -143,7 +167,8 @@ rm -rf ~/.dsh-lark
|
|
|
143
167
|
|
|
144
168
|
- **DeepSeek Harness(`dsh`)**:已验证 **dsh 0.1.0-rc.6**(2026-08-14:SDK JSON-RPC / ACP runtime 握手 +
|
|
145
169
|
真实任务流式验证),通过官方 `@deepseek-ai/dsh-sdk-client` / `@deepseek-ai/dsh-acp` 接入;
|
|
146
|
-
|
|
170
|
+
具体锁定版本、升级政策与自动化探测见 [`docs/COMPATIBILITY.md`](docs/COMPATIBILITY.md),
|
|
171
|
+
adapter 接入细节见 [`docs/adapter-notes.md`](docs/adapter-notes.md)。
|
|
147
172
|
- **运行时**:Node.js ≥ 22.19(见 `package.json` engines)。
|
|
148
173
|
- **平台**:Linux / macOS / Windows(飞书 WebSocket 出站长连接,免公网服务器 / 域名 / 内网穿透)。
|
|
149
174
|
- 默认 adapter 为官方 **`@deepseek-ai/dsh-sdk-client`**(SDK JSON-RPC runtime,原生 session 续跑 +
|
|
@@ -190,12 +215,16 @@ rm -rf ~/.dsh-lark
|
|
|
190
215
|
- **文件系统**:读取 / 写入你通过 `/cd`、`/ws` 指定的工作目录(含执行 shell 命令、修改文件)。
|
|
191
216
|
- **网络**:向飞书开放平台建立 WebSocket 出站长连接收发消息;向 DeepSeek API 发送任务上下文。
|
|
192
217
|
- **进程**:spawn 本机 `dsh` runtime 子进程(`dsh-sdk-jsonrpc-server` / `dsh-acp` profile)执行 agent 任务。
|
|
218
|
+
- **dsh 配置**:`/model` `/providers` `/provider` `/key` 命令按 dsh 官方存储协议读写
|
|
219
|
+
`~/.dsh/settings.yaml` 与 `~/.dsh/.credentials.yaml`(仅管理员可写;settings 只存 `apiKeyEnv`
|
|
220
|
+
引用,凭据文件权限 0600、目录 0700,字面密钥不进入 settings 或聊天记录)。
|
|
193
221
|
|
|
194
222
|
所有数据仅在本机与飞书、DeepSeek 之间流转,不收集、不上传任何遥测。密钥不会提交进仓库(见 `.gitignore`)。
|
|
195
223
|
|
|
196
224
|
## 排障 · Troubleshooting
|
|
197
225
|
|
|
198
|
-
先运行 `dsh-lark-bot doctor`,它会检查 profile
|
|
226
|
+
先运行 `dsh-lark-bot doctor`,它会检查 profile、工作目录,并对当前 adapter 做真实可用性探测
|
|
227
|
+
(`sdk` / `acp` / `headless` 对应 runtime 的初始化握手)。
|
|
199
228
|
|
|
200
229
|
常见问题:
|
|
201
230
|
|
|
@@ -214,9 +243,13 @@ pnpm typecheck
|
|
|
214
243
|
pnpm test
|
|
215
244
|
pnpm build
|
|
216
245
|
pnpm ci:local
|
|
246
|
+
pnpm release:check # ci:local + 上游一致性检查
|
|
247
|
+
pnpm compat:probe # 临时 DSH_HOME 安装锁定版 dsh,跑真实 SDK 握手
|
|
248
|
+
pnpm dsh:upstream # 对比 npm 上游 stable 与锁定矩阵
|
|
217
249
|
```
|
|
218
250
|
|
|
219
251
|
开发规范见 [`AGENTS.md`](AGENTS.md),模块契约见 [`docs/API.md`](docs/API.md),架构见 [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md)。
|
|
252
|
+
兼容矩阵的升级政策与自动化见 [`docs/COMPATIBILITY.md`](docs/COMPATIBILITY.md)。
|
|
220
253
|
|
|
221
254
|
发布双包(`dsh-lark-bot` 与 `dsh-feishu-bot` 共享同一份 dist / 版本 / 依赖):
|
|
222
255
|
|
|
@@ -248,6 +281,7 @@ pnpm publish:dual
|
|
|
248
281
|
| [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md) | 架构分层与目录映射<br>Architecture layering & directory mapping |
|
|
249
282
|
| [`docs/API.md`](docs/API.md) | 模块接口与契约<br>Module interfaces & contracts |
|
|
250
283
|
| [`docs/QUICK_START.md`](docs/QUICK_START.md) | 安装与快速开始<br>Install & quick start |
|
|
284
|
+
| [`docs/COMPATIBILITY.md`](docs/COMPATIBILITY.md) | 兼容矩阵、升级政策与自动化<br>Compatibility matrix, upgrade policy & automation |
|
|
251
285
|
| [`docs/MANUAL.md`](docs/MANUAL.md) | 完整用户手册<br>Complete user manual |
|
|
252
286
|
| [`docs/adapter-notes.md`](docs/adapter-notes.md) | dsh adapter 接入说明(接口 / 落点 / 路线)<br>How to plug the dsh adapter |
|
|
253
287
|
| [`docs/ECOSYSTEM.md`](docs/ECOSYSTEM.md) | 生态兼容与交付标准(实现工程师必读)<br>Ecosystem & delivery standards (for engineers) |
|
|
@@ -281,7 +315,7 @@ The core idea: **decouple the Feishu channel from the agent backend**. The bridg
|
|
|
281
315
|
| `src/bot/` | 运行注册、消息排队、审批/问答注册表<br>Run registry, queueing, approval/question registries |
|
|
282
316
|
| `src/commands/` | 斜杠命令(/cd /ws /new …)<br>Slash commands |
|
|
283
317
|
| `src/cli/` | CLI 入口与 start / status / restart / stop / doctor 命令<br>CLI entry & service commands |
|
|
284
|
-
| `src/config/` | profile / 配置管理<br>Profile & config |
|
|
318
|
+
| `src/config/` | profile / 配置 / 访问白名单 / dsh 配置管理<br>Profile, config, access & dsh config management |
|
|
285
319
|
| `src/core/` | 结构化日志<br>Structured logging |
|
|
286
320
|
| `src/media/` | 附件下载与文本注入<br>Attachment download & text injection |
|
|
287
321
|
| `src/platform/` | 跨平台原子写入<br>Cross-platform atomic writes |
|
package/SECURITY.md
CHANGED
|
@@ -30,6 +30,9 @@
|
|
|
30
30
|
`DEFAULT_DENIED_INTERACTIVE_TOOLS` 提供工具级黑名单。
|
|
31
31
|
8. **审批**:ACP 模式下敏感操作通过 `session/request_permission` 以飞书审批卡一问一答;
|
|
32
32
|
run 结束 / dispose 时所有挂起审批卡结算为拒绝(`src/bot/approvals.ts`)。
|
|
33
|
+
9. **管理操作鉴权**:飞书会话内对 dsh 配置的写操作(`/model default`、`/model add|remove`、
|
|
34
|
+
`/provider add|update|remove`、`/key set|remove`)仅管理员可执行(管理员由
|
|
35
|
+
`/invite admin <open_id>` 定义);查看类命令(`/model`、`/providers`、`/key list`)开放。
|
|
33
36
|
|
|
34
37
|
## 数据与凭据 · Data & credentials
|
|
35
38
|
|
|
@@ -39,6 +42,9 @@
|
|
|
39
42
|
`~/.dsh-lark/service/service.env`(`0600`);systemd / launchd 单元文件中的 `EnvironmentFile`
|
|
40
43
|
只引用该文件,不内联密钥。
|
|
41
44
|
- 后台运行日志写入 `~/.dsh-lark/profiles/<profile>/logs/bot.log`(JSON Lines,密钥字段脱敏后输出)。
|
|
45
|
+
- 聊天命令管理的 dsh 配置按官方存储协议写入:`~/.dsh/settings.yaml`(只存 `apiKeyEnv`
|
|
46
|
+
引用,不落字面密钥)与 `~/.dsh/.credentials.yaml`(目录 0700、文件 0600)。bot 永不回显
|
|
47
|
+
密钥值;群聊中粘贴密钥会对群成员可见,建议私聊使用或改用环境变量 / dsh Web 页面录入。
|
|
42
48
|
- 所有数据仅在本机、飞书开放平台与 DeepSeek API 之间流转;无遥测。
|
|
43
49
|
|
|
44
50
|
## 报告渠道 · Reporting
|