diff --git a/apps/web/app/components/agent/agent-conversation.tsx b/apps/web/app/components/agent/agent-conversation.tsx
index 23d5fbf6..76b2ccca 100644
--- a/apps/web/app/components/agent/agent-conversation.tsx
+++ b/apps/web/app/components/agent/agent-conversation.tsx
@@ -86,7 +86,7 @@ export const BUDGET_LABEL: Record = {
const COMPACT_STATUS: Record = {
completed: "已完成",
declined: "没有压缩",
- aborted: "已中止",
+ aborted: "已停止",
failed: "失败",
};
@@ -108,7 +108,7 @@ export function contextLabel(context: string | null): string | null {
const first = context.split(" · ")[0] ?? "";
// 前缀里第一段是界面给的名称(「作品:沙丘2」);没有名称时只剩 key=ID,不上屏
if (!first || first.includes("=")) return null;
- return first.replace(/^(作品|资源|下载|整理记录|站点|任务|引擎任务)[::]\s*/, "");
+ return first.replace(/^(作品|资源|下载|整理记录|站点|任务|引擎任务|后台任务)[::]\s*/, "");
}
export function UserMessage({
@@ -289,7 +289,7 @@ export function StepSummary({
const thinking = activity.some((a) => a.kind === "thinking");
const head = current
? `${done ? `${done},` : ""}${runningText(current)}…`
- : done || (running ? "思考中…" : thinking ? "想了一下" : "过程说明");
+ : done || (running ? "思考中…" : thinking ? "思考过程" : "过程说明");
return (
{shortGoalTitle(parent.goal)}
- 第 {run.depth} 层子会话 · 继承父会话的发起人与授权上限 · 能力 {caps} 项(⊆ 父会话)· 划拨预算{" "}
+ 第 {run.depth} 层子会话 · 权限不超过父会话 · 可用能力 {caps} 项 · 预算{" "}
{budgetText(run.budget as Record)}
{run.spawnReason ? ` · 理由:${run.spawnReason}` : ""}
@@ -129,7 +129,7 @@ export function SubagentTree({ snapshot, className }: { snapshot: RunSnapshot; c
- 子会话 {children.length} 个{familyUsage ? : null}
+ {children.length} 个子会话{familyUsage ? : null}
{page && (externalLinks(page).length || page.tags.length || page.uploader) ? (
@@ -240,7 +240,7 @@ export function ReleaseDetailSheet({
) : null}
{detail.data?.refreshError ? (
- 最近一次复核失败,下面是之前的数据:{detail.data.refreshError}
+ 上次刷新失败,下面是之前的数据:{detail.data.refreshError}
) : null}
@@ -254,7 +254,7 @@ export function ReleaseDetailSheet({
) : detail.data && !detail.data.detailSupported ? (
这个站点不支持抓详情页。
) : (
- 还没有详情页内容。点「复核详情」抓取。
+ 还没有详情页内容。点「刷新详情」抓取。
)}
{!page?.fileTree.length && r.fileList?.length ? (
@@ -270,7 +270,7 @@ export function ReleaseDetailSheet({
) : null}
-
+
@@ -278,9 +278,9 @@ export function ReleaseDetailSheet({
@@ -294,8 +294,8 @@ export function ReleaseDetailSheet({
{ label: "分类", value: categoryLabel(r) },
{ label: "首次发现", value: formatDateTime(r.firstSeenAt) },
{ label: "站点上传", value: formatDateTime(r.sourcePublishedAt) },
- { label: "最近确认", value: `${formatDateTime(r.dataUpdatedAt)}(${ORIGIN_LABEL[r.origin]})` },
- { label: "Feed 观察次数", value: r.observedByFeeds },
+ { label: "数据更新于", value: `${formatDateTime(r.dataUpdatedAt)}(${ORIGIN_LABEL[r.origin]})` },
+ { label: "RSS 出现次数", value: r.observedByFeeds },
{ label: "站点 ID", value: r.siteReleaseId, mono: true },
{ label: "infohash", value: r.infohashV1 ?? r.infohashV2, mono: true, wide: true },
]}
diff --git a/apps/web/app/components/workbench/release-fields.ts b/apps/web/app/components/workbench/release-fields.ts
index 7ff78b97..6106fea4 100644
--- a/apps/web/app/components/workbench/release-fields.ts
+++ b/apps/web/app/components/workbench/release-fields.ts
@@ -169,7 +169,7 @@ export const ORIGIN_LABEL: Record = {
};
export const SITE_HEALTH: Record = {
- unknown: { label: "健康未知", tone: "neutral" },
+ unknown: { label: "状态未知", tone: "neutral" },
healthy: { label: "健康", tone: "success" },
degraded: { label: "降级", tone: "warning" },
failing: { label: "故障", tone: "destructive" },
@@ -196,6 +196,6 @@ export function accountSummary(accounts: SiteAccount[]): { label: string; tone:
export function circuitLabel(site: Pick): string | null {
if (site.circuitState === "closed") return null;
- if (site.circuitState === "half_open") return "熔断半开(试探中)";
- return `熔断中${site.circuitOpenUntil ? `,${relTime(site.circuitOpenUntil)}恢复` : ""}`;
+ if (site.circuitState === "half_open") return "熔断中,正在试探恢复";
+ return `熔断中${site.circuitOpenUntil ? `,${relTime(site.circuitOpenUntil)}恢复` : ""}`;
}
diff --git a/apps/web/app/components/workbench/release-list.tsx b/apps/web/app/components/workbench/release-list.tsx
index d74ee9fc..89b6e512 100644
--- a/apps/web/app/components/workbench/release-list.tsx
+++ b/apps/web/app/components/workbench/release-list.tsx
@@ -71,7 +71,7 @@ export function unresolvedLabel(release: Pick
- {loading ? 库存加载中… : null}
+ {loading ? 本地版本加载中… : null}
{!loading && entry && flags.length === 0 ? 本地无版本 : null}
{flags.map((f) =>
f.title ? (
@@ -135,7 +135,7 @@ export function ReleaseRow({
const snatched = snatchedOf(r);
const timeTitle = [
r.sourcePublishedAt ? `上传 ${absTime(r.sourcePublishedAt)}` : "上传时间未知",
- `${ORIGIN_LABEL[r.origin]}数据 ${relTime(r.dataUpdatedAt)}确认`,
+ `来源:${ORIGIN_LABEL[r.origin]} · ${relTime(r.dataUpdatedAt)}更新`,
].join("\n");
return (
diff --git a/apps/web/app/components/workbench/snapshot-panel.tsx b/apps/web/app/components/workbench/snapshot-panel.tsx
index e15c11a5..f3653f49 100644
--- a/apps/web/app/components/workbench/snapshot-panel.tsx
+++ b/apps/web/app/components/workbench/snapshot-panel.tsx
@@ -11,13 +11,13 @@ import { relTime, SITE_HEALTH } from "./release-fields.ts";
const KIND: Record = {
periodic: "定期抓取",
- backfill: "缺口补漏",
+ backfill: "补抓",
live_search: "去站点搜",
manual: "手动抓取",
};
const STATUS: Record = {
running: { label: "进行中", tone: "neutral" },
- ok: { label: "完成", tone: "success" },
+ ok: { label: "已完成", tone: "success" },
partial: { label: "部分完成", tone: "warning" },
failed: { label: "失败", tone: "destructive" },
};
@@ -44,7 +44,7 @@ export function SnapshotPanel({ site }: { site: Site }) {
{!site.enabled ? 站点已停用 : null}
{site.snapshotEnabled ? (
- {stale ? "抓取已过期" : "已抓取"} · {relTime(site.lastSnapshotAt)}
+ {stale ? "抓取已过期" : "上次抓取"} · {relTime(site.lastSnapshotAt)}
) : (
未开启定期抓取
@@ -89,8 +89,8 @@ export function SnapshotPanel({ site }: { site: Site }) {
{KIND[s.kind]}
{s.query ? “{s.query}” : null}
- {s.pages.length ? `第 ${s.pages.join(",")} 页 · ` : ""}
- {s.itemCount} 条(新 {s.newCount})
+ {s.pages.length ? `第 ${s.pages.join("、")} 页 · ` : ""}
+ {s.itemCount} 条,新增 {s.newCount}
{relTime(s.startedAt)}
diff --git a/apps/web/app/routes/console/agent.$runId.tsx b/apps/web/app/routes/console/agent.$runId.tsx
index 14e2c837..a73fedb5 100644
--- a/apps/web/app/routes/console/agent.$runId.tsx
+++ b/apps/web/app/routes/console/agent.$runId.tsx
@@ -52,7 +52,7 @@ export default function AgentRunPage() {
variant="ghost"
size="icon-sm"
aria-label="在侧边打开"
- title="在侧边打开(回到之前的页面)"
+ title="在侧边打开,回到之前的页面"
onClick={() => {
showAgentRunInDrawer(runId);
navigate(agentReturnPath() ?? "/console");
diff --git a/apps/web/app/routes/console/home.tsx b/apps/web/app/routes/console/home.tsx
index ec0d0e35..4bf2d276 100644
--- a/apps/web/app/routes/console/home.tsx
+++ b/apps/web/app/routes/console/home.tsx
@@ -121,7 +121,7 @@ function StatusLine({ d }: { d: Dashboard }) {
await update.mutateAsync({ automation: { enabled } });
toast.success(enabled ? "自动化已恢复" : "自动化已暂停");
} catch (err) {
- toast.error(errorMessage(err, "切换失败"));
+ toast.error(errorMessage(err, enabled ? "恢复失败" : "暂停失败"));
throw err;
}
};
@@ -217,11 +217,11 @@ function Busy({ w }: { w: Dashboard["currentWork"] }) {
]);
const empty = !downloads.length && !agents.length && !runs.length;
return (
-
+
{running.isPending && !downloads.length ? (
) : empty ? (
-
+
) : (
{downloads.map((t) => (
@@ -263,11 +263,11 @@ function NeedsMe() {
const q = useAttention();
const rows = attentionRows(q.data);
return (
-
+
{q.isPending ? (
) : rows.length === 0 ? (
-
+
) : (
)}
@@ -282,7 +282,7 @@ function RecentImports({ d }: { d: Dashboard }) {
return (
{rows.length === 0 ? (
-
+
) : (
{rows.map((r) => (
@@ -294,7 +294,7 @@ function RecentImports({ d }: { d: Dashboard }) {
{r.title ?? r.targetPath?.split("/").pop() ?? "未关联作品"}
{r.status === "partial" ? (
- {r.counts.succeeded}/{r.counts.total} 个文件已整理
+ 已整理 {r.counts.succeeded}/{r.counts.total} 个文件
) : null}
@@ -303,7 +303,7 @@ function RecentImports({ d }: { d: Dashboard }) {
))}
)}
- {today ? 今天整理 {today} 个文件
: null}
+ {today ? 今天已整理 {today} 个文件
: null}
);
}