model_chat/bin/ds-lib/config.js
2026-01-04 12:10:06 +08:00

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' };
}