
Company News
Jerod Santo Joins Socket as Head of Media
Allow myself to introduce... myself.
@deepracticex/ai-config
Advanced tools
An minimalist AI configuration management library focused on configuration storage and preference management
一个极简的 AI 配置管理库,专注于配置存储和偏好管理。基于"如非必要,勿增实体"的设计原则。
npm install @deechat/ai-config
import { initializeAIConfig, getProvider, createConfig, getResolvedConfig } from '@deechat/ai-config';
// 1. 初始化(自动创建本地数据库 ~/.ai-config/config.db)
await initializeAIConfig();
// 2. 查看预置的供应商
const openai = getProvider('openai');
console.log(openai.display_name); // "OpenAI"
// 3. 创建配置
await createConfig({
provider_code: 'openai',
config_name: 'my-config',
config_data: {
apiKey: 'sk-your-api-key-here',
model: 'gpt-4',
temperature: 0.7
}
});
// 4. 使用配置(自动合并供应商默认值)
const config = await getResolvedConfig('openai', 'my-config');
console.log(config.merged_config);
// {
// apiKey: 'sk-your-api-key-here',
// model: 'gpt-4',
// temperature: 0.7,
// baseUrl: 'https://api.openai.com/v1' // 来自供应商默认值
// }
import { AIConfigManager } from '@deechat/ai-config';
// 使用自定义配置
const manager = new AIConfigManager({
database_path: '/custom/path/config.db',
auto_migrate: true,
backup_enabled: true
});
await manager.initialize();
// 供应商管理
const providers = manager.providers.findAll({ is_enabled: true });
const openaiConfigs = manager.configs.findByProvider('openai');
// 偏好管理
await manager.preferences.set({
key: 'default_provider',
value: 'openai',
category: 'ai'
});
const theme = manager.preferences.getWithDefault('ui_theme', 'system');
// 获取统计信息
const stats = await manager.getStats();
console.log(stats);
预置供应商包括:OpenAI、Anthropic Claude、Google Gemini、Ollama 等。
import { createProvider, getProviders, getProvider } from '@deechat/ai-config';
// 查看所有供应商
const allProviders = getProviders();
// 查看启用的供应商
const enabledProviders = getProviders({ is_enabled: true });
// 添加自定义供应商
await createProvider({
provider_code: 'my-ai',
display_name: 'My AI Service',
default_base_url: 'https://api.my-ai.com/v1',
supported_models: ['my-model-1', 'my-model-2'],
default_model: 'my-model-1',
description: 'My custom AI service'
});
import { createConfig, getConfig, getResolvedConfig } from '@deechat/ai-config';
// 创建配置
await createConfig({
provider_code: 'anthropic',
config_name: 'production',
config_data: {
apiKey: 'sk-ant-xxx',
model: 'claude-3-5-sonnet-20241022',
maxTokens: 4096
},
is_default: true // 设为默认配置
});
// 获取配置
const config = getConfig('anthropic', 'production');
// 获取默认配置
const defaultConfig = getConfig('anthropic');
// 获取解析后的配置(合并供应商默认值)
const resolved = await getResolvedConfig('anthropic');
import { setPreference, getPreference } from '@deechat/ai-config';
// 设置偏好
await setPreference('ui_theme', 'dark', 'ui', 'UI theme preference');
await setPreference('max_tokens', 4096, 'ai');
// 获取偏好
const theme = getPreference('ui_theme');
const maxTokens = getPreference('max_tokens', 2048); // 带默认值
// 批量操作
const manager = getAIConfigManager();
await manager.preferences.setBatch({
'request_timeout': 30000,
'retry_attempts': 3,
'log_level': 'info'
}, 'system');
-- 供应商表
CREATE TABLE providers (
provider_code TEXT PRIMARY KEY,
display_name TEXT NOT NULL,
default_base_url TEXT,
supported_models TEXT, -- JSON 数组
default_model TEXT,
config_schema TEXT, -- JSON Schema
description TEXT,
is_enabled BOOLEAN DEFAULT 1
);
-- 配置表
CREATE TABLE configs (
id INTEGER PRIMARY KEY,
provider_code TEXT NOT NULL,
config_name TEXT NOT NULL,
config_data TEXT NOT NULL, -- JSON 对象
is_default BOOLEAN DEFAULT 0,
is_active BOOLEAN DEFAULT 1,
FOREIGN KEY (provider_code) REFERENCES providers(provider_code)
);
-- 偏好表
CREATE TABLE preferences (
key TEXT PRIMARY KEY,
value TEXT NOT NULL, -- JSON 值
category TEXT,
description TEXT
);
~/.ai-config/
├── config.db # SQLite 数据库
└── backup-*.db # 自动备份文件(可选)
interface DatabaseOptions {
database_path?: string; // 自定义数据库路径
auto_migrate?: boolean; // 自动迁移数据库(默认 true)
backup_enabled?: boolean; // 启用备份(默认 true)
readonly?: boolean; // 只读模式(默认 false)
}
npm test # 运行测试
npm run test:watch # 监听模式
npm run test:coverage # 覆盖率报告
import {
initializeAIConfig,
createConfig,
getResolvedConfig,
setPreference,
getPreference
} from '@deechat/ai-config';
async function setupAIConfig() {
// 初始化
await initializeAIConfig();
// 配置 OpenAI
await createConfig({
provider_code: 'openai',
config_name: 'development',
config_data: {
apiKey: process.env.OPENAI_API_KEY!,
model: 'gpt-4o-mini', // 开发环境用便宜的模型
temperature: 0.7
}
});
await createConfig({
provider_code: 'openai',
config_name: 'production',
config_data: {
apiKey: process.env.OPENAI_API_KEY!,
model: 'gpt-4o', // 生产环境用最好的模型
temperature: 0.5
},
is_default: true // 设为默认
});
// 设置全局偏好
await setPreference('default_provider', 'openai', 'ai');
await setPreference('request_timeout', 30000, 'ai');
await setPreference('ui_theme', 'system', 'ui');
// 在应用中使用
const defaultProvider = getPreference('default_provider');
const config = await getResolvedConfig(defaultProvider);
console.log('🎯 AI 配置就绪!');
console.log('Provider:', defaultProvider);
console.log('Config:', config.merged_config);
}
initializeAIConfig(options?) - 初始化全局管理器getAIConfigManager() - 获取全局管理器closeAIConfig() - 关闭全局管理器createProvider(input) - 创建供应商getProvider(code) - 获取供应商getProviders(options?) - 获取供应商列表createConfig(input) - 创建配置getConfig(provider, name?) - 获取配置getResolvedConfig(provider, name?) - 获取解析配置setPreference(key, value, category?, description?) - 设置偏好getPreference(key, defaultValue?) - 获取偏好欢迎提交 Issue 和 Pull Request!
MIT
@deechat/ai-config - 让 AI 配置管理变得简单! 🚀
FAQs
An minimalist AI configuration management library focused on configuration storage and preference management
The npm package @deepracticex/ai-config receives a total of 8 weekly downloads. As such, @deepracticex/ai-config popularity was classified as not popular.
We found that @deepracticex/ai-config demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.

Company News
Allow myself to introduce... myself.

Research
/Security News
A Twitch browser extension on Chrome and Firefox forwards users’ live OAuth session tokens through proxies controlled by a Russian bot service.

Security News
Anthropic found biased reasoning and recklessness drove Claude Mythos 5 to publish malware on PyPI and compromise a security vendor.