增加几何校验
This commit is contained in:
@@ -21,6 +21,8 @@ const help = `模型接入与结构理解(新增模式,不调用旧拆件流
|
||||
--stream true|false 覆盖理解阶段的流式设置
|
||||
--output-mode NAME text-json / json-object / json-schema
|
||||
--resume 输入/配置/代码和产物哈希相同时复用
|
||||
--parts-file FILE 离线读取已有 v1/v2 计划,做 Alpha 校验与种子生成,不请求模型
|
||||
--python FILE ai-spine Conda 环境解释器(默认使用已激活环境)
|
||||
--image FILE 图片编辑输入,可重复;多图需配置 capabilities
|
||||
--mask FILE 透明处可编辑的 RGBA PNG;需配置 capabilities
|
||||
--dry-run 检查配置与本地输入,不请求模型、不生成产物
|
||||
@@ -34,7 +36,7 @@ export function parseOptions(argv) {
|
||||
['--understanding-model', 'understandingModel'], ['--completion-model', 'completionModel'],
|
||||
['--understanding-protocol', 'understandingProtocol'], ['--output-mode', 'outputMode'],
|
||||
['--stage', 'stage'], ['--mask', 'maskPath'], ['--prompt-file', 'promptFile'], ['--stop-after', 'stopAfter'],
|
||||
['--mode', 'mode'], ['--python', 'python'], ['--stream', 'streamRaw'],
|
||||
['--mode', 'mode'], ['--python', 'python'], ['--stream', 'streamRaw'], ['--parts-file', 'partsFile'],
|
||||
]);
|
||||
for (let i = 0; i < argv.length; i += 1) {
|
||||
const flag = argv[i];
|
||||
@@ -56,6 +58,7 @@ export async function main(argv = process.argv.slice(2)) {
|
||||
const options = parseOptions(argv);
|
||||
if (options.help) { console.log(help); return; }
|
||||
if (!['understanding', 'completion'].includes(options.stage)) throw new Error('--stage 仅支持 understanding 或 completion');
|
||||
if (options.partsFile && (options.stage !== 'understanding' || options.listModels)) throw new Error('--parts-file 仅用于离线结构理解');
|
||||
if (options.streamRaw !== undefined && !['true', 'false'].includes(options.streamRaw)) throw new Error('--stream 仅支持 true 或 false');
|
||||
options.stream = options.streamRaw === undefined ? undefined : options.streamRaw === 'true';
|
||||
if (options.mode && options.mode !== 'annotated-parts') throw new Error('新入口仅支持 --mode annotated-parts');
|
||||
@@ -66,7 +69,7 @@ export async function main(argv = process.argv.slice(2)) {
|
||||
const overrides = options.stage === 'understanding'
|
||||
? {model: options.understandingModel, protocol: options.understandingProtocol, outputMode: options.outputMode, stream: options.stream}
|
||||
: {model: options.completionModel};
|
||||
const stage = resolveStage(loaded, options.stage, overrides, {requireKey: !options.dryRun});
|
||||
const stage = resolveStage(loaded, options.stage, overrides, {requireKey: !options.dryRun && !options.partsFile});
|
||||
if (options.listModels) {
|
||||
if (options.dryRun) throw new Error('--list-models 会请求模型列表,不能与 --dry-run 同时使用');
|
||||
const {payload} = await requestJson(stage, 'models', () => ({method: 'GET'}));
|
||||
@@ -87,7 +90,7 @@ export async function main(argv = process.argv.slice(2)) {
|
||||
if (options.stage === 'understanding') {
|
||||
if (!options.reference) throw new Error('结构理解需要 --reference');
|
||||
if (options.imagePaths.length || options.maskPath || options.promptFile) throw new Error('结构理解不接受图片编辑参数');
|
||||
console.log(`角色结构理解:${stage.model} (${stage.protocol})`);
|
||||
console.log(options.partsFile ? '角色结构理解:离线计划几何校验' : `角色结构理解:${stage.model} (${stage.protocol})`);
|
||||
result = await runUnderstanding({...options, loaded, stage});
|
||||
console.log(`${result.reused ? '复用已校验产物' : '结构理解完成,语义待复核'}:${path.join(result.out, 'report.html')}`);
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user