52c7082c70
Expose generate_docx in mindspace-sandbox-mcp so agents can write public/*.docx before linking HTML download pages, with tests mirroring the Mark summary flow. Co-authored-by: Cursor <cursoragent@cursor.com>
3.0 KiB
3.0 KiB
name, description
| name | description |
|---|---|
| docx-generate | 在工作区内用 Python 标准库(zipfile + XML)生成 Word .docx,无需 python-docx 或 docx_tool |
Word 文档生成(.docx)
重要说明
- 平台没有
docx_tool/update_doc,不要编造或调用不存在的工具 write_file不能写二进制 .docx,不要用 write_file 假装生成 Word- 禁止在 HTML 里用
data:application/...;base64,...内嵌 docx(极易被截断损坏,下载后乱码) - 需要公网下载时:先用本脚本生成
.docx落盘,再在 HTML 里用相对路径链接(如public/方案.docx) - 生产沙箱通常不能 pip install,优先用本技能自带的 stdlib 脚本
- 生成后必须用
list_dir oa/(或目标目录)确认文件已落盘,再告诉用户
何时使用
- 用户要 Word / docx / .doc 文档(输出
.docx) - 需要保存到
oa/、private/、public/等分区
推荐方式(优先)
优先调用 sandbox-fs 的 generate_docx 工具(与 generate_long_image 同级),直接写入 public/文件名.docx 或 oa/文件名.docx:
output_path:如public/协和智慧门诊研究摘要.docxtitle:文档标题sections:章节数组(heading、paragraphs、可选table)
生成后必须 list_dir public/ 确认目标文件已落盘,再写 HTML 下载链接。
备选命令(仅当 MCP 不可用时)
技能目录内有 generate_docx.py(仅依赖 Python 3 标准库):
python3 .agents/skills/docx-generate/generate_docx.py --json - --output oa/报告.docx <<'EOF'
{
"title": "文档标题",
"sections": [
{
"heading": "一、章节标题",
"paragraphs": ["段落一", "段落二"],
"table": {
"headers": ["列1", "列2"],
"rows": [["A", "B"], ["C", "D"]]
}
}
]
}
EOF
然后:
list_dir oa
JSON 字段
| 字段 | 说明 |
|---|---|
title |
文档主标题(可选) |
sections[] |
章节数组 |
sections[].heading |
章节标题 |
sections[].paragraphs |
字符串段落列表 |
sections[].table.headers |
表头 |
sections[].table.rows |
表格行 |
禁止把 <w:tbl> 等 OOXML 标签写进 paragraphs 文本里;表格只能走 table 字段。
公网下载页(HTML + docx)
用户要「打开链接下载 Word」时:
- 用本脚本生成 docx(建议
public/文件名.docx或oa/文件名.docx再复制到public/) - 用
static-page-publish写下载页,href指向同目录相对路径:
<a href="medical-plan.docx" download>下载 Word 文档</a>
- 禁止
href="data:...;base64,..."嵌入 docx
备选方案
- 用户要在线查看、可分享:用
static-page-publish技能写public/xxx.html - 环境有 python-docx(工作区
.venv已装):仍可用,但生成后必须list_dir验证 - 禁止在未验证文件存在时宣称「已生成 docx」