Files
cpa-plugin/internal/plugin/config.go
T
chuan 6a461bf1f3 feat: 添加持久化用量计费与管理面板
- 使用 SQLite 保存关联后的请求生命周期和用量记录
- 支持长上下文阶梯价格和可配置的 Fast 计费倍率
- 添加管理接口和可配置列的用量面板
- 保留失败、取消、重试和 compact 请求,便于计费核对
2026-08-14 21:08:02 +08:00

45 lines
1.0 KiB
Go

package plugin
import (
"fmt"
"strings"
"gopkg.in/yaml.v3"
)
type Config struct {
Enabled bool `yaml:"enabled"`
CodexOnly bool `yaml:"codex_only"`
DatabasePath string `yaml:"database_path"`
}
func defaultConfig() Config {
return Config{Enabled: true, CodexOnly: true, DatabasePath: "data/cpa-ext.db"}
}
func decodeConfig(raw []byte) (Config, error) {
cfg := defaultConfig()
if len(raw) == 0 {
return cfg, nil
}
if err := yaml.Unmarshal(raw, &cfg); err != nil {
return Config{}, fmt.Errorf("解析插件配置: %w", err)
}
if strings.TrimSpace(cfg.DatabasePath) == "" {
return Config{}, fmt.Errorf("database_path 不能为空")
}
return cfg, nil
}
func (c Config) accepts(record UsageRecord) bool {
if !c.Enabled {
return false
}
if !c.CodexOnly {
return true
}
provider := strings.ToLower(strings.TrimSpace(record.Provider))
model := strings.ToLower(strings.TrimSpace(record.Model))
return provider == "codex" || strings.Contains(model, "codex") || strings.HasPrefix(model, "gpt-")
}