3.8 KiB
3.8 KiB
feature/docx-generation 任务卡
任务主记录:Dev PR #99 https://git-home.u1680832.nyat.app:30319/weichen/Agent-System-Dev/pulls/99(子仓:Backend PR #27);状态:进行中;owner:weichen
基线与授权
- 权威仓:ssh://git@git-ssh.u1680832.nyat.app:31411/weichen/Agent-System-Dev.git;目标分支:main;R0(initial_base_sha)=
d64742c71c - 工作区:/home/weichen/projects/Agent-System-Dev-wt-feature-docx-generation(worktree);分支:feature/docx-generation
- 授权与交付终点:用户已批准「会议纪要.docx 解析失败」整改方案的生成侧根治轨道(兄弟任务 feature/preview-sniff-fallback 已先行建 PR)。允许:modules/backend 代码与测试、父仓 gitlink 推进、推送分支并建 PR。终点=PR 建立;合入权在所有者。
目标与非目标
- 根因:write_artifact/fs_write_file 只收字符串参数,模型物理上无法经 JSON 字符串产出 ZIP 容器;系统却把 docx 当一等交付格式宣传(mock HITL 选项),产出的 ".docx" 全是文本冒充,前端 mammoth/JSZip 预览必炸。
- 改动:① 新增 internal/tools/docx.go 最小 OOXML 序列化器 MarkdownToDocx(标题/段落/列表/加粗/XML 转义,产出可被 ingest.parseDocx 往返解析);② write_artifact 增加 format 参数(md 默认/docx),name 以 .docx 结尾自动序列化,MIME 用 extMIME 口径;③ 写侧护栏:xlsx/pptx/doc/xls 等无序列化路径的二进制 Office 扩展在 write_artifact 与 fs_write_file 双双拒绝(明示引导 docx 或 .md);④ runmgr.WriteArtifact 知识索引改走 indexTextOf:二进制内容先经 ingest 抽文本,抽不出则跳过索引(不再把二进制垃圾灌知识库);⑤ mock #doc 演示在用户点名 docx/word 时走真实序列化路径,HITL 选项文案与真实能力对齐。
- 非目标:不做 md 表格→docx 表格(ingest.parseMarkdown 尚不解析 md 表格,序列化端不做走不到的分支,随 ingest 表格解析一并补);不支持 xlsx/pptx 生成;不动前端(兄弟任务已兜底)。
同步记录
| 节点 | sync_base_sha | tested_head_sha | checked_at |
|---|---|---|---|
| 启动 | d64742c71c |
d64742c71c |
2026-09-30T17:53:52Z |
结果与验证(完成后填写)
- 结果:五项改动全部落地(backend internal/tools/docx.go 新增,registry.go/fs.go/runmgr.go/mock.go 修改)。从此系统能产出真实 docx:PK 魔数 ZIP 容器、word/document.xml、pStyle HeadingN(与 ingest 解析约定一致)。
- 验证:go vet(tools/runmgr/runtime)通过;go test ./... 18 包全过零失败,其中新增 docx_test.go 覆盖:ZIP 魔数、ingest 往返(标题层级/转义字符还原/**不泄漏/列表前缀)、write_artifact format 分派与三拒绝路径(伪二进制/data+docx 冲突/未知 format)、fs_write_file 护栏、schema 暴露 format。负向复现依据(排查阶段):JSZip.loadAsync 对文本字节抛出与用户截图逐字一致的报错。
- 验收(make test @ 75b34699d8,含
f65d89e同步):core 1 包 + backend 18 包 + frontend vitest 33/33 + ui tsc+vitest 49/49 + agent-command 2 包,exit=0(2026-09-30T18:09Z)。 - 影响与剩余项:write_artifact 工具契约新增可选 format 参数(向后兼容,省略即旧行为+docx 名自动升级);fs_write_file 对二进制 Office 扩展由"静默产出伪文件"变为"显式拒绝"(行为变化,属修复)。剩余:md 表格支持(记录于非目标);存量伪 docx 工件由渲染侧 PR(UI#21/Frontend#22)兜底可读。
| 同步前验收 |
f65d89e59b|75b34699d8| 2026-09-30T18:08:49Z |