import fs from 'fs'; import os from 'os'; import path from 'path'; export const CONFIG_DIR = path.join(os.homedir(), '.config', 'deepseek'); export const CONFIG_FILE = path.join(CONFIG_DIR, 'config.json'); export const DEFAULT_PROMPT = '你是Deepseek人工智能助手'; function createDefaultConfig() { return { api_key: '', system_prompt: DEFAULT_PROMPT }; } export function ensureConfigFile() { if (!fs.existsSync(CONFIG_DIR)) { fs.mkdirSync(CONFIG_DIR, { recursive: true }); } if (!fs.existsSync(CONFIG_FILE)) { fs.writeFileSync(CONFIG_FILE, JSON.stringify(createDefaultConfig(), null, 2), 'utf8'); fs.chmodSync(CONFIG_FILE, 0o600); } } export function readConfig() { ensureConfigFile(); try { const raw = fs.readFileSync(CONFIG_FILE, 'utf8'); const data = JSON.parse(raw); return { apiKey: data.api_key || '', prompt: data.system_prompt || DEFAULT_PROMPT, }; } catch { return { apiKey: '', prompt: DEFAULT_PROMPT }; } } export function saveConfig({ apiKey, prompt }) { ensureConfigFile(); const data = { api_key: apiKey ?? '', system_prompt: prompt ?? DEFAULT_PROMPT }; fs.writeFileSync(CONFIG_FILE, JSON.stringify(data, null, 2), 'utf8'); fs.chmodSync(CONFIG_FILE, 0o600); } export function resolveApiKey(config) { const envKey = process.env.DEEPSEEK_API_KEY; if (envKey && envKey.trim()) { return { apiKey: envKey.trim(), source: 'env' }; } if (config.apiKey && config.apiKey.trim()) { return { apiKey: config.apiKey.trim(), source: 'file' }; } return { apiKey: '', source: 'none' }; }