dingtalk-dsh-assistant 0.5.14 → 0.5.15

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.
Files changed (3) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +20 -10
  3. package/package.json +3 -3
package/CHANGELOG.md CHANGED
@@ -4,6 +4,23 @@
4
4
 
5
5
  ## [未发布]
6
6
 
7
+ - 协调请求增加 `superseded` 持久终态,完成与失效请求均可收口;相同恢复故障按稳定身份聚合计数,已失效的结果快照不再污染当前健康状态。
8
+ - 普通任务回复与完成通知复用同一引用和接收人规则;引用真实 Topic 消息时可省略 `atOpenDingTalkIds`,由 Runtime 推导被引用发送人。
9
+ - 人工介入批准显式绑定精确 requestedAction;处理意见与动作冲突时要求保持停等并重新澄清,看板按钮同步展示准确语义。
10
+
11
+ ## [0.5.15] - 2026-09-19
12
+
13
+ ### 新增
14
+
15
+ - 一条群消息可拆分为多个独立事项,分别归入 Topic、创建或续接 Task;一个事项完成即可反馈,不等待同消息的其他事项。
16
+ - 任务看板可定时全量同步到配置的钉钉电子表格,并在写入后完整回读校验。
17
+
18
+ ### 修复
19
+
20
+ - 兼容真实 DSH 附件引用的 `attachmentId`,确保 v7→v8 迁移保留消息附件来源。
21
+ - 修复常驻任务的决策、完成报告与通知恢复,避免失效审阅、重复执行和永久失败重试。
22
+ - 修复已失效人工介入在任务看板中的状态显示;发布流程支持 npm 部分发布后的安全重试。
23
+
7
24
  ## [0.5.14] - 2026-09-10
8
25
 
9
26
  ### 新增
@@ -214,6 +231,7 @@
214
231
  - assistant、observer 与发行包统一使用同一个产品版本号。
215
232
  - Node.js 最低版本与实际 zstd Runtime 要求一致,调整为 24。
216
233
 
234
+ [0.5.15]: https://github.com/HiQ-AI/dingtalk-dsh-assistant/releases/tag/v0.5.15
217
235
  [0.5.14]: https://github.com/HiQ-AI/dingtalk-dsh-assistant/releases/tag/v0.5.14
218
236
  [0.5.13]: https://github.com/HiQ-AI/dingtalk-dsh-assistant/releases/tag/v0.5.13
219
237
  [0.5.12]: https://github.com/HiQ-AI/dingtalk-dsh-assistant/releases/tag/v0.5.12
package/README.md CHANGED
@@ -51,6 +51,7 @@ DWS 群消息
51
51
  ## 包结构
52
52
 
53
53
  - `packages/dingtalk-dsh-assistant`:核心业务插件。负责 DWS 接入、群与 Session 绑定、消息处理、Task 调度、阻塞时的人工介入、可靠回复和配置页面。
54
+ - 任务表格同步:可在插件设置中绑定钉钉在线电子表格的一个工作表,由 Resident 纯脚本每 3 分钟将全部未归档 Task 全量覆盖写入;同步不调用模型,状态与失败原因在设置页单独显示。
54
55
  - `packages/dingtalk-dsh-observer`:DSH Web 展示扩展。提供群聊会话、任务看板、归档任务、人工介入和告警页面。
55
56
  - `.dsh/profiles/resident`:resident Runtime 的参考 profile 与 Cordis patch。
56
57
  - `.dsh/profiles/web`:Web contribution 的参考 profile。
@@ -105,7 +106,7 @@ dsh plugin --profile web add @zzusp/dingtalk-dsh-assistant@latest @zzusp/dingtal
105
106
 
106
107
  以下源码安装方式只用于开发未发布代码;普通安装和升级不需要克隆仓库,也不需要手工添加两个内部包。
107
108
 
