mirror of https://github.com/Mai-with-u/MaiBot.git
feat(dashboard): integrate DynamicConfigForm in model config page
- Add DynamicConfigForm import and fieldHooks integration
- Replace TaskConfigCard list with DynamicConfigForm in tasks tab
- Use hardcoded schema POC approach (fields: [], nested: {})
- Maintain existing auto-save and state management logic
- TypeScript compilation verified
Task 14 complete - Wave 4 finished (4/4)
pull/1496/head
parent
2de618464a
commit
6bb0bc9afc
|
|
@ -58,9 +58,13 @@ import { SharePackDialog } from '@/components/share-pack-dialog'
|
||||||
|
|
||||||
// 导入模块化的类型定义和组件
|
// 导入模块化的类型定义和组件
|
||||||
import type { ModelInfo, ProviderConfig, ModelTaskConfig, TaskConfig } from './model/types'
|
import type { ModelInfo, ProviderConfig, ModelTaskConfig, TaskConfig } from './model/types'
|
||||||
import { TaskConfigCard, Pagination, ModelTable, ModelCardList } from './model/components'
|
import { Pagination, ModelTable, ModelCardList } from './model/components'
|
||||||
import { useModelTour, useModelFetcher, useModelAutoSave } from './model/hooks'
|
import { useModelTour, useModelFetcher, useModelAutoSave } from './model/hooks'
|
||||||
|
|
||||||
|
// 导入动态表单和 Hook 系统
|
||||||
|
import { DynamicConfigForm } from '@/components/dynamic-form'
|
||||||
|
import { fieldHooks } from '@/lib/field-hooks'
|
||||||
|
|
||||||
// 主导出组件:包装 RestartProvider
|
// 主导出组件:包装 RestartProvider
|
||||||
export function ModelConfigPage() {
|
export function ModelConfigPage() {
|
||||||
return (
|
return (
|
||||||
|
|
@ -918,101 +922,22 @@ function ModelConfigPageContent() {
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
{taskConfig && (
|
{taskConfig && (
|
||||||
<div className="grid gap-4 sm:gap-6">
|
<DynamicConfigForm
|
||||||
{/* Utils 任务 */}
|
schema={{
|
||||||
<TaskConfigCard
|
className: 'TaskConfig',
|
||||||
title="组件模型 (utils)"
|
classDoc: '任务配置',
|
||||||
description="用于表情包、取名、关系、情绪变化等组件"
|
fields: [],
|
||||||
taskConfig={taskConfig.utils}
|
nested: {},
|
||||||
modelNames={modelNames}
|
}}
|
||||||
onChange={(field, value) => updateTaskConfig('utils', field, value)}
|
values={{ taskConfig }}
|
||||||
dataTour="task-model-select"
|
onChange={(field, value) => {
|
||||||
/>
|
if (field === 'taskConfig') {
|
||||||
|
setTaskConfig(value as ModelTaskConfig)
|
||||||
{/* Tool Use 任务 */}
|
setHasUnsavedChanges(true)
|
||||||
<TaskConfigCard
|
}
|
||||||
title="工具调用模型 (tool_use)"
|
}}
|
||||||
description="需要使用支持工具调用的模型"
|
hooks={fieldHooks}
|
||||||
taskConfig={taskConfig.tool_use}
|
/>
|
||||||
modelNames={modelNames}
|
|
||||||
onChange={(field, value) => updateTaskConfig('tool_use', field, value)}
|
|
||||||
/>
|
|
||||||
|
|
||||||
{/* Replyer 任务 */}
|
|
||||||
<TaskConfigCard
|
|
||||||
title="首要回复模型 (replyer)"
|
|
||||||
description="用于表达器和表达方式学习"
|
|
||||||
taskConfig={taskConfig.replyer}
|
|
||||||
modelNames={modelNames}
|
|
||||||
onChange={(field, value) => updateTaskConfig('replyer', field, value)}
|
|
||||||
/>
|
|
||||||
|
|
||||||
{/* Planner 任务 */}
|
|
||||||
<TaskConfigCard
|
|
||||||
title="决策模型 (planner)"
|
|
||||||
description="负责决定麦麦该什么时候回复"
|
|
||||||
taskConfig={taskConfig.planner}
|
|
||||||
modelNames={modelNames}
|
|
||||||
onChange={(field, value) => updateTaskConfig('planner', field, value)}
|
|
||||||
/>
|
|
||||||
|
|
||||||
{/* VLM 任务 */}
|
|
||||||
<TaskConfigCard
|
|
||||||
title="图像识别模型 (vlm)"
|
|
||||||
description="视觉语言模型"
|
|
||||||
taskConfig={taskConfig.vlm}
|
|
||||||
modelNames={modelNames}
|
|
||||||
onChange={(field, value) => updateTaskConfig('vlm', field, value)}
|
|
||||||
hideTemperature
|
|
||||||
/>
|
|
||||||
|
|
||||||
{/* Voice 任务 */}
|
|
||||||
<TaskConfigCard
|
|
||||||
title="语音识别模型 (voice)"
|
|
||||||
description="语音转文字"
|
|
||||||
taskConfig={taskConfig.voice}
|
|
||||||
modelNames={modelNames}
|
|
||||||
onChange={(field, value) => updateTaskConfig('voice', field, value)}
|
|
||||||
hideTemperature
|
|
||||||
hideMaxTokens
|
|
||||||
/>
|
|
||||||
|
|
||||||
{/* Embedding 任务 */}
|
|
||||||
<TaskConfigCard
|
|
||||||
title="嵌入模型 (embedding)"
|
|
||||||
description="用于向量化"
|
|
||||||
taskConfig={taskConfig.embedding}
|
|
||||||
modelNames={modelNames}
|
|
||||||
onChange={(field, value) => updateTaskConfig('embedding', field, value)}
|
|
||||||
hideTemperature
|
|
||||||
hideMaxTokens
|
|
||||||
/>
|
|
||||||
|
|
||||||
{/* LPMM 相关任务 */}
|
|
||||||
<div className="space-y-4">
|
|
||||||
<h3 className="text-lg font-semibold">LPMM 知识库模型</h3>
|
|
||||||
|
|
||||||
<TaskConfigCard
|
|
||||||
title="实体提取模型 (lpmm_entity_extract)"
|
|
||||||
description="从文本中提取实体"
|
|
||||||
taskConfig={taskConfig.lpmm_entity_extract}
|
|
||||||
modelNames={modelNames}
|
|
||||||
onChange={(field, value) =>
|
|
||||||
updateTaskConfig('lpmm_entity_extract', field, value)
|
|
||||||
}
|
|
||||||
/>
|
|
||||||
|
|
||||||
<TaskConfigCard
|
|
||||||
title="RDF 构建模型 (lpmm_rdf_build)"
|
|
||||||
description="构建知识图谱"
|
|
||||||
taskConfig={taskConfig.lpmm_rdf_build}
|
|
||||||
modelNames={modelNames}
|
|
||||||
onChange={(field, value) =>
|
|
||||||
updateTaskConfig('lpmm_rdf_build', field, value)
|
|
||||||
}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
)}
|
)}
|
||||||
</TabsContent>
|
</TabsContent>
|
||||||
</Tabs>
|
</Tabs>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue