copy(server,contracts): 按各路术语建议统一用词

下载盘、页面验证、站点页、交给智能体、后台任务、提供方、凭证、其他、抓取间隔、
需要处理的事项、候选作品 / 匹配到多部作品、作品(不叫条目)、挂载点、下载中;
识别查询不再说「远端」,回收站与收录版本提示去掉公文腔;数据保留标签与设置页一致;同步断言。

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01Cxwgnn2pbzQ7rXv3rq7fei
This commit is contained in:
rootandClaude Opus 5.5 committed 2026-10-07 02:10:19 +08:00
1 parent e9e20e7e79
commit 148b12f279
58 files changed
+131 -128

No files matched your search

+1 -1
View File
@@ -402,7 +402,7 @@ function interactionHint(
return {
capabilityId: "approval",
phase: e.status === "approved" ? "succeeded" : "denied",
summary: `审批${e.status}${e.reason ? `:${e.reason}` : ""}`.slice(0, 600),
summary: `审批${e.status}${e.reason ? `:${e.reason}` : ""}`.slice(0, 600),
};
default:
return null;
+2 -2
View File
@@ -17,7 +17,7 @@ export const browserApi = {
method: "post",
path: "/browser/providers",
scope: "admin",
summary: "登记浏览器服务(camofox 地址、访问凭据存凭证库、启用)",
summary: "登记浏览器服务(camofox 地址、访问凭证存凭证库、启用)",
body: browser.BrowserProviderCreate,
response: browser.BrowserProviderView,
}),
@@ -25,7 +25,7 @@ export const browserApi = {
method: "patch",
path: "/browser/providers/{id}",
scope: "admin",
summary: "修改浏览器服务地址、访问凭据或启用(环境变量登记的只能改启用)",
summary: "修改浏览器服务地址、访问凭证或启用(环境变量登记的只能改启用)",
params: browser.BrowserProviderParams,
body: browser.BrowserProviderUpdate,
response: browser.BrowserProviderView,
+1 -1
View File
@@ -86,7 +86,7 @@ export const executionApi = {
path: "/acquisition-plans/{id}/cancel",
scope: "organize.execute",
summary:
"取消还没提交到下载器的计划(待批准 / 已预留):释放收录版本与预算预留;已有下载任务的返回 409。待批准的计划用拒绝审批(拒绝后计划自动取消)",
"取消还没提交到下载器的计划(等你批准 / 已预留):释放收录版本与预算预留;已有下载任务的返回 409。等你批准的计划用拒绝审批(拒绝后计划自动取消)",
params: IdParam,
response: execution.AcquisitionPlan,
}),
+5 -5
View File
@@ -17,7 +17,7 @@ export const libraryApi = {
method: "get",
path: "/identity-pool",
scope: "read",
summary: "未识别资源(可按原始标题检索;候选不建正式作品)",
summary: "未识别资源(可按原始标题检索;候选作品不建正式作品)",
query: identity.IdentityPoolQuery,
response: cursorPage(identity.IdentityPoolItem),
}),
@@ -25,7 +25,7 @@ export const libraryApi = {
method: "post",
path: "/identity-pool/{id}/assign",
scope: "organize.execute",
summary: "为未识别资源手动指定候选 / 本地作品 / 外部身份",
summary: "为未识别资源手动指定候选作品 / 本地作品 / 外部身份",
params: IdParam,
body: identity.ReleaseIdentityAssign,
response: ReleaseIdentityResult,
@@ -72,7 +72,7 @@ export const libraryApi = {
method: "get",
path: "/identity/enrich-stats",
scope: "read",
summary: "元数据补全命中率(最近 N 天,按来源类别:百科、平台、豆瓣摘要、其它网站摘要)",
summary: "元数据补全命中率(最近 N 天,按来源类别:百科、平台、豆瓣摘要、其他网站摘要)",
query: identity.EnrichStatsQuery,
response: identity.EnrichStats,
}),
@@ -128,7 +128,7 @@ export const libraryApi = {
method: "get",
path: "/inventory",
scope: "read",
summary: "库存叠加(站点工作台):按作品返回已有版本 / 收录版本缺口 / 下载中",
summary: "库存叠加(站点页):按作品返回已有版本 / 收录版本缺口 / 下载中",
query: organization.InventoryQuery,
response: organization.InventoryResponse,
}),
@@ -244,7 +244,7 @@ export const libraryApi = {
method: "post",
path: "/discover/tmdb-match",
scope: "read",
summary: "豆瓣 / bgm 条目 → TMDB 作品(名称 + 年份匹配,对照 MP 投影);确定的给 match 并记住,否则给候选",
summary: "豆瓣 / bgm 作品 → TMDB 作品(名称 + 年份匹配,对照 MP 投影);确定的给 match 并记住,否则给候选",
body: discover.DiscoverMatchRequest,
response: discover.DiscoverMatchResult,
}),
+7 -7
View File
@@ -70,7 +70,7 @@ export const platformApi = {
method: "get",
path: "/cache/tmdb",
scope: "admin",
summary: "TMDB 缓存条目(请求响应与识别结果:键、过期时间、大小)与上限 / TTL",
summary: "TMDB 缓存记录(请求响应与识别结果:键、过期时间、大小)与上限 / TTL",
query: cache.TmdbCacheQuery,
response: cache.TmdbCacheList,
}),
@@ -99,7 +99,7 @@ export const platformApi = {
method: "get",
path: "/cache/regions",
scope: "admin",
summary: "通用缓存(kv_cache)按区统计:条目数、已过期数、占用字节、最近写入",
summary: "通用缓存(kv_cache)按区统计:条数、已过期数、占用字节、最近写入",
response: cache.CacheRegionList,
}),
regionClear: ep({
@@ -197,7 +197,7 @@ export const platformApi = {
method: "get",
path: "/pi/providers",
scope: "admin",
summary: "Pi provider 能力表(认证方式、订阅登录方式与条款提示、baseUrl 覆盖、env 字段、静态模型表)",
summary: "模型提供方能力表(认证方式、订阅登录方式与条款提示、baseUrl 覆盖、env 字段、静态模型表)",
query: pi.PiProvidersQuery,
response: pi.PiProvidersResponse,
}),
@@ -230,7 +230,7 @@ export const platformApi = {
path: "/pi/upstreams/{id}",
scope: "admin",
auth: "session",
summary: "修改模型服务(provider 不可改;makeDefault 设默认模型服务)",
summary: "修改模型服务(提供方不可改;makeDefault 设默认模型服务)",
params: IdParam,
body: pi.PiUpstreamUpdate,
response: pi.PiUpstream,
@@ -240,7 +240,7 @@ export const platformApi = {
path: "/pi/upstreams/{id}",
scope: "admin",
auth: "session",
summary: "删除模型服务(连同凭据;是默认模型服务时清空默认)",
summary: "删除模型服务(连同凭证;是默认模型服务时清空默认)",
params: IdParam,
response: OkResult,
}),
@@ -249,7 +249,7 @@ export const platformApi = {
path: "/pi/upstreams/{id}/test",
scope: "admin",
auth: "session",
summary: "测试模型服务:默认只解析凭据与校验模型(不产生费用);mode=completion 发一次最小补全",
summary: "测试模型服务:默认只解析凭证与校验模型(不产生费用);mode=completion 发一次最小补全",
params: IdParam,
body: pi.PiUpstreamTestRequest,
response: pi.PiUpstreamTestResult,
@@ -267,7 +267,7 @@ export const platformApi = {
path: "/pi/upstreams/{id}/models/refresh",
scope: "admin",
auth: "session",
summary: "获取模型列表:用该模型服务的凭证调 provider 的模型列表接口并存库;失败或不支持时回静态目录并给出原因",
summary: "获取模型列表:用该模型服务的凭证调提供方的模型列表接口并存库;失败或不支持时回静态目录并给出原因",
params: IdParam,
response: pi.PiUpstreamModels,
}),
+4 -4
View File
@@ -8,7 +8,7 @@ export const reviewApi = {
decisions: {
...crud(
"/decisions",
"待处理事项",
"需要处理的事项",
{
row: agent.Decision,
filters: { status: agent.DecisionStatus.optional(), kind: agent.DecisionKind.optional() },
@@ -19,7 +19,7 @@ export const reviewApi = {
method: "post",
path: "/decisions/{id}/resolve",
scope: "organize.execute",
summary: "处理待处理事项",
summary: "处理事项",
params: IdParam,
body: agent.DecisionResolveInput,
response: agent.Decision,
@@ -28,7 +28,7 @@ export const reviewApi = {
method: "get",
path: "/decisions/summary",
scope: "read",
summary: "未关闭待处理事项按作品与问题类型聚合",
summary: "未关闭的需要处理的事项按作品与问题类型聚合",
query: z.object({ status: agent.DecisionStatus.optional() }),
response: DecisionSummary,
}),
@@ -105,7 +105,7 @@ export const reviewApi = {
method: "post",
path: "/agent/runs",
scope: "organize.execute",
summary: "委托目标:建 agent_run 并入队 runAgent(proposeFirst = 先给方案;mode 已弃用)",
summary: "交给智能体:建 agent_run 并入队 runAgent(proposeFirst = 先给方案;mode 已弃用)",
body: agent.AgentRunStartInput,
response: agent.AgentRun,
}),
+1 -1
View File
@@ -140,7 +140,7 @@ export const rulesApi = {
method: "get",
path: "/subscriptions/{id}/progress",
scope: "read",
summary: "订阅进度:季总集数、每集状态(已覆盖/在途/缺失/疑似缺集)、收录版本在途与延后",
summary: "订阅进度:季总集数、每集状态(已覆盖 / 下载中 / 缺失 / 疑似缺集)、收录版本下载中与延后",
params: IdParam,
response: policy.SubscriptionProgress,
}),
+1 -1
View File
@@ -136,7 +136,7 @@ export const sourcesApi = {
method: "get",
path: "/sites/{id}/releases/{rid}",
scope: "read",
summary: "资源详情(refresh=true 时实时复核详情;失败保留既有数据)",
summary: "资源详情(refresh=true 时刷新详情;失败保留既有数据)",
params: z.object({ id: Id, rid: Id }),
query: z.object({ refresh: z.enum(["true", "false"]).optional() }),
response: sources.WorkbenchReleaseDetail,
+4 -4
View File
@@ -42,7 +42,7 @@ export const systemApi = {
path: "/auth/password",
scope: "admin",
auth: "session",
summary: "修改密码(吊销其它会话)",
summary: "修改密码(吊销其他会话)",
body: auth.PasswordChangeRequest,
response: auth.PasswordChangeResult,
}),
@@ -84,7 +84,7 @@ export const systemApi = {
path: "/auth/passkeys/register/options",
scope: "admin",
auth: "session",
summary: "Passkey 注册挑战",
summary: "Passkey 注册请求(challenge)",
response: auth.PasskeyChallenge,
}),
passkeyRegister: ep({
@@ -120,7 +120,7 @@ export const systemApi = {
path: "/auth/passkeys/login/options",
scope: "read",
auth: "public",
summary: "Passkey 登录挑战(免鉴权)",
summary: "Passkey 登录请求(challenge,免鉴权)",
response: auth.PasskeyChallenge,
}),
passkeyLogin: ep({
@@ -160,7 +160,7 @@ export const systemApi = {
method: "get",
path: "/system/health",
scope: "admin",
summary: "进程与健康:进程心跳 / 事件循环延迟 / SSE 连接 / DB / 磁盘 / 挂载根 / 引擎 / 定时任务",
summary: "进程与健康:进程心跳 / 事件循环延迟 / SSE 连接 / DB / 磁盘 / 挂载点 / 引擎 / 定时任务",
response: ops.SystemHealth,
}),
healthHistory: ep({
+2 -2
View File
@@ -126,9 +126,9 @@ const CACHE_REGION_LABELS: Record<string, string> = {
"tmdb.request": "TMDB 请求",
"tmdb.recognize": "TMDB 识别",
"douban.request": "豆瓣请求",
"douban.subject": "豆瓣条目",
"douban.subject": "豆瓣作品",
"bangumi.request": "Bangumi 请求",
"bangumi.subject": "Bangumi 条目",
"bangumi.subject": "Bangumi 作品",
"meta.subject_miss": "豆瓣 / Bangumi 查无结果",
"discover.list": "发现列表",
"site.detail": "站点详情页",
+4 -4
View File
@@ -541,7 +541,7 @@ export const CAPABILITY_CATALOG: Record<KnownCapabilityId, CapabilityDescriptor>
),
"browser.solve_challenge": d(
"browser.solve_challenge",
"处理页面挑战",
"处理页面验证",
"起一个有界的视觉子流程(只能截图、按坐标点击 / 输入、滚动、等待、读页面),识别并处理页面上的挑战,直到调用方给出的成功条件满足;超出步数或预算、遇到二次验证 / 短信 / 本人设备确认时停止,会话转等待处理并附证据截图,由人在原站视图接管",
"execute",
"BrowserSolveChallenge",
@@ -591,7 +591,7 @@ export const CAPABILITY_CATALOG: Record<KnownCapabilityId, CapabilityDescriptor>
"web.fetch": d(
"web.fetch",
"读取网页",
"读取最近一次 web.search 结果里某条链接的正文(纯文本,最多 512 KB);其它链接和内网地址会被拒绝,正文是不可信数据",
"读取最近一次 web.search 结果里某条链接的正文(纯文本,最多 512 KB);其他链接和内网地址会被拒绝,正文是不可信数据",
"read",
"WebFetch",
"read",
@@ -627,7 +627,7 @@ export const CAPABILITY_CATALOG: Record<KnownCapabilityId, CapabilityDescriptor>
"metadata.enrich": d(
"metadata.enrich",
"补全元数据",
"TMDB 查不到的作品(短剧、平台独播剧)按标题查网页:搜索后读白名单网站(平台、百科,遵守 robots.txt),豆瓣和其它网站只用搜索摘要,抽取标题、别名、年份、平台、集数、主演、简介、海报、类型,每个字段带出处、置信度和证据等级。只给建议,不改作品;同一标题 7 天内直接返回上次结果",
"TMDB 查不到的作品(短剧、平台独播剧)按标题查网页:搜索后读白名单网站(平台、百科,遵守 robots.txt),豆瓣和其他网站只用搜索摘要,抽取标题、别名、年份、平台、集数、主演、简介、海报、类型,每个字段带出处、置信度和证据等级。只给建议,不改作品;同一标题 7 天内直接返回上次结果",
"propose",
"MetadataEnrich",
"organize.execute",
@@ -737,7 +737,7 @@ export const CAPABILITY_ACTIVITY: Record<KnownCapabilityId, CapabilityActivity>
"browser.type_at": act("操作", "原站页面", "次"),
"browser.scroll": act("操作", "原站页面", "次"),
"browser.wait": act("等", "页面加载"),
"browser.solve_challenge": act("处理", "页面挑战", "次"),
"browser.solve_challenge": act("处理", "页面验证", "次"),
"agent.plan": { ...act("更新", "步骤"), hidden: true },
"agent.propose_options": { ...act("给出", "方案"), hidden: true },
"web.search": act("搜", "网页", "次"),
+1 -1
View File
@@ -53,7 +53,7 @@ export const FEATURES = [
id: "browser",
name: "原站视图",
summary: "在服务端浏览器里打开站点原页面:人工接管、过验证、从页面下载种子或字幕。",
usage: "入口在站点页「原站视图」;智能体可以读原站页面、点击、下载种子,挑战页走视觉子流程。",
usage: "入口在站点页「原站视图」;智能体可以读原站页面、点击、下载种子,验证页走视觉子流程。",
subscribes: [],
capabilities: [
"browser.snapshot",
+3 -3
View File
@@ -66,7 +66,7 @@ const REASONS: Record<string, ReasonText> = {
not_found: { text: "没找到" },
precondition: { text: "前置条件不满足" },
internal: { text: "内部错误" },
volume_state_unknown: { text: "下载目录读不到容量", action: "检查下载器的路径映射和容器挂载" },
volume_state_unknown: { text: "下载盘读不到容量", action: "检查下载器的路径映射和容器挂载" },
hard_threshold_reached: { text: "下载盘已到暂停线" },
projected_over_threshold: { text: "下完会超过下载盘暂停线" },
awaiting_resume_watermark: { text: "等下载盘降到恢复线" },
@@ -86,7 +86,7 @@ const REASONS: Record<string, ReasonText> = {
download_stalled: { text: "下载无进展" },
space_insufficient: { text: "空间不足" },
downloader_offline: { text: "下载器连不上" },
cache_volume_unknown: { text: "下载目录读不到容量" },
cache_volume_unknown: { text: "下载盘读不到容量" },
unidentifiable: { text: "没识别出作品" },
user_deleted: { text: "已删除" },
// DL-3:还没提交就结束或在等的下载(计划的 statusReason、提交任务的延后原因)
@@ -101,7 +101,7 @@ const REASONS: Record<string, ReasonText> = {
source_failed: { text: "从站点取种子失败", action: "检查站点登录后重新下载" },
// SCR-1 / SCR-2 刮削(刮削记录、逐文件结果)
scrape_no_files: { text: "作品没有已整理文件", action: "到文件管理里对目录刮削" },
scrape_no_metadata: { text: "没有可用的元数据", action: "指定 TMDB 条目后重新刮削" },
scrape_no_metadata: { text: "没有可用的元数据", action: "指定 TMDB 作品后重新刮削" },
scrape_root_read_only: { text: "媒体库目录是只登记模式,不写文件" },
scrape_root_offline: { text: "目录不可访问或未挂载" },
scrape_not_video: { text: "不是视频文件或目录" },
+5 -5
View File
@@ -974,7 +974,7 @@ export const SETTINGS_SECTIONS: readonly SettingsSectionDef[] = [
id: "downloaders",
group: "connect",
label: "下载器",
description: "qBittorrent 实例与路径映射;下载盘水位和保种天数的缺省值,实例里可以单独改",
description: "qBittorrent 实例与路径映射;下载盘暂停线、恢复线和保种天数的缺省值,实例里可以单独改",
legacyTabs: [{ tab: "downloaders" }, { tab: "path-mappings" }, { tab: "storage", anchor: "cache" }],
anchors: [
{
@@ -984,14 +984,14 @@ export const SETTINGS_SECTIONS: readonly SettingsSectionDef[] = [
"qBittorrent",
"WebUI",
"管理标签",
"缓存卷标识",
"下载盘标识",
"默认下载器",
"路径映射",
"H&R 未知也可清理",
"认证方式",
],
},
{ id: "cache", label: "下载盘", keywords: ["水位", "缓存盘"] },
{ id: "cache", label: "下载盘", keywords: ["暂停线", "恢复线", "清理目标", "水位", "缓存盘"] },
{ id: "seeding", label: "保种", keywords: ["做种"] },
],
fields: [
@@ -1007,7 +1007,7 @@ export const SETTINGS_SECTIONS: readonly SettingsSectionDef[] = [
id: "media-servers",
group: "connect",
label: "媒体服务器",
description: "Emby / Jellyfin 实例与路径映射,只用来查作品有没有",
description: "Emby / Jellyfin 实例与路径映射,只用来查媒体服务器里有没有这部作品",
legacyTabs: [{ tab: "media-servers" }],
anchors: [{ id: "instances", label: "实例", keywords: ["Emby", "Jellyfin", "用户 ID"] }],
fields: [],
@@ -1136,7 +1136,7 @@ export const SETTINGS_SECTIONS: readonly SettingsSectionDef[] = [
{ id: "upstream", label: "模型服务", keywords: ["默认模型服务", "订阅登录"] },
{ id: "budget", label: "用量与限制", keywords: ["花费", "预算"] },
{ id: "investigate", label: "自动处理", keywords: ["自动调查", "识别失败"] },
{ id: "runtime", label: "上下文与子会话", keywords: ["压缩"] },
{ id: "runtime", label: "上下文与子会话", keywords: ["压缩上下文", "子会话"] },
{ id: "websearch", label: "网页搜索", keywords: ["Brave"] },
{ id: "mcp", label: "MCP 服务端" },
{ id: "capabilities", label: "能力清单" },