@icyfenix-dmla/cli 2026.5.13-1007 → 2026.5.13-2349
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/shared/__init__.py +16 -9
- package/src/commands/data.js +61 -2
- package/src/server/native_env_check.js +19 -4
- package/version.json +2 -2
package/package.json
CHANGED
package/shared/__init__.py
CHANGED
|
@@ -1,12 +1,19 @@
|
|
|
1
1
|
# shared 模块包初始化
|
|
2
2
|
# 包含统计学习系列文档中可复用的类定义
|
|
3
|
+
#
|
|
4
|
+
# 注意:不在此处自动导入子模块,避免加载不必要的依赖
|
|
5
|
+
# 使用时请直接导入需要的模块,例如:
|
|
6
|
+
# from shared.sequence_models.poetry_lstm import PoetryLSTM
|
|
7
|
+
# from shared.linear.logistic_regression import LogisticRegression
|
|
3
8
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
__all__ = [
|
|
10
|
+
'bayesian',
|
|
11
|
+
'cnn',
|
|
12
|
+
'gan',
|
|
13
|
+
'linear',
|
|
14
|
+
'neural',
|
|
15
|
+
'sequence_models',
|
|
16
|
+
'svm',
|
|
17
|
+
'tree',
|
|
18
|
+
'unsupervised',
|
|
19
|
+
]
|
package/src/commands/data.js
CHANGED
|
@@ -66,7 +66,7 @@ const DATASETS = [
|
|
|
66
66
|
id: 'chinese-poetry',
|
|
67
67
|
name: 'Chinese Poetry (古诗词)',
|
|
68
68
|
url: 'https://www.modelscope.cn/datasets/icyfenix/Chinese-Poetry.git',
|
|
69
|
-
size: '~
|
|
69
|
+
size: '~380MB',
|
|
70
70
|
format: 'git',
|
|
71
71
|
targetDir: 'datasets/chinese-poetry',
|
|
72
72
|
source: 'ModelScope (icyfenix)'
|
|
@@ -851,7 +851,66 @@ async function downloadDataset(dataPath, dataset) {
|
|
|
851
851
|
} catch (error) {
|
|
852
852
|
console.log()
|
|
853
853
|
console.log(chalk.red(`下载失败: ${error.message}`))
|
|
854
|
-
|
|
854
|
+
|
|
855
|
+
// 检查是否有不完整的数据残留
|
|
856
|
+
const hasIncompleteData = fs.existsSync(targetDir)
|
|
857
|
+
|
|
858
|
+
if (hasIncompleteData) {
|
|
859
|
+
console.log(chalk.yellow(`目录 ${targetDir} 存在不完整数据`))
|
|
860
|
+
}
|
|
861
|
+
|
|
862
|
+
// 提供重试或删除选项
|
|
863
|
+
while (true) {
|
|
864
|
+
try {
|
|
865
|
+
const choices = ['重试下载']
|
|
866
|
+
if (hasIncompleteData) {
|
|
867
|
+
choices.push('删除不完整数据并返回')
|
|
868
|
+
}
|
|
869
|
+
choices.push('保留现状并返回')
|
|
870
|
+
|
|
871
|
+
const { choice } = await prompt({
|
|
872
|
+
type: 'select',
|
|
873
|
+
name: 'choice',
|
|
874
|
+
message: '如何处理?',
|
|
875
|
+
choices,
|
|
876
|
+
styles: {
|
|
877
|
+
primary: chalk.cyan.bold
|
|
878
|
+
}
|
|
879
|
+
})
|
|
880
|
+
|
|
881
|
+
if (choice === '重试下载') {
|
|
882
|
+
// 删除不完整数据后重试
|
|
883
|
+
if (hasIncompleteData && fs.existsSync(targetDir)) {
|
|
884
|
+
console.log(chalk.gray('删除不完整数据...'))
|
|
885
|
+
fs.rmSync(targetDir, { recursive: true, force: true })
|
|
886
|
+
}
|
|
887
|
+
console.log(chalk.gray('重新下载...'))
|
|
888
|
+
console.log()
|
|
889
|
+
// 递归调用自身重试
|
|
890
|
+
await downloadDataset(dataPath, dataset)
|
|
891
|
+
return // 重试成功后退出
|
|
892
|
+
} else if (choice === '删除不完整数据并返回') {
|
|
893
|
+
fs.rmSync(targetDir, { recursive: true, force: true })
|
|
894
|
+
console.log(chalk.gray('不完整数据已删除'))
|
|
895
|
+
return
|
|
896
|
+
} else {
|
|
897
|
+
// 保留现状并返回
|
|
898
|
+
// 创建标记文件表明数据不完整
|
|
899
|
+
if (!fs.existsSync(targetDir)) {
|
|
900
|
+
fs.mkdirSync(targetDir, { recursive: true })
|
|
901
|
+
}
|
|
902
|
+
fs.writeFileSync(path.join(targetDir, '.lfs-incomplete'), `下载失败: ${error.message}`)
|
|
903
|
+
console.log(chalk.yellow('已保留不完整数据,可稍后重试'))
|
|
904
|
+
return
|
|
905
|
+
}
|
|
906
|
+
} catch (promptError) {
|
|
907
|
+
if (isUserCancel(promptError)) {
|
|
908
|
+
console.log(chalk.gray('返回上一级'))
|
|
909
|
+
return
|
|
910
|
+
}
|
|
911
|
+
throw promptError
|
|
912
|
+
}
|
|
913
|
+
}
|
|
855
914
|
}
|
|
856
915
|
}
|
|
857
916
|
|
|
@@ -548,13 +548,28 @@ export function clearCache() {
|
|
|
548
548
|
}
|
|
549
549
|
|
|
550
550
|
/**
|
|
551
|
-
*
|
|
551
|
+
* 获取共享模块路径
|
|
552
552
|
* @returns {string}
|
|
553
553
|
*/
|
|
554
554
|
export function getSharedModulesPath() {
|
|
555
|
-
//
|
|
556
|
-
|
|
557
|
-
|
|
555
|
+
// 优先使用环境变量指定的路径
|
|
556
|
+
if (process.env.SHARED_MODULES_PATH) {
|
|
557
|
+
return process.env.SHARED_MODULES_PATH
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
// 检测运行模式
|
|
561
|
+
// 源码目录运行: local-server/src/ -> shared 在 local-server/shared/
|
|
562
|
+
// CLI 包运行: packages/cli/src/server/ -> shared 在 packages/cli/shared/
|
|
563
|
+
const currentDir = __dirname
|
|
564
|
+
|
|
565
|
+
// 检查是否为源码目录运行(local-server/src/)
|
|
566
|
+
if (currentDir.includes('local-server/src')) {
|
|
567
|
+
// 源码目录: local-server/src/ -> local-server/shared/
|
|
568
|
+
return path.resolve(currentDir, '../shared')
|
|
569
|
+
}
|
|
570
|
+
|
|
571
|
+
// CLI 包运行: packages/cli/src/server/ -> packages/cli/shared/
|
|
572
|
+
return path.resolve(currentDir, '../../shared')
|
|
558
573
|
}
|
|
559
574
|
|
|
560
575
|
/**
|
package/version.json
CHANGED