108
- 维护者发布新版本时,先将根包、assistant 和 observer 的版本号及 `CHANGELOG.md` 更新为同一版本并合并到 `main`,再推送对应的 `v<version>` Tag。GitHub Actions 会在 Node.js 24.19.0 下重新构建、测试和打包,按 observer → assistant → 根发行包的顺序发布 npm;三个包回读一致后才创建 GitHub Release。发布 job 绑定 GitHub Environment `NPM_PUBLISH`,优先使用其中的 `NPM_PUBLISH_TOKEN`,未配置时回退到 `NPM_TOKEN`。
109
+ 维护者发布新版本时,先将根包、assistant 和 observer 的版本号及 `CHANGELOG.md` 更新为同一版本并合并到 `main`,再推送对应的 `v<version>` Tag。GitHub Actions 会在 Node.js 24.19.0 下重新构建、测试和打包,使用 npm Trusted Publishing(OIDC)按 observer → assistant → 根发行包的顺序发布;三个包回读一致后才创建 GitHub Release。发布 job 绑定 GitHub Environment `NPM_PUBLISH`,不再使用长期 npm publish token。首次启用和故障恢复见 [npm 发布 Runbook](docs/ops/npm-release.md)。
109
110
 
110
111
  ### 源码开发安装
111
112
 
@@ -207,35 +208,39 @@ dws:
207
208
 
208
209
  ## 群聊工作流
209
210
 
210
- Topic 处理模型使用存储 domain v7。已有 v6 数据必须先按[离线迁移与回退说明](docs/ops/topic-storage-migration.md)完成只读检查、独立目标转换和回读,再切换运行配置;不能直接用新 Runtime 打开旧存储。下文说明代码契约,不代表该版本已发布或本机 profile 已升级。
211
+ Topic 处理模型使用存储 domain v8。已有 v6/v7 数据必须先按[离线迁移与回退说明](docs/ops/topic-storage-migration.md)完成只读检查、独立目标转换和回读,再切换运行配置;不能直接用新 Runtime 打开旧存储。下文说明代码契约,不代表该版本已发布或本机 profile 已升级。
211
212
 
212
213
  ### 常驻主会话
213
214
 
214
215
  每个群唯一绑定一个 resident Session。群名称、群 ID、职责和稳定决策协议通过 DSH `systemPrompt.section` 注入。消息明确指向已配置的 Agent 名称/别名、使用 `cc:`,或明确确认此前“是否需要我处理”的询问,并形成职责范围内的可验证目标时,主会话可以创建 Task;未明确指名但判断事项应形成任务时,主会话先在群里询问“这个事项是否需要我处理?”,收到肯定答复后再结合原消息和后续补充创建。Host 在接受 `new-task` 时再次校验群职责非空,并要求依据消息明确指向 Agent,或引用本插件此前持久化的 `task-proposal` 询问,不能只信任模型结论。主会话只负责选择 Task 路由;Runtime 使用原始群消息生成来源证据信封交给叶子,主会话生成的根因、完成度、方案优劣或排除性判断不作为叶子事实。
215
216
 
216
- 每条新消息先可靠持久化到 Inbox,接收接口随后返回;Resident 使用 `group_topic_route_submit` 对冻结的消息批次归类,再以 Topic 为单位处理增量。Topic 跨 turn 存在,一个消息可以关联多个 Topic;已归类的无关话题不会使当前话题决策失效。同群仍有未归类输入时,应先完成归类再判断其影响。归类、Topic 决策与 Task 执行分别维护进度,DWS 补拉完成只证明可靠接收。
217
+ 每条新消息先可靠持久化到 Inbox,接收接口随后返回;Resident 使用 `group_topic_route_submit` 对冻结的消息批次先拆分可独立补充、取消、交付、验收和反馈的事项 unit,再分别匹配持久 Topic。一个消息可包含多个 unit,每个 unit 有精确来源、唯一动作 owner 和自己的 `unitId + unitRevision`;四个属于同一交付目标的验收点保持一个事项,独立需求分别处理。超长路由原文通过 `group_topic_route_context_get` 按固定坐标读完,Host 在完整读取、范围覆盖和归属校验前不会接受部分路由。Topic 跨 turn 存在,已归类的无关话题不会使当前话题决策失效。同群仍有未归类输入时,应先完成归类再判断其影响。归类、Topic 决策与 Task 执行分别维护进度,DWS 补拉完成只证明可靠接收。
217
218
 
