> ## Documentation Index
> Fetch the complete documentation index at: https://docs.flashduty.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 产物

> 产物库集中呈现 AI SRE 会话中用 present_files 工具产出的文件：经 publish_artifact 工具发布（限 HTML 与 Markdown），或在控制台用“发布到产物库”提交（图片、PDF、源码、数据文件等更多类型），例如 /insight 报告。支持搜索、按范围筛选与修改范围、重命名、置顶、分享（账户内或公开链接）、下载和删除。

> AI SRE 需在控制台开通，面向 On-call 专业版及以上订阅，按实际用量计费，详见[开通与计费](/zh/ai-sre/overview#开通与计费)。

## 概述

产物（Artifact）是 AI SRE 在会话中用 `present_files` 工具产出、再发布到产物库的文件。发布有两条路径，两者能接受的类型并不相同：

* **Agent 工具 `publish_artifact`**：只发布 HTML / Markdown 文档（`.html` `.htm` `.md` `.markdown`）——一份自包含的报告或页面，最典型的是在会话里输入 `/insight` 生成的运营洞察报告。其它类型一律被拒绝，返回 `unsupported_format`。
* **控制台里 `present_files` 文件旁的“发布到产物库”按钮**（见下文 [新建产物](#新建产物)）：可发布的类型更宽：

  <Accordion title="查看可发布的文件类型">
    | 类别 | 常见扩展名 |
    | - | - |
    | 网页与文档 | `.html` `.htm` `.md` `.markdown` `.txt` `.log` |
    | 数据与配置 | `.csv` `.tsv` `.json` `.yaml` `.yml` `.xml` `.toml` `.ini` |
    | 图片 | `.png` `.jpg` `.jpeg` `.gif` `.svg` `.webp` |
    | PDF | `.pdf` |
    | 源码 | `.py` `.go` `.js` `.mjs` `.ts` `.jsx` `.tsx` `.java` `.c` `.h` `.cpp` `.cs` `.rb` `.rs` `.php` `.sh` `.sql` `.kt` `.swift` `.scala` `.css` `.vue` `.svelte` `.proto` `.tf` `.hcl` 等 |
    | 压缩包 | `.zip` `.tar` `.gz` `.tgz` |
  </Accordion>

不在上表范围内的文件，会话中不会出现“发布到产物库”按钮。

发布后的产物初始继承来源会话的作用域：来自个人会话的产物归创建者“个人”所有；来自绑定了团队的会话的产物归该“团队”所有，可分享给账户内的其它成员查看。拥有编辑权限时，之后还可以修改产物范围。

入口：左侧导航 **AI SRE → 产物**。

<Note>
  产物库不能直接上传文件：产物都由 Agent 在会话中产出并发布，**新建产物** 也是跳转到会话完成。产物库负责浏览、检索与管理已发布的产物。
</Note>

## 列表页

* **搜索与筛选**：按标题搜索；按范围（**全部 / 个人 / 团队**）筛选，选择“团队”后可多选具体团队，不选则为您可见的全部团队。
* **视图**：右上角可切换卡片视图（默认）或列表视图，选择会保存在浏览器中。列表视图显示名称、所属范围（团队名或个人产物的创建者）、来源对话（可点击跳转；会话已删除时显示“会话已删除”）、生成时间、修改时间、置顶按钮和操作。
* **排序**：可按生成时间或修改时间排序，默认按**修改时间降序**。无论按什么排序，您置顶的产物始终排在最前面（最近置顶的在前）。
* **分页**：每页 12 / 24 / 48 条，默认 24 条。
* **地址可分享**：范围、搜索词、排序和页码都记录在页面地址中，复制地址即可分享或收藏筛选后的列表；从详情页返回时也会回到原来的位置。

卡片展示内容缩略图（HTML、Markdown、图片和纯文本有静态预览，PDF 等显示空框）、类型图标、标题、编辑时间（悬停可看精确时刻）、作用域，以及是否已开启公开链接、是否已置顶。

### 置顶

在列表或卡片上点击图钉按钮，或在 **更多操作** 菜单中选择 **置顶** / **取消置顶**。

置顶是**您个人的偏好**，不是编辑：任何您能看到的产物（包括他人的个人产物和团队产物）都能置顶，**不需要编辑权限**；它只把产物排到您自己的产物库最前面，不改变产物本身，也不影响其他成员看到的顺序。在第 2 页置顶的产物会移到第 1 页。

### 新建产物

点击页面右上角的 **新建产物**，会跳转到会话页面并预填一段引导草稿。Agent 会先向您确认目标读者、内容/数据来源、交互与视觉风格，再构建并发布产物——不需要填写表单。

<Tip>
  如果会话里已经产出了文件，直接点击该文件旁的“发布到产物库”按钮更快，不必再走一次完整对话。
</Tip>

## 卡片操作

每张卡片右上角的“更多操作”菜单提供：

| 操作 | 说明 |
| - | - |
| 置顶 / 取消置顶 | 只改变您自己的列表顺序，不需要编辑权限，见上文 [置顶](#置顶) |
| 复制链接 | 复制该产物详情页的链接，可分享给账户内的其他成员 |
| 下载 | 产物有关联文件时出现，下载原始文件 |
| 重命名 | 需要编辑权限 |
| 修改范围 | 需要编辑权限；可选个人或可访问的团队，只有创建者可以改回个人 |
| 删除 | 需要编辑权限，删除前需确认。只从产物库移除，来源会话与文件本身保留 |

## 详情页

详情页顶部提供：

* **标题**：有编辑权限时可直接点击标题修改，按 Enter 保存、Esc 取消；标题下方显示创建者；
* **分享**：选择“仅账户内”或“公开链接”，见下文 [分享产物](#分享产物)；
* **删除**、**修改范围**（需要编辑权限）与 **下载**（有关联文件时）；
* **来源会话**：显示编辑时间与“最近更新来自会话 〈会话名〉”，点击可打开来源会话的完整对话。来源会话已删除或您无权访问时不显示，产物本身仍可查看。

正文按产物的内容类型渲染（例如 HTML 报告直接内联展示为页面）。

<Note>
  在手机上，详情页是**只读阅读器**：只显示标题和正文，不能编辑、分享、修改范围或删除；产物有关联文件时，仍可在“更多操作”里下载。
</Note>

## 分享产物

详情页工具栏的 **分享** 按钮会打开分享面板。面板顶部的 **管理权限** 列出谁可以管理这个产物的分享（创建者标记为“所有者”，团队产物还会列出团队成员）；下方的 **可见权限** 提供两种模式：

| 模式 | 谁能打开 | 内容 |
| - | - | - |
| 仅账户内 | 登录同一账户的成员 | 账号内成员登录后可查看，内容**始终为最新版本** |
| 公开链接 | 任何拿到链接的人，**无需登录** | 展示的是生成链接那一刻的**内容快照**，产物更新后不会自动同步 |

### 公开链接

<Tip>**版本要求**：公开链接需要 On-call 专业版及以上订阅。[了解更多](https://flashcat.cloud/flashduty/price/)</Tip>

选择 **公开链接** 后，面板会先展示一段内容预览和风险提示，再由您点击 **生成公开链接** 才真正生效：

<Warning>
  生成公开链接后，任何拿到链接的人都可以查看此产物，链接也可能被继续转发。请勿分享密钥、个人信息或未经授权的第三方内容。
</Warning>

生成后链接会自动复制到剪贴板。公开链接的形式为 `https://<控制台域名>/share/artifact/<产物 ID>`，不含令牌，任何拿到链接的人都能访问。

<Note>
  私有化部署下，公开链接依赖实例配置了可达的分享静态资源地址（CDN）。未配置时，分享面板不会出现“公开链接”选项，仅可“仅账户内”分享；此前已生成的公开链接仍可正常管理与撤销。SaaS 环境不受此限制。
</Note>

访问者看到的是只读页面，标题旁注明“内容由用户生成，未经核实”，并提供 **反馈**（举报不当内容）和 **登录** 入口。

| 操作 | 说明 |
| - | - |
| 生成公开链接 | 把产物当前内容复制为一份公开快照并启用链接 |
| 更新快照 | 仅当检测到产物内容已更新时出现（提示“识别到产物内容有更新，可更新快照以同步最新内容”）。点击后用最新内容覆盖快照，**链接保持不变** |
| 撤销公开链接 | 关闭公开访问，链接立即失效 |

<Note>
  超过 **16 MiB** 的产物无法生成公开链接，会提示该产物体积超限。此时仍可使用“仅账户内”模式分享。
</Note>

## 更新已发布产物

再次发布同一个文件**不会**静默覆盖已发布的产物。Agent 更新产物时必须指明要更新哪个产物，以及它基于哪个版本修改；如果产物在此期间被别人改过，Agent 会先读取当前已发布的内容、合并后再重试，而不是直接覆盖。更新后产物链接与 ID 不变。

另外几点：

* 内容没有变化时，产物不会被改动。
* 在会话中重新展示同一个文件**不会**更新已发布的产物；要更新，请让 Agent 重新发布。
* 已删除的产物不会被 Agent 重新发布“复活”；只有您在会话里点击文件旁的“发布到产物库”按钮，才能恢复已删除的产物。

<Accordion title="技术细节：publish_artifact 的版本校验与返回值">
  Agent 用 `publish_artifact` 更新时，须同时带上该产物的 `artifact_id` 和上一次发布返回的 `if_revision`（形如 `rev_…` 的版本指纹）：

  | 情况 | 返回 | 结果 |
  | - | - | - |
  | `artifact_id` 与 `if_revision` 都对得上 | `status: published`，附 `operation`（`created` / `updated` / `unchanged`）与新的 `revision` | 产物原地更新 |
  | 只给了文件路径，且内容与已发布版本不同 | `status: needs_review`，`reason: explicit_artifact_id_required` | 不发布 |
  | 给了 `artifact_id` 但没给 `if_revision` | `status: needs_review`，`reason: revision_required` | 不发布 |
  | `if_revision` 与当前版本不一致 | `status: needs_review`，`reason: revision_conflict` | 不发布 |

  返回 `needs_review` 时，当前已发布内容的副本与当前 `revision` 会写进会话工作区。失败时返回错误码：`unsupported_format` / `permission_denied` / `artifact_deleted` / `storage_unavailable`（可重试）/ `file_too_large` / `invalid_path`；提交结果无法确认时返回 `status: unknown` 与 `op_…` 操作 ID，Agent 不会另建一份产物。
</Accordion>

## 权限

满足以下任一条件，即可重命名、修改范围或删除产物：

| 条件 | 说明 |
| - | - |
| 创建者本人 | 发布该产物所属会话的所有者 |
| 账户 Owner / 管理员 | 账户内任意产物，包括他人的个人产物（这一点与自动化规则不同） |
| 团队成员 | 团队产物的该团队成员 |

没有编辑权限时，只能置顶、复制链接和下载。

## 相关页面

<CardGroup cols={2}>
  <Card title="控制台对话" icon="comments" href="/zh/ai-sre/sessions">
    了解会话如何用 present\_files 工具展示文件——产物正是从这些文件发布而来。
  </Card>

  <Card title="使用洞察" icon="gauge-high" href="/zh/ai-sre/insight">
    `/insight` 生成的运营洞察报告本身就是一种产物，可以在产物库里统一管理。
  </Card>

  <Card title="自动化" icon="calendar-clock" href="/zh/ai-sre/automations">
    定时自动化跑出的运行也可以把产出的报告发布为产物，长期沉淀在产物库里。
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.