fix: gate public page download links before Portal release

Add a MindSpace public HTML checker for missing companion docx/PDF paths, wire it into runtime packaging and release-portal-runtime-prod.sh, and document the workflow for agents and ops.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
john
2026-07-01 12:40:59 +08:00
parent 16828a58f7
commit b4a2b2bdaf
10 changed files with 368 additions and 3 deletions
+10 -1
View File
@@ -142,7 +142,14 @@ description: 在专属 MindSpace 目录生成可公开访问的静态 HTML 报
3. 在 \`<head>\` 写入 **mindspace-cover** 元数据(见下文,必须与页面主题一致)
4. 页面内资源使用**相对路径**\`assets/foo.png\`),不要用磁盘绝对路径
5. 保存 HTML 后,服务端会**立即**生成同名预览图 \`<文件名>.thumbnail.svg\`(Agent 交互阶段即生效,无需等用户保存到「我的空间」)
6. 完成后按「回复格式」返回可点击链接
6. 下载按钮的相对链接目标(如 \`public/report.docx\`)必须已落盘且 basename 与 HTML 一致
7. 完成后按「回复格式」返回可点击链接
## 伴生下载文件(必须)
- 相对路径下载链接(\`.docx\` / \`.pdf\` 等)必须在 HTML 同目录或子目录真实存在
- 改 HTML 文件名时同步 rename/copy 伴生文件;从 \`oa/\` 复制到 \`public/\` 再链接
- 可跑 \`node scripts/check-mindspace-public-links.mjs\` 自检
## 回复格式(必须)
@@ -279,6 +286,7 @@ export function buildSandboxSessionConstraints({ baseConstraints, developerTools
'- 开始前执行 load_skill → `static-page-publish`,按技能说明写入 mindspace-cover 元数据',
'- **禁止**让用户手动保存到 public 或说无法生成页面(除非 write_file 调用失败)',
'- 完成后回复 `[页面标题](公网URL)` 可点击链接;写入 `public/` 时 URL 必须含 `/public/` 路径段',
'- 下载附件:相对链接文件必须已在 `public/` 落盘,basename 与 HTML 一致',
);
return lines.join('\n');
}
@@ -299,6 +307,7 @@ export function buildPublishConstraints({ slug, username, publicBaseUrl, publish
'- **生成页面(必须亲自完成)**:先 `load_skill` → `static-page-publish`,再用 `write_file`/`edit_file` 写入 `public/页面.html`',
'- **禁止**让用户「手动保存到 public 目录」或说「我无法生成页面」——除非 write_file 已失败并报告错误',
'- 完成后给出 Markdown 可点击公网链接 `[标题](URL)`;写入 `public/页面.html` 时 URL 为 `.../MindSpace/<用户ID>/public/页面.html`',
'- 下载链接(如 `report.docx`)必须与 HTML 同目录且文件名一致',
`- 发布技能:\`${PUBLISH_SKILL_NAME}\`(生成页面前应 load_skill`,
].join('\n');
}