218
219
  Topic 的 `title` 是对齐 Task 名称的 8–20 字短语,最多 30 字,细节保存在 `summary`。v6 迁移形成的历史 Topic 如果摘要为空,Runtime 会先让 Resident 根据其固定版本引用消息生成独立摘要;随后再根据摘要重新概括标题并通过 `group_topic_title_submit` 原子写回,禁止直接截断摘要。摘要和标题分两步提交,每步都校验 Topic 快照,过期结果不会覆盖新内容。
219
220
 
220
221
  入站消息引用其他钉钉消息时,Steer 信封只携带稳定的引用消息 ID;正常情况下 Resident 直接使用同一会话已经收到的正文。如果该正文因消息传递异常、会话恢复或上下文压缩而不在当前可见上下文,Resident 必须加载 `dingtalk-chat` Skill,并使用插件配置的同一 DWS profile 执行 `chat +messages-mget` 主动读取;取回的消息仍有 `quotedMessage.messageId` 时继续向上查询,直至整条引用链结束。查询结果必须校验完整性,必要时读取链上的图片或文件。查询失败、结果不完整、未命中或检测到循环时,不得要求群成员补发原问题、正文或截图,也不得猜测并回复;本次判断进入 `decision-retrying`,由 Runtime 在故障恢复后自动重试。
221
222
 
222
- `group_decision_submit` 每次提交一个 Topic 的决策,绑定 topicId、revision 和持久 decisionId。提交时复核未归类输入、相关 Topic 版本、Task inputVersion 以及历史回复快照;发生冲突时零副作用拒绝。Task 动作用 topicRefs 引用固定版本,具体消息授权证据仍在 Topic 决策中校验,加入 Topic 本身不会扩大授权。任何 Task 动作都必须带非空确认;确认先可靠写入 Outbox,再创建、续接或重开 Task。取消仍优先发送止损信号。决策接受后保留动作回执,按固定操作身份恢复,不通过重建 ID 重复执行。Topic 工具参数错误返回精简的 `invalid-arguments` 字段问题;归类请求过期时返回当前请求,已落盘的重复提交从 RouteHistory 恢复原回执,Resident 不猜测或盲目重放未知请求。
223
+ `group_decision_submit` 每次提交一个 Topic 的决策,绑定 topicId、revision 和持久 decisionId。决策及每个 Task action 都携带 `basisUnitRefs`,Host 按事项逐动作校验 owner、当前增量和执行版本;接受一个事项不会消费同消息的其他事项。Task 仍只保存 topicRefs,固定版本读取只投影本事项的来源与共享背景。任何 Task 动作都必须带非空确认;确认先可靠写入 Outbox,再创建、续接或重开 Task,但单独确认不消费后续业务动作资格。取消仍优先发送止损信号。决策接受后保留动作回执,按固定 operationId 恢复,不通过重建 ID 重复执行。Topic 工具参数错误返回精简的 `invalid-arguments` 字段问题;归类请求过期时返回当前请求,已落盘的重复提交从 RouteHistory 恢复原回执,Resident 不猜测或盲目重放未知请求。
223
224
 
224
225
  历史主会话回复候选按 Topic 决策或 Task 通知绑定并有界读取,不随全群历史重复注入。Resident 准备回复时调用 `group_reply_review_get`,完整审阅绑定快照;Topic ID、引用 ID 或关键词不能替代语义判断。重启后从持久的归类进度、Topic 未处理版本和已接受决策恢复;已归类话题的失败只阻塞该话题及共享 Task 的关联操作。
225
226
 
226
227
  图片及其紧邻短消息在归类阶段共同理解;附件读取失败不能据标题或缩略图猜测正文并启动 Task。原始消息保存附件与事实版本,Topic 固定版本解析相应原始事实,重启后仍能追溯输入。
