15 KiB
15 KiB
项目文件治理计划
当前任务:修复 09:32 AgentBus 下单网络前误阻断(已完成)
- 目标: 证明
TASK-20260827013256-D06X1n4的 ERP 写入边界,纠正其误分类,并让单个下单在 ERP 原生表单规范化后仍使用严格、正确的双哈希门禁。 - 授权与安全边界: 用户已授权 Chrome/扩展只读取证、现有任务 no-write 纠正和新版扩展发布;不重试任务、不触发 ERP 保存、不重载扩展、不重启服务、不改变解析模式或自动化开关。
已确认事实
- 任务为 AgentBus、
team_order_create、Program v1.0.3、automatic;解析与预检均通过,问题不在解析策略或自动化开关。 - 扩展后台保存的预检受保护字段哈希为
5f3d…;被阻止联网的原生请求哈希同为5f3d…。预检调用SubmitInfoForm()返回后,ERP 已把浏览器表单规范化为a5f4…,旧代码却仍用调用前哈希校验调用后表单,因而误阻断。 - 页内结果明确为
live_submit_attempted=false,且没有 native request/server response/requery/side effect,本次没有向 ERP 发出保存请求。 - 插件后台又把任何非 completed 结果无条件上报为
write_attempted=true/no_erp_write=false,使明确零写阻断被误升级为reconciliation_pending。
已完成与剩余
- 通过 Chrome CDP 只读核对 ERP 当前表单、扩展
0.5.147本地 preflight/live 证据和零网络边界;未读取表单值。 - 预检在原生函数返回后另存 post-intercept form hash;正式提交分别校验当前 form 与 intercepted native request,不放宽受保护字段哈希。
- 将明确网络前阻断收敛为
blocked / prewrite_blocked / write_attempted=false / no_erp_write=true;缺失结果或网络边界不明仍保持 uncertain。 - 在前后端双重历史证据门禁下,把报告任务和扩展本地副本纠正为 blocked/no-write,写入审计并释放队列;没有重试或提交 ERP。
- 扩展、平台最低版本、mapping、测试和发布基线递增至
0.5.148;旧0.5.147ZIP 已按原哈希归档,新 ZIP 已逐文件匹配源码。 - 规定门禁全部通过:仓库治理 9/9、TypeScript、完整控制面 97/97、legacy 全量、build 和 diff;重载扩展仍需用户另行授权。
最近完成:组织全自动化按钮权威状态同步
- 页面已在 EventSource 重连、30 秒刷新和 visibility/focus 时同步数据库开关;缓存键为
20260827-automation-state-sync-1,完整门禁通过,运行服务无需重启。
当前任务:修复 AgentBus 微信传输包装并启用全局自动化(已完成)
- 目标: 让 AgentBus 的标准
New WeChat message / Conversation / Text传输信封在进入全局业务路由前被安全解包,使其中的 18 项登记业务指令和字段使用与手工输入相同的 Program 策略;在用户授权后加载修复并开启组织全自动化。 - 范围: AgentBus 输入适配、任务快照前的业务文本、严格包装契约、回归与运行态交付边界;不放宽 Program parser 对任意未知字段/自然语言的失败关闭。
- 安全边界: 用户已明确授权本轮开启组织全自动化并重启 8786;不重试或修改用户报告的任务,不创建/确认/派发任务,不访问/写入 ERP,不切换 parser 模式,不读取
.env内容。
阶段
- 核对用户日志并定位实际任务
TASK-20260827004712-_PGgTzg。 - 只读核验任务快照、parse decision、18 项运行设置及脱敏原文结构,并用当前 resolver 离线重放。
- 证实根因:微信传输信封的
Conversation:、Text:被当作业务字段,导致 route unresolved,任务在快照阶段安全回退为 AI;18/18 route 本身仍为 Program revision 3。 - 在 AgentBus 边界实现严格、可纯测的微信信封解包,并确保近似/空包装保持原文、不吞业务内容。
- 用真实同形脱敏 fixture 及报告任务原文的只读离线重放证明解包后命中
team_order_createProgram,并运行规定全量门禁。 - 源码阶段收敛项目记录并明确既有任务不重解析;随后已取得本轮运行态授权。
- 授权后确认无在途解析/ERP 任务,通过控制面事务方法开启组织全自动化并写入审计。
- 优雅停止旧 PID
76113,以标准pnpm run dev启动新 PID84022;验证数据库、迁移 013、4 个 AgentBus 会话和单一监听 ready。 - 复核全自动化为 true、18/18 route 为 Program revision 3,且报告任务仍未确认、未重放。
固定决策
- 只识别已证实的三行传输头:首行精确为
New WeChat message、第二行Conversation:有值、第三行Text:;业务正文由Text:同行值和后续行组成。 - 不把
Conversation/Text注册成全局业务字段,也不让 Program parser 普遍忽略未知标签,避免其他来源的错误输入被误执行。 - 解包属于 AgentBus source adapter 职责;解包后的正文仍经过同一 route snapshot、AI/Shadow/Auto/Program 编排和 operation 契约。
- 修复只影响未来新 AgentBus 消息;当前已由 AI 完成解析的任务不自动重放或变更。
当前错误记录
- 首次合并读取活动根文件、登记表和用户附件时输出被截断;已分开完整读取活动 findings/progress 与附件尾部,并从日志精确定位任务,不把截断输出当完整证据。
- 首轮定向回归中空
Text:近似包装断言期待保留末尾空格,但 AgentBus 入口本来就会 trim;实现仍保留完整包装且未解包。已把断言改为既有规范化语义,不放宽提取条件。
完成结论
- 报告任务的实际快照为
business_route_id=null / parser_mode=ai / parser_engine_affinity=ai;18/18 业务设置仍为 Program revision 3。AI 调用不是模式配置失效,而是传输信封污染 route 识别。 - 146 条 AgentBus 历史任务的只读聚合中,144 条使用同一微信信封;严格解包后 142 条可命中登记 route,另外 4 条继续 unresolved,不猜测。
extractAgentBusBusinessText()只在 AgentBus listener 内解开已证实信封,并在调用TaskService.ingestMessage()前交付纯业务正文;日志仅新增解包布尔值、正文长度和 SHA-256 摘要。- 报告任务原文用新适配器离线重放后精确命中
team_order_create,Program v1.0.3 返回agent_parse_passed,无 fallback。 - 定向 33/33、仓库治理 9/9、TypeScript、完整控制面 96/96、legacy 全量、build 和
git diff --check均通过。 - 用户授权前已确认没有在途解析或 ERP 任务;组织全自动化已从 false 改为 true,并写入
organization.automation_enabled系统审计事件。 - 8786 已加载本次修复:旧 PID
76113优雅退出,新 PID84022单一监听;数据库、Schema、迁移 013 和 4/4 AgentBus 会话 ready。 - 18/18 route 保持 Program revision 3;报告任务仍为未确认的历史 AI 任务,没有被重解析、自动确认或派发。
最近完成任务:受控重启 8786 并加载全局解析/自动化修复(已完成)
- 目标: 在用户明确授权后重启正式控制面,使已完成的来源无关解析策略与组织全自动化修复进入运行态。
- 安全边界: 只重启 8786 的标准
pnpm run dev进程树并执行只读健康检查;不创建、确认、重试或派发任务,不访问/写入 ERP,不修改 route 模式或组织开关,不读取.env。
阶段
- 按治理规则恢复活动上下文并保留全部既有未提交改动。
- 精确解析旧监听 PID、父进程、启动入口和日志去向;重启前确认
/health/live与/health/ready正常。 - 对旧服务 PID
41546发送 TERM,确认旧进程树退出且 8786 完全释放。 - 使用原
pnpm run dev入口启动新进程树;新监听 PID76113,且只有一个 8786 监听进程。 - 验证数据库、Schema、迁移 013、4 个 AgentBus 渠道及新版页面资源全部 ready。
错误与处理
- 首次探测通用
/health得到 404;源码确认当前契约为/health/live和/health/ready,随后两项均通过。 - 首次提取页面 cache key 的只读 shell 正则引号未闭合;命令未产生状态变更,改用平衡的单引号正则后确认新版资源已提供。
- 首次把五项最终门禁并行执行时,控制面 AgentBus 子进程无后续输出且未退出;已中止该测试进程,AgentBus 单独 11/11 通过,并按项目既有串行方式完整重跑控制面 95/95。运行中的 8786 未受影响。
完成结论
- 8786 已于 2026-08-27 受控重启并加载当前源码;新 PID
76113,工作目录为项目根目录。 /health/ready返回ok=true、数据库与 Schema ready、必需迁移为013_business_parser_modes,4/4 AgentBus 渠道 connected 且 session ready。- 页面实际提供
app.js?v=20260826-global-parser-automation-1,其中手工与 AgentBus 共用的“所有来源”自动化文案已生效。 - 重启记录同步后的仓库治理、类型、控制面 95/95、legacy 全量、build 与 diff 门禁均通过。
- 本轮没有改变数据库策略/开关,没有任务 mutation、AI 调用、插件派发、ERP 访问或外部发送。
最近完成任务:让解析策略与全自动化对所有任务来源全局生效(已完成)
- 目标: 修复手工输入与 AgentBus 在解析路由上的行为分叉,使 18 项解析策略(AI / Shadow / Auto / Program)以及由该策略决定的全自动化行为统一作用于所有受支持任务来源。
- 范围: 控制面任务接入、解析编排、任务级模式快照、AgentBus accepted/result 链路、操作台策略配置和相关契约测试;不改变 operation 业务 Schema 或 ERP 写入门禁。
- 安全边界: 不创建、确认、重试或派发真实任务,不访问/写入 ERP,不读取
.env,不重载扩展、不重启服务、不部署、不外发。
阶段
- 完整恢复项目上下文、session catch-up、工作区状态和历史业务事实;既有未提交改动全部保留。
- 对比手工输入与 AgentBus 的任务创建、解析编排、模式快照和自动确认/执行路径,形成根因与影响面。
- 实施来源无关的全消息 route 解析与单一模式快照入口,消除 automation 来源特判,并补齐 AgentBus 四模式及全自动化回归。
- 完成仓库治理、类型、控制面、legacy、构建和 diff 验证。
- 收敛 planning 文件,说明代码完成项、运行态启用边界和未执行的外部动作。
固定决策
- 解析模式由业务 route 的全局策略决定,任务来源只负责输入与回执适配,不得强制覆盖为 AI。
- AgentBus 与手工输入必须经过同一 operation 契约、fail-closed 校验和任务级策略快照;不能通过跳过解析门禁来实现自动化。
- “全局生效”默认作用于未来新任务;不自动重解析或修改历史任务。
- 不因修复自动切换任何业务当前模式,也不未经授权重启 8786 或触发真实 AgentBus/ERP 流量。
- 无指令输入只有在全部已填写标签均被一个 route 接受、且该 route 的业务定位必填标签完整时,才允许用字段签名确定 route;多 route、未知标签和不完整签名保持 unresolved/ambiguous,不猜测。
- 全消息中嵌入的唯一业务指令可决定任务模式快照,但 Program parser 不静默丢弃未知前置自然语言;额外包装仍按 unsupported syntax 失败关闭。
当前错误记录
| 错误 | 尝试 | 处理 |
|---|---|---|
| 首次合并读取四个根文件的输出超过单次显示预算 | 1 | 改为逐文件读取,已完整恢复上下文 |
| 活动 plan/progress 因新增任务超过治理上限 | 1 | 先按 SHA-256 完整冻结到当日历史,再语义压缩活动文件并链接归档 |
| 当前 Codex 任务没有附加 app terminal,无法读取 8786 的实时 stdout | 1 | 未读取进程环境或秘密;继续用活动源码、现有安全日志契约和回归确定修复,不重复同一检查 |
非登录 shell 找不到 node,失败回归未启动 |
1 | 通过工作区依赖定位到 bundled Node 绝对路径,后续命令显式使用该 runtime,不重复裸 node |
| 全消息 resolver 首次实现后把“同一轮两个明确指令”提前归为一般歧义 | 1 | 保留首行已知 route 作为 parser 的安全主动作,让既有字段提取阶段继续返回更精确的 program_multiple_actions,不放宽执行 |
| 首次压缩 findings 的补丁脚本因 Markdown 反引号破坏 JavaScript 模板字符串而在解析前失败 | 1 | 已确认活动 findings 仍完整存在;改用不含模板反引号的补丁文本,避免重复同一转义方式 |
bundled Node 的 --run 子脚本仍通过空 PATH 查找 node,规定门禁未启动 |
1 | 不修改 PATH 或环境;改为用 bundled Node 直接运行 test runner 与项目 TypeScript CLI 的绝对入口 |
| legacy 全量测试首次输出超过会话显示预算,无法从该次输出确认退出状态 | 1 | 使用同一测试集合与 dot reporter 完整重跑,退出码 0;未把截断当成通过证据 |
完成结论
- 未来新建的手工与 AgentBus 任务现在共用同一全消息 route resolver、任务级 parser 模式快照和组织全自动化安全门禁;来源只保留作信封、回执和审计信息。
- Program parser 版本为
ltjt-program-parser-v1.0.3。未知包装、多 route、未知/不完整字段签名继续失败关闭;历史任务不重解析,当前数据库策略和组织开关未被本轮修改。 - 仓库治理 9/9、TypeScript、控制面 95/95、legacy 全量、build 和
git diff --check全部通过。 - 本轮未重启 8786;活动服务需在用户另行授权重启后才会加载本次控制面源码。
最近完成任务摘要
- 插件后台页节流与成功任务伪错误: 历史扩展
0.5.147已改用原生 Ajax complete、同步客户字段复核和webNavigation精确 Frame;当前已由0.5.148替代。控制面/UI 不再把成功边界事实合成错误。 - 18 项确定性解析策略: 18 route、Program compiler、统一 validator、AI/Shadow/Auto/Program 编排、迁移 013、任务快照与操作台已完成;运行态曾核验 18/18 为 Program,组织全自动化关闭。
- 取消/恢复日期与生命周期: 无年份日期按任务日取下一次发生日;精确路由 token、列表/编辑页门禁和 fresh requery 保持失败关闭。该阶段扩展曾推进至
0.5.147,当前发布基线为0.5.148。 - 其他近期完成: 散拼母团无子单业务提示、插件通用计时、右侧详情整栏滚动、ERP 空闲保活与异常链接受控刷新均已完成并有回归。
历史与持续边界
- 本次压缩前全文见 task plan 冻结快照;配套进度全文见 progress 冻结快照。归档只供追溯,不定义当前规则。
- 更早的完整计划、证据和发布历史见
archive/project-history/、archive/evidence/和archive/releases/。 - 当前发布版本、文件名和 SHA-256 只以 发布清单 为准。
- 保留工作区全部既有未提交改动;真实 ERP 写入、任务重试、扩展重载、部署、重启和外部发送仍需用户另行明确授权。