发布与更新 Artifact
/publish 会上传自包含 HTML Artifact 并返回永久分享 URL。它是 HiPMMCode 交互式会话中的 slash command:先启动 HiPMMCode,再在输入框执行,而不是调用 shell 子命令。
配置 Artifact 托管服务
在 ~/.hipmmcode/config.json 中加入 artifactHost:
{
"artifactHost": {
"origin": "https://www.hipmmai.com",
"apiKey": "your-api-key",
"public": false
}
}API Key 需要 artifact 权限。可以通过环境变量仅覆盖配置中的 Key:
export HIPMMCODE_ARTIFACT_KEY="your-api-key"artifactHost.origin 必须保留在配置文件中;环境变量只覆盖 API Key。
使用自然语言操作
常见的 Artifact 全生命周期操作不需要记忆 /publish 参数。在 HiPMMCode 交互式会话中,可以直接提出类似请求:
把 README.md 发布为公开 Artifact,标题设为“项目介绍”。
把 ownership-plan.md 做成专业信息图并发布为 Artifact。
用 dashboard.html 更新 https://example.com/a/<hash>,并保留原链接。
列出我最近的 10 个 Artifact。
把 <hash> 对应的 Artifact 改为私有。
把 <hash> 对应的 Artifact 改为公开且可被发现。
删除 <hash> 对应的 Artifact。HiPMMCode 会直接调用一等 Artifact 工具的 publish、update、list、set_visibility 或 delete 动作,不会拼接或输入 /publish 命令,也不会启动嵌套的 HiPMMCode 进程。删除不可恢复,仍然必须获得明确确认;已批准其他 Artifact 动作并不会预先授权后续删除。
自然语言路径在发布和更新时接受显式源文件或内联 Markdown/HTML/SVG;专业信息图、视觉对比、股权结构、指标看板和可视化计划等请求会选择 Visualizer 渲染器。首次发布成功后,也可以只指定 hash,让 HiPMMCode 从固定的本地受管源码更新。它还没有覆盖每一种对话来源选择方式:裸 /publish 发布最后一条助手回复、--report 生成对话报告以及 --all 发布完整对话转写,仍由 slash command 提供。对于需要明确、可复现命令语法或这些对话来源的用户,/publish 会继续保留。
命令语法
/publish [--file PATH|--report|--all]
[--template morning-brief|plan|dataviz|visualizer|--enhance]
[--public] [--discoverable]
[--title TITLE]
[--update HASH]命令会在读文件或上传之前拒绝未知、重复及互相冲突的参数。
选择内容来源
# 最后一条助手回复
/publish
# 显式指定文件
/publish --file document.md
/publish --file dashboard.html
/publish --file ownership.svg
# 当前模型整理的对话 Markdown 报告
/publish --report
# 完整对话的 Markdown 转写
/publish --all裸 /publish 始终表示最后一条助手回复,不会扫描回复并猜测文件路径。发布文件必须明确使用 --file;相对路径从当前会话工作目录解析。
--file、--report 和 --all 互斥。如果报告生成不可用,--report 会回退到最后一条助手回复。
显式文件仅支持以下扩展名(大小写不敏感):
.md和.markdown:按 Markdown 渲染;.html和.htm:作为完整 HTML 文档使用;.svg:校验后包装为响应式 Visualizer Artifact。
其他文件类型会被拒绝。源内容和渲染后的 HTML 都不得超过 16 MiB,托管服务还会再次校验最终存储页面。
本地受管源码与远端页面
一次成功发布会形成同一个 Artifact 的两层表示:
- 本地受管源码保存在
~/.hipmmcode/artifacts/<origin-id>/<hash>/source.md、source.html或source.svg,用于后续编辑和更新; - 远端保存由该源码渲染出的 HTML,并通过稳定的
/a/<hash>URL 访问;支持共享运行库的托管端会安全外置完全匹配的大型运行库。
从桌面或其他任意位置发布文件时,HiPMMCode 会在远端成功后复制一份到受管目录,不会移动或删除原文件。此后裸 /publish --update <hash> 和自然语言“更新这个 Artifact”默认读取受管副本;再次显式指定 --file 才会从新文件重新导入。列表会返回本地路径及 current、modified、missing、deleted 等状态。远端删除不会删除本地源码,便于恢复或重新发布。
托管平台按账户隔离远端内容:数据库元数据绑定发布者 userId,HTML 位于 {UPLOAD_DIR}/{userId}/artifacts/{hash}.html。列出、更新、修改可见性和删除都必须以原发布者身份认证;公开短链接只通过不可猜测的 hash 读取对应文件。共享交互运行库是全站只读资源,不包含任何用户正文。
标题与可见性
/publish --title "API 参考"
/publish --public --title "团队状态"
/publish --discoverable --title "季度指标"省略 --title 时,HiPMMCode 会打开交互式选择器,提供模型建议和派生的默认标题。
- 默认是 private:拥有分享 URL 的人可以打开,但不会公开列出。
--public会把 Artifact 列入发布者自己的公开画廊。--discoverable隐含 public,并提交审核;审核通过后才可进入全局探索流。artifactHost.public: true会让新 Artifact 默认 public。
模板与 Visualizer
静态模板只适用于 Markdown;visualizer 是独立的信息图渲染器,可用于 Markdown、完整 HTML 和独立 SVG:
/publish --template morning-brief
/publish --file design.md --template plan --public
/publish --report --template dataviz --discoverable
/publish --file ownership-plan.md --template visualizer
/publish --file dashboard.html --template visualizer
/publish --file ownership.svg渲染模式包括 morning-brief、plan、dataviz 和 visualizer。Visualizer 会让当前模型生成带对比卡、分段比例条、指标卡、响应式布局和内嵌 SVG 的专业自包含信息图。Markdown 生成失败或未通过校验时,HiPMMCode 会提示原因并发布确定性的 DataViz 回退版,同时为后续更新保留 Visualizer 模式。
独立 SVG 会自动选择 Visualizer,必须只有一个 <svg> 根节点、具备有效 viewBox 且不引用外部资源;无效 SVG 不会上传。完整 HTML 选择 Visualizer 时仍由作者控制,只补充 Visualizer 标记和现有本地运行时支持。
AI 增强 Artifact
--enhance 让当前模型把 Markdown 生成带内联 CSS 和可选内联 JavaScript 的完整精美文档:
/publish --file product.md --enhance --public它仅适用于 Markdown,并与 --template 互斥。AI 增强最多接受 120,000 个 Markdown 字符,生成文档还会接受完整性、大小、远程资源和网络 API 校验。超过增强输入上限、生成不可用或校验失败时,HiPMMCode 会提示原因,并回退标准 Markdown 渲染器。生成期间按 Ctrl+C 会取消整次发布,不会上传回退页面。
交互运行时与托管体积
本地预览和导出的 HTML 不依赖 CDN,并保持完整自包含。标准 Markdown 外壳会内联本地 highlight.js;模板、直接 HTML 和增强 HTML 在出现 language-* 代码块时补充它。其他本地运行时按需加入:
- Markdown 有
mermaidfenced block 时使用 Mermaid; - 页面声明
data-chart-runtimeJSON 规格时使用 Chart.js。
Chart.js 适配器读取一个 #primary-chart 容器和 JSON script,例如:
<div id="primary-chart"></div>
<script type="application/json" data-chart-runtime>
{
"type": "line",
"series": [
{"name": "Requests", "points": [["Mon", 12], ["Tue", 18]]}
]
}
</script>标准 Markdown、模板、直接 HTML 和成功增强的 HTML 都使用同一套运行时注入逻辑。直接 HTML 应保持自包含;托管端 CSP 会阻止第三方脚本、样式、frame 和网络请求。
在本地自包含文件或旧托管端中,这些运行时会直接计入 Artifact 大小:Mermaid 约 3.16 MiB,highlight.js 约 0.94 MiB,Chart.js 约 0.20 MiB。因此旧页面带 Mermaid 时常见约 3.2 MiB,同时含受支持语言代码块时约 4.1 MiB。这不是正文重复。
支持 hipmmcode-artifact-runtime-v1 的托管端会把完全匹配的运行库外置为同源、内容寻址且带 SHA-256 SRI 的只读资源。新发布页面本身通常降到正文实际大小;三个运行库全站各保存一份并长期缓存,Brotli 后分别约为 669 KiB、239 KiB 和 60 KiB。旧托管端、协商失败或未知运行库会安全回退到原始自包含 HTML。
更新现有 Artifact
从 /a/<hash> 末尾取得 hash,再发布替换内容:
# 使用该 hash 的本地受管源码
/publish --update <hash>
# 显式 HTML 和新标题
/publish --update <hash> --file dashboard.html --title "Dashboard v2"
# 其他有效 Markdown 工作流
/publish --update <hash> --report --template plan
/publish --update <hash> --all --enhance--update 支持 --file、--report、--all、--template、--enhance 和 --title。不指定来源时必须已有本地受管源码;HiPMMCode 不会用无关的最后一条助手回复覆盖现有 Artifact。只有所有者可以更新;更新会替换内容并可同步标题,但保留 hash、URL 和原 public/discoverable 状态。因此,带 --update 时会拒绝 --public 和 --discoverable。
托管安全与缓存
Artifact 响应使用严格 Content Security Policy 和 sandbox。页面仍能运行自包含的内联脚本和样式,但外部连接、表单、嵌套 frame、对象加载以及平台同源状态访问会被阻止。托管端还发送 X-Content-Type-Options: nosniff 和 Referrer-Policy: no-referrer。
响应使用 Cache-Control: private, no-cache, must-revalidate 和基于内容的 ETag。客户端会重新验证而不是长期保留不可变副本;条件请求匹配时返回 304,更新内容会改变 ETag 但不会改变 URL。
常见错误
- Artifact host not configured:在
~/.hipmmcode/config.json配置artifactHost.origin和 API Key,或通过HIPMMCODE_ARTIFACT_KEY提供 Key。 - Unsupported artifact file type:
--file只可使用.md、.markdown、.html、.htm或.svg。 - Artifact source is empty:先完成一条助手回复,或选择非空显式来源。
- Artifact too large:减少内嵌内容,确保源和最终文档都不超过 16 MiB。
- 更新返回 404/403:检查 URL hash,并使用原发布者所属的 API Key。