diff --git a/.codegraph/.gitignore b/.codegraph/.gitignore deleted file mode 100644 index d20c0fe..0000000 --- a/.codegraph/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -# CodeGraph data files — local to each machine, not for committing. -# Ignore everything in .codegraph/ except this file itself, so transient -# files (the database, daemon.pid, sockets, logs) never show up in git. -* -!.gitignore diff --git a/.gitignore b/.gitignore index 2d0ef03..f981437 100644 --- a/.gitignore +++ b/.gitignore @@ -4,13 +4,16 @@ /adapters/ /runtime.json /master.key -*.logmaster.key +*.log +/master.key # GUI (Electron) cmd/gui/node_modules/ cmd/gui/bin/ cmd/gui/build/gui-dist/ cmd/build/ cmd/gui/*.log -# workspace +# workspace (AI-assisted coding local state) .pi/ +.pi-glla/ +.codegraph/ /build/ diff --git a/.pi-glla/active.jsonl b/.pi-glla/active.jsonl deleted file mode 100644 index a1b3ca5..0000000 --- a/.pi-glla/active.jsonl +++ /dev/null @@ -1,8 +0,0 @@ -{"type":"session_rebound","value":{"reason":"startup"},"at":"2026-08-12T16:32:27.696Z"} -{"type":"session_waiting_for_load","value":{"reason":"startup"},"at":"2026-08-12T16:32:27.700Z"} -{"type":"state","value":{"goal":null,"list":[],"loop":null,"mainModelRecovery":null,"lastModelRef":"llmsproxy/AUTO"},"at":"2026-08-12T16:32:27.709Z"} -{"type":"session_shutdown","value":{"reason":"quit"},"at":"2026-08-12T16:32:35.444Z"} -{"type":"session_rebound","value":{"reason":"startup"},"at":"2026-08-13T00:45:11.614Z"} -{"type":"id_invalidation","value":{"oldId":"019ff6d1-6720-7b67-b552-8b7d4af1a78d","newId":"019ff894-82fd-7424-a82d-5fc7f6ead970","reason":"session_shutdown","shutdownReason":"quit","at":"2026-08-13T00:45:11.621Z"},"at":"2026-08-13T00:45:11.621Z"} -{"type":"session_waiting_for_load","value":{"reason":"startup"},"at":"2026-08-13T00:45:11.621Z"} -{"type":"session_shutdown","value":{"reason":"quit"},"at":"2026-08-13T00:45:33.296Z"} diff --git a/.pi-glla/owner.json b/.pi-glla/owner.json deleted file mode 100644 index f1da7d0..0000000 --- a/.pi-glla/owner.json +++ /dev/null @@ -1 +0,0 @@ -{"instanceId":"3813219:1786581911411","pid":3813219,"at":1786581911614} \ No newline at end of file diff --git a/.pi-glla/session-owner.json b/.pi-glla/session-owner.json deleted file mode 100644 index 43a0afc..0000000 --- a/.pi-glla/session-owner.json +++ /dev/null @@ -1 +0,0 @@ -{"pid":3813219,"at":"2026-08-13T00:45:11.621Z","generation":2,"ownerSessionId":"019ff894-82fd-7424-a82d-5fc7f6ead970","shutdownReason":"quit","shutdownAt":"2026-08-13T00:45:33.296Z"} \ No newline at end of file diff --git a/README.md b/README.md index 95223d3..668b11a 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,11 @@ # ModelRouter > **English**: [README_EN.md](./README_EN.md) +> +> **AI-assisted**: 本项目使用 AI 辅助编程(代码与文档由 AI 协作完成,经人工复核)。 面向多 llms 订阅者,部署在内网,实现一次配置多个服务共同使用的效果。支持指定模型或 auto 模式,按照配置的优先级选择可用模型提供服务。 -![screenshot_20260810_134342_meow.liny.browser.cat.uwu.jpg](https://raw.gitcode.com/user-images/assets/10531124/ff574fa9-ceef-4e41-a3e7-fdf60faead04/screenshot_20260810_134342_meow.liny.browser.cat.uwu.jpg 'screenshot_20260810_134342_meow.liny.browser.cat.uwu.jpg') - -![screenshot_20260810_122247_meow.liny.browser.cat.uwu.jpg](https://raw.gitcode.com/user-images/assets/10531124/cc703754-0a5b-4d89-8b0e-6922c9557ff3/screenshot_20260810_122247_meow.liny.browser.cat.uwu.jpg 'screenshot_20260810_122247_meow.liny.browser.cat.uwu.jpg') - > **轻量且增源无需重编译**:网关本体是单 Go 二进制(约 10MB,零运行时依赖)。新增/切换上游 > 只需在 `config.yaml`(或 WebUI)加一个 `sources` 条目或挂一个 `.lua` 适配器——**不改 Go、 > 不重编译**。源与适配器的改动经 WebUI 提交时即时生效(热更新);直接编辑 @@ -36,7 +34,6 @@ - **密钥加密落盘**:AES-256-GCM 加密存储 `api_key`、网关密钥、请求头,master.key 0600 权限保护 - **实时源探测**:`GET {base}/models` 定期探测,毫秒级感知上游状态,不污染调度退避状态 - **全链路审计**:HTTP 访问日志、登录/配置变更审计、请求记录 CSV 导出、密钥用量统计 CSV 导出 -- **AES-256-GCM 加密存储**:运行时文件敏感字段加密落盘,master.key 0600 权限,支持环境变量注入主密钥 ### 灵活的协议适配 diff --git a/README_EN.md b/README_EN.md index d32187f..751bdb6 100644 --- a/README_EN.md +++ b/README_EN.md @@ -1,6 +1,8 @@ # ModelRouter > **中文**: [README.md](./README.md) +> +> **AI-assisted**: This project is developed with AI-assisted coding (code and docs are produced in collaboration with AI, reviewed by humans). A lightweight, unified OpenAI-compatible LLM gateway for internal networks — configure once, and let multiple services (agents, SDKs, bots) share many