227
228
 
228
- Task 完成和信息阻塞通知使用 `group_reply_submit` 结构化提交,绑定 Task runSequence、inputVersion、相关 Topic 版本及回复快照。Resident 根据所引用 Topic 的原始消息选择 `replyToMessageId` 和 `atOpenDingTalkIds`;Runtime 核对真实消息与稳定参与人身份。Topic 新增信息影响当前输入或其他路径已修改 Task 时,旧通知不得直接提交。Outbox 已落盘和 DWS 已投递分别计量;通知使用提交 requestId 派生稳定 Outbox 身份,运行层重启或调用方未收到返回值时可读取已接受回执,找不到回执的未知请求不会自动重发。
229
+ Task 完成和信息阻塞通知使用 `group_reply_submit` 结构化提交,绑定 Task runSequence、inputVersion、事项来源、相关 Topic 版本及回复快照。每个事项完成后立即进入自己的验收和 Outbox 链路,不等待同消息其他事项;通知请求冻结创建时已接收入站的序号边界,边界后的无关新消息不会扩展旧请求。Resident 根据所引用 Topic 的原始消息选择 `replyToMessageId`;省略 `atOpenDingTalkIds` 时,Runtime 统一从被引用消息推导发送人,显式接收人仍必须属于当前 Topic。当前事项的 Topic 或执行版本变化会使旧通知失效,并在持久协调账中进入 `superseded` 终态。Outbox 待投递、DWS 发送和群回读确认分别计量;通知使用提交 requestId 派生稳定 Outbox 身份,运行层重启或调用方未收到返回值时可读取已接受回执,找不到回执的未知请求不会自动重发。
229
230
 
230
231
  Topic 决策产生非空回复时,Runtime 使用 DWS 原生引用回复,并验证选定消息属于当前 Topic 快照。原消息的引用链只提供上下文,不自动成为出站引用目标。发送人 ID 缺失时不得猜测引用参数。回读必须匹配正文与精确的引用消息 ID;同文但属于其他话题的引用回复不能认领为本次投递。
231
232
 
232
- 任何非空回复提交前,Resident 必须通过 `group_reply_review_get` 按请求 ID 读取 Runtime 绑定的未撤回历史确认、近期回复、内容相关回复和当前 Task 关联回复。Resident 根据消息正文、任务目标、动作范围和时间线判断是否属于同一事项;引用消息 ID 和词面相似度只用于定位候选。若同一事项已有等价确认且没有新信息,本次保持静默;若确认内容必须补全,则只允许选择本插件已发送且已经 DWS 回读的旧 Outbox,先经 DWS 撤回并验证不存在,再发送一条合并后的最新确认。候选未完整审阅或旧消息尚未回读时拒绝新意图;审阅通过后先持久化新 Outbox 和替换关系,再由渠道发送前完成精确撤回。撤回失败保持 pending,不发送新回复,后续按同一意图重试。
233
+ 任何非空回复提交前,Resident 必须通过 `group_reply_review_get` 按请求 ID 读取 Runtime 绑定的历史确认、近期回复、内容相关回复和当前 Task 关联回复。Resident 根据正文、目标、动作范围和时间线判断同一事项,引用 ID 和相似度只定位候选。等价确认没有新信息时保持静默;必须补全或纠正时,完整审阅后选择当前群真实 Outbox。接纳前校验替换图,原子持久化新通知与替换关系;旧 pending 进入 superseded,不再发送,但这不证明历史从未送达。历史发送未知只核验,迟到回执仍记录实际 messageId。
234
+
235
+ 替换通知先经原生幂等发送及 DWS 回读确认,再独立撤回已授权的旧消息(包括替换链)。撤回失败不再阻塞纠正通知,也不把旧消息伪标撤回:明确服务端拒绝停止自动重试;其它异常按 30 秒间隔最多尝试 3 次,之后等待核验。历史未知查询未命中保留 replacement_delivery_unknown,可由迟到回执继续恢复,不等于确认未发送。发送入口共享群级串行队列,实际外发前再原子检查旧意图未被替换。看板分别展示已替代、撤回待处理、待回读与已回读,保留审计原因。
236
+
237
+ 普通发送遇到明确服务端拒绝时持久化 deliveryBlockedAt,看板显示发送待处理,停止对相同意图自动重试;读取失败或送达未知不冒充明确拒绝,继续保留原生幂等与回读保护。
233
238
 
