-
📋 {t('agent.tabs.status')}
+
{t('agent.tabs.status')}
{t(`agent.status.${statusKey}`)}
-
🗓️ {t('agent.settings.today')} Token
+
{t('agent.settings.today')} Token
{formatTokens(agent.tokens_used_today)}
{agent.max_tokens_per_day &&
{t('agent.settings.noLimit')} {formatTokens(agent.max_tokens_per_day)}
}
-
📅 {t('agent.settings.month')} Token
+
{t('agent.settings.month')} Token
{formatTokens(agent.tokens_used_month)}
{agent.max_tokens_per_month &&
{t('agent.settings.noLimit')} {formatTokens(agent.max_tokens_per_month)}
}
{/* Native agent metrics */}
{(agent as any)?.agent_type !== 'openclaw' && (<>
-
{t('agent.status.llmCallsToday')}
+
LLM Calls Today
{((agent as any).llm_calls_today || 0).toLocaleString()}
-
{t('agent.status.max')}: {((agent as any).max_llm_calls_per_day || 100).toLocaleString()}
+
Max: {((agent as any).max_llm_calls_per_day || 100).toLocaleString()}
-
{t('agent.status.totalToken')}
+
Total Token
{formatTokens((agent as any).tokens_used_total || 0)}
{metrics && (
<>
-
✅ {t('agent.tasks.done')}
+
{t('agent.tasks.done')}
{metrics.tasks?.done || 0}/{metrics.tasks?.total || 0}
{metrics.tasks?.completion_rate || 0}%
-
{t('agent.status.pending')}
+
Pending
0 ? 'var(--warning)' : 'inherit' }}>{metrics.approvals?.pending || 0}
- {t('agent.status.24hActions')}
+ {i18n.language?.startsWith('zh') ? '24h 活动' : '24h Actions'}
-
{t('agent.status.24hActionsTooltip')}
+
{i18n.language?.startsWith('zh') ? '过去 24 小时内该 Agent 的所有操作记录,包括对话、工具调用、任务执行等' : 'Total recorded operations in the past 24 hours, including chats, tool calls, task executions, etc.'}
{metrics.activity?.actions_last_24h || 0}
@@ -1770,12 +1764,12 @@ function AgentDetailInner() {
{(agent as any)?.agent_type === 'openclaw' && (
- {t('agent.openclaw.lastSeen')}
+ {i18n.language?.startsWith('zh') ? '最近连接' : 'Last Seen'}
{(agent as any).openclaw_last_seen
? new Date((agent as any).openclaw_last_seen).toLocaleString()
- : t('agent.openclaw.notConnected')}
+ : (i18n.language?.startsWith('zh') ? '尚未连接' : 'Not connected')}
)}
@@ -1784,14 +1778,14 @@ function AgentDetailInner() {
{/* Agent Profile & Model Info */}
-
{t('agent.profile.title')}
+
📋 Agent Profile
{t('agent.fields.role')}
{agent.role_description || '—'}
- {t('agent.profile.created')}
+ Created
{agent.created_at ? formatDate(agent.created_at) : '—'}
{(agent as any).creator_username && (
@@ -1801,29 +1795,29 @@ function AgentDetailInner() {
)}
- {t('agent.profile.lastActive')}
+ Last Active
{agent.last_active_at ? formatDate(agent.last_active_at) : '—'}
- {t('agent.profile.timezone')}
+ 🌐 Timezone
{(agent as any).effective_timezone || agent.timezone || 'UTC'}
{(agent as any)?.agent_type !== 'openclaw' ? (
-
{t('agent.modelConfig.title')}
+
Model Config
- {t('agent.modelConfig.model')}
+ Model
{modelLabel}
- {t('agent.modelConfig.provider')}
+ Provider
{modelProvider}
- {t('agent.modelConfig.contextRounds')}
+ Context Rounds
{(agent as any).context_window_size || 100}
@@ -1831,11 +1825,11 @@ function AgentDetailInner() {
) : (
- {t('agent.openclaw.connection')}
+ {i18n.language?.startsWith('zh') ? 'OpenClaw 连接' : 'OpenClaw Connection'}
- {t('agent.openclaw.type')}
+ {i18n.language?.startsWith('zh') ? '类型' : 'Type'}
- {t('agent.openclaw.lastSeen')}
+ {i18n.language?.startsWith('zh') ? '最近连接' : 'Last Seen'}
{(agent as any).openclaw_last_seen
? new Date((agent as any).openclaw_last_seen).toLocaleString()
- : t('agent.openclaw.never')}
+ : (i18n.language?.startsWith('zh') ? '尚未连接' : 'Never')}
- {t('agent.openclaw.model')}
- {t('agent.openclaw.managedBy')}
+ {i18n.language?.startsWith('zh') ? '模型' : 'Model'}
+ {i18n.language?.startsWith('zh') ? '由 OpenClaw 实例管理' : 'Managed by OpenClaw'}
@@ -1883,7 +1877,7 @@ function AgentDetailInner() {
{/* Quick Actions */}
setActiveTab('chat')}>{t('agent.actions.chat')}
- {(agent as any)?.agent_type !== 'openclaw' && setActiveTab('aware')}>{t('agent.tabs.aware')} }
+ {(agent as any)?.agent_type !== 'openclaw' && setActiveTab('aware')}>Aware }
setActiveTab('settings')}>{t('agent.tabs.settings')}
@@ -2198,7 +2192,7 @@ function AgentDetailInner() {
className="btn btn-ghost"
style={{ width: '100%', fontSize: '12px', color: 'var(--text-tertiary)', padding: '8px', marginTop: '4px' }}
>
- {t('agent.aware.showMore', { count: hiddenActiveCount })}
+ {i18n.language?.startsWith('zh') ? `显示更多 ${hiddenActiveCount} 项...` : `Show ${hiddenActiveCount} more...`}
)}
{showAllFocus && activeFocusItems.length > SECTION_PAGE_SIZE && (
@@ -2207,7 +2201,7 @@ function AgentDetailInner() {
className="btn btn-ghost"
style={{ width: '100%', fontSize: '12px', color: 'var(--text-tertiary)', padding: '8px', marginTop: '4px' }}
>
- {t('agent.aware.showLess')}
+ {i18n.language?.startsWith('zh') ? '收起' : 'Show less'}
)}
@@ -2225,8 +2219,8 @@ function AgentDetailInner() {
}}
>
{showCompletedFocus
- ? t('agent.aware.hideCompleted')
- : t('agent.aware.showCompleted', { count: completedFocusItems.length })
+ ? (i18n.language?.startsWith('zh') ? '隐藏已完成' : 'Hide completed')
+ : (i18n.language?.startsWith('zh') ? `显示 ${completedFocusItems.length} 项已完成` : `Show ${completedFocusItems.length} completed`)
}
{showCompletedFocus && completedFocusItems.map(renderFocusItem)}
@@ -2892,12 +2886,12 @@ function AgentDetailInner() {
setChatScope('mine')}
style={{ flex: 1, padding: '5px 0', background: 'none', border: 'none', cursor: 'pointer', fontSize: '12px', fontWeight: chatScope === 'mine' ? 600 : 400, color: chatScope === 'mine' ? 'var(--text-primary)' : 'var(--text-tertiary)', borderBottom: chatScope === 'mine' ? '2px solid var(--accent-primary)' : '2px solid transparent', paddingBottom: '8px' }}>
- {t('agent.chat.mySessions')}
+ My Sessions
{isAdmin && (
{ setChatScope('all'); fetchAllSessions(); }}
style={{ flex: 1, padding: '5px 0', background: 'none', border: 'none', cursor: 'pointer', fontSize: '12px', fontWeight: chatScope === 'all' ? 600 : 400, color: chatScope === 'all' ? 'var(--text-primary)' : 'var(--text-tertiary)', borderBottom: chatScope === 'all' ? '2px solid var(--accent-primary)' : '2px solid transparent', paddingBottom: '8px' }}>
- {t('agent.chat.allUsers')}
+ All Users
)}
@@ -2909,7 +2903,7 @@ function AgentDetailInner() {
style={{ width: '100%', padding: '5px 8px', background: 'none', border: '1px solid var(--border-subtle)', borderRadius: '6px', cursor: 'pointer', fontSize: '12px', color: 'var(--text-secondary)', textAlign: 'left', display: 'flex', alignItems: 'center', gap: '6px' }}
onMouseEnter={e => { e.currentTarget.style.background = 'var(--bg-secondary)'; e.currentTarget.style.color = 'var(--text-primary)'; }}
onMouseLeave={e => { e.currentTarget.style.background = 'none'; e.currentTarget.style.color = 'var(--text-secondary)'; }}>
- + {t('agent.chat.newSession')}
+ + New Session
)}
@@ -2920,7 +2914,7 @@ function AgentDetailInner() {
sessionsLoading ? (
No sessions yet. Click "+ New Session" to start.
) : sessions.map((s: any) => {
const isActive = activeSession?.id === s.id;
const isOwn = s.user_id === String(currentUser?.id);
@@ -3025,8 +3019,8 @@ function AgentDetailInner() {