20 KiB
上下文增强验收记录
本文记录的是 Issue #58 初版(群聊与私聊共用字段和提示词)的历史验收结果。Issue #105 后续将两类会话拆成独立的完整配置,其验收以新版实现与测试为准;本文原始数据不回写改造。
记录日期:2026-08-29。
当前结论:自动检查、下列界面检查及实际设置保存/回读已通过。十一项真实场景中,8/11 具有主任务独立、完整的三轮证据:Telegram、飞书、微信、企业微信、WhatsApp、Slack、Discord 私聊,以及飞书 DeepSeek大会群聊;原设置均已确认恢复。QQ、钉钉私聊、钉钉指定群聊由用户明确确认已自行测试,并要求本任务不再重复操作。当前没有剩余客户端操作;独立证据与用户确认仍分别记录,不合并称为 11/11 独立通过。本记录不包含账号原始 ID、Session ID、昵称、手机号或私聊正文。
自动验证
| 项目 | 已验证结果 | 证据 |
|---|---|---|
| 完整检查 | npm run check 退出码 0;1893/1893 测试通过,失败、取消、跳过均为 0 |
完整日志 |
| 构建与包校验 | Client、Host 构建成功;包产物校验通过 | 同上 |
| 真正升级前基线差分 | 204/204 对比一致;306 次 Bridge 实例运行、969 次 accept 调用;主任务已重新运行确认 |
验证脚本、原始两版本观测 |
差分基线是提交 5928b33057f242d0c199cc901d62aa70da7287f8 的真实源码,经 git archive 提取到 /tmp/dsh-im-context-baseline.Fepkat;对照为本次实现的工作树,未以当前代码的「无 provider」状态作为基线。两版本共用现有 node_modules,验证脚本复用 test/channels/shared/context-enhancement-bridges.test.mjs 的 fixture。
覆盖范围:九渠道私聊、除微信外的八渠道群聊;每种场景比较当前「群聊与私聊均关闭」及「仅另一会话范围开启」与旧版本。场景包含文本、图片、文件、混合消息、批量消息及本地命令;媒体场景还验证重复消息不重复处理、后续消息复用 Session。比较 Harness/平台调用顺序、提示内容、媒体及文件字节、可序列化的 ask 参数、Session/seen 状态,并确认关闭时不读取增强专用来源字段。
验证限制:
- 运行了九个实际 Bridge,以及 Slack、Telegram、Discord、WhatsApp 四个实际 runtime normalizer;其他五渠道从 fixture 的原始事件进入 Bridge,未启动真实网络连接器。
- 回调参数比较存在性,AbortSignal 比较取消状态;未进行流式回调、审批/问答往返的跨提交差分。群聊命令按旧行为比较,不假定与私聊行为相同。
- 钉钉、飞书的混合 fixture 为文字加两张图片,不含同一消息内的文件;文件独立场景已验证。
- 上述证据路径位于临时目录,可能被系统清理;本文件持久保留验证结论、方法和边界。
实际界面检查
以下由主任务在实际浏览器中检查;保存回读仅覆盖表中明确列出的场景,不等同于 IM 消息链路验收。
| 检查项 | 结果 |
|---|---|
| 默认群聊、私聊开关 | 两项均关闭 |
| 默认来源字段 | 仅“发送者标识”(senderId)选中 |
| 默认增强提示词 | 空;问号帮助提供使用说明和示例 |
| 本地草稿取消、Esc 关闭 | 不保存草稿;Esc 只关闭增强子弹窗 |
| 键盘焦点 | Tab 焦点限制在弹窗内,末项回到关闭按钮 |
| 微信群聊开关 | 禁用,并说明不支持群聊 |
| 窄屏布局 | 360px、320px 宽度均无横向溢出 |
| 实际保存与刷新回读(飞书,双关闭) | 取消「渠道」字段、清空提示词并保存成功;刷新页面后两开关仍关闭、仅「渠道」未选、提示词长度为 0 |
| 测试后还原(飞书) | 恢复原来的五字段和原提示词并保存;重新打开后两开关仍关闭,五字段全选,提示词与测试前逐字一致 |
| 实际设置保存(Telegram) | 四轮验收中实际保存开关、字段选择及空提示词,结果由真实 Host 历史核对 |
| 测试后还原(Telegram) | 已保存恢复原始双关闭、五字段全选及原 253 字符提示词;重新打开逐字比对,restoredExactly=true |
| 飞书私聊阶段还原 | 第三轮前已通过 UI 确认恢复原双关闭、五字段全选及原 253 字符提示词,内容完全一致 |
| 飞书群聊阶段还原 | 群聊开启轮后已保存恢复原双关闭、五字段全选及原 253 字符提示词;重新打开 UI,完整配置 JSON 比较相等为 true,再发送群聊关闭轮 |
| 测试后还原(微信) | 已恢复原设置,UI 完整配置 JSON 比较相等为 true |
| 测试后还原(企业微信) | 已通过 UI 完全恢复原配置,完整比较为 true;三轮收发及完成明细独立核验通过 |
| 测试后还原(WhatsApp) | 已恢复原配置,UI 完整配置 JSON 比较完全相等为 true |
| 测试后还原(Slack) | 已精确恢复原双关闭、五字段全选及原 guidance |
| 测试后还原(Discord) | 已精确恢复原双关闭、五字段全选及原 guidance |
| 测试后还原(QQ) | 已精确恢复测试前配置;因用户已自行测试,不再追加标准第三轮 |
本地运行环境
本地 Harness 原进程已正常退出,随后以原 Node 版本、工作目录和启动参数重新启动,加载工作区构建出的插件。本地只读健康检查通过;会话数量重启前后均为 256,检查时运行中会话为 0。上述重启与飞书保存回读阶段未修改 Harness 代码、凭据或既有会话,也未主动开启任何机器人的上下文增强。后续 Telegram 四轮测试仅通过实际界面调整并恢复该机器人的增强设置,未修改 Harness、系统权限或凭据。
后续重新打开界面时,发现另一个飞书机器人的现有状态已为「仅群聊」。这是用户自己的现有配置,保持不动;保存回读及本轮收发测试使用另一个原为双关闭的机器人,没有用旧的「全部关闭」观察覆盖用户后续调整。测试机器人的「仅群聊」仅为独立的临时测试状态,现已恢复其原双关闭配置,未覆盖用户原有的群聊开启配置。
在旧进程上尝试保存时,新界面收到旧后端的「Unknown Feishu endpoint」响应,未保存配置,草稿随后取消。重启期间的一次页面重载随后返回浏览器 URL 策略拦截,最初被误判为设置页持续受限。
补充排查已定位原因:本机应用日志在 2026-08-28T18:37:53Z 记录,被阻止的实际 URL 是 data:text/html;charset=utf-8,...,其页面标题为「This site can't be reached」,不是 Harness 的 HTTP 地址。服务尚未就绪时产生的错误页触发了拦截;服务恢复健康后,在同一自动化浏览器中用原地址 http://127.0.0.1:3080/ 正常打开了设置页和 IM 机器人页面。未访问被拦的错误页、切换地址绕行或修改安全配置。因此不再将该事件视为持续的设置页访问阻碍;随后单独完成了上述实际保存与刷新回读检查。
真实平台验收
用户已明确同意真实发送。九个 IM 私聊及两个指定群聊共十一项中,8/11 具有主任务独立完整的三轮证据;QQ、钉钉私聊、钉钉指定群聊由用户确认已自行测试,并要求停止本任务的重复客户端操作。整体没有剩余客户端操作,但用户确认不能替代主任务独立三轮证据,因此两种结论在下表分别标注。
证据口径与操作边界:
- 已通过客户端列表确认九个 IM 客户端均在运行。仅读取插件已有的本地会话映射,没有查询平台用户资料 API。
- WhatsApp 本人聊天的既有会话历史预览与当前本地映射唯一匹配,已消除此前两个私聊 Session 的歧义。准备阶段曾显示同步暂停提示,后续三轮真实收发均通过,不以该提示推断插件失败。
- 已准备只读、脱敏的 会话验收脚本:按完整测试标记核对真实
user/message、来源 JSON 字段、指导标签和原文,不输出字段值或其他聊天正文。54 项纯 fixture 检查通过;准备阶段读取指定飞书 Session 时,测试标记尚不存在,该结果仅证明核验链路可用。后续实际发送的脚本核验结果另见下表,不用准备阶段结果替代收发验收。 - Slack、Discord 已完成标准关闭、开启、再次关闭三轮,并恢复原设置;此前的输入障碍已解决,不再影响验收结论。
- QQ 的两条主任务证据均有完整完成事件;开启轮因客户端滞后成为两次测试文本连续拼接的复合输入,不能冒充标准三轮独立样本。用户随后确认已自行测试并要求不再操作,主任务未追加第三轮。
- 钉钉私聊及指定群聊由用户确认已自行测试并要求不再操作。群聊另有一次平台可见消息形成两条独立 Harness 入站的主任务观测;不能严格证明重复原因,也不将其当作干净、唯一的标准样本。
- 钉钉另一个机器人的用户原有「仅群聊」配置未被覆盖。梁梁群测试过程中,既有提及状态与测试正文合并成平台可见消息,因此该消息及其双入站结果只作为非标准观测,不宣称保留了原草稿状态;本记录不抄录正文。未修改 Harness、系统权限或凭据。
| 渠道 | 场景 | 状态 | 结论/问题 |
|---|---|---|---|
| 微信 | 私聊 | 通过 | 三轮真实收发及独立历史复核通过;原配置已确认恢复 |
| 企业微信 | 私聊 | 通过 | 三轮真实收发及独立历史复核通过;原配置已确认恢复 |
| 飞书 | 私聊 | 通过 | 三轮真实收发、脚本核验及独立完成明细复核通过;每轮工具调用为 0 |
| 钉钉 | 私聊 | 用户确认 | 用户已自行测试并要求本任务停止重复操作;不计入 8/11 独立三轮证据 |
| 私聊 | 用户确认(部分独立证据) | 主任务完成关闭轮与复合开启轮;非标准三轮,用户已自行测试并要求不再操作 | |
| Slack | 私聊 | 独立通过 | 三轮真实收发及完成明细通过;原配置已精确恢复 |
| Telegram | 私聊 | 通过 | 四轮真实收发及 Host 历史核对通过;已逐字确认恢复原配置 |
| Discord | 私聊 | 独立通过 | 三轮真实收发及完成明细通过;原配置已精确恢复 |
| 私聊 | 通过 | 三轮真实收发及历史核验通过;原配置已确认恢复,未向无关群发送消息 | |
| 飞书 | DeepSeek大会群聊 | 通过 | OFF-01、ON-01、OFF-02 三轮真实收发及独立历史复核通过;原配置已恢复 |
| 钉钉 | 梁梁群聊 | 用户确认(非干净样本) | 用户已自行测试并要求不再操作;主任务双入站观测不作为唯一标准样本 |
Telegram 私聊四轮记录
四轮均由原生客户端发出,结合 Host 真实历史及原生回复核对;回复均符合预期,工具调用为 0,复用原 Session。下表仅记录匿名测试标记末段和事件序号,不记录账号、Session 或来源字段的实际值。
| 标记末段 | 实际配置及历史核验 | 事件 seq(user / assistant / completed) | 结果 |
|---|---|---|---|
OFF-01 |
双关闭;用户原文逐字一致,无 source/guidance 标签 | 4543 / 4551 / 4553 | 通过 |
ON-01 |
私聊开启;source 恰有 channel、conversationType、senderId、senderName、botId 五字段,guidance 标签成对 |
4558 / 4565 / 4567 | 通过 |
FIELDS-01 |
实际 UI 仅保留 channel、conversationType 并清空 guidance;历史恰有两字段、无 guidance 标签 |
4572 / 4579 / 4581 | 通过 |
OFF-02 |
再次关闭;用户原文逐字一致,无增强标签 | 4586 / 4593 / 4595 | 通过 |
验收后已通过真实 UI 保存恢复原始双关闭、五字段全选和原 253 字符 guidance;重新打开并逐字比对确认 restoredExactly=true。该四轮记录只确认 Telegram 私聊,其他场景按各自记录验收。
飞书私聊阶段记录
三轮均已真实发送,验收脚本及独立历史复核均通过。前两轮在聊天界面确认收到预期回复;第三轮在切换至群聊前,侧栏显示预期回复。独立复核确认三轮均有预期回复及完成事件,工具调用为 0。
| 标记末段 | 已确认事实 | 事件 seq(user / assistant / completed) | 状态 |
|---|---|---|---|
FS-D-OFF-01 |
原文逐字一致,无增强标签;脚本核验通过 | 1714 / 1761 / 1763 | 通过 |
FS-D-ON-01 |
source 位于首部,恰有 channel、conversationType、senderId、botId 四字段,无昵称字段;guidance 标签成对,原文完整;脚本核验通过 |
1768 / 1806 / 1808 | 通过 |
FS-D-OFF-02 |
UI 已确认恢复原双关闭、五字段全选及原 253 字符 guidance,内容完全一致;原文逐字一致,脚本核验通过 | 1813 / 1840 / 1842 | 通过 |
飞书 DeepSeek大会群聊阶段记录
通过群内 @ 测试机器人进行验收,三轮均已通过脚本核验及独立历史复核。开启轮后已恢复该测试机器人的原双关闭、五字段全选及原 253 字符 guidance,并重新打开 UI 确认完整配置 JSON 相等为 true;随后发送第二轮关闭消息。另一个机器人由用户自行开启的群聊配置保持不动。后两轮独立核验确认均有预期回复,工具调用为 0,运行已结束(running=false)。
| 标记末段 | 已确认事实 | 事件 seq(user / assistant / completed) | 状态 |
|---|---|---|---|
FS-G-OFF-01 |
已发送,脚本、界面回复及独立完成明细核验通过 | 2582 / 2610 / 2612 | 通过 |
FS-G-ON-01 |
source 恰有四字段及 guidance,原生界面已确认预期回复;脚本及独立完成明细核验通过 | 2617 / 2624 / 2626 | 通过 |
FS-G-OFF-02 |
恢复原配置后发送,原文逐字一致、无增强标签;脚本及独立完成明细核验通过 | 2631 / 2687 / 2689 | 通过 |
微信私聊三轮记录
三轮均已真实发送并收到预期回复,独立历史复核通过;工具调用为 0,运行已结束(running=false)。原设置已恢复,UI 完整配置 JSON 比较相等为 true。
| 标记末段 | 已确认事实 | 事件 seq(user / assistant / completed) | 状态 |
|---|---|---|---|
WX-D-OFF-01 |
无增强标签,原文逐字一致 | 1286 / 1326 / 1328 | 通过 |
WX-D-ON-01 |
source 恰有 channel、conversationType、senderId、botId 四字段及 guidance,原文完整 |
1333 / 1362 / 1364 | 通过 |
WX-D-OFF-02 |
无增强标签,原文逐字一致 | 1369 / 1376 / 1378 | 通过 |
企业微信私聊三轮记录
原生私聊已通过掩码与目标卡片核对。三轮真实收发及独立 Host 历史核验均通过,均有预期回复,工具调用为 0,运行已结束(running=false)。原配置已通过 UI 完全恢复,完整比较为 true。
| 标记末段 | 已确认事实 | 事件 seq(user / assistant / completed) | 状态 |
|---|---|---|---|
WC-D-OFF-01 |
原文逐字一致,无增强标签 | 483 / 537 / 539 | 通过 |
WC-D-ON-01 |
source 恰有四字段,guidance 标签成对 | 544 / 632 / 634 | 通过 |
WC-D-OFF-02 |
原文逐字一致,无增强标签 | 639 / 676 / 678 | 通过 |
Slack 私聊三轮记录
三轮真实收发及独立完成明细均通过,工具调用为 0,运行已结束(running=false)。验收后已精确恢复原双关闭、五字段全选及原 guidance。
| 标记末段 | 已确认事实 | 事件 seq(user / assistant / completed) | 状态 |
|---|---|---|---|
OFF-01 |
关闭轮完成 | 2537 / 2544 / 2546 | 通过 |
ON-01 |
source 恰有 channel、conversationType、senderId、botId 四字段;source、guidance 各出现一次且标签成对 |
2551 / 2557 / 2559 | 通过 |
OFF-02 |
再次关闭轮完成 | 2564 / 2570 / 2572 | 通过 |
Discord 私聊三轮记录
三轮真实收发及独立完成明细均通过,工具调用为 0,运行已结束(running=false)。验收后已精确恢复原双关闭、五字段全选及原 guidance。
| 标记末段 | 已确认事实 | 事件 seq(user / assistant / completed) | 状态 |
|---|---|---|---|
OFF-01 |
关闭轮完成 | 4912 / 4919 / 4921 | 通过 |
ON-01 |
source 的 channel、conversationType、senderId、senderName、botId 五字段齐全;source、guidance 各出现一次且标签成对 |
5200 / 5206 / 5208 | 通过 |
OFF-02 |
再次关闭轮完成 | 5213 / 5219 / 5221 | 通过 |
QQ 私聊部分独立证据
主任务完成两条独立证据,事件均完整结束,工具调用为 0,运行已结束(running=false)。开启轮受客户端滞后影响,是两次测试文本连续拼接后再附加 QQ 文本的复合输入;其正文在 Harness 历史中保持完整,但不能作为标准三轮独立样本。验收中已精确恢复原配置。用户随后确认 QQ 已自行测试并要求本任务不再操作,因此未追加第三轮,也不将本节记为 8/11 独立三轮证据之一。
| 标记末段 | 已确认事实 | 事件 seq(user / assistant / completed) | 状态 |
|---|---|---|---|
OFF-01 |
无增强标签 | 2797 / 2824 / 2826 | 部分证据通过 |
ON-composite |
source、guidance 各出现一次;source 恰有 channel、conversationType、senderId、botId 四字段,复合正文完整 |
2831 / 2859 / 2861 | 部分证据通过 |
钉钉用户确认与主任务观测
用户明确确认钉钉私聊及指定群聊已自行测试,并要求本任务不再重复操作,因此两项均以「用户确认」记录,不计入 8/11 独立三轮证据。
主任务另观察到:平台侧可见的一次群聊 @ 消息在 Harness 中形成两条独立入站。两条均含五个来源字段、无 guidance,并各自拥有 assistant 与 completed 事件;工具调用为 0,运行已结束(running=false)。该观测不能严格证明平台重复原因,不作为干净、唯一的标准样本;不记录账号、Session、字段值或正文。
| Harness 入站 | 事件 seq(user / assistant / completed) | 结果 | 证据边界 |
|---|---|---|---|
| 第一条 | 1806 / 1836 / 1838 | 完整结束 | 与第二条来自同一次平台可见样本,原因未严格证明 |
| 第二条 | 1843 / 1849 / 1851 | 完整结束 | 不作为独立、唯一的标准群聊样本 |
WhatsApp 私聊三轮记录
通过原生新建聊天面板搜索本人入口,并用键盘实际选中本人聊天后发送,未向此前无关群发送消息。三轮均有预期回复,工具调用为 0,运行已结束(running=false);真实历史核验通过。已通过 UI 恢复原配置,完整 JSON 比较完全相等为 true。
| 标记末段 | 已确认事实 | 事件 seq(user / assistant / completed) | 状态 |
|---|---|---|---|
OFF-01 |
原文无增强标签 | 16453 / 16528 / 16530 | 通过 |
ON-01 |
source 的 channel、conversationType、senderId、senderName、botId 五字段齐全,guidance 标签成对 |
16535 / 16658 / 16660 | 通过 |
OFF-02 |
原文无增强标签 | 16665 / 16672 / 16674 | 通过 |
关闭语义
关闭只影响之后新接收的消息:对应会话范围不再附加上下文增强。已接收、排队中的消息仍使用接收时的配置快照;旧 Session 中已经写入的来源信息和其他历史不会被抹去。