-
回复 {target}
+
回复 {target}
{(replyTo.cc_list?.length ?? 0) > 0 && (
)}
@@ -898,7 +898,7 @@ function ReplyBar({
setBudgetEditing(true);
}}
title="本任务往返预算:Agent 主动发信上限(自动转发与权限询问不占)"
- className={`tap inline-flex items-center gap-1 text-[10px] px-2 py-1 rounded border ${
+ className={`tap inline-flex items-center gap-1 text-3xs px-2 py-1 rounded border ${
budget.unlimited
? 'border-gray-200 text-gray-500 hover:border-blue-300'
: budget.remaining === 0
@@ -914,7 +914,7 @@ function ReplyBar({
)}
{budget && budgetEditing && (
- 预算
+ 预算
setMaxRoundsDraft(e.target.value)}
@@ -931,13 +931,13 @@ function ReplyBar({
setBudgetBusy(false);
setBudgetEditing(false);
}}
- className="tap px-2 py-0.5 text-[10px] rounded bg-blue-600 text-white hover:bg-blue-700 disabled:opacity-40"
+ className="tap px-2 py-0.5 text-3xs rounded bg-blue-600 text-white hover:bg-blue-700 disabled:opacity-40"
>
保存
@@ -972,5 +972,5 @@ function StatusBadge({ status }: { status: string }) {
archived: { label: '已归档', cls: 'bg-gray-200 text-gray-600' }
};
const b = map[status] || map.active;
- return {b.label};
+ return {b.label};
}
diff --git a/client/electron/src/components/ModelScopePanel.tsx b/client/electron/src/components/ModelScopePanel.tsx
index 7866648..8a8ee5c 100644
--- a/client/electron/src/components/ModelScopePanel.tsx
+++ b/client/electron/src/components/ModelScopePanel.tsx
@@ -50,7 +50,7 @@ function PanelHeader({ count }: { count: number }) {
Agent 模型范围
{count > 0 && {count}}
-
+
划定每个平台在邮件场景下可用的模型。勾选顺序即尝试顺序 —— 插件按序降级,
全部失败才回一封说明失败原因的邮件。
@@ -152,12 +152,12 @@ function AgentModelRow({
className={`w-3 h-3 text-gray-400 shrink-0 transition-transform ${expanded ? 'rotate-90' : ''}`}
/>
{agentName}
-
+
{saved.length === 0 ? '不限定(用平台默认模型)' : `${saved.length} 个模型,按序尝试`}
{staleKeys.length > 0 && (
{staleKeys.length} 个已失效
@@ -176,7 +176,7 @@ function AgentModelRow({
{err && {err}
}
{!loading && catalog.length === 0 && staleKeys.length === 0 && (
-
+
该平台还没有上报模型清单。插件会在心跳时上报(约 30 秒一次)——
若长时间为空,检查插件是否在运行、以及它能否读到平台的 provider 配置。
@@ -184,7 +184,7 @@ function AgentModelRow({
{picks.length > 0 && (
-
+
尝试顺序(自上而下)
@@ -198,11 +198,11 @@ function AgentModelRow({
isStale ? 'border-amber-200' : 'border-gray-200'
}`}
>
-
{i + 1}
+
{i + 1}
{key}
{isStale && (
已失效
@@ -241,7 +241,7 @@ function AgentModelRow({
{catalog.length > 0 && (
-
+
平台上报的模型({catalog.length})
@@ -253,7 +253,7 @@ function AgentModelRow({
key={key}
onClick={() => toggle(key)}
title={m.display_name || key}
- className={`tap px-2 py-1 text-[11px] font-mono rounded border transition-colors ${
+ className={`tap px-2 py-1 text-2xs font-mono rounded border transition-colors ${
on
? 'bg-blue-50 border-blue-300 text-blue-700'
: 'bg-white border-gray-200 text-gray-600 hover:border-gray-300'
@@ -270,7 +270,7 @@ function AgentModelRow({
{(catalog.length > 0 || picks.length > 0) && (
{picks.length === 0 && (
-
+
未选 = 不限定,用平台默认模型
)}
@@ -278,7 +278,7 @@ function AgentModelRow({
{dirty && (
@@ -286,7 +286,7 @@ function AgentModelRow({
-
我的
+
我的
);
diff --git a/client/electron/src/components/NarrowStack.tsx b/client/electron/src/components/NarrowStack.tsx
index 75cbbb1..99c7f30 100644
--- a/client/electron/src/components/NarrowStack.tsx
+++ b/client/electron/src/components/NarrowStack.tsx
@@ -74,7 +74,7 @@ export default function NarrowStack({
{mounted && (
diff --git a/client/electron/src/components/PermissionChip.tsx b/client/electron/src/components/PermissionChip.tsx
index 0076c8c..b9a2152 100644
--- a/client/electron/src/components/PermissionChip.tsx
+++ b/client/electron/src/components/PermissionChip.tsx
@@ -87,7 +87,7 @@ export default function PermissionChip({ mode, enforcement, compact }: Permissio
{label}
diff --git a/client/electron/src/components/PermissionList.tsx b/client/electron/src/components/PermissionList.tsx
index 9fbfcb4..46928d4 100644
--- a/client/electron/src/components/PermissionList.tsx
+++ b/client/electron/src/components/PermissionList.tsx
@@ -58,7 +58,7 @@ export default function PermissionList() {
授权
{pendingTotal > 0 ? (
-
+
{pendingTotal} 待决策
@@ -85,7 +85,7 @@ export default function PermissionList() {
没有授权请求
-
+
Agent 执行敏感操作(bash、写文件)时会在这里请求你批准
@@ -135,28 +135,28 @@ function PermissionSessionGroup({
{g.agentName}{g.path ? `@${g.path}` : ''}{g.alias ? `.${g.alias}` : ''}
- {time}
+ {time}
{hasPending ? (
-
+
{g.pending.length} 待决策
) : (
-
+
已全部处理
)}
{g.settled.length > 0 && (
- 历史 {g.settled.length}
+ 历史 {g.settled.length}
)}
{!g.alias && (
-
+
(未命名会话)
)}
@@ -177,7 +177,7 @@ function PermissionSessionGroup({
<>
@@ -248,12 +248,12 @@ function PermissionRow({
>
{mail.subject}
-
{time}
+
{time}
{settled ? (
@@ -262,7 +262,7 @@ function PermissionRow({
) : expired ? (
) : (
-
+
等待你决策
diff --git a/client/electron/src/components/QuotaPanel.tsx b/client/electron/src/components/QuotaPanel.tsx
index 4536dac..ff944ff 100644
--- a/client/electron/src/components/QuotaPanel.tsx
+++ b/client/electron/src/components/QuotaPanel.tsx
@@ -103,7 +103,7 @@ export default function QuotaPanel() {
? 'bg-red-50 text-red-600'
: 'bg-gray-50 text-gray-500';
const label = st === 'online' ? '在线' : st === 'disabled' ? '已停用' : '离线';
- return {label};
+ return {label};
};
return (
@@ -114,7 +114,7 @@ export default function QuotaPanel() {
{stats.length}
-
+
默认预算:派给某个 Agent 的新任务默认多少个来回(填 0 = 不限)。
这只是默认值 —— 写信时可以单独指定,之后在对话页里还能随时调整。
插件自动转发的最终总结与权限询问不占用预算。
@@ -127,8 +127,8 @@ export default function QuotaPanel() {
邮件与会话保留(历史是审计凭据),此名字今后不可再注册。
- {error &&
{error}
}
- {notice &&
{notice}
}
+ {error &&
{error}
}
+ {notice &&
{notice}
}
{stats.length === 0 ? (
暂无已注册的 Agent
@@ -149,7 +149,7 @@ export default function QuotaPanel() {
{statusBadge(s)}
-
+
{s.default_rounds === 0 ? '默认不限来回' : `默认 ${s.default_rounds} 个来回`}
{' · '}进行中 {s.active_sessions} 个任务 · 累计发信 {s.sent_total}
@@ -177,19 +177,19 @@ export default function QuotaPanel() {
{/* 停用/恢复/删除 按钮 */}
{isConfirming ? (
-
确认{confirmAction === 'delete' ? '删除' : ''}?
+
确认{confirmAction === 'delete' ? '删除' : ''}?
@@ -202,7 +202,7 @@ export default function QuotaPanel() {
title={isDisabled
? '恢复此 Agent(恢复为离线;停用时撤销的密钥不会自动回来,必须重新签发)'
: '停用此 Agent(撤销全部密钥并从补全里隐藏;邮件与会话保留,可恢复)'}
- className={`tap shrink-0 inline-flex items-center gap-1 text-[11px] px-1.5 py-0.5 rounded border ${
+ className={`tap shrink-0 inline-flex items-center gap-1 text-2xs px-1.5 py-0.5 rounded border ${
isDisabled
? 'border-green-200 text-green-700 hover:bg-green-50'
: 'border-gray-200 text-gray-500 hover:text-red-600 hover:border-red-200'
@@ -215,7 +215,7 @@ export default function QuotaPanel() {
onClick={() => { setConfirming(s.agent_name); setConfirmAction('delete'); }}
disabled={busy === s.agent_name}
title="彻底删除此 Agent(清除密钥与运行态;邮件保留但此名今后不可再用)"
- className="tap shrink-0 text-[10px] px-1.5 py-0.5 rounded border border-red-200 text-red-400 hover:text-red-600 hover:border-red-300 disabled:opacity-30"
+ className="tap shrink-0 text-3xs px-1.5 py-0.5 rounded border border-red-200 text-red-400 hover:text-red-600 hover:border-red-300 disabled:opacity-30"
>
删除
diff --git a/client/electron/src/components/SetupPage.tsx b/client/electron/src/components/SetupPage.tsx
index b2ac59d..3a2b2c1 100644
--- a/client/electron/src/components/SetupPage.tsx
+++ b/client/electron/src/components/SetupPage.tsx
@@ -53,7 +53,7 @@ export default function SetupPage({ onDone }: { onDone: () => void }) {
// auto margin 在空间不足时自动退化为 0,于是矮屏变成正常的顶对齐可滚布局。
return (
-
+
@@ -66,7 +66,7 @@ export default function SetupPage({ onDone }: { onDone: () => void }) {
diff --git a/client/electron/src/components/WorkCard.tsx b/client/electron/src/components/WorkCard.tsx
index 164fad4..17a677b 100644
--- a/client/electron/src/components/WorkCard.tsx
+++ b/client/electron/src/components/WorkCard.tsx
@@ -53,9 +53,9 @@ export function WorkCard({