dingtalk-dsh-assistant 0.5.9 → 0.5.10

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/CHANGELOG.md CHANGED
@@ -2,6 +2,23 @@
2
2
 
3
3
  本文件记录 `dingtalk-dsh-assistant` 每个正式版本的用户可见变化。版本号遵循[语义化版本](https://semver.org/lang/zh-CN/),日期使用 `YYYY-MM-DD`。
4
4
 
5
+ ## [未发布]
6
+
7
+ ## [0.5.10] - 2026-08-31
8
+
9
+ ### 变更
10
+
11
+ - Task 创建统一校验简短标题、明确目标、可核验验收标准、来源消息和提出人;验收门禁保持任务类型无关。
12
+ - 任务卡片按当前执行轮次拆分展示总墙钟、排队、运行、等待、可配对工具时间和其他运行时间;历史数据不足时明确标记为估算。
13
+ - 群消息取消静默聚合窗口,改为持久化后逐条、零延迟 `steer`:上一条尚未处理完成时,新消息直接插入当前 Turn 的下一 step 共同处理,不排队到下一 Turn。每条输入只携带事实,稳定协议仅保留在 Resident 系统提示词;单次结构化 JSON 通过 `actions` 支持多个 Task。结构化判断按 coordinator 消息 ID 读取对应回合结果,避免把普通插话回复误判为 JSON 后重复判断。
14
+ - 常驻群聊主会话不再暴露 Goal 工具及其提示;叶子任务仍使用 DSH Goal 管理执行、阻塞、恢复和完成。
15
+
16
+ ### 修复
17
+
18
+ - 区分插话前投递失败与已插话后的结构化判断失败;DWS 重复事件不再把同一群消息再次送入 Agent。
19
+ - 结构化判断纠错明确使用 `actions` 顶层契约,避免模型重复输出旧的 `kind` 结构。
20
+ - 本地 profile 安装强制刷新当前源码的 `file:` 依赖,并隔离根 workspace,避免部署继续使用旧 pnpm 缓存副本。
21
+
5
22
  ## [0.5.9] - 2026-08-31
6
23
 
7
24
  ### 修复
@@ -127,6 +144,7 @@
127
144
  - assistant、observer 与发行包统一使用同一个产品版本号。
128
145
  - Node.js 最低版本与实际 zstd Runtime 要求一致,调整为 24。
129
146
 
147
+ [0.5.10]: https://github.com/HiQ-AI/dingtalk-dsh-assistant/releases/tag/v0.5.10
130
148
  [0.5.9]: https://github.com/HiQ-AI/dingtalk-dsh-assistant/releases/tag/v0.5.9
131
149
  [0.5.8]: https://github.com/HiQ-AI/dingtalk-dsh-assistant/releases/tag/v0.5.8
132
150
  [0.5.7]: https://github.com/HiQ-AI/dingtalk-dsh-assistant/releases/tag/v0.5.7
package/README.md CHANGED
@@ -209,7 +209,7 @@ dws:
209
209
 
210
210
  每个群唯一绑定一个 resident Session。群名称、群 ID、职责和稳定决策协议通过 DSH `systemPrompt.section` 注入。消息明确指向已配置的 Agent 名称/别名、使用 `cc:`,或明确确认此前“是否需要我处理”的询问,并形成职责范围内的可验证目标时,主会话可以创建 Task;未明确指名但判断事项应形成任务时,主会话先在群里询问“这个事项是否需要我处理?”,收到肯定答复后再结合原消息和后续补充创建。主会话只负责选择 Task 路由;Runtime 使用原始群消息生成来源证据信封交给叶子,主会话生成的根因、完成度、方案优劣或排除性判断不作为叶子事实。
211
211
 
212
- 新消息先立即持久化到 Inbox,5 秒窗口不占用同群决策锁;窗口结束后即使 resident 正在运行,也会通过 DSH `steer` 在下一个 step 边界注入。Task 创建、上下文追加和重开仍按群串行收口,避免多条并发插话的结构化决策相互串线。因此“进入 Inbox / 插话”不再等待上一条群消息处理完成,但业务决策落地仍保持确定顺序。
212
+ 每条新消息先立即持久化到 Inbox,随后零延迟、逐条调用 DSH `steer`;不设置聚合窗口,也不等待上一条消息处理完成。Resident 正在运行时,新消息会插入当前 Turn 的下一个 step,与本轮已经收到的消息和会话上下文共同处理,而不是排队到下一 Turn。每条 `steer` 只携带消息事实,判断规则和 JSON 契约只存在于 Resident 系统提示词。结构化业务落地仍按群串行收口;单次 JSON 的 `actions` 可同时关联、重开或新建多个 Task,顶层最多生成一条群回复。
213
213
 
214
214
  ### 叶子任务
215
215
 
@@ -217,7 +217,11 @@ Task 可设置独立的简短标题用于看板展示;标题与 objective 分
217
217
 
218
218
  运行看板 Header 的高度和字体规格与 Session 页面一致。各页不再重复显示页面标题和子标题;任务列按 Header 与主内容实际占用计算剩余视口高度,卡片在列内独立滚动,页面本身不会因状态桶高度产生额外补白或纵向滚动。
219
219
 
220
- Runtime 使用 DSH 原生 subagent 和 Goal 创建叶子 Session。主会话不执行具体工作。Task 将简短任务名、当前有效目标和叶子执行用的来源证据信封分开持久化;任务看板和原生子会话展示任务名,叶子 Goal 同时接收当前目标与完整来源证据。来源信封包含消息 ID、发送者、时间、引用 ID、原始正文和附件异常,并明确要求结合当前代码、运行态和工具证据独立核验。Task 正式执行状态为 `running`、`waiting`、`completed`,超过并行上限时进入产品层 `queued`。归档只影响看板展示,不删除 Task、Session、Goal 或历史上下文;已完成或已归档 Task 收到关联上下文时会重新打开原 Task,并复用同一个叶子 Session,但创建独立的新执行轮次和全新 Goal。新轮次会覆盖当前目标、来源消息与发送人、验收标准、阶段任务、开始时间、阻塞和结果;上一轮的 Session、目标、来源、验收、阶段和结果快照进入 `runHistory`,只作为历史参考。后续消息明确扩大或收窄动作范围时,Runtime 在同一 Task 中修订当前有效目标并保留旧目标历史;普通事实补充不会修改目标。每轮重开会把新的群消息与发送人记录为当前触发来源,同时保留历次触发历史;该轮完成通知引用并 @当前触发人。
220
+ Runtime 使用 DSH 原生 subagent 和 Goal 创建叶子 Session。主会话不执行具体工作。Task 创建统一要求简短标题、当前有效目标、至少一条可逐项核验的验收标准、可回溯来源消息和明确提出人;这些门禁与开发、分析、部署等任务类型无关。Task 将任务名、目标和叶子执行用的来源证据信封分开持久化;任务看板和原生子会话展示任务名,叶子 Goal 同时接收当前目标与完整来源证据。来源信封包含消息 ID、发送者、时间、引用 ID、原始正文和附件异常,并明确要求结合当前代码、运行态和工具证据独立核验。Task 正式执行状态为 `running`、`waiting`、`completed`,超过并行上限时进入产品层 `queued`。归档只影响看板展示,不删除 Task、Session、Goal 或历史上下文;已完成或已归档 Task 收到关联上下文时会重新打开原 Task,并复用同一个叶子 Session,但创建独立的新执行轮次和全新 Goal。新轮次会覆盖当前目标、来源消息与发送人、验收标准、阶段任务、开始时间、阻塞和结果;上一轮的 Session、目标、来源、验收、阶段和结果快照进入 `runHistory`,只作为历史参考。后续消息明确扩大或收窄动作范围时,Runtime 在同一 Task 中修订当前有效目标并保留旧目标历史;普通事实补充不会修改目标。每轮重开会把新的群消息与发送人记录为当前触发来源,同时保留历次触发历史;该轮完成通知引用并 @当前触发人。
221
+
222
+ 群消息进入常驻会话后立即记录为 `steered`,结构化判断成功后转为 `delivered`。如果消息已经插话但结构化判断失败,则记录为 `decision-failed` 并保留错误供排查,DWS 重复事件和增量补拉都不会再次投递该消息;只有插话前失败的 `failed` 消息允许自动重试,避免同一消息重复进入 Agent。
223
+
224
+ 常驻群聊主会话只负责上下文理解和结构化选路,不暴露 `get_goal`、`create_goal`、`update_goal`,也不注入 Goal 工具说明。Task 叶子会话仍由 Runtime 使用 DSH Goal 管理执行、阻塞、恢复与完成。
221
225
 
222
226
  主会话向运行中或等待中的叶子传递任务上下文、目标修订、真人批复、恢复提示和结果驳回时统一使用 DSH `steer`,在叶子的下一个 step 边界插入,不使用 `followup` 排队到下一 Turn。
223
227
 
@@ -232,7 +236,7 @@ Runtime 使用 DSH 原生 subagent 和 Goal 创建叶子 Session。主会话不
232
236
 
233
237
  任务完成后,叶子把结构化结果交回主会话。Runtime 使用 DWS 原生引用回复任务发起消息,并通过结构化 `atOpenDingTalkIds` @任务提出人。发送后必须回读钉钉真实消息才将 outbox 标记为已投递。
234
238
 
235
- 任务进度、阻塞和完成通知只有 Runtime 一个群聊发送出口;叶子会话不得自行调用 DWS 向来源群发送通知。叶子提交完成结果后,Runtime 会把摘要、证据、交付物及部署信息完整交给常驻主会话组织群通知;通知可合并重复表述,但必须保留不同关注点、限定条件、失败项和未验证/未部署边界,不能为了简短只复述摘要。完成通知优先引用当前真实群触发消息;Web 与内部恢复来源只用于触发内部操作,不得覆盖 Task 当前真实消息及发送人,也不得写入消息触发历史;发现旧数据中的伪来源时会回溯最近一条带真实发送人 ID 的群消息并清理伪触发记录。通知层仍会独立回溯真实来源,避免旧数据清理前丢失引用和结构化 @。同事或其 AI 助理发送的回复、任务回执和状态通知不会按文案或发送者在模型外过滤,而是进入常驻模型,由模型结合引用、上下文和任务索引决定忽略、回答或关联任务。判断复用已有任务还是新建任务时,必须综合消息前后文、连续消息的信息组、当时场景,以及候选任务的目标、动作范围、状态、历史触发和已记录上下文;关键词、词面重合或标题相似只用于寻找候选任务,不能直接作为关联或新建结论。
239
+ 任务进度、阻塞和完成通知只有 Runtime 一个群聊发送出口;叶子会话不得自行调用 DWS 向来源群发送通知。叶子提交完成结果后,Runtime 会把摘要、证据、交付物及部署信息完整交给常驻主会话组织群通知;任务处理中若形成有证据且可复用的任务处理、流程或踩坑学习信号,叶子可通过独立内部上下文交给主会话,普通完成或未收敛事件不生成学习信号。内部学习信号不进入群聊结果投影或发信箱。通知可合并重复表述,但必须保留不同关注点、限定条件、失败项和未验证/未部署边界,不能为了简短只复述摘要。完成通知优先引用当前真实群触发消息;Web 与内部恢复来源只用于触发内部操作,不得覆盖 Task 当前真实消息及发送人,也不得写入消息触发历史;发现旧数据中的伪来源时会回溯最近一条带真实发送人 ID 的群消息并清理伪触发记录。通知层仍会独立回溯真实来源,避免旧数据清理前丢失引用和结构化 @。同事或其 AI 助理发送的回复、任务回执和状态通知不会按文案或发送者在模型外过滤,而是进入常驻模型,由模型结合引用、上下文和任务索引决定忽略、回答或关联任务。判断复用已有任务还是新建任务时,必须综合消息前后文、连续消息的信息组、当时场景,以及候选任务的目标、动作范围、状态、历史触发和已记录上下文;关键词、词面重合或标题相似只用于寻找候选任务,不能直接作为关联或新建结论。
236
240
 
237
241
  群消息中的图片、文档、文件、链接或其他外部资源如果承载任务所需信息,Resident 必须先完整读取。无法访问、下载、解析或读取不完整时,Resident 会先明确回复未获取到的具体信息并要求重新提供,不创建、不续接、不重开 Task;不得根据文件名、链接标题、缩略图或零散文字猜测资源正文。Runtime 还会对已知附件读取失败执行硬拦截,避免模型误判后提前启动任务。
238
242
 
@@ -247,7 +251,7 @@ Runtime 使用 DSH 原生 subagent 和 Goal 创建叶子 Session。主会话不
247
251
  ![钉钉个人助理任务看板](docs/manual/images/dsh-web-task-board-annotated.png)
248
252
 
249
253
  - 群聊会话:查看不同 resident Session 的分页收信箱和发信箱;状态固定在最左列,长内容最多显示两行,完整内容可通过悬停标题或详情查看。
250
- - 任务看板:按待执行、执行中、等待中、已完成展示 Task,并打开 DSH 原生叶子对话和轨迹。活动任务卡片中的“任务”面板默认收起,只显示完成数/总数和进度;展开后显示各阶段任务、状态和耗时。
254
+ - 任务看板:按待执行、执行中、等待中、已完成展示 Task,并打开 DSH 原生叶子对话和轨迹。活动任务卡片中的“任务”面板默认收起,只显示完成数/总数和进度;展开后显示各阶段任务、状态和耗时。卡片另按当前执行轮次展示总墙钟、排队、运行、等待、可配对工具时间和其他运行时间;旧 Task 缺少完整状态或工具事件时明确标为估算,不把生命周期总时长误写成执行时长。
251
255
  - 归档任务:查看已归档 Task,相关群消息仍可重新打开原任务。
252
256
  - 授权审批:以与消息表格一致的状态列、行高和内容密度分页查看申请单,并在页面批准或拒绝。
253
257
  - 告警:按类型查看当前异常和分页的已恢复历史。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dingtalk-dsh-assistant",
3
- "version": "0.5.9",
3
+ "version": "0.5.10",
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.9",
45
- "@zzusp/dingtalk-dsh-observer": "0.5.9"
44
+ "@zzusp/dingtalk-dsh-assistant": "0.5.10",
45
+ "@zzusp/dingtalk-dsh-observer": "0.5.10"
46
46
  },
47
47
  "devDependencies": {
48
48
  "@deepseek-ai/dsh-agent": "0.1.1-rc.2",