├── Kiro-account-manager
├── LICENSE
├── src
│ ├── renderer
│ │ ├── src
│ │ │ ├── services
│ │ │ │ └── kiro-api.ts
│ │ │ ├── env.d.ts
│ │ │ ├── store
│ │ │ │ └── index.ts
│ │ │ ├── components
│ │ │ │ ├── layout
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── Sidebar.tsx
│ │ │ │ ├── kiro
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── SteeringEditor.tsx
│ │ │ │ │ └── McpServerEditor.tsx
│ │ │ │ ├── index.ts
│ │ │ │ ├── pages
│ │ │ │ │ └── index.ts
│ │ │ │ ├── ui
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── progress.tsx
│ │ │ │ │ ├── badge.tsx
│ │ │ │ │ ├── Toggle.tsx
│ │ │ │ │ ├── alert.tsx
│ │ │ │ │ ├── button.tsx
│ │ │ │ │ ├── card.tsx
│ │ │ │ │ └── Select.tsx
│ │ │ │ ├── accounts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── AccountGrid.tsx
│ │ │ │ │ ├── AccountManager.tsx
│ │ │ │ │ ├── ExportDialog.tsx
│ │ │ │ │ ├── AccountFilter.tsx
│ │ │ │ │ ├── GroupManageDialog.tsx
│ │ │ │ │ ├── AccountDetailDialog.tsx
│ │ │ │ │ └── EditAccountDialog.tsx
│ │ │ │ ├── Versions.tsx
│ │ │ │ └── UpdateDialog.tsx
│ │ │ ├── assets
│ │ │ │ ├── 交流群.png
│ │ │ │ ├── 微信支付.png
│ │ │ │ ├── 支付宝支付.png
│ │ │ │ ├── Kiro Logo.png
│ │ │ │ ├── author-avatar.png
│ │ │ │ ├── kiro-high-resolution-logo-transparent.png
│ │ │ │ ├── base.css
│ │ │ │ ├── wavy-lines.svg
│ │ │ │ ├── main.css
│ │ │ │ └── electron.svg
│ │ │ ├── main.tsx
│ │ │ ├── lib
│ │ │ │ └── utils.ts
│ │ │ ├── types
│ │ │ │ ├── machineId.ts
│ │ │ │ └── account.ts
│ │ │ ├── App.tsx
│ │ │ └── styles
│ │ │ │ └── globals.css
│ │ └── index.html
│ ├── main
│ │ └── machineId.ts
│ └── preload
│ │ └── index.d.ts
├── .kiro
│ └── settings
│ │ └── mcp.json
├── .gitignore
├── .vscode
│ ├── extensions.json
│ ├── settings.json
│ └── launch.json
├── .prettierrc.yaml
├── .prettierignore
├── build
│ ├── icon.icns
│ ├── icon.ico
│ ├── icon.png
│ └── entitlements.mac.plist
├── resources
│ ├── 主页.png
│ ├── 关于.png
│ ├── 设置.png
│ ├── icon.ico
│ ├── icon.png
│ ├── 主题色.png
│ ├── 账户管理.png
│ ├── icon.icns
│ ├── 机器码管理.png
│ ├── kiro-high-resolution-logo-grayscale.png
│ ├── kiro-high-resolution-logo-transparent.ico
│ ├── kiro-high-resolution-logo-transparent.png
│ └── kiro-high-resolution-logo-grayscale-transparent.png
├── tsconfig.json
├── .editorconfig
├── tsconfig.node.json
├── tsconfig.web.json
├── electron.vite.config.ts
├── eslint.config.mjs
├── docs
│ ├── CHANGELOG-v1.2.7.md
│ └── CHANGELOG-v1.2.5.md
├── electron-builder.yml
└── package.json
├── LICENSE
├── .gitignore
├── README.md
└── .github
└── workflows
└── build.yml
/Kiro-account-manager/LICENSE:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Kiro-account-manager/src/renderer/src/services/kiro-api.ts:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Kiro-account-manager/.kiro/settings/mcp.json:
--------------------------------------------------------------------------------
1 | {
2 | "mcpServers": {}
3 | }
--------------------------------------------------------------------------------
/Kiro-account-manager/src/renderer/src/env.d.ts:
--------------------------------------------------------------------------------
1 | ///
4 |
5 |
8 | 一个功能强大的 Kiro IDE 多账号管理工具 9 |
10 | 11 |12 | 支持多账号快速切换、自动 Token 刷新、分组标签管理、机器码管理等功能 13 |
14 | 15 | --- 16 | 17 | ## ✨ 功能特性 18 | 19 | ### 🔐 多账号管理 20 | - 支持添加、编辑、删除多个 Kiro 账号 21 | - 一键快速切换当前使用的账号 22 | - 支持 Builder ID 和 Social(Google/GitHub)登录方式 23 | - 批量导入导出账号数据 24 | 25 | ### 🔄 自动刷新 26 | - Token 过期前自动刷新,保持登录状态 27 | - Token 刷新后自动更新账户用量、订阅等信息 28 | - 开启自动换号时,定期检查所有账户余额 29 | 30 | ### 📁 分组与标签 31 | - 通过分组和标签灵活组织管理账号 32 | - 多选账户批量设置分组/标签 33 | - 一个账户只能属于一个分组,但可以有多个标签 34 | 35 | ### 🔑 机器码管理 36 | - 修改设备标识符,防止账号关联封禁 37 | - 切换账号时自动更换机器码 38 | - 为每个账户分配唯一绑定的机器码 39 | - 支持备份和恢复原始机器码 40 | 41 | ### 🔄 自动换号 42 | - 余额不足时自动切换到其他可用账号 43 | - 可配置余额阈值和检查间隔 44 | 45 | ### 🎨 个性化设置 46 | - 21 种主题颜色可选(按色系分组显示) 47 | - 深色/浅色模式切换 48 | - 隐私模式隐藏敏感信息 49 | 50 | ### 🌐 代理支持 51 | - 支持 HTTP/HTTPS/SOCKS5 代理 52 | - 所有网络请求通过代理服务器 53 | 54 | ### 🔄 自动更新检测 55 | - 自动检测 GitHub 最新版本 56 | - 显示更新内容和下载文件列表 57 | - 一键跳转到下载页面 58 | 59 | --- 60 | 61 | ## 📸 界面预览 62 | 63 | ### 主页 64 | 显示账号统计、当前使用账号详情、订阅信息和额度明细。 65 | 66 |  67 | 68 | ### 账户管理 69 | 管理所有账号,支持搜索、筛选、批量操作,一键切换账号。 70 | 71 |  72 | 73 | ### 机器码管理 74 | 管理设备标识符,防止账号关联封禁,支持备份恢复。 75 | 76 |  77 | 78 | ### 设置 79 | 配置主题颜色、隐私模式、自动刷新、代理等选项。 80 | 81 |  82 | 83 | ### 关于 84 | 查看版本信息、功能列表、技术栈和作者信息。 85 | 86 |  87 | 88 | --- 89 | 90 | ## 📖 使用说明 91 | 92 | ### 添加账号 93 | 94 | 1. 点击「账户管理」进入账号列表页面 95 | 2. 点击右上角「+ 添加账号」按钮 96 | 3. 输入账号的 SSO Token 或 OIDC 凭证 97 | 4. 点击确认完成添加 98 | 99 | ### 切换账号 100 | 101 | 1. 在账户管理页面找到目标账号 102 | 2. 点击账号卡片上的电源图标即可切换 103 | 3. 切换后 Kiro IDE 将使用新账号 104 | 105 | ### 批量设置分组/标签 106 | 107 | 1. 在账户管理页面勾选多个账号 108 | 2. 点击「分组」或「标签」按钮 109 | 3. 在下拉菜单中选择要添加或移除的分组/标签 110 | 111 | ### 机器码管理 112 | 113 | 1. 点击左侧「机器码」进入管理页面 114 | 2. 首次使用会自动备份原始机器码 115 | 3. 点击「随机生成并应用」可更换新机器码 116 | 4. 如需恢复,点击「恢复原始」即可 117 | 118 | > ⚠️ **注意**:修改机器码需要管理员权限,请以管理员身份运行应用 119 | 120 | ### 导入导出 121 | 122 | - **导出**:设置 → 数据管理 → 导出,支持 JSON、TXT、CSV、剪贴板多种格式 123 | - **导入**:设置 → 数据管理 → 导入,从 JSON 文件恢复账号数据 124 | 125 | --- 126 | 127 | ## 🛠️ 技术栈 128 | 129 | - **框架**: Electron + React + TypeScript 130 | - **状态管理**: Zustand 131 | - **样式**: Tailwind CSS 132 | - **构建工具**: Vite 133 | - **图标**: Lucide React 134 | 135 | --- 136 | 137 | ## 💻 开发指南 138 | 139 | ### 环境要求 140 | 141 | - Node.js >= 18 142 | - npm >= 9 143 | 144 | ### 安装依赖 145 | 146 | ```bash 147 | npm install 148 | ``` 149 | 150 | ### 开发模式 151 | 152 | ```bash 153 | npm run dev 154 | ``` 155 | 156 | ### 构建应用 157 | 158 | ```bash 159 | # Windows 160 | npm run build:win 161 | 162 | # macOS 163 | npm run build:mac 164 | 165 | # Linux 166 | npm run build:linux 167 | ``` 168 | 169 | ### 构建多架构版本 170 | 171 | ```bash 172 | # Windows 64位 173 | npx electron-builder --win --x64 174 | 175 | # Windows 32位 176 | npx electron-builder --win --ia32 177 | 178 | # Windows ARM64 179 | npx electron-builder --win --arm64 180 | 181 | # macOS Intel 182 | npx electron-builder --mac --x64 183 | 184 | # macOS Apple Silicon 185 | npx electron-builder --mac --arm64 186 | 187 | # Linux 64位 188 | npx electron-builder --linux --x64 189 | 190 | # Linux ARM64 191 | npx electron-builder --linux --arm64 192 | ``` 193 | 194 | --- 195 | 196 | ## 🚀 自动构建 (GitHub Actions) 197 | 198 | 项目配置了 GitHub Actions 工作流,支持自动构建所有平台和架构: 199 | 200 | ### 支持的平台 201 | 202 | | 平台 | 架构 | 格式 | 203 | |------|------|------| 204 | | Windows | x64, ia32, arm64 | exe, zip | 205 | | macOS | x64, arm64 | dmg, zip | 206 | | Linux | x64, arm64, armv7l | AppImage, deb, snap | 207 | 208 | ### 触发方式 209 | 210 | 1. **推送标签**: 推送 `v*` 格式的标签时自动构建并发布 211 | ```bash 212 | git tag v1.1.0 213 | git push origin v1.1.0 214 | ``` 215 | 216 | 2. **手动触发**: 在 GitHub Actions 页面手动运行工作流 217 | 218 | --- 219 | 220 | ## 📋 更新日志 221 | 222 | ### v1.2.9 (2025-12-17) 223 | - 🔍 **批量检查修复**: 批量检查现在和单个检查效果一致,能正确检测封禁状态 224 | - 📤 **导出格式增强**: TXT 和剪贴板导出在勾选「包含凭证」时可直接用于导入 225 | - 🏢 **Teams 订阅支持**: 新增 Teams 订阅类型识别 226 | - 🎨 **机器码页面美化**: 全新设计的机器码管理页面,新增统计卡片和优化布局 227 | - 🎯 **主题色统一**: 机器码管理页面颜色跟随用户选择的主题色变化 228 | 229 | ### v1.2.5 (2025-12-09) 230 | - 🎨 **主题系统升级**: 主题颜色从 13 个增加到 21 个,按色系分组显示 231 | - 📊 **额度统计**: 主页新增总额度统计卡片,实时汇总所有账号用量 232 | - 💾 **多格式导出**: 支持 JSON、TXT、CSV、剪贴板等多种导出格式 233 | - 🔧 **机器码优化**: 新增搜索功能和最后修改时间显示 234 | - 🐛 **修复**: 修复部分主题颜色切换无效的问题 235 | 236 | ### v1.1.0 237 | - 新增机器码管理功能 238 | - 新增批量设置分组/标签功能 239 | - 优化自动刷新,同步更新账户信息 240 | - 新增 13 种主题颜色 241 | - 界面优化和 Bug 修复 242 | 243 | ### v1.0.0 244 | - 初始版本发布 245 | - 支持多账号管理和切换 246 | - 支持自动 Token 刷新 247 | - 支持分组和标签管理 248 | - 支持隐私模式和代理设置 249 | 250 | --- 251 | 252 | ## 📄 许可证 253 | 254 | 本项目基于 [MIT License](LICENSE) 开源。 255 | 256 | --- 257 | 258 | ## 👨💻 作者 259 | 260 | - **GitHub**: [chaogei](https://github.com/chaogei) 261 | - **项目主页**: [Kiro-account-manager](https://github.com/chaogei/Kiro-account-manager) 262 | 263 | --- 264 | 265 | ## 🙏 致谢 266 | 267 | 感谢所有使用和支持本项目的用户! 268 | 269 | 如果这个项目对你有帮助,欢迎 Star ⭐ 支持一下! 270 | -------------------------------------------------------------------------------- /Kiro-account-manager/src/renderer/src/types/account.ts: -------------------------------------------------------------------------------- 1 | // ============================================ 2 | // 多账号管理器类型定义 3 | // ============================================ 4 | 5 | export type IdpType = 'Google' | 'Github' | 'BuilderId' | 'AWSIdC' | 'Internal' 6 | 7 | export type SubscriptionType = 'Free' | 'Pro' | 'Pro_Plus' | 'Enterprise' | 'Teams' 8 | 9 | export type AccountStatus = 'active' | 'expired' | 'error' | 'refreshing' | 'unknown' 10 | 11 | /** 12 | * 账号凭证信息 13 | */ 14 | export interface AccountCredentials { 15 | accessToken: string 16 | csrfToken: string 17 | refreshToken?: string 18 | clientId?: string // OIDC 客户端 ID(用于刷新 token) 19 | clientSecret?: string // OIDC 客户端密钥 20 | region?: string // AWS 区域,默认 us-east-1 21 | expiresAt: number // 时间戳 22 | authMethod?: 'IdC' | 'social' // 认证方式:IdC (BuilderId) 或 social (GitHub/Google) 23 | provider?: 'BuilderId' | 'Github' | 'Google' // 身份提供商 24 | } 25 | 26 | /** 27 | * 奖励额度信息 28 | */ 29 | export interface BonusUsage { 30 | code: string 31 | name: string 32 | current: number 33 | limit: number 34 | expiresAt?: string 35 | } 36 | 37 | /** 38 | * 账号使用量信息 39 | */ 40 | export interface AccountUsage { 41 | current: number 42 | limit: number 43 | percentUsed: number 44 | lastUpdated: number 45 | // 详细额度分解 46 | baseLimit?: number // 基础额度 47 | baseCurrent?: number // 基础已用 48 | freeTrialLimit?: number // 试用额度 49 | freeTrialCurrent?: number 50 | freeTrialExpiry?: string 51 | bonuses?: BonusUsage[] // 奖励额度列表 52 | nextResetDate?: string // 重置日期 53 | resourceDetail?: ResourceDetail // 资源详情 54 | } 55 | 56 | /** 57 | * 账号订阅信息 58 | */ 59 | export interface AccountSubscription { 60 | type: SubscriptionType 61 | title?: string // 原始订阅标题,如 "KIRO PRO+" 62 | rawType?: string // 原始订阅类型,如 "Q_DEVELOPER_STANDALONE_PRO_PLUS" 63 | expiresAt?: number // 订阅到期时间戳 64 | daysRemaining?: number 65 | upgradeCapability?: string // 可升级能力 66 | overageCapability?: string // 超额能力 67 | managementTarget?: string // 订阅管理目标 68 | } 69 | 70 | /** 71 | * 资源使用详情 72 | */ 73 | export interface ResourceDetail { 74 | resourceType?: string // CREDIT 75 | displayName?: string // Credit 76 | displayNamePlural?: string // Credits 77 | currency?: string // USD 78 | unit?: string // INVOCATIONS 79 | overageRate?: number // 0.04 80 | overageCap?: number // 10000 81 | overageEnabled?: boolean 82 | } 83 | 84 | /** 85 | * 账号标签 86 | */ 87 | export interface AccountTag { 88 | id: string 89 | name: string 90 | color: string // hex color 91 | } 92 | 93 | /** 94 | * 账号实体 95 | */ 96 | export interface Account { 97 | // 基本信息 98 | id: string 99 | email: string 100 | nickname?: string // 自定义别名 101 | idp: IdpType 102 | userId?: string 103 | visitorId?: string 104 | 105 | // 认证信息 106 | credentials: AccountCredentials 107 | 108 | // 订阅信息 109 | subscription: AccountSubscription 110 | 111 | // 使用量 112 | usage: AccountUsage 113 | 114 | // 分组和标签 115 | groupId?: string 116 | tags: string[] // tag ids 117 | 118 | // 状态 119 | status: AccountStatus 120 | lastError?: string 121 | isActive: boolean // 是否为当前激活账号 122 | 123 | // 时间戳 124 | createdAt: number 125 | lastUsedAt: number 126 | lastCheckedAt?: number // 上次状态检查时间 127 | } 128 | 129 | /** 130 | * 账号分组 131 | */ 132 | export interface AccountGroup { 133 | id: string 134 | name: string 135 | description?: string 136 | color?: string 137 | order: number 138 | createdAt: number 139 | } 140 | 141 | /** 142 | * 筛选条件 143 | */ 144 | export interface AccountFilter { 145 | search?: string // 搜索关键词(邮箱/别名) 146 | subscriptionTypes?: SubscriptionType[] 147 | statuses?: AccountStatus[] 148 | idps?: IdpType[] 149 | groupIds?: string[] 150 | tagIds?: string[] 151 | usageMin?: number // 使用量百分比 152 | usageMax?: number 153 | daysRemainingMin?: number 154 | daysRemainingMax?: number 155 | } 156 | 157 | /** 158 | * 排序选项 159 | */ 160 | export type SortField = 161 | | 'email' 162 | | 'nickname' 163 | | 'subscription' 164 | | 'usage' 165 | | 'daysRemaining' 166 | | 'lastUsedAt' 167 | | 'createdAt' 168 | | 'status' 169 | 170 | export type SortOrder = 'asc' | 'desc' 171 | 172 | export interface AccountSort { 173 | field: SortField 174 | order: SortOrder 175 | } 176 | 177 | /** 178 | * 导入/导出格式 179 | */ 180 | export interface AccountExportData { 181 | version: string 182 | exportedAt: number 183 | accounts: Omit暂无账号
162 | 169 |v{updateInfo.version}
114 | )} 115 |133 | 新版本已发布,建议立即更新以获得最新功能和修复。 134 |
135 | {updateInfo?.releaseNotes && ( 136 | 140 | )} 141 |182 | 更新已下载完成,点击下方按钮重启应用以完成安装。 183 |
184 |199 | 更新检查失败: {error} 200 |
201 | 204 | > 205 | )} 206 |{arg}
156 |
159 | 加载账号数据...
175 |当前分组内的账号:
226 |点击添加到此分组:
250 |{group.description}
287 | )} 288 |暂无分组
327 |点击上方按钮创建第一个分组
328 |修改账号配置或更新凭证
205 |