234
239
  ### 叶子任务
235
240
 
236
241
  Task 可设置独立的简短标题用于看板展示;标题与 objective 分离,重命名不会改变任务授权范围、Goal 或验收标准。运行看板通过 DSH 官方 `sidebar.footer.action` 提供左侧菜单入口,并由 `shell.overlay` 承载右侧完整内容区域;点击运行看板时切换到看板并清除 Session 选中状态,点击任意 Session 时关闭看板、恢复该 Session 的选中状态与对话/轨迹。运行看板复用 Session 的实际选中背景色,不额外显示焦点边框。
237
242
 
238
- 运行看板 Header 的高度和字体规格与 Session 页面一致。各页不再重复显示页面标题和子标题;任务列按 Header 与主内容实际占用计算剩余视口高度,卡片在列内独立滚动,页面本身不会因状态桶高度产生额外补白或纵向滚动。
243
+ 运行看板 Header 的高度和字体规格与 Session 页面一致。各页不再重复显示页面标题和子标题;任务列按 Header 与主内容实际占用计算剩余视口高度,卡片在列内独立滚动,页面本身不会因状态桶高度产生额外补白或纵向滚动。人工介入列表区分待处理、已处理和已失效请求;只有待发送或等待回复的请求提供处理操作,未知状态以异常标记展示且不会导致整个看板崩溃。
239
244
 
240
245
  Runtime 使用 DSH 原生 subagent 和 Goal 创建叶子 Session。Task 保存标题、目标、验收标准、执行状态、结果,以及 `topicRefs: [{topicId, revision}]` 和 `inputVersion`;不保存 sourceMessageId、triggerHistory、messageHistory 或群消息正文副本。`group_task_context_get` 返回执行约定与 Topic 引用,原始上下文由 `group_topic_context_get` 按固定 revision 分页读取。只有确实影响任务的新增信息才推进 inputVersion,不向每个关联 Task 广播全部讨论。运行中和等待中的 Task 接纳上下文时继续原轮次;完成或归档 Task 只有被明确重开才开启新轮次。目标发生实质变化时,续接动作必须同时提交概括当前完整目标的新标题;Runtime 原子更新目标和标题,并由 objectiveHistory、titleHistory 与 runHistory 保留旧值。普通信息补充、等待恢复和异常唤醒不修改标题,归档不删除历史。
241
246
 
@@ -259,10 +264,14 @@ Topic 查询的 `processing` 提供最新未完成意图的 decisionId、status
259
264
 
260
265
  同一消息版本产生过已接受的 Task 动作或确认后,其执行归属保留在持久决策中;将消息从 Topic A 改归 Topic B 不会重新授予执行权。新的授权消息或新的事实版本需要重新判断,历史动作不会因归类修订而自动撤销。
261
266
 
267
+ Task 创建和重开时即生成稳定 `stagePlan`,主会话查询与叶子输入使用同一份阶段身份;阶段 ID 的存在不代表计划已批准。`affectedStageIds` 只接受真实 ID,不接受标题或猜测值。创建、重开和上下文修订在 Store 原子接纳点校验阶段及修订参数,接纳和执行共用参数规范化;错误参数不会生成决策、预约或确认,主会话可读取当前上下文后用同一请求纠正重提。
268
+
269
+ 历史已接受的无效上下文修订,仅在整份决策都是 `task-context`、动作映射完整、所有动作未执行且 Task 幂等账本和执行版本均确认安全时,原子标记 `rejected` 并释放自身预约。原消息、Task、历史回复和 processedRevision 保留,Runtime 使用新的稳定请求身份重新判断尚未处理的输入。部分执行、含取消动作或结果不明的记录不会自动退回重放;存储错误仍按原错误链处理。`rejected` 是意图终态,不代表业务输入处理完成。
270
+
262
271
  ### 阻塞与人工介入
