@@ -2,7 +2,7 @@ import type { ModelDownloadProgress } from '@marchen-spec/core'
22import type { Command } from 'commander'
33import * as p from '@clack/prompts'
44import { AGENT_PROVIDERS } from '@marchen-spec/config'
5- import { ModelManager } from '@marchen-spec/core'
5+ import { ModelManager , SearchManager } from '@marchen-spec/core'
66import { createContext } from '../utils/context.js'
77
88/** 模型类型显示名称 */
@@ -99,31 +99,41 @@ export function registerInitCommand(program: Command): void {
9999 . join ( ', ' )
100100 p . log . success ( `已为 ${ names } 生成 skills 文件` )
101101
102- // 询问是否下载搜索模型
103- const modelManager = new ModelManager ( )
104- const hasModels = await modelManager . hasLocalModels ( )
102+ // 检测搜索环境
103+ const search = new SearchManager ( workspace )
104+ const qmdAvailable = await search . isAvailable ( )
105105
106- if ( hasModels ) {
107- p . log . info ( '语义搜索已就绪' )
106+ if ( ! qmdAvailable ) {
107+ p . log . warn (
108+ '语义搜索不可用(缺少 SQLite 依赖),使用基础关键词搜索' ,
109+ )
110+ p . log . info ( '安装 SQLite 后可通过 marchen search 启用语义搜索' )
108111 } else {
109- const downloadModels = await p . confirm ( {
110- message : '是否启用语义搜索?(需要下载约 2GB 模型)' ,
111- initialValue : false ,
112- } )
112+ const modelManager = new ModelManager ( )
113+ const hasModels = await modelManager . hasLocalModels ( )
113114
114- if ( ! p . isCancel ( downloadModels ) && downloadModels ) {
115- const spinner = p . spinner ( )
116- spinner . start ( '下载搜索模型...' )
117- await modelManager . ensureModels ( {
118- onProgress : ( prog ) => {
119- spinner . message ( formatModelProgress ( prog ) )
120- } ,
121- } )
122- spinner . stop ( '语义搜索已启用' )
115+ if ( hasModels ) {
116+ p . log . info ( '语义搜索已就绪' )
123117 } else {
124- p . log . info (
125- '使用基础关键词搜索,后续可通过 marchen search --rebuild 启用语义搜索' ,
126- )
118+ const downloadModels = await p . confirm ( {
119+ message : '是否启用语义搜索?(需要下载约 2GB 模型)' ,
120+ initialValue : false ,
121+ } )
122+
123+ if ( ! p . isCancel ( downloadModels ) && downloadModels ) {
124+ const spinner = p . spinner ( )
125+ spinner . start ( '下载搜索模型...' )
126+ await modelManager . ensureModels ( {
127+ onProgress : ( prog ) => {
128+ spinner . message ( formatModelProgress ( prog ) )
129+ } ,
130+ } )
131+ spinner . stop ( '语义搜索已启用' )
132+ } else {
133+ p . log . info (
134+ '使用基础关键词搜索,后续可通过 marchen search --rebuild 启用语义搜索' ,
135+ )
136+ }
127137 }
128138 }
129139
0 commit comments