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

# 案例演示与工作区种子

> caseDemos 如何绑定真实会话并在详情页展示，以及 workspaceSeed 当前为什么不起作用

这两个字段都在专家配置的「内容」类里，但成熟度差得很远：**案例演示已完整打通**，从配置到详情页展示都在跑；**工作区种子当前是死配置**——数据能存能发布，但运行时从来不读它。

本页把两者的真实状态都写清楚，免得你花时间配一个不生效的东西。

<Note>
  本页内容核对日期 2026-08-11，来源见页尾「真值来源」。
</Note>

***

## 案例演示（caseDemos）

### 它是什么

案例演示让你把**真实发生过的对话**挑出来，展示在专家详情页的「使用案例」区。买家能看到你的专家实际是怎么工作的，比任何描述都有说服力。

关键在于它存的是**引用而不是副本**：

```json theme={null}
[
  {
    "showcaseId": "<chat_session.id>",
    "title": "帮跨境电商卖家理清 2025 年增值税申报",
    "description": "从原始流水到完整申报表，含三个易错点提示",
    "coverImageFileId": "<可选，自定义封面>",
    "sortOrder": 1
  }
]
```

`showcaseId` 指向 `chat_session.id`，也就是一条真实的会话记录。

### 字段行为

| 字段                 | 必填 | 行为                        |
| ------------------ | -- | ------------------------- |
| `showcaseId`       | 是  | 指向真实会话；**查不到该会话则整条被过滤掉**  |
| `title`            | 否  | 留空时回落到会话自己的标题             |
| `description`      | 否  | 留空时返回 null，不回落            |
| `coverImageFileId` | 否  | 自定义封面；留空时回落到会话封面，再空则 null |
| `sortOrder`        | 是  | 展示顺序，升序排列                 |

回落链条只有封面是三级的：

```
自定义封面 → 会话自带封面 → null
```

### 静默过滤

详情接口拿到配置后会去查这些会话，**查不到的直接从结果里剔除**：

```ts theme={null}
const sc = byId.get(demo.showcaseId);
if (!sc) return null;   // 该条被过滤，不报错
```

<Warning>
  这是静默的——配了 5 个案例、其中 2 个的会话被删了，详情页就只显示 3 个，不会有任何错误提示。

  所以**不要删除已经用作案例演示的会话**。发布前建议实际打开一次详情页数一数，确认展示数量与你配的数量一致。
</Warning>

### 配置建议

* 挑**过程完整**的会话。案例的价值在于展示工作方式，半截的对话说明不了什么。
* `title` 别用会话原标题。会话标题通常是自动生成的，写一个说清「解决了什么问题」的标题转化率更高。
* `description` 补充会话里看不出来的信息——比如这次用了什么特殊方法、结果被采纳了没有。
* 用 `sortOrder` 把最有代表性的排在前面，买家通常只看头两个。

***

## 工作区种子（workspaceSeed）

### 设计意图

按数据库列注释的描述，这个字段本应让创作者预置一批文件到沙盒工作区，在**该用户 + 该专家的首次沙盒创建时**解包，后续创建则跳过以免覆盖用户自己的修改。结构是：

```json theme={null}
{
  "agent_md": "...",
  "files": [{ "path": "templates/report.md", "content": "..." }],
  "setup_commands": ["npm install"]
}
```

### 当前实际状态

<Warning>
  **这个字段目前不产生任何运行时效果。**

  数据链路只有一半：`workspaceSeed` 会被保存、会随发布进入版本快照、会被版本还原脚本带回来——但**它从未被下发到运行时**。专家调用的下发链路（`invoke-lifecycle`）里没有任何一处引用它，沙盒创建流程也不读它。

  数据库列注释里提到的归一化模块（`workspace_instructions.py`）实际上不处理这个字段，那句注释已经与实现脱节。

  所以现在配置它的结果是：数据存进去了，沙盒里什么都不会出现。
</Warning>

### 你现在该怎么做

需要给专家预置文件或初始化环境，用已经生效的路径：

| 你想要的效果       | 当前可行的做法                                                                      |
| ------------ | ---------------------------------------------------------------------------- |
| 让专家掌握一套模板/规范 | 做成**技能**（skill）装到专家上，技能内容会进提示词                                               |
| 让专家能读到参考资料   | 用**知识连接器**接外部知识库，或把资料随技能资源一起打包                                               |
| 让专家按固定流程操作   | 写进 **agent 层**行为规则，见 [Prompt 四层结构](/zh/creators/expert-config/prompt-layers) |
| 需要装依赖再干活     | 让专家在对话中用沙盒工具自行执行                                                             |

等这个字段接通运行时后，本页会更新。

***

## 边界与失败态

<AccordionGroup>
  <Accordion title="详情页的案例演示比我配的少">
    有案例引用的会话已被删除或不可访问，这些条目被静默过滤。核对每个 `showcaseId` 对应的会话是否还在。
  </Accordion>

  <Accordion title="案例演示的标题不是我填的">
    你的 `title` 为空字符串或未填，回落到了会话自己的标题。填上非空的 `title` 即可覆盖。
  </Accordion>

  <Accordion title="案例封面显示的是会话截图不是我上传的图">
    `coverImageFileId` 没填或文件已失效，回落到了会话封面。
  </Accordion>

  <Accordion title="配了 workspaceSeed 但沙盒里没有文件">
    这是当前的已知状态，不是配置错误。该字段尚未接通运行时，见上文。
  </Accordion>

  <Accordion title="改了案例演示但详情页没变">
    已上架专家的公开详情读的是发布记录。改动要走「发布新版本 → 审核通过」才生效。
  </Accordion>
</AccordionGroup>

***

## 验证

配完案例演示后，用**非本人账号**打开专家市场详情页：

1. 数一下「使用案例」区展示了几条，与你配置的条数是否一致——不一致说明有条目被静默过滤
2. 确认排序与你的 `sortOrder` 一致
3. 点进任一案例，确认会话内容确实是你想展示的那一段

`workspaceSeed` 无需验证——当前无论怎么配都不会有效果。

***

## 真值来源

<Note>
  核对日期 2026-08-11。来源：

  * 案例演示富化、回落链、静默过滤：`services/core/src/db/service/expert.ts`（`enrichCaseDemos`）
  * 两个字段的类型定义与列注释：`packages/db/src/schema/marketplace.ts`
  * `workspaceSeed` 无运行时消费方：全仓检索该字段，仅存在于 schema、Core 的存取与发布快照路径，`invoke-lifecycle` 与 agent-runtime 零引用
</Note>

***

## 下一步

<CardGroup cols={2}>
  <Card title="Prompt 四层结构" icon="layer-group" href="/zh/creators/expert-config/prompt-layers">
    四个输入框各自的注入位置
  </Card>

  <Card title="专家模式" icon="shield-halved" href="/zh/creators/expert-config/expert-mode">
    兼容模式与完整模式
  </Card>
</CardGroup>