263
272
 
264
273
  - 缺少任务信息:叶子进入 information waiting,由主会话结合 Task 所引用 Topic 固定版本的消息时间线,向真正能够补充该信息的一位或多位参与人询问。
265
- - Task 遇到操作红线、环境异常或需要真人判断时进入 `human-intervention`,页面“人工介入”和 DWS 登录人本人私聊共享同一阻塞状态机。
274
+ - Task 遇到操作红线、环境异常或需要真人判断时进入 `human-intervention`,页面“人工介入”和 DWS 登录人本人私聊共享同一阻塞状态机。批准只对应阻塞单中精确列出的动作;处理意见可以收窄执行方式,不能授权另一动作,和原动作冲突时任务必须继续停住并提交范围冲突。
266
275
  - waiting 不占 `maxConcurrentTasks` 执行名额;信息或人工回复到达时统一进入 FIFO queued,保留待恢复上下文。调度器把正在创建或恢复 Session 的 Task 计入容量,获得唯一名额后续接原叶子 Session 和 Goal。
267
276
  - 钉钉人工处理必须引用阻塞消息并提供非空意见;明确回复“拒绝”“不同意”或“不批准”时记为不执行,其余回复使 Task 继续,并保留完整原文。Runtime 使用独立的个人 IM 实时订阅按被引用消息的 `messageId` 精确关联并恢复 Task,历史查询仅用于离线恢复;等待不设超时。
268
277
  - 批准复用指纹绑定 taskId、runSequence、阻塞类别、规范化动作和风险;旧版本没有这些字段的记录不会自动授权当前轮次。
@@ -277,7 +286,7 @@ Topic 查询的 `processing` 提供最新未完成意图的 decisionId、status
277
286
 
278
287
  叶子提交 `completed` 后,Runtime 会以 coordinator 内部上下文注入的方式,让常驻模型对照当前目标、runSequence、inputVersion 和 Topic 输入版本审查本轮结果和证据,并通过一次 `group_task_review_submit` 同时返回审阅回执与群通知草稿。审阅与回退通知最多内联 20 条、12,000 字符的相关 Topic 消息,整个请求限制为 40,000 字符。超长目标、验收、结果和索引保留 section 指针,通过 group_task_review_context_get 按 nextOffset 续读固定快照;长消息可通过同一工具或固定 Topic 原文分页读取。不能把截断片段当作完整证据。Runtime 只有在审阅通过且 Task 按当前版本原子完成后才将草稿写入发信箱;若期间出现新消息、Topic 或历史回复候选变化,则放弃旧草稿并重新协调。若新增或修订范围未完成、缺少验证,Task 保持 `running`,缺口反馈给原叶子继续执行,不生成完成通知。
279
288
 
