17 Commits
Author SHA1 Message Date
nyoungo fed260559c feat(admin): 登录改用 bcrypt 并对失败登录限速;bump 0.6.4
- 管理台密码改为 bcrypt 校验(已配置的 bcrypt 值直接使用,明文先 SHA-256 再哈希,避开 72 字节上限并保持常数时间比较)
- 同一客户端 5 次失败登录锁定 5 分钟,429 响应带 Retry-After;成功登录清零
- 版本号提升到 0.6.4(Makefile / internal/admin.Version)
2026-10-09 00:50:36 +08:00
nyoungo c877c1bf8c fix(upstream): 额度耗尽立即轮换访客身份并识别 de/es/fr 额度文案
- 命中额度错误当场调用 RotateGuest(复用既有实现),不再等退避、也不再依赖 auto_refresh;后续路由与下一次请求直接用新访客身份
- quota_notice 信封(type=quota_notice / notice 对象)在通用 error 门之前判定,无 error 字段的额度通知不再被当成静默 delta
- 额度文案按站点语言识别:de guthaben/aufgebraucht、es agotado、fr épuisé/consomm、en quota/exhausted,并下钻 data/notice/quota_notice 嵌套字段
- cache message 失败与非 2xx 响应体也按同样规则归类,额度问题会走轮换与跨站 failover 而不是普通错误
2026-10-09 00:50:18 +08:00
nyoungo 86492460b0 feat: 工具调用解析、Responses 状态缓存、幂等重放与模型别名
- 重写工具调用解析:XML、DSML 未加引号键、fence 内跳过、参数外溢等形状,并按请求携带的 tools 过滤工具名
- 新增 GET /v1/responses/{id} 与 previous_response_id 有界状态缓存(进程内、TTL、store=false 不写入)
- /v1/chat/completions 支持 Idempotency-Key 幂等回放(1 MiB 上限、24h TTL、并发去重)
- 模型别名与 default_model 降级;错误体统一输出 param/code
- 补 e2e 修复场景与 docs/compat-audit.md 兼容性审计
2026-10-09 00:50:01 +08:00
nyoungo 3db73ded64 chore: bump version to 0.6.1 2026-10-08 01:07:10 +08:00
nyoungo d2c6f4787b chore: add env-gated SSE read timing diagnostics 2026-10-08 01:07:10 +08:00
nyoungo 18bf4ee723 feat: stream tool-call arguments progressively instead of buffering 2026-10-08 01:07:10 +08:00
nyoungo a9821d120e fix: accept prose-prefixed tool JSON and heal invalid escape sequences 2026-10-08 01:07:04 +08:00
nyoungo 4cc4504a18 chore: bump version to 0.6.0 2026-10-07 23:16:00 +08:00
nyoungo 753b495f8a feat: console actions to query and reset a site quota 2026-10-07 23:16:00 +08:00
nyoungo 08464a27d7 feat: rotate visitor identity to restore a quota-exhausted site without re-solving 2026-10-07 23:16:00 +08:00
nyoungo f30049b137 chore: document partial-call fallback and bump version to 0.5.0 2026-10-07 22:41:18 +08:00
nyoungo 403ab48a46 feat: cool quota-exhausted sites down and fail over fast on cache rejections 2026-10-07 22:41:18 +08:00
nyoungo 975882292c feat: force-close truncated tool-call JSON into partial tool calls 2026-10-07 22:41:18 +08:00
nyoungo 413be4ba9e feat: stitch truncated tool-call JSON via multi-round continuation 2026-10-07 20:37:27 +08:00
nyoungo 3a21c53c0a ci: attach binaries to a GitHub Release on tag push
- release job (contents: write, gh CLI) creates the release with generated notes and uploads both binaries + sha256, --clobber for re-runs
- on tag builds the ldflags version comes from the tag itself
2026-10-07 17:45:58 +08:00
nyoungo c3e6d9d513 ci: add windows/linux binary build workflow
- test job: go vet + go test on push/PR/tag
- build job: CGO_ENABLED=0 cross-build linux/amd64 + windows/amd64 with version injection, sha256 checksums, uploaded as artifacts
- fix Makefile -X ldflags path after module rename
- add .gitattributes (LF normalization), ignore CI build outputs
2026-10-07 16:21:45 +08:00
nyoungo 18b2c04006 initial import
- Go service bridging deepseek.de/es/fr V4 models behind an OpenAI-compatible API
- /v1/chat/completions, /v1/responses, /v1/messages (Anthropic) with tool calling
- web admin console: dashboard, models/sites, keys, proxies, Turnstile, playground, live logs
- Turnstile solvers: solver API / local browser via CDP / manual cookie import
- MIT license, README with screenshots, Dockerfile and Makefile
2026-10-07 15:46:45 +08:00