Files
admin 856e632807 baseline: dsh 工作区基线快照(2026-09-10,全新历史起点)
本提交为 dsh_mcn_workshop 仓库的首个提交(旧仓 dsh_MCNProject 已停用),
完整固化 C:/Users/Administrator/.dsh 当前磁盘状态。

1) 临时数据清理:移出 sessions/(81M)、logs/、skill-backup-20260906/(14M)、
   scripts/__pycache__、storages/workspace.json.bak —— 合计 94M(.dsh 162M → 68M)
2) 凭据脱敏:.credentials.yaml(含明文 DEEPSEEK_API_KEY)移出 git 跟踪并加入
   .gitignore;mcn-data-insight/scripts/setup_redfox_key.py 中真实 key 示例改为占位符
3) .gitignore 增补 logs/、skill-backup-*/ 规则
4) 技能结构以当前磁盘状态为准:skills/ = mcn-short-video / impeccable / taste-skill /
   dsh-multi-user-migration;旧技能目录(mcn-dou-analysis、storyboard-prompt、
   short-video-script、browser-harness、mcn-data-insight)与
   profiles/web/node_modules/dsh-vision-router 本地已不存在,本提交记为删除
2026-09-10 22:31:45 +08:00

88 lines
4.6 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// dsh-plugin-mcn 配置常量(拆分自 index.js,纯常量无业务逻辑)
import { homedir } from "node:os";
import { join, isAbsolute, resolve } from "node:path";
import { readFileSync, existsSync } from "node:fs";
const DB_PATH = join(homedir(), ".dsh", "mcn-plugin.db");
// 数据预览统计缓存(60s TTL,避免每次从数据库刷新)
const STATS_TTL = 60 * 1000;
// 创作专用会话:固定命名,已存在则复用
const CREATIVE_SESSION_ID = "dsh_short-video-script";
// 创作 agent 的模型配置(与 web profile 默认一致,避免 {{model}} 变量无值)
const CREATIVE_PROVIDER = "deepseek-official";
const CREATIVE_MODEL = "deepseek-v4-flash";
const MCP_PACKAGE = "myai-mcp";
const MCP_ENV = {
MYAI_ENV: "prod",
MYAI_API_BASE_URL: "https://maiya-trans.youmanvideo.com/api",
MYAI_FEISHU_APP_ID: "cli_a84d0a47f93e1013",
MYAI_VOD_URL_PREFIX: "https://maiya-ai-fileup.youmanvideo.com",
MYAI_VOD_SPACE_NAME: "maiya-ai",
};
const NPX_CMD = process.platform === "win32"
? '"D:\\Program Files\\nodejs\\npx.cmd"'
: "npx";
function resolveCreativeCwd() {
try {
const raw = readFileSync(join(homedir(), ".dsh", "storages", "workspace.json"), "utf8");
const data = JSON.parse(raw);
const workspaces = data?.tables?.workspaces;
if (workspaces) {
const candidates = Object.values(workspaces)
.filter((ws) => typeof ws?.path === "string" && existsSync(ws.path))
.sort((a, b) => String(a.path).split(/[\\/]/).length - String(b.path).split(/[\\/]/).length);
if (candidates.length > 0) return candidates[0].path;
}
} catch (e) { /* fall through */ }
return "D:\\dshworkspace";
}
/** 并发浏览器任务隔离:调试 Chrome 端口池(需预启动对应实例),按会话 id 稳定分配。
* 导入/刷新等浏览器类任务各自使用独立端口,避免多个 AI 会话抢同一 Chrome。 */
const CHROME_PORTS = [9223, 9224, 9225];
const IMPORT_PREFIX = "dsh_import-";
const REFRESH_PREFIX = "dsh_refresh-";
const VIDEO_ANALYZE_PREFIX = "dsh_video-analyze-";
const REWRITE_PREFIX = "dsh_rewrite-";
const PERSONA_PREFIX = "dsh_persona-";
const STORYBOARD_PREFIX = "dsh_storyboard-";
const REVIEW_PREFIX = "dsh_review-";
// 账号数据分析会话前缀(V1.0 同步:账号详情「数据分析」tab 任务,每账号独立会话,归「解析任务」分组)
const ACCT_ANALYSIS_PREFIX = "dsh_acctana-";
const VIDEO_ANALYZE_MAX_CONCURRENT = 8;
const REWRITE_MAX_CONCURRENT = 8;
const STORYBOARD_MAX_CONCURRENT = 8;
const REVIEW_MAX_CONCURRENT = 4;
const MAX_UNGROUPED = 10;
const SESSION_ACTIVE_WINDOW_MS = 15 * 60 * 1000;
// MCN 任务会话自动删除:最后活动时间距今超过该时长(24h)且不在运行中的 dsh_* 会话,物理删除会话记录
const SESSION_RETENTION_MS = 24 * 60 * 60 * 1000;
// ---- 榜单更新任务(同步 V1.0 工作台 09-03 机制:30min 防重复更新窗口,可 force 跳过;红狐 API 按次计费)----
const RANK_UPDATE_COOLDOWN_MS = 30 * 60 * 1000;
// 榜单更新专用会话(固定命名,与创作会话同模式:已存在复用、followup 触发)
const RANK_SESSION_ID = "dsh_rank-update";
// 榜单更新元数据(跨重启持久化:lastAt/running/lastOk/lastError)
const RANK_META_FILE = join(homedir(), ".dsh", "mcn-rank-update.json");
// 榜单更新任务超时兜底:提交超过该时长仍标记 running → 视为中断(自愈置回空闲)
const RANK_TASK_MAX_MS = 60 * 60 * 1000;
/** 赛道标准枚举(28 个标准,其中「化妆美容」统一为「美妆」+ 剧情 1 个用户指定保留,共 29 个;权威定义见 dsh-plugin-dev/references/赛道标准枚举.md 与技能 SKILL.md) */
const STANDARD_TRACKS = [
"个人才艺", "生活vlog", "财富理财", "二次元", "居家装修", "学习教育", "小剧场", "数码科技",
"旅行", "美食", "美妆", "动物", "亲子", "汽车", "情感", "三农", "健康医学", "潮流风尚",
"舞蹈才艺", "颜值造型", "人文", "音乐", "影视", "身体锻炼", "体育", "明星娱乐", "游戏", "其他",
"剧情",
];
export {
DB_PATH, STATS_TTL, CREATIVE_SESSION_ID, CREATIVE_PROVIDER, CREATIVE_MODEL,
MCP_PACKAGE, MCP_ENV, NPX_CMD, CHROME_PORTS,
IMPORT_PREFIX, REFRESH_PREFIX, VIDEO_ANALYZE_PREFIX, REWRITE_PREFIX, PERSONA_PREFIX, STORYBOARD_PREFIX, REVIEW_PREFIX, ACCT_ANALYSIS_PREFIX,
VIDEO_ANALYZE_MAX_CONCURRENT, REWRITE_MAX_CONCURRENT, STORYBOARD_MAX_CONCURRENT, REVIEW_MAX_CONCURRENT, MAX_UNGROUPED,
SESSION_ACTIVE_WINDOW_MS, SESSION_RETENTION_MS, STANDARD_TRACKS, resolveCreativeCwd,
RANK_UPDATE_COOLDOWN_MS, RANK_SESSION_ID, RANK_META_FILE, RANK_TASK_MAX_MS,
};