Skip to main content
Studio 里这个开关的文案是「隐藏内部内容」。名字容易让人以为:不打开它,你的人格、技能、灵魂就会被买家看到。 实际不是这样。 敏感内容的脱敏是无条件的,与这个开关无关。这个开关今天真正决定的是另外一件事。本页把两者分开讲清楚。
本页内容核对日期 2026-08-11,来源见页尾「真值来源」。

两个取值

数据库默认值是 0

脱敏不依赖这个开关

公开的市场详情接口在查询时根本没有 SELECT 这些列
  • personaMd(人格)
  • guardContent(GUARD 内容)
另外三个虽然在类型里,但返回值被硬编码成 null:
这段代码里没有任何 if (expertMode) 判断。已上架专家和未上架专家两条读取路径都是如此。 所以:无论开关开不开,买家都看不到这五项内容。 保护是服务端行为,不是可选项。

这个开关今天决定什么

有两处实际生效的行为。

一、购买对话框的挂载

在市场页的操作区,购买弹窗组件只在 expertMode 为真时才挂载:
而触发它的条件是:
组合起来就是:付费 + 关闭试用 + 未购买的专家,用户点「使用」时需要弹出购买框。如果这时 expertMode 是 0,弹窗组件没挂载,购买流程走不通。
如果你的专家是「付费且关闭了试用」,请确认 expertMode 为 1,否则买家点击后可能没有可用的购买入口。付费但开着试用的专家不受影响——用户先进入试用,试用耗尽后走另一条解锁路径。

二、导入专家包时的自动推导

从专家压缩包导入配置时,这个值由包里的可见性声明推导:
三项全部声明为 hidden 才置 1,只要有一项不是就置 0。

发布时会被自动置位

发布流程里有一条强制规则:带技能内容的专家,发布时自动把 expertMode 置为 1,覆盖你的设置。
这个覆盖发生在发布事务内,与状态更新一起写入。 所以:
  • 你的专家装了技能 → 发布后这个值一定是 1,你在 Studio 关掉它也会被发布流程改回来
  • 你的专家没有技能 → 保持你的设置

该怎么设置

结论:多数情况下保持 1 是安全的,代价是没有的(脱敏本来就是无条件的,开着它不会额外隐藏什么)。

边界与失败态

这是正确行为。脱敏无条件生效,与开关无关。想让买家了解专家能力,用「概览」和「案例演示」——它们本来就是给买家看的字段。
你的专家带了技能内容,发布流程会强制置 1 以保护创作者知识产权。这是预期行为。
如果这是一个付费且关闭试用的专家,检查 expertMode 是否为 1。为 0 时购买弹窗组件不会挂载。
导入时按包里 visibility 的三项推导,必须 persona / skills / knowledge 全部为 hidden 才置 1。检查包里的可见性声明。

验证

非本人账号在市场页测试:
  1. 验脱敏:打开专家详情页,确认页面上没有出现你的人格、灵魂、行为规则、技能原文。这一项无论开关如何都应该通过——不通过说明有其它问题,请反馈。
  2. 验购买路径(仅付费且关闭试用的专家):点击「使用」,确认购买弹窗正常出现且能完成支付。
创作者本人账号测不出第 2 项——你对自己的专家有完整访问权,不会触发购买分支。

真值来源

核对日期 2026-08-11。来源:
  • 取值含义与默认值:packages/db/src/schema/marketplace.ts
  • 公开详情的无条件脱敏:services/core/src/db/service/expert.tsgetExpertDetail 两条内容读取路径均未 SELECT 敏感列)
  • 发布时自动置位:同上(发布事务中的 expertModeOverride
  • 购买弹窗门控与触发条件:apps/web/src/components/marketplace/UseInProfyAction.tsx
  • 导入推导规则:apps/web/src/lib/expert/parse-expert-zip.ts
  • 开关文案:apps/web/src/i18n/messages/{zh,en}/creatorCenter.json

下一步

Prompt 四层结构

四个输入框各自的注入位置

定价与计费

价格如何派生计费类型