280
- 除群成员明确撤销整个任务并提交 `task-cancel` 外,`running` 和 `waiting`(包括阻塞中)任务收到新增信息时只追加 `task-context`,继续同一执行轮次;只有 `completed` 任务(包括已归档展示)才允许 reopen 并初始化下一轮。完成轮次的 Session 空闲回收同时绑定 handle、Task 状态和 runSequence,不会释放已经重开的新轮次。普通阶段 checkpoint 由 Host 校验版本、顺序和证据后直接确认;计划、冲突、范围或风险变化等需要语义判断的 checkpoint 才交给 Resident。相同未审阅 checkpoint 以持久 checkpointId 复用同一审阅;Supervisor 只恢复该请求,不重复追加。scope-conflict、evidence-gap、risk-changed 在无计划、已拒绝或旧流程失效时仍可报告,不能携带完成项或修改剩余进度;新异常可抢占未确认审阅,旧待审项归档,迟到审阅不得回写。完成审阅发起时即记录 completion-review-requested,拒绝或失败也保留时间与关联尝试标识,Task 完成、通知入队及真实送达分别记录。
289
+ 除群成员明确撤销整个任务并提交 `task-cancel` 外,`running` 和 `waiting`(包括阻塞中)任务收到新增信息时只追加 `task-context`,继续同一执行轮次;只有 `completed` 任务(包括已归档展示)才允许 reopen 并初始化下一轮。完成轮次的 Session 空闲回收同时绑定 handle、Task 状态和 runSequence,不会释放已经重开的新轮次。Supervisor 发现 `running` Task 的叶子已 idle 时由 Runtime 幂等投递续执行请求;底层明确返回 Agent/Session unavailable 时,受控重建物理叶子并保留同一 Task、目标、Topic 固定版本和执行轮次,不让 Resident 绕用通用子代理消息接口。普通阶段 checkpoint 由 Host 校验版本、顺序和证据后直接确认;计划、冲突、范围或风险变化等需要语义判断的 checkpoint 才交给 Resident。相同未审阅 checkpoint 以持久 checkpointId 复用同一审阅;Supervisor 只恢复该请求,不重复追加。scope-conflict、evidence-gap、risk-changed 在无计划、已拒绝或旧流程失效时仍可报告,不能携带完成项或修改剩余进度;新异常可抢占未确认审阅,旧待审项归档,迟到审阅不得回写。完成审阅发起时即记录 completion-review-requested,拒绝或失败也保留时间与关联尝试标识,Task 完成、通知入队及真实送达分别记录。
281
290
 
282
291
  ### 只读状态问答与模型重试
283
292
 
@@ -295,8 +304,9 @@ Topic 查询的 `processing` 提供最新未完成意图的 decisionId、status
295
304
 
296
305
  - 群聊会话:查看不同 resident Session 的分页收信箱和发信箱;状态固定在最左列,长内容最多显示两行,完整内容可通过悬停标题或详情查看。
297
306
  - 任务看板:按待执行、执行中、等待中、已完成展示 Task,并打开 DSH 原生叶子对话和轨迹。活动任务卡片中的“任务”面板默认收起,只显示完成数/总数和进度;展开后显示各阶段任务、状态和耗时。执行轮次耗时统计不占用任务卡片空间,仍可通过 `/state/task-timings` 接口用于诊断。
307
+ - 任务表格同步:在“设置 → 插件 → 钉钉个人助理”填写钉钉在线电子表格地址,检查连接后选择目标工作表并启用。插件启动时立即同步,之后每 180 秒全量覆盖所选工作表;归档 Task 会在下一轮移除。所选工作表由插件托管,手工内容会被覆盖。
298
308
  - 归档任务:查看已归档 Task,相关群消息仍可重新打开原任务。
299
- - 人工介入:以与消息表格一致的状态列、行高和内容密度分页查看阻塞事项,并在页面选择继续任务或不执行。
309
+ - 人工介入:以与消息表格一致的状态列、行高和内容密度分页查看阻塞事项,并在页面明确选择“批准该事项并继续”或“不执行”。
300
310
  - 告警:按类型查看当前异常和分页的已恢复历史。
301
311
 
302
312
  看板不读取或重建 DSH Session JSONL,只通过插件状态接口展示业务投影;对话与轨迹仍由 DSH 原生页面负责。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dingtalk-dsh-assistant",
3
- "version": "0.5.14",
3
+ "version": "0.5.15",
4
4
  "description": "在 DeepSeek Harness 中运行的钉钉群聊个人助理与任务看板",
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",
@@ -41,8 +41,8 @@
41
41
  "node": ">=24"
42
42
  },
43
43
  "dependencies": {
44
- "@zzusp/dingtalk-dsh-assistant": "0.5.14",
45
- "@zzusp/dingtalk-dsh-observer": "0.5.14"
44
+ "@zzusp/dingtalk-dsh-assistant": "0.5.15",
45
+ "@zzusp/dingtalk-dsh-observer": "0.5.15"
46
46
  },
47
47
  "devDependencies": {
48
48
  "@deepseek-ai/cordis": "4.0.2",