预览
@@ -23,13 +23,13 @@ export default function PreviewPane({ liveAgent, agentId }: PreviewPaneProps) {
Live Preview
+
当前预览角色
{liveAgent?.name || '未命名智能体'} 会基于左侧 Prompt 与中栏设置立即更新。你可以直接在这里检查语气、头像和整体观感。
-
diff --git a/src/pages/AgentEditor/index.tsx b/src/pages/AgentEditor/index.tsx
index ec8c8c7..0176119 100644
--- a/src/pages/AgentEditor/index.tsx
+++ b/src/pages/AgentEditor/index.tsx
@@ -1,15 +1,18 @@
import { useEffect, useRef, useState } from 'react';
-import { Form } from 'antd';
+import { Form, Button } from 'antd';
import { useNavigate, useParams } from 'react-router-dom';
import { App as AntApp } from 'antd';
+import { FileTextOutlined, SaveOutlined } from '@ant-design/icons';
import SkillEditor from '../../components/SkillEditor';
import { useAgentEditor } from './hooks/useAgentEditor';
+import { useIsMobile } from '../../hooks/useIsMobile';
import Header from './components/Header';
import PromptEditor from './components/PromptEditor';
import CapabilitySettings from './components/CapabilitySettings';
import PreviewPane from './components/PreviewPane';
import InitModal from './components/InitModal';
import AvatarSelector from './components/AvatarSelector';
+import './AgentEditor.css';
import './styles/agent-editor-capability.css';
import './styles/agent-editor-panels.css';
import './styles/agent-editor-modal.css';
@@ -54,9 +57,11 @@ export default function AgentEditor() {
markDirty,
} = useAgentEditor({ id, isNew, form, message, navigate });
+ const isMobile = useIsMobile();
+
return (
<>
-
+
-
+
+ {isMobile && (
+
+
+ {autoSaveStatus === 'saving'
+ ? '正在保存...'
+ : autoSaveStatus === 'dirty'
+ ? '有未保存更改'
+ : autoSaveStatus === 'error'
+ ? '保存失败'
+ : '已保存'}
+
+
+ } size="middle">
+ 文档
+
+ }
+ loading={saving}
+ onClick={() => handleSave()}
+ size="middle"
+ >
+ 保存
+
+
+
+ )}
+
{!isNew && (
-
-
-
-
+
+
+
+
+
我的 Agent 资产
-
+
我的智能体
-
+
把你的 AI 助手沉淀成一组可管理、可协作、可持续进化的能力单元。
@@ -76,34 +44,23 @@ export default function AgentListH5({ logic }: Props) {
size="middle"
icon={}
onClick={() => navigate('/marketplace')}
- style={{ borderRadius: 10, height: 40, padding: '0 16px', fontWeight: 600, width: '100%' }}
+ className="h5-stats-marketplace-btn"
>
前往智能体广场
-
+
{stats.map((item) => (
-
-
{item.label}
-
-
{item.value}
+
+
{item.label}
+
+ {item.value}
实时统计
@@ -123,22 +80,33 @@ export default function AgentListH5({ logic }: Props) {
) : (
-
+
{list.map((a) => (
-
-
-
+
+
+ {/* 右上角可见性标签 */}
+
+ {a.visibility === 'public' && (
+
+ 公开
+
+ )}
+ {a.visibility === 'team' && (
+
+ 团队
+
+ )}
+ {a.visibility === 'private' && (
+
+ 私有
+
+ )}
+
+
+
{isImageUrl(a.avatar) ? (

@@ -146,72 +114,26 @@ export default function AgentListH5({ logic }: Props) {
(a.name?.charAt(0) || '?').toUpperCase()
)}
-
-
{a.name}
-
- 最近更新于 {dayjs(a.updated_at).format('YYYY-MM-DD')}
-
+
-
-
- {a.description || '还没有填写描述,可以补充这个智能体适合解决什么问题。'}
+ {a.description && (
+
+ {a.description}
-
+ )}
-
- {a.visibility === 'public' && (
-
- 公开
-
- )}
- {a.visibility === 'team' && (
-
- 团队
-
- )}
- {a.visibility === 'private' && (
-
- 私有
-
- )}
- {getModelLabel(a.model) && (
-
-
- {getModelLabel(a.model)}
-
-
- )}
- {(a.fork_count ?? 0) > 0 && (
-
- Fork {a.fork_count}
-
- )}
-
-
-
-
-
} style={{ borderRadius: 8, height: 36, fontWeight: 600, fontSize: 13 }}>
- 聊天
-
+
+
+
} className="h5-agent-action-btn" />
-
-
} style={{ borderRadius: 8, height: 36, fontSize: 13 }}>
- 管理
-
+
+
} className="h5-agent-action-btn" />
{
handleDelete(a.id);
message.success('已删除');
@@ -219,7 +141,7 @@ export default function AgentListH5({ logic }: Props) {
okText="删除"
cancelText="取消"
>
- } style={{ borderRadius: 8, width: 36, height: 36, padding: 0 }} />
+ } className="h5-agent-action-btn h5-agent-delete-btn" />
@@ -229,29 +151,16 @@ export default function AgentListH5({ logic }: Props) {
)}
{list.length > 0 && (
-
-
-
+
+
+
想创建新的智能体入口?
-
+
统一从智能体广场进入,保证创建流程和发现体验保持一致。
-
} onClick={() => navigate('/marketplace')} style={{ color: 'var(--color-brand)', fontWeight: 600, width: '100%', textAlign: 'left' }}>
+
} onClick={() => navigate('/marketplace')} className="h5-footer-promo-btn">
去广场继续发现
diff --git a/src/pages/StatsPage/styles/stats-page-h5.css b/src/pages/StatsPage/styles/stats-page-h5.css
index 0b0b789..7043800 100644
--- a/src/pages/StatsPage/styles/stats-page-h5.css
+++ b/src/pages/StatsPage/styles/stats-page-h5.css
@@ -42,7 +42,35 @@
font-size: 1.75rem;
}
-.stats-page-h5 .stats-page-cards-grid,
+.stats-page-h5 .stats-page-cards-grid {
+ grid-template-columns: repeat(3, 1fr);
+ gap: 8px;
+}
+
+.stats-page-h5 .stats-page-card {
+ padding: 10px 8px;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ text-align: center;
+}
+
+.stats-page-h5 .stats-page-card-label {
+ flex-direction: column;
+ gap: 4px;
+ font-size: 11px;
+ margin-bottom: 6px;
+}
+
+.stats-page-h5 .stats-page-card-icon {
+ width: 24px;
+ height: 24px;
+}
+
+.stats-page-h5 .stats-page-card-value {
+ font-size: 18px;
+}
+
.stats-page-h5 .points-integration-row,
.stats-page-h5 .stats-page-token-cards-grid,
.stats-page-h5 .stats-page-token-charts-grid {
diff --git a/src/styles.css b/src/styles.css
index 3cab66d..b5e80f8 100644
--- a/src/styles.css
+++ b/src/styles.css
@@ -1493,6 +1493,10 @@ body {
padding: 40px 32px 60px;
}
+.page-container.h5-page-container {
+ padding: 12px;
+}
+
.feature-cover-container {
position: relative;
}