54 lines
1.6 KiB
JavaScript
54 lines
1.6 KiB
JavaScript
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' };
|
|
}
|