Repository navigation
fix: 完善数字员工回传、交互权限与回执超时提示 - #28
Merged
Merged
Conversation
haofeng0705
added a commit
that referenced
this pull request
Oct 14, 2026
## 问题与结果 平台已保证受管 local_agent 私聊可见即可聊、群聊原生 @ 可回复;撤销权限或切换类型后停止原绑定投递。插件此前逐条调用 DWS 查询可见范围,重复鉴权并引入主管登录与通讯录接口依赖。现在在启动时确定访问策略,平台消息直接交给任务队列,其他场景继续本地白名单。 ## 实现 - 启动统一执行能力探测、绑定身份/代数/运行期望校验,要求 `bindingAccessPolicy=true` 和明确的 `platform` / `local_allowlist`。未知或缺失策略拒绝启动;不从配置自填或空白名单推断平台授权。 - 受管平台入站不再调用 visibility 或逐条查询 binding,群聊只订阅原生 @;其他本地场景保留原白名单与群消息触发规则。 - 从已验证的绑定响应取得员工自身开放 ID,在模型处理前过滤自身消息,包含未进入插件发送账本的消息;去重、回复顺序、审计和租约保留。 - 删除仅为主管查询身份迁移存在的错误解析与恢复提示。绑定验证完成前不记录 runtime_start ready。固定主管审批身份不变。 - 更新协议、旧绑定、启动失败、白名单、群 @、自身消息和真实 CLI 联合回归,以及用户文档。 配套 [DWS #1476](https://github.com/DingTalk-Real-AI/dingtalk-workspace-cli/pull/1476):`c165fa8483efcc0d4a88f7a59434d80288787f90`。插件最终提交:`d09a0118dba57b148035087f7b86c29b51e87f73`。本 PR 基于已合并的 #28,版本号仍由正式 release workflow 管理。 ## 验证 - 前一组合(DWS a3c7d486c / 插件 67b3fb8)的 `pnpm run ci`:**387 pass / 0 fail / 0 skip**;敏感信息扫描、格式、类型检查和打包校验全部通过,tarball 251 files / 1,178,207 bytes。 - 真实 DWS 子进程联合测试覆盖:旧受管绑定缺主管字段的 lease 启动/释放;平台连续两条私聊与群 @;仅历史主管字段的非受管绑定继续白名单;自身消息、重复事件和非 @ 群消息过滤;1001 回执恢复、超时故障提示和提示失败不递归。 - 平台未知策略、能力缺失、绑定不符和缺少合法自身 ID 均拒绝启动;绑定验证失败不会记录 ready 审计。 - `git diff --check` 通过;独立代码审查未发现阻断项。 - 本地 Node 26 / pnpm 11,测试输出放隔离目录;初始夹具 ESM 和 Unix socket 路径问题通过明确测试目录解决,未修改生产运行路径。 - 插件精确提交的远端 8 项检查全部通过,包含 Linux/macOS/Windows 测试和 DSH 打包/宿主集成。 补充最终组合验证:2026-10-14 使用官方 DSH 0.2.0-rc.2、DWS c165fa848 和插件 d09a011,数字员工完成两轮真实钉钉问答;核对入站、同一会话续接、引用回复正文和送达回执,两轮均正确,未观察到额外自回复任务。 最终插件提交远端 8 项 CI 全部通过。本机全量曾出现 4 项超时,其中生命周期/A2UI 独立复跑通过,运行时卡片夹具仍有 1 项超时;不把该次本地全量标为通过。历史会话从 DWH 迁入官方 DSH 后存在 cwd 与工作区归属不一致,影响侧栏分组,该问题不在本 PR 范围。 平台授权语义由平台方确认。npm 由正式 release workflow 发布。 ## 风险与回滚 两端需配套升级;旧 DWS 缺少明确策略能力时拒绝启动。正常停止后回退两端,保留绑定、会话和账本,不手删 lease guard 或重试状态。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
问题与结果
数字员工回传统一到 DWS 通用 chat,保留绑定、身份、回执与幂等校验。回复提交后若回执查询耗尽 2 秒预算,原回复可能已送达;现在会向原会话引用原消息尝试发送一次安全故障提示,附
delivery_unknown和本地排查编号,便于用户反馈。chat +messages-reply,主管私聊固定使用chat +messages-send;删除旧 channel 发送回退,启动要求chatDelivery=true,不兼容时明确提示升级。正文仅经过 stdin。groupMembershipAccess后,已入群即可群聊,只订阅原生 @ 当前员工事件。普通群消息不进入模型;查询失败不放行、不消费事件。其他类型保持本地白名单,operator 审批身份独立。code=5/category=internal/reason=delivery_unknown/retryable=false,不从自由文本推断、不透传服务端原始错误、凭据或业务正文。DE-...编号;审计增加 diagnosticId/failureCode,记录原回执错误及通知结果。停止与同会话等待覆盖整个通知和审计链。当前验证
插件 head:
5dddb7fa471dd3bdcfd4fd74f7c4e9a62d3644ce。配套 DWS #1476:799b8d8cf6c0e12dbf8df8636e76f5c727758131;DWS binary SHA256:bdad453fa6c704efdb78c9014fe5b1386f822ffdc10162eb24ece5a695a8533b。macOS arm64、Node 26.4.0、pnpm 11.7.0;隔离工作区,受控短 TMPDIR。
DWS_JOINT_BINARY指向上述二进制,测试仅访问 loopback MCP 和夹具账号。pnpm run ci(设置 DWS_JOINT_BINARY)首次全量测试为 367 通过、1 失败,失败在未改动的 setup 死进程锁并发测试(最大同时进入数 2,期望 1)。当前版本和独立构建的
81b3be51基线各定向复跑 5 次均通过,相关源码和生成模块完全一致;根因尚未确认,不宣称已复现基线故障。随后完整 CI 368/368 通过,保留首次失败记录。边界、部署与回滚
81b3be51,DWS 的 2 秒查询逻辑无需回滚。