Repository navigation
feat(localagent): 统一消息反馈、回传与平台入站授权 - #1476
Conversation
…calagent-message-status
…calagent-message-status
…nvergence 统一数字员工回传、A2UI 摘要与可见范围授权,删除重复 channel 发送入口。该合并仅整合到数字员工专项分支;main 准入仍需处理兼容性门禁与独立评审要求。
…nvergence fix(dingtalk-tag): local_agent 入群后默认放行群消息
|
补充 CR 与实包验证结果:本轮完整验证收口于 仍需跟进的两个 P21. [P2] custom 空输出绕过 no-reply 分支,仍发送占位文本并标记完成 deap_agent_runtime.go:373–377 只判断 实际复现:custom 脚本收到指定测试文本后 2. [P2] 终态反馈共享 5 秒预算,失败后直接退出,缺少运行期收敛 deap_agent_feedback.go:144–152 给整个 remove/create/add 投影链共用 5 秒截止时间, 无网络探针可稳定复现:先持有“思考中”,令 remove/create/add 分别耗时 2 秒;约 5.015 秒后 add 被截止,账本留下 真实链路中,首轮 7 条消息的终态账本 failed,经后续三次恢复验证(含收口包)仍未收敛,正文和 Agent 均未重复执行。收口包新增两条消息可以正常 applied,因此并非反馈必然失败。部分 failed 记录对应的表情实际已被服务端接受,不能把 failed 视为“确定未写入”。建议增加独立于正文发送的有界异步恢复,保留结果未知语义。真实请求的逐步骤耗时未暴露,不能断言这 7 次失败全部由探针中的同一个原因造成。 实包与基线对照macOS arm64 上实际执行
引用与图片在 验证结果: |
问题与结果
Fixes #1475
统一本地数字员工的消息反馈、引用与图片输入、chat 回传、A2UI 摘要和平台入站授权。平台保证 local_agent 私聊可见即可聊;撤销可见范围后,已有私聊也停止投递;群聊按原生 @ 触发,切换员工类型会停止原绑定投递并要求重新绑定。因此本地取消每条消息重复查询 published 详情、通讯录和部门,避免额外接口故障阻断正常对话。
实现
chat +messages-reply/+messages-send,使用受限 stdin、绑定上下文、幂等键和等待回执;保留已发布的channel reply/operator-private兼容入口,新宿主使用通用 chat。A2UI 支持--summary。Codex 保留会话、权限与工作目录,恢复失败不自动创建新会话。bind_local_agent回执确定platform入站策略;其他通道为local_allowlist。channel binding在启动时返回明确策略,channel capabilities声明bindingAccessPolicy=true。删除 sender 参数及旧逐消息 visibility 协商,平台路径仅订阅单聊和原生群 @。supervisorProfile,历史字段仅兼容读取;管理操作仍使用当前主管登录身份,审批仍使用固定operatorOpenDingTalkId。1001,或PARAM_ERROR且详情精确为“消息不存在”重查原任务;间隔 250ms,最多 8 次,查询与等待共享 2 秒预算。超时返回delivery_unknown,不重发正文或重跑模型。DWS #1479、#1480 已整合到本分支。配套 dsh-dingtalk #29,基于已合并的插件 #28;两侧需配套升级。
本次 CI 修复
1e33e03e24035072459e1e53cfa8bbfd93e78842,已合并 main794e7a376892dea7423edca824d832336badb05c。38506662050的三项失败:更新过期合并快照;恢复已发布的 Channel 兼容入口及能力字段;补齐取消、绑定重读、stdin 失败和发送前重验的跨平台覆盖测试。新宿主仍使用通用 chat,兼容入口使用相同的有界回执实现。category: Fixed;修复 Windows 路径 JSON 解析、平台权限断言、原生子进程参数夹具和导出路径逃逸模拟。修复 Windows Markdown 盘符/file URI 识别,为内嵌 A2UI JSON 固定 LF,保留原始字节摘要校验。27d51a429e5dc7d9f68fb532ab473812c77cc4be的运行38711691277已通过 Windows 原生 Test/Coverage、macOS Test/Coverage 及其余八项主线检查;最后剩余 helpers race 因整包累计耗尽 12m 失败,随后 fail-fast 取消尚未完成的测试。日志没有数据竞争报警;命令矩阵及两个 GIF 压缩测试累计耗时约 8m46s。go test ./test/scripts -run 'Test(GitHubScriptWorkflowJavaScriptParses|CoverageWorkflow|CIAppRace|CIFailFastTripwires|CITestPackagePlan|ChangelogPRFastPathWorkflowContract)' -count=127d51a429的完整本地平台覆盖率27d51a429的 Windows 原生及 macOS 检查go test -race -count=1 -timeout=18m ./internal/helpers;最终远端准入以本次 push 后的完整运行及精确 head 为准既有验证(对应下述历史提交)
最终 DWS 提交:
a3c7d486c983da624404b999360235b13a88e388;插件提交:67b3fb870b5d07774a43742aceed8a2abc8ef9d2。go test ./internal/helpers -count=1go test -race ./internal/helpers ./internal/app -run 'TestCrossPlatformCoverage(Employee|DigitalEmployee|DingTalkTagConnect)' -count=1check-generated-drift.shcheck-schema-catalog.shgo test ./internal/auth -run '^TestCrossPlatformCoverageAcquireDualLock' -count=1pnpm run cigit diff --check通过;未发现阻断项最终二进制为本提交独立构建;本地 Mac arm64 / SDK 15.4。联合回归实际执行 DWS CLI,验证旧受管绑定缺主管字段可获取/释放 lease、连续私聊与群 @ 不逐条查询、主管字段不提升非受管权限、自消息过滤、绑定不变、1001 回执恢复及故障通知。事件投递和 IM 接口使用受控夹具,未发送真实消息。
首次本地编译受默认 SDK 链接环境影响,固定 SDK 后通过;旧成功用例补齐自身 ID 夹具后 helpers 全包通过。Schema 首次测试因仓库内临时输出被隔离规则拒绝,调整至 worktree 旁的专用运行目录后通过。没有修改门禁或跳过失败断言。
平台关于撤权与类型切换停止投递的语义由平台方确认;本地测试不冒充服务端授权验证。此次新组合尚未替换既有真实员工运行入口或之前交付的固定测试包,未发布正式版本。
风险与回滚
涉及入站授权策略与机器协议。新版插件拒绝旧能力、未知策略和错误身份,不默认放行;非受管场景继续白名单。平台类型变更必须停止原绑定投递并重新绑定,不能把本地历史 ID 当成新的绑定。停止、换绑与回复的校验继续保留。
回滚前正常停止员工,保留 Profile、会话、账本及审计,再配套回退两端。已有
supervisorProfile的历史绑定不应直接交给拒绝未知字段的旧版读取;不要手改绑定或恢复过期代数。远端 CI 与精确 SHA 的主线准入仍按仓库门禁执行。