{"id":32784659,"url":"https://github.com/duckcoding-dev/duckcoding","last_synced_at":"2026-02-18T15:02:25.755Z","repository":{"id":322386247,"uuid":"1089227083","full_name":"DuckCoding-dev/DuckCoding","owner":"DuckCoding-dev","description":"DuckCoding AI工具一键配置 - 支持 Claude Code、CodeX、Gemini CLI 的跨平台桌面应用","archived":false,"fork":false,"pushed_at":"2025-11-04T06:48:47.000Z","size":3135,"stargazers_count":9,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-11-04T08:20:19.292Z","etag":null,"topics":["ai","claude-code","codex","desktop-app","duckcoding","gemini-cli"],"latest_commit_sha":null,"homepage":"https://duckcoding.com","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DuckCoding-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-04T03:59:50.000Z","updated_at":"2025-11-04T07:09:34.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/DuckCoding-dev/DuckCoding","commit_stats":null,"previous_names":["duckcoding-dev/duckcoding"],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/DuckCoding-dev/DuckCoding","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DuckCoding-dev%2FDuckCoding","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DuckCoding-dev%2FDuckCoding/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DuckCoding-dev%2FDuckCoding/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DuckCoding-dev%2FDuckCoding/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DuckCoding-dev","download_url":"https://codeload.github.com/DuckCoding-dev/DuckCoding/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DuckCoding-dev%2FDuckCoding/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":283124190,"owners_count":26783292,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-11-07T02:00:06.343Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","claude-code","codex","desktop-app","duckcoding","gemini-cli"],"created_at":"2025-11-05T02:00:33.225Z","updated_at":"2026-01-25T12:09:27.039Z","avatar_url":"https://github.com/DuckCoding-dev.png","language":"TypeScript","readme":"# DuckCoding - AI 编程工具统一管理平台\n\n\u003cdiv align=\"center\"\u003e\n\n![DuckCoding Logo](src/assets/duck-logo.png)\n\n**一键安装与配置 Claude Code / CodeX / Gemini CLI 的跨平台桌面应用**\n\n[![GitHub Release](https://img.shields.io/github/v/release/DuckCoding-dev/DuckCoding)](https://github.com/DuckCoding-dev/DuckCoding/releases)\n[![License: AGPL v3](https://img.shields.io/badge/License-AGPL_v3-blue.svg)](LICENSE)\n[![Platform](https://img.shields.io/badge/platform-macOS%20%7C%20Windows%20%7C%20Linux-lightgrey)]()\n[![GitHub Downloads](https://img.shields.io/github/downloads/DuckCoding-dev/DuckCoding/total)](https://github.com/DuckCoding-dev/DuckCoding/releases)\n[![GitHub Stars](https://img.shields.io/github/stars/DuckCoding-dev/DuckCoding)](https://github.com/DuckCoding-dev/DuckCoding/stargazers)\n[![GitHub Forks](https://img.shields.io/github/forks/DuckCoding-dev/DuckCoding)](https://github.com/DuckCoding-dev/DuckCoding/network/members)\n[![GitHub Issues](https://img.shields.io/github/issues/DuckCoding-dev/DuckCoding)](https://github.com/DuckCoding-dev/DuckCoding/issues)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/DuckCoding-dev/DuckCoding/pulls)\n\n\u003c/div\u003e\n\nEnglish version: [README_EN.md](README_EN.md)\n\n## 目录\n\n- 项目概览\n- 核心功能\n- 功能预览\n- DuckCoding vs 手动配置\n- 快速开始\n- 使用指南（场景）\n- 功能详解\n- 设计与架构\n- 常见问题（FAQ）\n- 开发指南\n- 配置文件说明\n- 隐私与安全 / 许可证 / 相关链接 / Star History\n\n## 项目概览\n\n- 统一管理 Claude Code、CodeX、Gemini CLI，自动识别 npm/brew/官方安装方式\n- 多环境实例（Local/WSL/SSH），集中检测、安装、更新与状态查看\n- 多配置隔离（Profile），仅替换 API 字段，原生其他设置全部保留\n- 三工具独立透明代理，会话级配置、历史记录、自启动、防回环\n- 余额监控与供应商管理，模板 + 自定义提取器\n- 全量本地存储（`~/.duckcoding`）\n\n## 核心功能\n\n- 工具管理：自动检测/安装/更新；支持 Local/WSL/SSH；识别安装方式并校验版本\n- 配置管理（Profile）：多配置隔离；原生同步仅替换 API Key / Base URL\n- 透明代理：三工具独立端口（8787/8788/8789）；会话级配置；自启动；回环检测\n- 余额监控：多供应商；预设模板（NewAPI、OpenAI）+ 自定义 JS 提取器；可配置自动刷新\n- 供应商管理：统一 API 供应商配置，Dashboard 一键切换与校验\n- 高级设置：开机自启、单实例、日志级别/格式/文件输出\n\n## 功能预览\n\n\u003cdiv align=\"center\"\u003e\n\n![Dashboard](docs/screenshots/dashboard.png)\n![Tool Management](docs/screenshots/tool-management.png)\n![Profile Management](docs/screenshots/profile-management.png)\n![Transparent Proxy](docs/screenshots/transparent-proxy.png)\n\n\u003c/div\u003e\n\n## DuckCoding vs 手动配置\n\n| 能力          | 手动配置                   | DuckCoding                       |\n| ------------- | -------------------------- | -------------------------------- |\n| 工具安装/更新 | 手动执行 npm/brew/官方命令 | 一键安装与版本检测               |\n| 配置切换      | 手改 JSON/TOML/ENV         | UI 一键切换，Profile 隔离        |\n| 多环境        | 逐一配置                   | 统一管理 Local/WSL/SSH           |\n| 代理          | 修改配置要重启             | UI 启停，三工具独立代理，防回环  |\n| 余额监控      | 自写脚本调用 API           | 预设模板 + 自定义提取器 + 可视化 |\n| 学习成本      | 需理解各工具配置格式       | 图形界面 + 版本化新手引导        |\n\n## 快速开始\n\n1. 下载  \n   前往 Releases 获取最新包：https://github.com/DuckCoding-dev/DuckCoding/releases\n\n- macOS Universal: `DuckCoding-macOS-Universal.dmg`\n- Windows x64: `DuckCoding-Windows-x64-setup.exe`（推荐）或 `.msi`\n- Linux x64: `.deb` / `.rpm` / `.AppImage`\n\n2. 平台支持\n\n- 支持：Windows 10/11 x64、macOS 10.15+（Intel/Apple Silicon）、Linux x64\n- 不支持：WSL GUI（请使用 Windows 原生安装包）\n\n3. 首次启动\n\n- 自动进入新手引导：欢迎 → 代理配置 → 工具介绍 → 完成；可在“设置 → 关于”重新开启\n\n## 使用指南（场景）\n\n- 场景一：Claude Code 快速代理  \n  透明代理中填写 API Key / Base URL → 启动代理 → 在“会话历史”确认请求流量。\n- 场景二：多账号切换（工作/个人）  \n  “Profile 管理”新建/导入配置 → 激活后仅替换 API 字段，主题/快捷键保留。\n- 场景三：多环境工具管理  \n  “工具管理”添加 Local/WSL/SSH 实例 → 统一查看版本与更新 → 支持一键安装/更新。\n- 场景四：多供应商余额监控  \n  “供应商管理”配置 API → Dashboard 选择供应商查看余额/趋势 → 支持自定义刷新间隔。\n- 场景五：自定义提取器  \n  在“余额监控”使用 JS 提取器解析任意响应 → 保存模板 → 自动刷新展示。\n\n## 功能详解\n\n### 工具管理\n\n- 自动检测已安装工具（含安装方式），支持手动刷新\n- 一键安装/更新；记录安装方式（npm/brew/官方），支持版本校验\n- 数据存储：`~/.duckcoding/tools.json`\n\n### 配置管理（Profile）\n\n- 双文件：`~/.duckcoding/profiles.json` + `~/.duckcoding/active.json`\n- 导入/导出；原生同步仅替换 API Key / Base URL，保留主题/快捷键等个性化设置\n- 支持 Claude Code（settings.json + config.json）、Codex（config.toml + auth.json）、Gemini CLI（.env + settings.json）\n\n### 透明代理\n\n- 默认端口：8787（Claude Code）/ 8788（CodeX）/ 8789（Gemini CLI）\n- 会话级配置临时覆盖全局配置；历史会话可复用；代理可自启动\n- 数据存储：`~/.duckcoding/proxy.json`；会话历史：`~/.duckcoding/sessions.db`\n\n### 余额监控\n\n- 预设模板（NewAPI、OpenAI）+ 自定义 JS 提取器\n- 可配置刷新间隔；可视化展示余额、用量、到期时间\n- 数据存储：`~/.duckcoding/balance.json`\n\n### 供应商管理\n\n- 管理多个 API 供应商，Dashboard 快速切换\n- 配置校验与状态展示\n- 数据存储：`~/.duckcoding/providers.json`\n\n### 高级设置\n\n- 开机自启、单实例开关\n\n## 设计与架构\n\n- 设计目标：KISS/DRY/YAGNI，最小化用户操作成本，聚焦“安装-配置-代理-监控”闭环\n- 前端：React 19 + TypeScript + Vite + Tailwind + shadcn/ui；页面组件化（Dashboard、ToolManagement、Profile、Proxy、Balance、Providers、Settings）\n- 后端：Tauri 2 + Rust；三层架构（Commands → Services → Utils）；Trait-based 扩展（ToolDetector、ToolConfigManager、HeadersProcessor）\n- 数据管理：统一 DataManager 读写 JSON/TOML/ENV/SQLite，自动原子写入与校验和缓存\n- 配置隔离：Profile v2 双文件架构（profiles.json + active.json），只替换 API 字段，保留原生个性化配置\n- 质量保障：`npm run check` 统一入口（ESLint + Clippy + Prettier + fmt），CI 四平台矩阵\n\n## 常见问题（FAQ）\n\n### 安装\n\n- Windows 提示“无法验证发布者”？当前未签名，点击“更多信息”→“仍要运行”。\n- macOS 显示“来自身份不明的开发者”？右键打开或在“系统设置 → 隐私与安全”中允许。\n- Linux 无执行权限？先 `chmod +x DuckCoding-Linux-x64.AppImage`，再运行。\n- WSL 可以用吗？不行，WSL 无法运行 GUI，请使用 Windows 原生安装包。\n\n### 配置\n\n- 激活 Profile 会改变主题/快捷键吗？不会，只覆盖 API Key 与 Base URL。\n- 如何备份配置？使用“配置管理 → 导出”或直接备份 `~/.duckcoding/`。\n- 配置路径？见“配置文件说明”章节。\n\n### 代理\n\n- 端口被占用？在“透明代理 → 代理设置”修改端口。\n- 如何验证代理生效？执行 AI 工具后在“会话历史”查看是否有新记录。\n\n### 更新\n\n- 更新 DuckCoding？“设置 → 更新”检查并安装。\n- 更新 AI 工具？在“工具管理”点击对应卡片的“更新”按钮。\n- 数据会丢失吗？不会，数据存储在 `~/.duckcoding/`。\n\n### 其他\n\n- 是否收集用户数据？不收集，全部本地存储，开源可审计。\n- API Key 为什么打码？为安全起见 UI 只展示脱敏内容，完整 Key 在配置文件中可查。\n- 遇到问题如何反馈？https://github.com/DuckCoding-dev/DuckCoding/issues\n\n## 开发指南\n\n### 环境要求\n\n- Node.js 20.19+\n- Rust 1.70+\n- 系统依赖：\n  - macOS: Xcode Command Line Tools\n  - Windows: Microsoft C++ Build Tools (MSVC)\n  - Linux: `build-essential`、`libwebkit2gtk-4.1-dev`、`libjavascriptcoregtk-4.1-dev`、`libssl-dev`、`patchelf`\n\n### 快速开始\n\n```bash\ngit clone https://github.com/DuckCoding-dev/DuckCoding.git\ncd DuckCoding\nnpm install\nnpm run tauri dev\n```\n\n### 核心命令\n\n- `npm run check` / `npm run check:fix`（ESLint + Clippy + Prettier + fmt）\n- `npm run tauri dev` / `npm run tauri build`\n- `npm run test:rs` / `npm run coverage:rs`\n\n### 技术架构\n\n- 三层：Commands → Services → Utils\n- Trait-based：ToolDetector / ToolConfigManager / HeadersProcessor\n- 统一数据管理：DataManager（JSON/TOML/ENV/SQLite）\n\n### 项目结构\n\n- 前端：`src/`（React + shadcn/ui）\n- 后端：`src-tauri/src/`（commands / services / utils / models / data / setup）\n- 文档：`docs/`（含 `screenshots/`）\n\n### 贡献指南\n\n- 提交规范：Conventional Commits，描述使用简体中文\n- PR 需包含：动机、主要改动、测试情况、风险评估\n- 合并前必须通过：`npm run check`、`cargo test --locked`\n\n## 配置文件说明（`~` 为用户主目录）\n\n- DuckCoding：`~/.duckcoding/config.json`、`profiles.json`、`active.json`、`tools.json`、`proxy.json`、`balance.json`、`providers.json`、`sessions.db`、`logs/`\n- Claude Code：`~/.claude/settings.json`、`~/.claude/config.json`\n- CodeX：`~/.codex/config.toml`、`~/.codex/auth.json`\n- Gemini CLI：`~/.gemini/.env`、`~/.gemini/settings.json`\n\n## 隐私与安全\n\n- 不收集/不上报用户数据，配置文件权限 0600\n- 完全开源可审计，AGPL-3.0 保障用户权益\n\n## 许可证\n\n[GNU Affero General Public License v3.0](LICENSE)\n\n## 相关链接\n\n- 官网：https://duckcoding.com\n- 控制台：https://duckcoding.com/console\n- 问题反馈：https://github.com/DuckCoding-dev/DuckCoding/issues\n- 贡献指南：CLAUDE.md\n\n## Star History\n\n\u003cdiv align=\"center\"\u003e\n\u003ca href=\"https://star-history.com/#DuckCoding-dev/DuckCoding\u0026Date\"\u003e\n \u003cpicture\u003e\n   \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://api.star-history.com/svg?repos=DuckCoding-dev/DuckCoding\u0026type=Date\u0026theme=dark\" /\u003e\n   \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://api.star-history.com/svg?repos=DuckCoding-dev/DuckCoding\u0026type=Date\" /\u003e\n   \u003cimg alt=\"Star History Chart\" src=\"https://api.star-history.com/svg?repos=DuckCoding-dev/DuckCoding\u0026type=Date\" /\u003e\n \u003c/picture\u003e\n\u003c/a\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\nMade with ?? by DuckCoding  \n[官网](https://duckcoding.com) · [反馈问题](https://github.com/DuckCoding-dev/DuckCoding/issues)\n\u003c/div\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fduckcoding-dev%2Fduckcoding","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fduckcoding-dev%2Fduckcoding","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fduckcoding-dev%2Fduckcoding/lists"}