功能简介
Content Moderation 可为指定 Table 或 Bucket 配置写入前文本/图片审核。启用后,不合规内容在持久化前被拒绝,并生成可查询的审核记录;调用链依赖项目总开关、资源配置和可用 Moderation Provider。
当前支持范围
- Content Moderation(APPBASE_ENHANCED):为指定数据表或存储桶启用文本、图片写入前审核,拒绝不合规内容并保留可查询的审核记录;需要实例配置审核 Provider。
适用场景
- 在 Row 写入前检查文本字段。
- 在 File 上传前检查图片内容。
- 通过审核日志追踪允许、拒绝或失败结果。
前置条件
- 实例配置了审核 Provider。
- Project 已开启 Moderation。
- 目标 Table/Bucket 已创建资源级审核配置。
Console 操作路径
Console → Project → Moderation 配置全局能力并查看 Logs;Table → Moderation 或 Bucket → Moderation 配置资源规则。入口是否出现取决于项目开关和当前角色。
SDK 示例
SDK · TypeScript
import { Client } from 'appbase-console-sdk';
import { Moderation } from '<CONSOLE_SOURCE>/lib/sdk/moderation';
const client = new Client()
.setEndpoint('https://<APPBASE_HOST>/v1')
.setProject('<PROJECT_ID>')
.setKey('<API_KEY>');
const moderation = new Moderation(client);
await moderation.createConfig({
resourceType: 'collections',
resourceId: '<TABLE_ID>',
databaseId: '<DATABASE_ID>',
mode: 'pre',
contentTypes: ['text'],
enabled: true,
});
const logs = await moderation.listLogs({ total: true });REST 示例
REST · Bash
curl 'https://<APPBASE_HOST>/v1/moderation-configs' \
-X POST \
-H 'X-Appwrite-Project: <PROJECT_ID>' \
-H 'X-Appwrite-Key: <API_KEY>' \
-H 'Content-Type: application/json' \
--data '{"resourceType":"collections","resourceId":"<TABLE_ID>","databaseId":"<DATABASE_ID>","mode":"pre","contentTypes":["text"],"enabled":true}'常见错误
| 现象 | 处理建议 |
|---|---|
| 内容被拒绝 | 向用户返回稳定业务提示,不暴露 Provider 原始判定细节。 |
| Provider unavailable | 按项目 fail-closed 设计处理;不要静默绕过审核。 |
| 配置目标不存在 | 核对 resourceType、databaseId、tableId/bucketId。 |
403 | 检查 moderation Scope 与资源管理权限。 |
当前限制
- 准确率、语言与图片能力取决于 Provider。
- Moderation 不是法律合规认证,也不能替代人工复核。
- 启用审核会增加写入延迟;Provider 故障时应保持安全失败语义。
Appwrite 兼容说明
Storage/Table 是兼容资源;写入前 Moderation 与日志是 AppBase 增强。
AppBase 增强说明
AppBase 把文本/图片审核绑定到实际数据写入边界,并提供资源配置与审计日志。
发布状态和验证 Commit
origin/main 已核验。验证 Commit:0363062a1c7ea08741975bb5ba0c3361663c9353。
权威来源文件列表
backend-candidate:src/Appwrite/Platform/Modules/Moderation/Http/Moderation/backend-candidate:tests/e2e/Services/Moderation/frontend-candidate:console/src/lib/sdk/moderation.tsfrontend-candidate:console/src/routes/(console)/project-[region]-[project]/moderation/origin-main:docs/products/v2.3.x/moderation/content-moderation.md
Appwrite taxonomy 仅作信息架构参考:https://appwrite.io/docs/advanced/security。上游页面不是 AppBase 实现证据。