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 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 后一键安装运行,最终发布到 npm,`npm i -g dsh-lark-bot && dsh-lark-bot start` 即可拉起后台服务。
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, eventually published to npm as `npx dsh-lark-bot`.
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
- 具体锁定版本与漂移策略见 [`docs/adapter-notes.md`](docs/adapter-notes.md)
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、工作目录,并实际调用本机 dsh 的 `--version` 确认可用性。
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