From fa43337c6927c1b008f04e4b6d617be109f2aa25 Mon Sep 17 00:00:00 2001 From: Lee <7932644+strahe@users.noreply.github.com> Date: Wed, 23 Sep 2026 15:37:49 +0800 Subject: [PATCH 1/3] docs: simplify user guides --- CONTRIBUTING.md | 4 +- README.md | 25 +--- README_ZH.md | 25 +--- docs/.vitepress/config.ts | 4 +- docs/antigravity/profiles.md | 74 ++-------- docs/claude-code/profiles.md | 87 ++--------- docs/codex/profiles.md | 118 ++------------- docs/codex/usage-cost.md | 78 ++-------- docs/grok-build/profiles.md | 125 ++-------------- docs/grok-build/usage-cost.md | 74 ++-------- docs/guide/concepts.md | 52 ++----- docs/guide/generic-targets.md | 53 ++----- docs/guide/getting-started.md | 154 +++----------------- docs/guide/updates.md | 54 ++----- docs/index.md | 26 +--- docs/operations/recovery.md | 75 ++-------- docs/operations/switching.md | 66 +-------- docs/reference/cli.md | 225 +++++------------------------ docs/reference/data-security.md | 63 ++------ docs/zh/antigravity/profiles.md | 74 ++-------- docs/zh/claude-code/profiles.md | 87 ++--------- docs/zh/codex/profiles.md | 118 ++------------- docs/zh/codex/usage-cost.md | 76 ++-------- docs/zh/grok-build/profiles.md | 125 ++-------------- docs/zh/grok-build/usage-cost.md | 76 ++-------- docs/zh/guide/concepts.md | 52 ++----- docs/zh/guide/generic-targets.md | 51 ++----- docs/zh/guide/getting-started.md | 154 +++----------------- docs/zh/guide/updates.md | 54 ++----- docs/zh/index.md | 26 +--- docs/zh/operations/recovery.md | 75 ++-------- docs/zh/operations/switching.md | 66 +-------- docs/zh/reference/cli.md | 225 +++++------------------------ docs/zh/reference/data-security.md | 63 ++------ 34 files changed, 401 insertions(+), 2303 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index bb91114..965b853 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -12,7 +12,7 @@ Use this guide to prepare and submit changes to ProfileDeck. Install these prerequisites: -- Go 1.26, as declared in `go.mod` +- Go 1.27, as declared in `go.mod` - Node.js 26 with npm, as used by the CI workflows - Make - The `golangci-lint` and `wails3` versions declared in `Makefile` when working on the full Desktop application @@ -34,7 +34,7 @@ Desktop builds require platform development libraries. The Linux packages used b - Keep each change focused on one problem. - Follow the style and structure of the surrounding code. - Add tests for meaningful behavior and regressions. -- Update documentation when commands, setup, behavior, or supported workflows change. +- Update relevant docs when workflows or developer contracts change. In user docs, keep each fact in one place and cover only changed tasks, prerequisites, results, limitations, or recovery actions; omit obvious UI navigation. - Use synthetic or redacted test data. Do not commit credentials, personal data, runtime databases, exports, backups, logs, or local build output. ## Validate Changes diff --git a/README.md b/README.md index beadddd..8b03010 100644 --- a/README.md +++ b/README.md @@ -14,16 +14,9 @@ ProfileDeck saves AI Agent logins and settings as reusable **Profiles**. Use the Desktop app or CLI to switch between Profiles and preview the changes before applying them. -## Features - -- **Reusable Profiles** — Save separate logins and settings for work, personal, or other contexts. -- **Review before switching** — See which files and login details will change. Sensitive values stay hidden. -- **Usage and limits** — View usage data, cost estimates, and current limits; availability varies by tool. -- **Local data** — Keep data on your machine and create encrypted backups for recovery. - ## Supported Agents -ProfileDeck supports multiple AI Agents. See [Agent support](docs/index.md#supported-tools) for the full list and what ProfileDeck can switch for each Agent. +ProfileDeck supports Codex, Claude Code, Antigravity, and Grok Build. See [Supported tools](docs/index.md#supported-tools) for what each Profile includes. ## Install @@ -34,27 +27,19 @@ ProfileDeck supports multiple AI Agents. See [Agent support](docs/index.md#suppo | **Linux portable app** | Desktop | [Install portable Desktop](docs/guide/getting-started.md#portable-desktop) | | **Build from source** | CLI | [Build and use the CLI](docs/guide/getting-started.md#build-and-use-the-cli) | -## Desktop and CLI - -Desktop and CLI use the same local Profiles and switching rules. Use Desktop for visual workflows and `profiledeck-cli` for terminal workflows and automation. - -### Desktop - -Manage Profiles, preview switches, view usage and limits, and run diagnostics from a visual interface. - ![ProfileDeck Desktop showing Profiles and usage limits](docs/images/desktop-codex-profiles-en.png) -### CLI +## CLI example -Use the CLI to list Profiles, switch between them, and view usage. The example below uses Codex: +For a Codex Profile named `work`: ```bash profiledeck-cli codex profile list -profiledeck-cli switch codex --yes +profiledeck-cli switch codex work --yes profiledeck-cli usage summary --provider codex ``` -Add `--json` when a script or tool needs machine-readable output. See the [CLI reference](docs/reference/cli.md) for all commands. +Use `--json` on supported commands when a script needs machine-readable output. See the [CLI reference](docs/reference/cli.md) for common commands, or run `profiledeck-cli --help` for full syntax. ## License diff --git a/README_ZH.md b/README_ZH.md index 27f4eeb..3dbf6fb 100644 --- a/README_ZH.md +++ b/README_ZH.md @@ -14,16 +14,9 @@ ProfileDeck 将 AI Agent 的登录信息和设置保存为可复用的 **Profile**。你可以通过桌面端或 CLI 在不同 Profile 之间切换,并提前查看变更内容。 -## 功能 - -- **Profile 管理** — 将不同的登录信息和设置分别保存为 Profile,按需切换。 -- **切换预览** — 查看即将变更的文件和登录信息,敏感内容始终隐藏。 -- **用量与限额** — 查看用量数据、成本估算和当前限额;支持情况因工具而异。 -- **本地数据** — 数据保存在本机,并可创建加密备份用于恢复。 - ## 支持的 Agent -ProfileDeck 支持多种 AI Agent。完整列表及各 Agent 可切换的内容见[支持说明](docs/zh/index.md#支持的工具)。 +ProfileDeck 支持 Codex、Claude Code、Antigravity 和 Grok Build。各工具可切换的内容见[支持的工具](docs/zh/index.md#支持的工具)。 ## 安装 @@ -34,27 +27,19 @@ ProfileDeck 支持多种 AI Agent。完整列表及各 Agent 可切换的内容 | **Linux 便携版** | 桌面端 | [安装便携版桌面端](docs/zh/guide/getting-started.md#便携版桌面端) | | **源码构建** | CLI | [构建并使用 CLI](docs/zh/guide/getting-started.md#构建并使用-cli) | -## 桌面端与 CLI - -桌面端提供可视化操作,`profiledeck-cli` 适合终端和自动化任务。两者共用本地 Profile 和切换规则。 - -### 桌面端 - -在桌面端管理 Profile、预览切换、查看用量与限额;遇到问题时,还可以运行诊断。 - ![ProfileDeck 桌面端中的 Profile 与用量限额](docs/images/desktop-codex-profiles-zh.png) -### CLI +## CLI 示例 -使用 CLI 列出和切换 Profile,并查看用量。下面以 Codex 为例: +以名为 `work` 的 Codex Profile 为例: ```bash profiledeck-cli codex profile list -profiledeck-cli switch codex --yes +profiledeck-cli switch codex work --yes profiledeck-cli usage summary --provider codex ``` -脚本或工具需要机器可读的结果时,可添加 `--json`。完整命令见 [CLI 参考](docs/zh/reference/cli.md)。 +脚本需要机器可读结果时,可在支持的命令中添加 `--json`。常用命令见 [CLI 参考](docs/zh/reference/cli.md);完整语法运行 `profiledeck-cli --help` 查看。 ## 许可证 diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts index ff03914..87e7ff5 100644 --- a/docs/.vitepress/config.ts +++ b/docs/.vitepress/config.ts @@ -34,7 +34,7 @@ const enGrokBuild = [ const enSafety = [ { text: 'Review and Switch', link: '/operations/switching' }, - { text: 'Recover or Undo', link: '/operations/recovery' }, + { text: 'Recovery', link: '/operations/recovery' }, { text: 'Data and Security', link: '/reference/data-security' } ] @@ -69,7 +69,7 @@ const zhGrokBuild = [ const zhSafety = [ { text: '审核并切换', link: '/zh/operations/switching' }, - { text: '恢复或撤销', link: '/zh/operations/recovery' }, + { text: '诊断与恢复', link: '/zh/operations/recovery' }, { text: '数据与安全', link: '/zh/reference/data-security' } ] diff --git a/docs/antigravity/profiles.md b/docs/antigravity/profiles.md index 8d02c62..6f65ef9 100644 --- a/docs/antigravity/profiles.md +++ b/docs/antigravity/profiles.md @@ -1,86 +1,32 @@ # Antigravity Profiles -ProfileDeck can save and switch an Antigravity consumer OAuth login stored in the operating system credential store. It does not sign you in to Antigravity. +ProfileDeck saves and switches Antigravity's consumer OAuth login from the operating system credential store. It does not sign you in or manage legacy storage, settings, or separate SSH and container logins. ## Before you start -1. Sign in to Antigravity and confirm that it works. -2. Start ProfileDeck, or run `profiledeck-cli init` if you use the CLI. - -Legacy Antigravity storage is not supported. - -## Save a Profile in the Desktop app - -1. Open **Antigravity** in the ProfileDeck sidebar. -2. Select **New Profile**. -3. Enter a permanent Profile ID and a display name, then select **Save Profile**. - -The new Profile becomes the current Antigravity Profile. ProfileDeck never displays its access or refresh tokens. - -## Save a Profile from the CLI - -Check the current login, then save it: +Sign in to Antigravity and confirm it works. CLI users run `profiledeck-cli init` once. Only the current supported login can be saved: ```bash profiledeck-cli antigravity detect -profiledeck-cli antigravity profile create work --name Work -``` - -`detect` reports whether the login is ready without printing it. The create command requires a valid current login. - -Review or rename saved Profiles with: - -```bash -profiledeck-cli antigravity profile list -profiledeck-cli antigravity profile show work -profiledeck-cli antigravity profile update work --name "Work account" +profiledeck-cli antigravity profile create work ``` -## Switch Profiles +The first Profile becomes current. To save another login, sign in to that account in Antigravity and create another Profile. -When practical, close Antigravity before switching so it cannot refresh its login during the change. Reopen it after the switch. +## Switch and save a refreshed login -In the Desktop app, open the Profile you want, select **Use Profile**, review the change, and confirm it. +Close Antigravity before switching when practical so it cannot refresh its login during the change. See [Review and Switch](../operations/switching.md) for the CLI command. -From the CLI, preview the change when needed, then apply it: - -```bash -profiledeck-cli switch antigravity work --dry-run -profiledeck-cli switch antigravity work --yes -``` - -ProfileDeck checks the current login again and creates a private operation recovery point before changing it. If the switch is interrupted, use [Diagnostics and recovery](../operations/recovery.md). - -## Save a refreshed login - -Antigravity may refresh its login while it runs. The short-lived access-token expiry does not describe how long a saved Profile can be reused, so ProfileDeck does not present it as a login expiry. ProfileDeck saves a valid refreshed login when you switch away from the current Profile. You can also save it explicitly: +Antigravity may refresh its login while running. ProfileDeck saves a valid refreshed login when you switch away; you can save it before signing in to another account with: ```bash profiledeck-cli antigravity profile save-current ``` -In the Desktop app, open the current Profile's **…** menu and select **Save Current Login**. - -## Delete a Profile - -Open a Profile's action menu in Desktop and choose **Delete Profile**, or run: - -```bash -profiledeck-cli antigravity profile delete work --yes -``` - -This deletes the complete global Profile from every Agent, not only its Antigravity data. A saved login used only by that Profile is deleted, while shared saved logins remain. A current Profile or one with an unfinished operation cannot be deleted. The current Antigravity login in the system credential store does not change. +A short-lived access token's expiry does not tell you how long the saved Profile remains reusable. See [Profiles and settings](../guide/concepts.md) for sharing and deletion effects. ## Check usage limits -The Desktop app checks the current Antigravity Profile once at startup and after a successful switch. Select **Refresh limits** on the current Profile to check again. ProfileDeck does not poll in the background. - -These checks send the current Profile's access token to Google's Cloud Code service. The service contract is unpublished, so using it may carry account risk. ProfileDeck does not refresh, save, or write back the token during a check. - -The Profile list shows a compact summary. Profile details show each available group, its 5-hour and weekly windows, remaining percentage, reset time, and check time. A non-current Profile can keep a snapshot checked earlier in the same app session, but you must use that Profile before refreshing it. - -Limit snapshots are temporary. They are not saved to usage reports, application backups, or the ProfileDeck database, and they do not identify which Profile produced earlier Antigravity activity. - -## What is not supported +Desktop checks the current Profile at startup and after switching; further checks are manual. The check sends its access token to an unpublished Google Cloud Code service. This may carry account risk. ProfileDeck does not refresh or write back the token during the check. -ProfileDeck does not manage Antigravity sign-in, settings, legacy-storage migration, Manager data, model-level limit details, usage attribution, or separate login files used by SSH or container sessions. Antigravity limit checks are available only in the Desktop app. +Limit results remain in memory and are not saved to usage reports or backups. They do not identify which Profile produced earlier activity. Limit checks are available only in Desktop. diff --git a/docs/claude-code/profiles.md b/docs/claude-code/profiles.md index 8c9ba43..1550222 100644 --- a/docs/claude-code/profiles.md +++ b/docs/claude-code/profiles.md @@ -1,96 +1,29 @@ # Claude Code Profiles -A Claude Code Profile saves one Claude Code account login. ProfileDeck does not change Claude Code settings, MCP servers, plugins, API keys, cloud-provider authentication, or Claude Desktop. +ProfileDeck saves the account login created by Claude Code `/login`. It does not sign you in or manage API keys, Console or cloud-provider authentication, Claude Code settings, or Claude Desktop. ## Before you start -- Desktop initializes ProfileDeck automatically. CLI users must run `profiledeck-cli init` once. -- Run `/login` in Claude Code before saving a Profile. +Run `/login` in Claude Code, then initialize the CLI with `profiledeck-cli init` if needed. On macOS, ProfileDeck may need permission to read the Claude Code Keychain item. macOS asks for your computer login password, not your Claude account password. -ProfileDeck only saves the account login from `/login`. It does not save API keys or Console sign-in, and it does not sign you in. - -## Save Profiles in Desktop - -1. Select **Claude Code → Profiles**. -2. If macOS permission is required, choose **Authorize** and allow ProfileDeck to read the Claude Code login from Keychain. -3. Choose **New Profile**, then enter a permanent Profile ID and a display name. -4. Run `/login` in Claude Code for another account, return to ProfileDeck, and save another Profile. - -The first saved Profile becomes current. Saving another Profile does not change Claude Code settings. - -## Save Profiles with the CLI - -Sign in to the first account, then run: - -```bash -profiledeck-cli claude-code detect -profiledeck-cli claude-code profile create personal --name "Personal" -``` - -Sign in to the second account with `/login`, then save it separately: +## Save and switch accounts ```bash -profiledeck-cli claude-code profile create work --name "Work" -profiledeck-cli claude-code profile list +profiledeck-cli claude-code profile create personal ``` -List and show commands display login status and expiry information without printing token values. +To save another account, run `/login` for that account in Claude Code, then create another Profile. The first saved Profile becomes current. Switching uses the [shared switch command](../operations/switching.md). After switching, start a new Claude Code session and run `/status` to confirm the account; existing processes keep their previous state. -## Switch accounts - -In Desktop, choose **Use Profile**, review the login change, and confirm. ProfileDeck creates a private operation recovery point before continuing. - -With the CLI, previewing is optional: - -```bash -profiledeck-cli switch claude-code personal --dry-run -profiledeck-cli switch claude-code personal --yes -``` - -Start a new Claude Code session after switching and run `/status` to confirm the account. Already running Claude Code processes do not change. - -If Claude Code refreshed the current login, ProfileDeck saves a valid update before switching away. An expired saved Profile can still be selected so Claude Code can renew it through `/login`. - -## Save a refreshed login - -Open the current Profile's **…** menu and choose **Save Current Login** in Desktop, or run: +ProfileDeck saves a valid refreshed login when you switch away. You can save it before another `/login` with: ```bash profiledeck-cli claude-code profile save-current ``` -When the saved login is shared by multiple Profiles, ProfileDeck shows how many Profiles will change. Review that count before confirming with `--yes` in the CLI. - -## Delete a Profile - -Open a Profile's action menu in Desktop and choose **Delete Profile**, or run: - -```bash -profiledeck-cli claude-code profile delete work --yes -``` - -This deletes the complete global Profile from every Agent, not only its Claude Code data. A saved login used only by that Profile is deleted, while shared saved logins remain. A current Profile or one with an unfinished operation cannot be deleted. The current Claude Code Keychain item or credential file does not change. - -## Allow Keychain access on macOS - -Claude Code must create its Keychain login with `/login` before ProfileDeck can save it. Opening the Profiles page, running `detect`, or opening Diagnostics only checks whether the login is available. - -When access is required, Desktop shows **Authorize**. macOS may then ask for your macOS login password to grant ProfileDeck access to the existing Claude Code Keychain item. This is not a request for your Claude account password. - -Keychain permissions are specific to each item. Another tool working without a prompt does not mean Claude Code should do the same. - -## Login files on Linux and Windows - -ProfileDeck uses `.credentials.json` below `CLAUDE_CONFIG_DIR`, or `~/.claude/.credentials.json` when that variable is unset. It keeps using the location saved when Claude Code support was first set up. - -If a later CLI process sees a different `CLAUDE_CONFIG_DIR`, ProfileDeck warns instead of silently switching to another file. On Linux, ProfileDeck keeps the login file readable only by your user account when it writes the file. - -## If Claude Code uses the wrong account - -Claude Code settings, `apiKeyHelper`, API-key environment variables, and cloud-provider options can take precedence over the selected account login. ProfileDeck reports the names of supported authentication override variables visible to its own process, but it cannot inspect another terminal or an already running Claude Code process. +If several Profiles share that login, review the affected count before confirming with `--yes`. Sharing and deletion effects are explained under [Profiles and settings](../guide/concepts.md). -Start a new session, run `/status`, and review the [Claude Code authentication documentation](https://code.claude.com/docs/en/authentication) when the selected account is not active. +## Login location and overrides -## What is not included +On Linux and Windows, ProfileDeck uses `CLAUDE_CONFIG_DIR/.credentials.json`, or `~/.claude/.credentials.json` when the variable is unset. It keeps the location chosen during first setup and warns if a later CLI process points elsewhere. -Claude Code Profile support does not include Claude Desktop, quota checks, usage attribution, Console or API-key accounts, Claude Code settings switching, or parallel account sessions. +Claude Code settings, `apiKeyHelper`, API-key environment variables, or cloud-provider options can take precedence over the selected account. If the wrong account is active, start a new session, check `/status`, and consult [Claude Code authentication](https://code.claude.com/docs/en/authentication). ProfileDeck cannot inspect another terminal's environment or an already running Claude Code process. diff --git a/docs/codex/profiles.md b/docs/codex/profiles.md index 2c0b320..55ac9f4 100644 --- a/docs/codex/profiles.md +++ b/docs/codex/profiles.md @@ -1,151 +1,65 @@ # Codex Profiles -A Codex Profile saves one login and one set of reusable Codex settings, called a Config Set. The login and settings can be shared or copied independently when you fork them to a destination Profile. - -Each Config Set contains only the user-level `config.toml`. Sessions, logs, skills, plugin caches, project `.codex/config.toml` files, and system policy are not included. +A Codex Profile saves one login and one reusable set of user-level `config.toml` settings, called a Config Set. Sessions, logs, skills, plugins, project settings, and system policy are not included. ## Before you start -Codex must store its login in `auth.json`. If that file is missing, add this setting to `$CODEX_HOME/config.toml`, then sign in again: +Codex must save its login in `auth.json` and have a valid `config.toml`. If `auth.json` is missing, add this setting to `$CODEX_HOME/config.toml` and sign in again: ```toml cli_auth_credentials_store = "file" ``` -Use the Codex login command for the sign-in method you want to save: +Use the login command for the account type you need: ```bash -# ChatGPT codex login - -# OpenAI API key printenv OPENAI_API_KEY | codex login --with-api-key - -# Codex access token printf '%s' "$CODEX_ACCESS_TOKEN" | codex login --with-access-token ``` -ProfileDeck can save and switch these file-backed sign-ins. Supplying `OPENAI_API_KEY` or `CODEX_ACCESS_TOKEN` to a Codex process without running the matching login command does not create `auth.json`, so there is no login for ProfileDeck to save. - -ProfileDeck also requires a valid `config.toml`. CLI commands resolve the Codex home in this order: - -1. `--codex-dir` -2. `CODEX_HOME` -3. `~/.codex` +Passing an API key or access token only as an environment variable does not create `auth.json`. CLI commands look for Codex files in `--codex-dir`, `CODEX_HOME`, then `~/.codex`. -## Save a Profile in Desktop - -1. Select **Codex → Profiles**. -2. Choose **New Profile**. -3. Enter a permanent Profile ID and a display name. -4. For the first Profile, save the current Codex settings in the default `shared` Config Set. - -The first Profile becomes current. To save another login, run the appropriate Codex login command, return to ProfileDeck, and save another Profile. Reuse the current Config Set when both logins should use the same settings, or save a new Config Set when the settings must change independently. - -## Save a Profile with the CLI +## Save Profiles ```bash -profiledeck-cli init -profiledeck-cli codex detect profiledeck-cli codex profile create work ``` -The first Profile saves the current login and settings, creates the `shared` Config Set, and becomes current. Later Profiles reuse the current Config Set by default: +The first Profile saves the current login and settings in a `shared` Config Set. After signing in to another account, create another Profile. It reuses the current Config Set unless you request a separate one: ```bash -# Run the appropriate Codex login command first. profiledeck-cli codex profile create personal +profiledeck-cli codex profile create client --new-config-set client ``` -Save the current settings separately when needed: - -```bash -profiledeck-cli codex profile create client \ - --new-config-set client \ - --config-set-name "Client" -``` - -## Manage Config Sets - -In Desktop, open **Config Sets** from the Codex Profiles page. You can create, copy, rename, or delete saved settings. A Config Set cannot be deleted while a Profile uses it. - -The equivalent CLI commands show summaries without printing the complete settings: - -```bash -profiledeck-cli codex config-set list -profiledeck-cli codex config-set show shared -profiledeck-cli codex config-set create experimental --name "Experimental" -profiledeck-cli codex config-set copy shared local --name "Local" -profiledeck-cli codex config-set update local --description "Local models" -profiledeck-cli codex config-set delete local --yes -``` - -Choose different saved settings for an inactive Profile with: - -```bash -profiledeck-cli codex profile set-config work shared -``` +Shared Config Set changes affect every Profile using it. To give an existing inactive Profile different saved settings, use `profiledeck-cli codex profile set-config `. See [Profiles and Config Sets](../guide/concepts.md) for sharing and deletion effects. ## Fork a Profile -Forking adds saved Codex data to a destination Profile. The destination can be new, or it can be an existing Profile that does not already contain Codex data. Any data for other Agents remains unchanged. Copy the login or Config Set when the destination Profile must be able to change that item without affecting the source Profile. - -Desktop presents the share-or-copy choice in the Fork form. In the CLI, at least one item must use `copy-new`: +Forking adds Codex data to a new Profile or to an existing Profile without Codex data. Choose whether the login and settings should be shared or copied; at least one must be copied. For example, to share the login and copy the settings: ```bash -profiledeck-cli codex profile fork work client-login \ - --credential-binding copy-new \ - --config-binding share-parent - -profiledeck-cli codex profile fork work client-config \ +profiledeck-cli codex profile fork work client \ --credential-binding share-parent \ --config-binding copy-new \ - --new-config-set client-config + --new-config-set client ``` ## Save changes and switch -Codex continues to use normal `auth.json` and `config.toml` files. Before switching away, ProfileDeck preserves valid changes made to the current login or settings. - -To save before signing in to a different account or replacing these files, open the current Profile's **…** menu and choose **Save Current Login and Settings**, or run: +Codex keeps using its normal `auth.json` and `config.toml`. ProfileDeck saves valid changes from the current Profile when you switch away. To save them before signing in to another account or replacing those files, run: ```bash profiledeck-cli codex profile save-current ``` -In Desktop, choose **Use Profile**, review the hidden-value preview, and confirm. In the CLI: - -```bash -profiledeck-cli switch codex work --dry-run -profiledeck-cli switch codex work --yes -``` - -The `--dry-run` preview is optional and read-only. To require the switch to match an earlier preview, pass its fingerprint: - -```bash -profiledeck-cli switch codex work \ - --plan-fingerprint \ - --yes -``` - -If the current `auth.json` or `config.toml` is missing or invalid, the preview warns that it will not be saved; a confirmed switch can recreate it from the selected Profile. ProfileDeck stops before writing when the current state is unsupported, cannot be checked safely, or changes after review. Open Diagnostics or run `profiledeck-cli doctor` before retrying. - -## Delete a Profile - -Open a Profile's action menu in Desktop and choose **Delete Profile**, or run: - -```bash -profiledeck-cli codex profile delete work --yes -``` - -This deletes the complete global Profile from every Agent, not only its Codex data. It also deletes saved logins and Config Sets used only by that Profile, while shared saved data remains. A current Profile or one with an unfinished operation cannot be deleted. Deletion does not change Codex `auth.json`, `config.toml`, or any other tool-owned working state. +If either working file is missing or invalid, ProfileDeck warns that it will not capture that file. A switch can still restore valid files from the selected Profile. See [Review and Switch](../operations/switching.md) for the CLI command and recovery behavior. ## Check limits and keep a login active -Desktop can check limits for ChatGPT Codex logins and compatible API Key services. ProfileDeck checks the current Profile once at startup and after a successful switch; use **Refresh limits** when you need a later result. A ChatGPT check can renew a supported Codex sign-in and save the refreshed login. - -Set automatic limit refresh to Off, 5, 10, 30, or 60 minutes on the Profile detail page or under **Codex → Settings**. Managed ChatGPT logins can also enable **Renew sign-in automatically**. Both options are off by default and run only while ProfileDeck is open or hidden in the menu bar. +Desktop can check limits for ChatGPT Codex logins and compatible API Key services. Current-Profile checks run at startup and after a switch. Automatic ChatGPT limit refresh and sign-in renewal are optional and off by default; otherwise later checks are manual. A ChatGPT check may renew and save the login. -For an API Key Profile with an absolute custom HTTP or HTTPS Base URL, ProfileDeck makes one compatibility request to `/v1/usage` using the saved API Key. A compatible response can show the remaining quota or wallet balance, plan, expiry, and limit windows. API Key limits are checked only at startup, after switching, or when you refresh manually; they never use the automatic interval. An HTTP Base URL sends the API Key and response without transport encryption. +For an API Key Profile with a custom absolute HTTP or HTTPS Base URL, a limit check sends the saved key to that URL's `/v1/usage`. API Key checks run only at startup, after switching, or manually. HTTP does not encrypt the key or response in transit. Codex access-token Profiles do not have automatic limit or login refresh. -Limit information is temporary and is not saved to disk or added to usage reports. API service responses are used only for the current snapshot; ProfileDeck does not import their historical usage. Codex access-token Profiles can be saved and switched, but their limits and sign-ins are not refreshed automatically. +Limit snapshots are temporary and separate from [local usage reports](./usage-cost.md). They do not identify which Profile produced earlier activity. diff --git a/docs/codex/usage-cost.md b/docs/codex/usage-cost.md index e3d4e10..c123580 100644 --- a/docs/codex/usage-cost.md +++ b/docs/codex/usage-cost.md @@ -1,92 +1,34 @@ # Codex Usage and Cost -ProfileDeck reads local Codex session data to show token usage, activity, and estimated API-equivalent cost. Reports stay offline and do not assign sessions to a Profile or ChatGPT account. +ProfileDeck reports token usage from local Codex sessions and estimates its Standard API-equivalent cost. It cannot assign past activity to a Profile, saved login, or ChatGPT account. Desktop syncs while running; CLI users can sync on demand. -## Sync in the Desktop app - -The Desktop app syncs after startup and continues while ProfileDeck is open or in the menu bar. - -To change the interval, open **Codex → Settings → Usage reports → Update frequency** and choose 15 seconds, 30 seconds, 1 minute, 2 minutes, or 5 minutes. The default is 1 minute. The Usage page shows the latest sync result and reports files it could not read. - -When session files have not changed, background sync checks their metadata without reading their contents. Normal appends read only a small integrity boundary and the new part of each file. If an existing file is truncated or ProfileDeck detects a change to earlier usage, it keeps the previously imported history and skips that file version. It checks the file again after it changes or when you run a CLI sync. - -## Sync from the CLI - -Run: +## Sync usage ```bash profiledeck-cli usage sync codex -``` - -By default, ProfileDeck reads: - -```text -$CODEX_HOME/sessions/**/*.jsonl -$CODEX_HOME/archived_sessions/*.jsonl -``` - -If `CODEX_HOME` is not set, it uses `~/.codex`. To read another Codex home: - -```bash profiledeck-cli usage sync codex --codex-dir /path/to/codex-home ``` -You can repeat a sync safely; previously imported usage is not counted again. Invalid, oversized, or unsupported records are skipped and reported without storing their contents. - -Deleting the Codex Provider also deletes its saved usage reports. Desktop background sync will not recreate a deleted Provider. Running this CLI sync is an explicit request: it can set up the Codex Provider again and reimport usage that still exists in the local Codex logs. - -## View a summary - -```bash -profiledeck-cli usage summary -profiledeck-cli usage summary --json -``` - -The summary includes event count, input and output tokens, cached input, total tokens, estimated cost when available, and the number of events with unknown cost. +ProfileDeck reads sessions under `CODEX_HOME` or `~/.codex` by default. Repeating a sync does not double-count imported usage. Invalid or unsupported records are skipped and reported; source files are not changed. Deleting the Codex Provider deletes its saved usage report. A later explicit CLI sync can import records still present in local sessions. ## View a report ```bash -profiledeck-cli usage report -profiledeck-cli usage report --range today -profiledeck-cli usage report --range 30d --json -profiledeck-cli usage report --range all +profiledeck-cli usage summary +profiledeck-cli usage report --range 30d ``` -The default range is `7d`. Available ranges are: - -- `today`: the current local calendar day, grouped by hour; -- `7d`: today and the previous six local calendar days; -- `30d`: today and the previous 29 local calendar days; -- `all`: monthly groups for spans up to 36 months, then yearly groups. +The report defaults to `7d`; other ranges are `today`, `30d`, and `all`. Dates use your local time zone. Undated records contribute to all-time totals but not the timeline. Add `--json` for machine-readable output. -Reports use your computer's local time zone. They include token totals, session count, cache hit rate, known cost, pricing coverage, model details, and sync status. Records without a timestamp are included in all-time totals and model details, reported separately, and excluded from the timeline. +## Understand estimates -## Understand cost estimates +ProfileDeck uses a price list based on [OpenAI Standard API prices](https://developers.openai.com/api/docs/pricing), matched by exact model and event date. Unknown model aliases, dates without verified prices, and records missing details needed for special rates can leave cost unknown or partial. Token totals and known cost subtotals remain visible. Updating prices does not recalculate existing estimates; syncing again can fill previously unknown costs. -ProfileDeck uses a price list based on [OpenAI Standard API prices](https://developers.openai.com/api/docs/pricing). It matches the exact model name and date of each event. If the date predates a verified price or the model name is an alias such as `chat-latest`, its cost remains unknown. Existing estimates do not change after a price update; a later sync can fill in unknown costs. A report may combine estimates made before and after price updates. - -- `estimated`: all selected usage has a price; -- `partial`: ProfileDeck can estimate only part of the selected usage; -- `unknown`: at least one selected record has no usable price. - -The report always keeps token totals and shows the known subtotal. Pricing coverage shows how much of the selected token usage could be priced. - -If local records do not provide enough detail to apply a cache-write or long-context rate, ProfileDeck shows a partial estimate. - -The app checks for price-list updates at startup and at most once every 24 hours while running. The CLI checks an overdue list before `usage sync`; a failed check does not stop the sync. Manage this independently of app updates in **Settings → Usage prices** or with: +The included price list works offline. `usage report` does not connect to a billing service or upload local usage. To check or disable price-list updates: ```bash -profiledeck-cli usage pricing status profiledeck-cli usage pricing check profiledeck-cli usage pricing auto off -profiledeck-cli usage pricing auto on ``` -The included price list works offline. `usage report` never checks the network. Only the price list is downloaded; local usage is not uploaded. - -These estimates are not subscription billing, account limits, invoices, or ChatGPT balances. ProfileDeck does not contact a billing API when producing a usage report. [Codex limit checks](./profiles.md#check-limits-and-keep-a-login-active) are separate and never change or attribute usage reports. - -## Privacy limits - -Usage storage excludes raw prompts, raw completions, API keys, and full source-file paths. ProfileDeck does not upload usage data or use it for telemetry. See [Local data and security](../reference/data-security.md) for storage and backup guidance. +These figures are not invoices, subscription charges, account limits, or ChatGPT balances. [Limit checks](./profiles.md#check-limits-and-keep-a-login-active) are separate from usage reports. Saved usage excludes prompts, completions, API keys, and full source-file paths; see [Local Data and Security](../reference/data-security.md). diff --git a/docs/grok-build/profiles.md b/docs/grok-build/profiles.md index 0de9a4a..813ec7b 100644 --- a/docs/grok-build/profiles.md +++ b/docs/grok-build/profiles.md @@ -1,143 +1,50 @@ # Grok Build Profiles -A Grok Build Profile saves one file-based login and one set of reusable user settings, called a Config Set. The login and settings can be shared or copied independently when you fork them to a destination Profile. - -ProfileDeck manages only `auth.json` and the user-level `config.toml` in the selected Grok Home. Sessions, logs, plugins, project settings, managed configuration, and other Grok files are not included. +A Grok Build Profile saves a file-based login from `auth.json` and user-level `config.toml` settings. Sessions, logs, plugins, project settings, and managed configuration are not included. ## Before you start -Sign in with Grok Build and confirm that its Grok Home contains a non-empty, valid `auth.json`. A missing `config.toml` is allowed and is saved as empty settings when ProfileDeck creates a Config Set from the working file. - -CLI commands resolve the Grok Home in this order: - -1. `--grok-home` -2. `GROK_HOME` -3. `~/.grok` - -The first successful setup binds the Grok Build Provider to that absolute Home. ProfileDeck rejects a different Home later instead of silently switching locations. - -Profile creation, `save-current`, and switching are unavailable while `GROK_AUTH` or `GROK_AUTH_PATH` selects another authentication source. Unset those variables and use Grok Build's `auth.json` before those operations. - -End active Grok sessions before an operation that changes files, then start a new session afterward. ProfileDeck coordinates `auth.json` changes with Grok Build, but it does not treat a process or lock file as proof that a session is running. +Sign in with Grok Build and confirm that `auth.json` is present, non-empty, and valid. If `config.toml` is missing when a new Config Set is created, its settings are empty. End active Grok sessions before changing files, then start a new session afterward. -## Save a Profile in Desktop +Grok Home is selected from `--grok-home`, `GROK_HOME`, then `~/.grok`. Its location is fixed after first setup. Profile creation, saving, and switching are unavailable while `GROK_AUTH` or `GROK_AUTH_PATH` selects another authentication source. -1. Select **Grok Build → Profiles**. -2. Choose **New Profile**. -3. Enter a permanent Profile ID and a display name. -4. For the first Profile, use the default `shared` Config Set. ProfileDeck creates it from the current settings only if it does not already exist. - -The first Profile becomes current. To save another login, sign in to that account with Grok Build, return to ProfileDeck, and save another Profile. Reusing the current Config Set only binds its saved settings; it does not read or overwrite the current `config.toml`. Create a separate Config Set when the current settings should be captured independently. - -## Save a Profile with the CLI +## Save Profiles ```bash -profiledeck-cli init -profiledeck-cli grok-build detect profiledeck-cli grok-build profile create work ``` -The first Profile saves the current login, uses `shared`, and becomes current. If `shared` does not exist, ProfileDeck creates it from the current settings; a pre-created `shared` Config Set is left unchanged. Later Profiles reuse the current Profile's saved Config Set by default without reading or overwriting the working `config.toml`: +The first Profile uses the `shared` Config Set, creating it from current settings if needed. Later Profiles reuse the current Profile's saved Config Set without reading the working `config.toml`. To save current settings separately: ```bash -grok logout -grok login -profiledeck-cli grok-build profile create personal +profiledeck-cli grok-build profile create client --new-config-set client ``` -Save the current settings separately when needed: - -```bash -profiledeck-cli grok-build profile create client \ - --new-config-set client \ - --config-set-name "Client" -``` +To use a non-default Home, put the global option before the command: `profiledeck-cli --grok-home /path/to/grok-home grok-build profile create work`. -To use another Grok Home, place the global option before the command: +Forking can share or copy the login and Config Set independently; at least one must be copied. For example, share the login and copy settings: ```bash -profiledeck-cli --grok-home /path/to/grok-home grok-build detect -``` - -## Manage Config Sets - -In Desktop, open **Config Sets** from the Grok Build Profiles page. You can create, copy, rename, or delete saved settings. A Config Set cannot be deleted while a Profile uses it. - -The equivalent CLI commands show summaries without printing `config.toml`: - -```bash -profiledeck-cli grok-build config-set list -profiledeck-cli grok-build config-set show shared -profiledeck-cli grok-build config-set create experimental --name "Experimental" -profiledeck-cli grok-build config-set copy shared local --name "Local" -profiledeck-cli grok-build config-set update local --description "Local settings" -profiledeck-cli grok-build config-set delete local --yes -``` - -Choose different saved settings for an inactive Profile with: - -```bash -profiledeck-cli grok-build profile set-config work shared -``` - -## Fork a Profile - -Forking adds saved Grok Build data to a destination Profile. The destination can be new, or it can be an existing Profile that does not already contain Grok Build data. Any data for other Agents remains unchanged. Copy the login or Config Set when the destination Profile must be able to change that item without affecting the source Profile. - -Desktop presents the share-or-copy choice in the Fork form. In the CLI, at least one item must use `copy-new`: - -```bash -profiledeck-cli grok-build profile fork work client-login \ - --credential-binding copy-new \ - --config-binding share-parent - -profiledeck-cli grok-build profile fork work client-config \ +profiledeck-cli grok-build profile fork work client \ --credential-binding share-parent \ --config-binding copy-new \ - --new-config-set client-config + --new-config-set client ``` +See [Profiles and settings](../guide/concepts.md) for sharing and deletion effects. + ## Save changes and switch -Grok Build continues to use normal `auth.json` and `config.toml` files. Before switching away, ProfileDeck preserves valid changes made to the current login or settings. Open the current Profile's **…** menu and choose **Save Current Login and Settings** in Desktop, or run: +ProfileDeck saves valid working login and settings changes when you switch away. To save before replacing the working files, run: ```bash profiledeck-cli grok-build profile save-current ``` -An explicit save requires a valid, non-empty `auth.json` and an existing, valid `config.toml`. An empty `config.toml` is valid. If either requirement fails, ProfileDeck changes neither the saved login nor settings. Profile creation can still create empty settings when `config.toml` is missing. - -In Desktop, choose **Use Profile**, review the actions, target paths, and warnings, then confirm. In the CLI: - -```bash -profiledeck-cli switch grok-build work --dry-run -profiledeck-cli switch grok-build work --yes -``` - -The preview never contains `auth.json` or `config.toml` content. Both files are saved byte for byte in ProfileDeck's local data, while public output shows only the action, target, path, and warnings. - -If the current working copy is missing or invalid, ProfileDeck warns that it will not be saved. A confirmed switch can still restore the selected Profile's valid saved files. If `config.toml` contains an authentication override, ProfileDeck warns that Grok Build may bypass the selected saved login; it does not print the setting or change it automatically. +An explicit save requires a valid, non-empty `auth.json` and an existing, valid `config.toml`; an empty `config.toml` is valid. If either check fails, neither saved item changes. A switch may still restore valid files from the selected Profile. Its preview hides both files' contents. An authentication override in `config.toml` may bypass the selected login; ProfileDeck warns but does not change the setting. See [Review and Switch](../operations/switching.md). ## Check credits -Desktop checks the current Grok Build Profile once when ProfileDeck starts and again after a successful switch. Use **Refresh credits** on the current Profile to check again. ProfileDeck does not poll, and an inactive Profile cannot start a new check. If a matching result was already checked during this run, the inactive Profile may continue to show that earlier snapshot. - -The check follows the current Grok Build network and sign-in settings. Grok Build may renew its current sign-in. ProfileDeck keeps the credits result only in memory; it is not added to the database, usage reports, or application backups. A renewed working sign-in is handled later by the same explicit save-current or switch capture used for other valid Grok Build changes. - -Credits checks require a supported saved Grok Build sign-in. Authentication supplied through `GROK_AUTH` or `GROK_AUTH_PATH` is not supported. - -Credits checks also require a working Grok Build installation. If ProfileDeck cannot start Grok Build, update or reinstall it before retrying. - -If Grok Build was installed with `GROK_BIN_DIR`, make the same absolute directory available in ProfileDeck's environment. - -## Delete a Profile - -Open a Profile's action menu in Desktop and choose **Delete Profile**, or run: - -```bash -profiledeck-cli grok-build profile delete work --yes -``` - -This deletes the complete global Profile from every Agent, not only its Grok Build data. It also deletes saved logins and Config Sets used only by that Profile, while shared saved data remains. A current Profile or one with an unfinished operation cannot be deleted. Deletion does not change Grok Build's working files. +Desktop checks the current Profile at startup and after switching; later checks are manual. It cannot refresh an inactive Profile. A check uses the installed Grok Build app and may renew its current login. Results are temporary and separate from [local usage reports](./usage-cost.md); they are not account bills. -[Grok Build usage and estimated cost](./usage-cost.md) remain offline reports from local session records and are separate from credits checks. Actual billing and invoices are not supported. ProfileDeck does not configure or manage Grok Build's network or authentication providers for credits checks. +Checks require a supported saved login and a working Grok Build installation. `GROK_AUTH` and `GROK_AUTH_PATH` are unsupported. If Grok Build was installed with `GROK_BIN_DIR`, make that same absolute directory available to ProfileDeck. diff --git a/docs/grok-build/usage-cost.md b/docs/grok-build/usage-cost.md index 1909c66..bca6ff6 100644 --- a/docs/grok-build/usage-cost.md +++ b/docs/grok-build/usage-cost.md @@ -1,85 +1,29 @@ # Grok Build Usage and Cost -ProfileDeck reads local Grok Build session records to show token usage, activity, API-equivalent cost estimates, and cost reported by Grok Build. Reports stay offline and do not assign activity to a Profile, saved login, or account. +ProfileDeck reports token usage from local Grok Build sessions, API-equivalent estimates, and amounts reported by Grok Build. It cannot assign past activity to a Profile, saved login, or account. Desktop syncs while running; CLI users can sync on demand. -## Sync in the Desktop app - -The Desktop app syncs after startup and continues while ProfileDeck is open or in the menu bar. - -To change the interval, open **Grok Build → Settings → Usage reports → Update frequency** and choose 15 seconds, 30 seconds, 1 minute, 2 minutes, or 5 minutes. The default is 1 minute. Codex and Grok Build use separate intervals and sync status. - -When session files have not changed, background sync checks their metadata without reading their contents. Normal appends read only a small integrity boundary and the new part of each file. - -Background sync uses the existing Grok Build Provider. If it has not been created yet, open **Grok Build → Profiles** to create a Profile, or run an explicit CLI sync. - -## Sync from the CLI - -Run: +## Sync usage ```bash profiledeck-cli usage sync grok-build -``` - -ProfileDeck resolves Grok Home from `--grok-home`, then `GROK_HOME`, then `~/.grok`. If the Provider already exists, the resolved location must match its saved Grok Home. To use an explicit location: - -```bash profiledeck-cli --grok-home /path/to/grok-home usage sync grok-build ``` -An existing Provider never silently switches to another Grok Home. - -ProfileDeck reads ordinary files matching: - -```text -/sessions/*/*/updates.jsonl -``` - -It does not follow symbolic links. Nested `subagents` records are excluded because Grok Build already includes successful child-agent usage in the completed parent turn. - -You can repeat a sync safely; previously imported usage is not counted again. Records with missing, empty, or incomplete usage are skipped. If a file changes while it is being read, contains an oversized or malformed terminal record, or has an unrecognized terminal format, ProfileDeck leaves all new data from that file uncommitted. Background sync checks that file again after it changes; a CLI sync checks it immediately. The source file is never moved or changed. - -New additive fields in Grok Build session records are ignored safely. Known fields still need their expected types and consistent token totals. - -Copied fork history is counted once. When the same completed turn appears in multiple sessions with identical usage, ProfileDeck assigns it to one stable derived session without storing the original session identifier. Conflicting usage for that same turn leaves the affected file uncommitted until it changes or you run another CLI sync. - -Deleting the Grok Build Provider also deletes its saved usage reports, import progress, and sync setting. Desktop background sync will not recreate a deleted Provider. Running this CLI sync is an explicit request: it can set up the Provider again and reimport usage still present in local session files. - -## View a summary - -```bash -profiledeck-cli usage summary --provider grok-build -profiledeck-cli usage summary --provider grok-build --json -``` - -The summary includes event count, input and output tokens, cached input, total tokens, API-equivalent cost when available, Grok-reported cost when available, and the number of events with unknown cost for each figure. +The selected Grok Home must match the one already saved for this tool. Repeating a sync does not double-count imported usage or change source files. Incomplete records are skipped. If a file changes during reading or has conflicting usage, ProfileDeck leaves its new data unimported; a later CLI sync checks it again. Deleting the Grok Build Provider deletes its report and sync settings. An explicit CLI sync can reimport records still present locally. ## View a report ```bash -profiledeck-cli usage report --provider grok-build -profiledeck-cli usage report --provider grok-build --range today -profiledeck-cli usage report --provider grok-build --range 30d --json -profiledeck-cli usage report --provider grok-build --range all +profiledeck-cli usage summary --provider grok-build +profiledeck-cli usage report --provider grok-build --range 30d ``` -The default range is `7d`. Reports use your computer's local time zone and include token totals, session count, cache hit rate, API-equivalent and Grok-reported cost subtotals, coverage for both figures, model details, and sync status. Records without a timestamp are included in all-time totals and model details, reported separately, and excluded from the timeline. +The report defaults to `7d`; other ranges are `today`, `30d`, and `all`. Dates use your local time zone. Undated records contribute to all-time totals but not the timeline. Add `--json` for machine-readable output. ## Understand cost figures -ProfileDeck uses a price list based on [xAI Standard API prices](https://docs.x.ai/developers/pricing), selecting the rate by model and event date. The list includes `grok-4.5`, `grok-4.6`, and `grok-4.7`. Grok Build's `grok-4.7-build` records use the standard `grok-4.7` rate for API-equivalent estimates. Fast variants, other internal `*-build` names, and mutable `*-latest` names remain unknown until their exact model mapping is verified. Session records do not show whether an individual request entered a long-context pricing tier, so estimates use the short-context rates. - -When a session includes cache-creation tokens, ProfileDeck shows a partial estimate if that model has a verified short-context rate. - -ProfileDeck shows the amount Grok recorded for completed local session records. If some calls are missing an amount, ProfileDeck shows the known subtotal as partial. Only records with a complete amount count toward reported-cost coverage; when no selected record contains an amount, the reported cost is unavailable. - -API-equivalent estimates and Grok-reported amounts remain separate and are never added together. An unrecognized model or an event predating a verified price keeps its token totals and Grok-reported amount but has unknown API-equivalent cost. Existing estimates do not change after a price update; a later sync can fill in unknown costs. A report may combine estimates made before and after price updates. - -The app checks the price list at startup and at most once every 24 hours while running. The CLI checks an overdue list before `usage sync`; a failed check does not stop the sync. Manage this independently of app updates in **Settings → Usage prices** or with `profiledeck-cli usage pricing status`, `check`, and `auto on|off`. The included list works offline, and `usage report` never checks the network. - -The Grok Build Usage Limit panel may cover only activity since the process started or was last resumed, while ProfileDeck reports completed turns found in local session history for the selected dates. Their totals can therefore differ even when both values came from the same local session. - -Neither figure is an invoice, credit balance, quota, or account charge. ProfileDeck does not contact xAI or a billing API when syncing or producing a report. +API-equivalent estimates use a price list based on [xAI Standard API prices](https://docs.x.ai/developers/pricing), matched by model and event date. `grok-4.7-build` uses the standard `grok-4.7` rate. Unverified model variants, old dates, and missing details for special rates can leave estimates unknown or partial. Grok-reported amounts are shown separately; missing amounts make their subtotal partial. The two figures are never added together. Session records do not identify long-context pricing, so estimates use short-context rates. -## Privacy limits +Existing estimates do not change after a price update; syncing again can fill previously unknown costs. The included price list works offline. `usage report` does not connect to a billing service or upload local usage. -Usage storage excludes raw prompts, agent results, API keys, direct session identifiers, and full source-file paths. ProfileDeck does not upload usage data or use it for telemetry. See [Local data and security](../reference/data-security.md) for storage and backup guidance. +Neither figure is an invoice, credits balance, quota, or account charge. [Credits checks](./profiles.md#check-credits) can cover a different period from local session reports. Saved usage excludes prompts, agent results, API keys, and full source-file paths; see [Local Data and Security](../reference/data-security.md). diff --git a/docs/guide/concepts.md b/docs/guide/concepts.md index 24db259..1441e0c 100644 --- a/docs/guide/concepts.md +++ b/docs/guide/concepts.md @@ -1,57 +1,23 @@ # Profiles, Logins, and Settings -A Profile names the login and settings you want to use for one supported tool. Saving a Profile does not immediately change that tool; files and system logins change only when you confirm a switch or recovery of an unfinished switch. +A Profile names saved logins and settings. One Profile can contain data for several tools, but each tool has its own current Profile. Creating or editing a Profile changes only ProfileDeck's saved data; [switching](../operations/switching.md) changes the selected tool's working login or files. -## What a Profile saves - -| Tool | Saved login | Saved settings | -| --- | --- | --- | -| Codex | One Codex login | Saved Codex settings, called a Config Set | -| Claude Code | One account login | Not included | -| Antigravity | One consumer OAuth login | Not included | -| Grok Build | One file-based login | Saved Grok Build settings, called a Config Set | - -Each Profile has a permanent ID used by CLI commands and links. Profile IDs share one namespace across tools, and one Profile can contain saved data for more than one tool. - -## Current Profile - -ProfileDeck records one current Profile for each supported tool. The current Profile is the one represented by that tool's working login or files: - -- Codex uses `auth.json` and `config.toml` in the active Codex home. -- Claude Code stores its account login in Keychain on macOS or a credential file on Linux and Windows. -- Antigravity uses its current login in the system credential store. -- Grok Build uses `auth.json` and `config.toml` in the bound Grok Home. - -Before leaving the current Profile, ProfileDeck preserves a valid refreshed login or valid Codex or Grok Build settings when it can do so safely. Missing, invalid, or unsupported content is reported instead of being saved silently. - -## Saved logins - -A saved login can be shared by more than one Profile. Updating a shared login changes every Profile that uses it, so Desktop shows the affected Profile count before saving. - -ProfileDeck may show the final characters of a Codex Account ID to help distinguish logins. This value is display information only; it does not decide which login is updated or shared. +Profile IDs are permanent and shared across tools. Saved logins can be shared by several Profiles. Updating one changes every Profile that uses it; ProfileDeck shows the affected count before saving. ## Config Sets -A Config Set is a reusable copy of the user-level `config.toml` for Codex or Grok Build. Each tool owns separate Config Sets. The first Profile for that tool uses one named `shared`, creating it from the current settings when needed; later Profiles can reuse it or save a separate copy. +Codex and Grok Build also save user-level `config.toml` settings as Config Sets. Their Config Sets are separate. The first Profile uses `shared`, creating it from current settings when needed; later Profiles can reuse it or save a separate copy. -When Profiles share a Config Set, saving changed settings updates all of them. Copy the Config Set when one Profile needs settings that can change independently. A Config Set can be deleted only when no Profile uses it. - -Config Sets do not include sessions, logs, plugins, skills, project settings, managed configuration, or system policy. +Changes to a shared Config Set affect every Profile using it. Copy it when settings must change independently. Config Sets do not include sessions, logs, plugins, project settings, or system policy. ## Delete a Profile -Deleting removes the complete Profile from every Agent. ProfileDeck also deletes saved logins and Config Sets used only by that Profile, but keeps shared saved data and unrelated unbound data. The Profile cannot be deleted while it is current in any Agent or while an unfinished operation still refers to it. - -Deletion changes only ProfileDeck's saved data. It removes completed operation records that refer to the Profile, but does not sign out a tool, replace its current settings, or remove its working files. +```bash +profiledeck-cli profile delete --yes +``` -## What ProfileDeck changes - -Creating, editing, or forking a Profile changes only saved ProfileDeck data. Confirming a switch or unfinished-switch recovery may change the selected tool's working login or files. - -Every such change is reviewed against the current tool state and gets a temporary operation recovery point first. See [Review and Switch](../operations/switching.md) for the normal flow and [Diagnostics and Recovery](../operations/recovery.md) when a change does not finish. Successful switches cannot be undone. +Deletion removes the complete Profile from every tool, including saved logins and Config Sets used only by that Profile. Shared saved data stays. A current Profile or one referenced by an unfinished switch cannot be deleted. Deletion does not sign out tools or change their working files. ## Local data -Profiles, Config Sets, saved logins, preferences, usage reports, and operation history are stored in ProfileDeck's local data directory. Supported tools continue to own their working files and system credential entries. - -Saved data, operation recovery points, and encrypted application backups may contain complete sign-in data. Read [Data and Security](../reference/data-security.md) before copying, exporting, or deleting ProfileDeck data. +ProfileDeck stores Profiles, saved logins, settings, usage reports, and backups locally. Its live database and unfinished-switch recovery data may contain complete sign-in data. See [Local Data and Security](../reference/data-security.md) before copying or sharing these files. diff --git a/docs/guide/generic-targets.md b/docs/guide/generic-targets.md index f5c68a9..a90c3e8 100644 --- a/docs/guide/generic-targets.md +++ b/docs/guide/generic-targets.md @@ -1,27 +1,15 @@ # Switch Other Configuration Files -Generic targets are an advanced CLI feature for switching explicitly selected local configuration files. Use the dedicated Profile commands for Codex, Claude Code, Antigravity, and Grok Build; generic target commands cannot change their managed logins or settings. +Generic targets are an advanced CLI feature for local configuration files you select. They cannot manage Codex, Claude Code, Antigravity, or Grok Build logins and settings; use those tools' dedicated Profile commands. -## Before you start +Use an absolute path to a regular file. Symbolic links are not supported. Decide whether to replace the entire file or merge selected values; review the preview when it may contain secrets. -- Initialize ProfileDeck with `profiledeck-cli init`. -- Use an absolute path to a regular local file. -- Decide whether ProfileDeck should replace the whole file or merge selected values. - -ProfileDeck refuses to change files reached through symbolic links. Review the preview carefully when a target file contains secrets. - -## Create a tool and Profile +## Save a file target ```bash +profiledeck-cli init profiledeck-cli provider create my-tool --adapter generic --name "My Tool" profiledeck-cli profile create work --name "Work" -``` - -The Provider ID identifies the tool in later commands. The Profile ID identifies the saved setup you want to switch to. - -## Add a configuration file - -```bash profiledeck-cli profile target add work settings \ --provider my-tool \ --path /absolute/path/to/settings.json \ @@ -30,37 +18,20 @@ profiledeck-cli profile target add work settings \ --value-json '{"model":"example-model"}' ``` -## Choose how the file changes - -| Strategy | Formats | Value supplied with `--value-json` | +| Strategy | Format | `--value-json` | | --- | --- | --- | -| `replace-file` | `text`, `json`, `toml`, `env` | `{"content":"..."}` replaces the complete file. | -| `json-merge` | `json` | A JSON object merged into the current JSON file. | -| `toml-merge` | `toml` | A JSON object converted to TOML and merged. | -| `env-merge` | `env` | A JSON object with string values converted to environment assignments. | +| `replace-file` | `text`, `json`, `toml`, `env` | `{"content":"..."}` replaces the whole file. | +| `json-merge` | `json` | JSON object merged into the file. | +| `toml-merge` | `toml` | JSON object converted to TOML and merged. | +| `env-merge` | `env` | JSON object with string values converted to assignments. | -Merge strategies require the current file to contain valid JSON, TOML, or env data. Fix invalid content before switching. +Merge requires valid existing content. Adding or editing a target changes only ProfileDeck's saved rule; the external file changes after a successful switch. -## Review and switch - -Previewing is optional: +## Switch the file ```bash profiledeck-cli switch my-tool work --dry-run profiledeck-cli switch my-tool work --yes ``` -The preview shows the selected file and hides sensitive-looking values. ProfileDeck checks the file again and creates an operation recovery point before applying the change. - -## Inspect or recover - -```bash -profiledeck-cli provider list -profiledeck-cli profile list -profiledeck-cli profile target list work -profiledeck-cli profile target show work my-tool settings -``` - -Adding or editing a target changes only the saved rule. The external file changes only after `profiledeck-cli switch` succeeds. - -If a switch does not finish, run `profiledeck-cli doctor` before trying again. Use [Diagnostics and Recovery](../operations/recovery.md) to restore its pre-switch state. A successful switch cannot be undone; switch to the intended Profile instead. +The preview is optional and hides sensitive-looking values. If switching fails, run `profiledeck-cli doctor` and follow [recovery guidance](../operations/recovery.md). A successful switch cannot be undone. diff --git a/docs/guide/getting-started.md b/docs/guide/getting-started.md index 6fd3b7e..5af2a62 100644 --- a/docs/guide/getting-started.md +++ b/docs/guide/getting-started.md @@ -1,186 +1,80 @@ # Getting Started -Use the Desktop app for a visual workflow, or use the CLI for terminal work. Both use the same Profiles, application backups, operation recovery, and switching rules. - -## Before you start - -- The Universal Desktop app requires macOS 14 or later and supports Apple silicon and Intel Macs. -- Linux releases support amd64. The Desktop requires GTK 4 and WebKitGTK 6.0. -- Building the CLI requires Git, Go 1.27, Make, and a POSIX shell. -- Install the AI Agent you want to manage and sign in before saving its first Profile. +Sign in to a supported tool before saving its first Profile. Desktop initializes ProfileDeck automatically; CLI users run `profiledeck-cli init` once. ## Install the Desktop app on macOS -1. Download the latest macOS Universal DMG from [ProfileDeck Releases](https://github.com/strahe/profiledeck/releases). Stable releases use `X.Y.Z`; Beta releases use `X.Y.Z-beta.N`. -2. Open the DMG and drag `ProfileDeck.app` to Applications. -3. Open ProfileDeck. The app creates its local data automatically. If you already have a current Codex or Antigravity Profile, startup also checks its limits. Codex may refresh its saved login during that check; Antigravity checks are read-only. -4. Select Codex, Claude Code, Antigravity, or Grok Build in the sidebar, then open **Profiles**. - -Published DMGs are Developer ID signed and notarized by Apple. If macOS reports that the app is damaged or cannot verify its developer, delete that copy and download it again from the official Releases page instead of bypassing the warning. +macOS 14 or later is required. Download the Universal DMG from [ProfileDeck Releases](https://github.com/strahe/profiledeck/releases) and install `ProfileDeck.app`. -macOS Desktop releases can follow Stable or Beta updates from **Settings → General → App updates**. Local development builds do not check for updates. See [Update the Desktop app](./updates.md). +If macOS reports that the app is damaged or cannot verify its developer, download a fresh copy from the official Releases page. Do not bypass the warning. See [Desktop updates](./updates.md) for Stable and Beta channels. ## Install on Linux amd64 -Choose one install path: - -- **DEB or RPM package:** Desktop and CLI together; install newer packages from GitHub Releases. -- **Portable Desktop:** Desktop only; keep it in a user-writable directory so ProfileDeck can apply in-app updates. See [Update the Desktop app](./updates.md). +Linux Desktop requires GTK 4 and WebKitGTK 6.0. DEB and RPM packages include Desktop and CLI; the portable archive contains Desktop only. ### DEB or RPM package -Stable and Beta DEB and RPM packages install the `profiledeck` Desktop app and the `profiledeck-cli` command, add a desktop launcher, and declare GTK 4 and WebKitGTK 6.0 dependencies. DEB installation is smoke-tested on Ubuntu 24.04, and RPM installation on Fedora 44. - -On Ubuntu 24.04, download `ProfileDeck__linux_amd64.deb` from [ProfileDeck Releases](https://github.com/strahe/profiledeck/releases), then install it: +Download the matching package from [ProfileDeck Releases](https://github.com/strahe/profiledeck/releases): ```bash sudo apt install ./ProfileDeck__linux_amd64.deb -``` - -On Fedora 44, download `ProfileDeck__linux_amd64.rpm`, then install it: - -```bash +# or sudo dnf install ./ProfileDeck__linux_amd64.rpm ``` -Open ProfileDeck from the application menu, or run `profiledeck`. The CLI is on your `PATH` as `/usr/bin/profiledeck-cli`. - -These installs do not check for or download in-app updates. Download a newer matching package from GitHub Releases and install it with the same command. See [Update a Linux package](./updates.md#update-a-linux-package). - -Continue with [Save your first Profile](#save-your-first-profile). +The CLI is installed as `profiledeck-cli`. Install newer packages the same way; these builds do not update in the app. ### Portable Desktop -Use this when you want a Desktop-only install with in-app updates. - -1. Install the runtime libraries: +Install the runtime libraries, then download the Linux tar archive from [ProfileDeck Releases](https://github.com/strahe/profiledeck/releases): ```bash sudo apt install libgtk-4-1 libwebkitgtk-6.0-4 # or: sudo dnf install gtk4 webkitgtk6.0 ``` -2. Download `ProfileDeck__linux_amd64.tar.gz` from [ProfileDeck Releases](https://github.com/strahe/profiledeck/releases). - -3. Extract and link the app into a directory your user can write: +Extract and run it from a user-writable directory: ```bash -mkdir -p "$HOME/.local/opt/profiledeck" "$HOME/.local/bin" +mkdir -p "$HOME/.local/opt/profiledeck" tar -xzf ProfileDeck__linux_amd64.tar.gz -C "$HOME/.local/opt/profiledeck" -ln -sf "$HOME/.local/opt/profiledeck/profiledeck" "$HOME/.local/bin/profiledeck" +"$HOME/.local/opt/profiledeck/profiledeck" ``` -4. Run `profiledeck` (ensure `$HOME/.local/bin` is on your `PATH`). - -The archive contains only `profiledeck`, not the CLI. Use a DEB or RPM when you need `profiledeck-cli`. Keep the install directory writable so ProfileDeck can replace the app after it verifies an update. See [Update the Desktop app](./updates.md). - -Continue with [Save your first Profile](#save-your-first-profile). +Keep that directory writable for [in-app updates](./updates.md). The archive does not include the CLI. ## Build and use the CLI -Clone the public repository and build the command: +Building from source requires Git, Go 1.27, Make, and a POSIX shell: ```bash git clone https://github.com/strahe/profiledeck.git cd profiledeck make build export PATH="$PWD/bin:$PATH" -profiledeck-cli version profiledeck-cli init ``` -`profiledeck-cli init` creates ProfileDeck's local database, encrypted application-backup folder, and operation-recovery folder. To use a different location, pass the parent config directory: - -```bash -profiledeck-cli --config-dir /path/to/config-root init -``` - -ProfileDeck creates a `profiledeck` folder below that directory. - -The shell command `export PATH=...` updates `PATH` for the current shell. For future terminals, add this repository's `bin` directory to your shell profile. +Use `--config-dir /path/to/config-root` before the command to store ProfileDeck data elsewhere. ## Save your first Profile -Prepare the selected tool first: - -- **Codex:** confirm that `config.toml` and `auth.json` exist in `CODEX_HOME` or `~/.codex`. If `auth.json` is missing, follow the [Codex prerequisite](../codex/profiles.md#before-you-start). -- **Claude Code:** run `/login` in Claude Code. -- **Antigravity:** sign in to Antigravity and confirm that it works. -- **Grok Build:** sign in and confirm that a valid, non-empty `auth.json` exists in `GROK_HOME` or `~/.grok`. See [Grok Build prerequisites](../grok-build/profiles.md#before-you-start). +Each tool has a different sign-in prerequisite: -In Desktop, select the tool and use the save action on its Profiles page. Enter a permanent Profile ID and a display name. To save another account, sign in to that account in the tool, return to ProfileDeck, and save another Profile. +| Tool | Before saving | CLI example | +| --- | --- | --- | +| Codex | Save a file-based login and valid `config.toml` ([details](../codex/profiles.md#before-you-start)) | `profiledeck-cli codex profile create work` | +| Claude Code | Run `/login` ([details](../claude-code/profiles.md#before-you-start)) | `profiledeck-cli claude-code profile create personal` | +| Antigravity | Sign in to Antigravity ([details](../antigravity/profiles.md#before-you-start)) | `profiledeck-cli antigravity profile create work` | +| Grok Build | Save a valid `auth.json` ([details](../grok-build/profiles.md#before-you-start)) | `profiledeck-cli grok-build profile create work` | -Use these CLI flows instead: +Choose one command after `profiledeck-cli init`. To save another account, sign in to that account in its tool, then create another Profile. Profile IDs are permanent. -The `--dry-run` command in each flow is an optional preview. Use `--yes` to apply the switch. - -### Codex +Preview and apply a switch, for example: ```bash -profiledeck-cli codex detect -profiledeck-cli codex profile create work profiledeck-cli switch codex work --dry-run profiledeck-cli switch codex work --yes ``` -### Claude Code - -```bash -profiledeck-cli claude-code detect -profiledeck-cli claude-code profile create personal -profiledeck-cli switch claude-code personal --dry-run -profiledeck-cli switch claude-code personal --yes -``` - -Start a new Claude Code session after switching and run `/status` to confirm the account. - -### Antigravity - -```bash -profiledeck-cli antigravity detect -profiledeck-cli antigravity profile create work -profiledeck-cli switch antigravity work --dry-run -profiledeck-cli switch antigravity work --yes -``` - -Close Antigravity before switching when practical, then restart it afterward. - -### Grok Build - -```bash -profiledeck-cli grok-build detect -profiledeck-cli grok-build profile create work -profiledeck-cli switch grok-build work --dry-run -profiledeck-cli switch grok-build work --yes -``` - -End active Grok sessions before saving or switching files, then start a new session afterward. - -## Confirm the result - -Desktop marks the selected Profile as **Current** after a successful switch. In the CLI, list the Profiles for the selected tool: - -```bash -profiledeck-cli codex profile list -profiledeck-cli claude-code profile list -profiledeck-cli antigravity profile list -profiledeck-cli grok-build profile list -``` - -If ProfileDeck reports an incomplete change or blocks another switch, open **Diagnostics** or run: - -```bash -profiledeck-cli doctor -``` - -Follow only the recovery action that Diagnostics recommends. See [Diagnostics and Recovery](../operations/recovery.md) for unfinished-switch recovery and application backup restore. Successful switches cannot be undone. - -## Next steps - -- [Codex Profiles](../codex/profiles.md) -- [Claude Code Profiles](../claude-code/profiles.md) -- [Antigravity Profiles](../antigravity/profiles.md) -- [Grok Build Profiles](../grok-build/profiles.md) -- [Update the Desktop app](./updates.md) -- [Switching safely](../operations/switching.md) -- [Data and security](../reference/data-security.md) +`--dry-run` is optional. A successful switch cannot be undone; see [switching](../operations/switching.md) for its effects. If a switch is blocked or interrupted, run `profiledeck-cli doctor` and follow [recovery guidance](../operations/recovery.md). diff --git a/docs/guide/updates.md b/docs/guide/updates.md index 0e7ed74..3bba61c 100644 --- a/docs/guide/updates.md +++ b/docs/guide/updates.md @@ -1,41 +1,22 @@ # Update the Desktop App -How you update depends on how you installed ProfileDeck: +Update support depends on how ProfileDeck was installed: -- **macOS app** or **portable Linux Desktop:** ProfileDeck can check for updates in the app. -- **Linux DEB or RPM:** download and install a newer package from GitHub Releases. The app does not check for or download in-app updates. -- **CLI** and **local `dev` Desktop builds:** no online update checks and no channel selector. +| Installation | Update method | +| --- | --- | +| macOS app or portable Linux Desktop | In-app update | +| Linux DEB or RPM | Install a newer package from [Releases](https://github.com/strahe/profiledeck/releases) | +| CLI built from source or local development Desktop | Rebuild or reinstall manually | ## In-app updates (macOS and portable Linux) -ProfileDeck offers two persisted update channels: +Stable receives stable releases; Beta receives Beta and stable releases. A fresh build follows its own channel, and later installs preserve the selected channel. Automatic checks are on by default and run at startup and about every six hours while ProfileDeck remains running. You choose when to restart after an update is ready. -- **Stable** receives stable releases (`X.Y.Z`) only. -- **Beta** receives Beta releases (`X.Y.Z-beta.N`) and stable releases, so a Beta can move to the stable release for the same or a later version. - -A fresh stable build starts on Stable, and a fresh Beta build starts on Beta. Later installs preserve your choice, including after a Beta updates to a stable release. - -### Check for updates - -Automatic checks are on by default. ProfileDeck checks after startup and every six hours while it remains open or stays running in the background (for example in the tray). - -Open **Settings → General → App updates** to choose the update channel, turn automatic checks on or off, check now, or view download progress. ProfileDeck stays open while an update downloads. After an update is found, the sidebar also shows its download and preparation status. - -You can change channels while the updater is idle, up to date, or showing an error. ProfileDeck waits until an active check, download, or pending restart finishes before allowing another channel change. When automatic checks are enabled, changing channels starts a new check immediately. - -### Install a downloaded update - -When the update is ready, choose **Restart to update** in the lower-left sidebar when you are ready. ProfileDeck stays open until you choose this action. - -Before restarting, ProfileDeck verifies the update and creates an encrypted automatic application backup. If verification, backup, or preparation fails, the update is not installed and the current version remains in place. Update backups share the latest-ten automatic retention pool. Return to **Settings → General → App updates** and try again later. - -On portable Linux, ProfileDeck also checks that it can safely move the downloaded update into the executable's directory before creating the backup or restarting. If the installation cannot be replaced safely, ProfileDeck keeps the current version and disables in-app updates for that installation. Download a newer portable release manually instead. See [Portable Desktop](./getting-started.md#portable-desktop). +Before restarting, ProfileDeck verifies the download and creates an encrypted application backup. If preparation fails, the current version stays installed. On portable Linux, the install directory must be writable; if ProfileDeck cannot safely replace the executable, use a newer portable archive manually. ## Update a Linux package -DEB and RPM installations do not use in-app updates. **Settings → General → App updates** explains that newer packages must be installed from GitHub Releases. - -Download the matching newer package from [ProfileDeck Releases](https://github.com/strahe/profiledeck/releases), then install it: +Download the matching new package from [ProfileDeck Releases](https://github.com/strahe/profiledeck/releases), then install it: ```bash sudo apt install ./ProfileDeck__linux_amd64.deb @@ -43,19 +24,4 @@ sudo apt install ./ProfileDeck__linux_amd64.deb sudo dnf install ./ProfileDeck__linux_amd64.rpm ``` -Do not combine a DEB or RPM installation with the portable in-app updater. If a release has a problem, install a later fixed version when available. - -See [DEB or RPM package](./getting-started.md#deb-or-rpm-package). - -## Understand the downloaded files - -GitHub Releases provides: - -- a notarized Universal DMG for macOS installation -- a notarized Universal ZIP for macOS in-app updates -- a signed single-file tar archive for portable Linux Desktop installs and updates -- DEB and RPM packages for Linux Desktop and CLI installation - -When the app updates itself, it downloads only the platform artifact selected by the signed Wails update manifest, then verifies its SHA-512 digest and Ed25519ph signature before preparing the update. - -Release notes live on the corresponding [GitHub Release](https://github.com/strahe/profiledeck/releases). +DEB and RPM builds do not use in-app updates. Do not mix a package installation with the portable updater. Installation requirements are in [Getting Started](./getting-started.md). diff --git a/docs/index.md b/docs/index.md index 4d4f50c..9937e90 100644 --- a/docs/index.md +++ b/docs/index.md @@ -11,8 +11,6 @@ ProfileDeck saves local AI coding tool logins and settings as Profiles, then let | Linux portable Desktop | Desktop only; in-app updates in a user directory | [Portable Desktop](./guide/getting-started.md#portable-desktop) | | CLI source build | Terminal workflows and automation | [Build and use the CLI](./guide/getting-started.md#build-and-use-the-cli) | -The Universal Desktop app requires macOS 14 or later and runs natively on Apple silicon and Intel Macs. Linux packages and portable Desktop installs require amd64 plus GTK 4 and WebKitGTK 6.0. The CLI requires Go 1.27 and Make when building from source. - ## Supported tools | Tool | What ProfileDeck switches | What stays unchanged | @@ -22,26 +20,4 @@ The Universal Desktop app requires macOS 14 or later and runs natively on Apple | Antigravity | A consumer OAuth login | Sign-in flow, settings, quotas, Manager data, and SSH or container login files | | Grok Build | A file-based login and reusable user-level settings | Sessions, logs, plugins, project settings, managed configuration, and quotas | -Codex and Grok Build usage reports are separate from Profile switching. They summarize local session data without assigning activity to a Profile, saved login, or account. - -The Desktop app can also show temporary usage-limit snapshots for the current Codex or Antigravity Profile. These checks do not change limits or add activity attribution. - -## What happens when you switch - -1. Review what will change. Login values remain hidden. -2. Confirm the switch. ProfileDeck checks the current files or login again. -3. ProfileDeck creates a temporary recovery point before changing the selected tool. -4. The selected Profile becomes current only after the change succeeds. - -If a change does not finish, open Diagnostics or run `profiledeck-cli doctor` before switching again. - -## Continue - -- [Get started](./guide/getting-started.md) -- [Understand Profiles, logins, and settings](./guide/concepts.md) -- [Manage Codex Profiles](./codex/profiles.md) -- [Manage Claude Code Profiles](./claude-code/profiles.md) -- [Manage Antigravity Profiles](./antigravity/profiles.md) -- [Manage Grok Build Profiles](./grok-build/profiles.md) -- [Review Grok Build usage and estimated cost](./grok-build/usage-cost.md) -- [Review data and security](./reference/data-security.md) +See [Getting Started](./guide/getting-started.md) for the first Profile, [Switching](./operations/switching.md) before changing a tool, and [Local Data and Security](./reference/data-security.md) before moving saved data. diff --git a/docs/operations/recovery.md b/docs/operations/recovery.md index 8447171..2e04257 100644 --- a/docs/operations/recovery.md +++ b/docs/operations/recovery.md @@ -1,99 +1,52 @@ # Diagnostics, Backups, and Recovery -Open **Diagnostics** when Profile switching is blocked or a switch did not finish. Open **Settings → Backups** to protect or restore ProfileDeck's saved application data. These are separate workflows. - -## Check an unfinished switch first - -An unresolved switch blocks every new Profile switch and application-data restore. Resolve or safely close it in Diagnostics before starting either operation; ProfileDeck will not discard its recovery point to make another operation proceed. - -In the Desktop app, Diagnostics shows only unresolved root switch operations and the safe action available for each one. - -From the CLI, run: - -```bash -profiledeck-cli doctor -profiledeck-cli doctor --json -``` - -If Diagnostics says no change is still running and offers to repair the switch lock, use its Desktop action or run: - -```bash -profiledeck-cli doctor repair-lock --yes -``` - -Do not repair a lock merely because a switch is taking longer than expected. ProfileDeck refuses recovery while the switch lock is held or when it cannot recognize every affected target safely. - -## Retry recovery cleanup - -ProfileDeck normally removes temporary operation recovery files after a switch, recovery, or application restore. If that cleanup cannot finish, Diagnostics shows **Temporary recovery files need cleanup**. Saved data, Doctor, and application backups remain available, but Profile switching and application restore pause until cleanup succeeds. - -Use **Retry cleanup** in Diagnostics, or run: - -```bash -profiledeck-cli doctor retry-cleanup --yes -``` - -Cleanup removes only temporary operation recovery files that do not belong to an unresolved switch. It does not change any tool sign-in or setting. Close other ProfileDeck windows if the retry reports that another operation is running. If the warning remains, keep the data directory private and retry after resolving the reported filesystem problem. +Use `profiledeck-cli doctor` when a switch is blocked or interrupted. An unfinished switch blocks new switches and application restore until it is resolved. ## Resolve an unfinished switch -Diagnostics may offer one of two actions: - -- **Close unfinished record** when ProfileDeck confirms that no target was changed or every target is already in its pre-switch state. -- **Restore pre-switch state** when every target still matches either its pre-switch or intended state. - -Confirm the offered Desktop action, or use the operation ID shown by `doctor`: - ```bash +profiledeck-cli doctor profiledeck-cli recover --yes ``` -Recovery may restore tool-owned files or the selected system login, but it does not change which Profile is current. If the current Profile changed after the unfinished switch, a target was modified by another program, recovery data is damaged, or a target cannot be read, ProfileDeck refuses to write and reports what must be checked. A failed attempt can be retried against the same original switch. +Use the operation ID and action offered by Diagnostics. Recovery may restore a tool's working files or system login, but does not change the current Profile. If a target changed outside ProfileDeck or cannot be checked safely, recovery stops without writing. A failed recovery can be retried after resolving the reported problem. -Successful switches do not retain recovery files and cannot be undone. Choose the intended Profile and switch again if you want a different active setup. +Use `profiledeck-cli doctor repair-lock --yes` only when Diagnostics confirms that no switch is running and offers lock repair. If it reports **Temporary recovery files need cleanup**, run `profiledeck-cli doctor retry-cleanup --yes`. Cleanup does not change tool logins or settings; switching and application restore remain blocked until it succeeds. -## Create and manage application backups +Successful switches cannot be recovered or undone. -An application backup contains the complete ProfileDeck database, including saved Profiles, settings, usage records, and credentials held in that database; the resulting archive is encrypted. It does not include external tool working files or entries from the operating system credential store. +## Back up ProfileDeck data -Create and inspect backups with: +An application backup is an encrypted copy of the complete ProfileDeck database. It includes saved Profiles, settings, usage, and credentials held in that database, but excludes tool-owned working files and system credential-store entries. ```bash profiledeck-cli backup create profiledeck-cli backup list -profiledeck-cli backup show profiledeck-cli backup export --output ``` -When a newer ProfileDeck version needs to update existing local data, it first verifies the data and creates an encrypted automatic backup. If verification or backup creation fails, ProfileDeck stops before updating the data. If the update later fails, ProfileDeck stops and keeps the encrypted backup for restore. Close other ProfileDeck windows and retry; if the data remains unavailable, use the Desktop recovery screen to restore a known-good application backup. +Automatic backups are on by default and run roughly daily while Desktop or Tray is active. Additional backups are made before updates, healthy-database restores, and local-data upgrades; up to ten automatic backups are retained. Manual backups remain until you delete them. -Automatic backups are enabled by default. Desktop and Tray create one when the newest automatic backup is more than 24 hours old, and also before an update restart, a healthy-database restore, or a local-data update. ProfileDeck keeps up to ten automatic backups in total and up to three local-data update backups within that total. Manual backups remain until you delete them. - -Backup files are encrypted with the recovery key stored in your system credential store. Export that key separately before moving a backup to another computer: +The recovery key lives in the system credential store, outside the backup. Export it separately before moving a backup to another computer: ```bash -profiledeck-cli backup key status profiledeck-cli backup key export --output --yes profiledeck-cli backup key import --file --yes ``` -Keep the exported key private. Importing a different key requires `--replace --yes` and makes backups encrypted to the previous key unavailable until that previous key is imported again. +Keep the key file private. Replacing the current key with `--replace --yes` does not re-encrypt older backups; import the old key again to open them. ## Restore application data -Restore a managed or exported backup with: - ```bash profiledeck-cli backup restore --yes profiledeck-cli backup restore --file --yes ``` -ProfileDeck verifies the encrypted archive and database before replacing current application data. When the current database is healthy, it first creates an automatic safety backup. A damaged current database can be replaced after confirmation without that safety backup. - -Restore clears every current-Profile marker and closes unresolved operations so restored history cannot be mistaken for current external tool state. It does not change any tool-owned file or system login and does not apply a Profile. Desktop restarts after success; from the CLI, restart ProfileDeck and explicitly switch to the Profile you want. CLI restore is refused while Desktop or another ProfileDeck process is using the application data. +Restore verifies the backup before replacing ProfileDeck data. When the current database is healthy, ProfileDeck first makes a safety backup. A damaged database may be restored after confirmation without that backup. -After restore commits, ProfileDeck removes obsolete operation recovery files. If that cleanup cannot finish, the restored data remains active and Desktop retries during restart. Switching and another application restore stay paused until cleanup succeeds. +Restore clears current-Profile markers and unresolved operations; it does not change any tool's working files or system login, or apply a saved Profile. -If ProfileDeck cannot open its database at startup, the Desktop recovery screen still lets you import the recovery key, list available backups, and restore one. +Restart ProfileDeck after a CLI restore, then explicitly switch to the Profile you need. Close other ProfileDeck processes before restoring from the CLI. -If ProfileDeck reports that the local data format is not supported, it cannot update that data in place. Restore a compatible application backup. To start with new local data instead, close every ProfileDeck process, move the entire [ProfileDeck data directory](../reference/data-security.md) to a private location, then reopen ProfileDeck or run `profiledeck-cli init`. Moving the directory keeps the old database and backups available for later inspection; it does not change tool-owned files or system logins. +If the database cannot open at startup, Desktop can still restore a backup. If ProfileDeck reports an unsupported local data format, restore a compatible backup. To start with new data instead, close ProfileDeck and move the entire [data directory](../reference/data-security.md) to a private location before reopening it. Keep that directory for later inspection. diff --git a/docs/operations/switching.md b/docs/operations/switching.md index 3c49b4f..8124f27 100644 --- a/docs/operations/switching.md +++ b/docs/operations/switching.md @@ -1,72 +1,16 @@ # Review and Switch Profiles -Switching changes the login or settings used by Codex, Claude Code, Antigravity, or Grok Build. ProfileDeck lets you review the change and creates a temporary recovery point before applying it. +A switch changes the selected tool's working login or settings. ProfileDeck checks their current state before writing, saves valid updates from the Profile you are leaving when supported, and makes the new Profile current only after the switch succeeds. Sensitive values remain hidden in the preview. -## Switch in the Desktop app - -1. Open **Codex**, **Claude Code**, **Antigravity**, or **Grok Build**. -2. Select the Profile you want to use. -3. Select **Use Profile**. -4. Review the files or login that will change and any warnings. -5. Confirm the switch. - -ProfileDeck marks the Profile as current only after the change succeeds. Restart the selected tool or open a new session if it does not pick up the new login immediately. - -## Preview from the CLI - -Previewing is optional. Run `switch --dry-run` when you want to review a switch before applying it: +## Switch from the CLI ```bash profiledeck-cli switch codex work --dry-run -profiledeck-cli switch claude-code personal --dry-run -profiledeck-cli switch antigravity work --dry-run -profiledeck-cli switch grok-build work --dry-run -``` - -Add `--json` if you need structured output: - -```bash -profiledeck-cli switch codex work --dry-run --json -``` - -For ordinary files, the preview shows which path will be created, updated, or left unchanged. Grok Build treats both its login and settings as sensitive: its preview shows only the action, target, path, and warnings. Sensitive values and complete Grok Build file contents remain hidden in all previews. - -Warnings tell you when a file or login is missing, invalid, unsupported, or unsafe to change. Resolve blocking warnings before applying the switch. - -## Apply from the CLI - -```bash profiledeck-cli switch codex work --yes -profiledeck-cli switch claude-code personal --yes -profiledeck-cli switch antigravity work --yes -profiledeck-cli switch grok-build work --yes -``` - -To apply only the exact state you previously reviewed, copy the fingerprint from `switch --dry-run`: - -```bash -profiledeck-cli switch codex work \ - --plan-fingerprint \ - --yes ``` -If the Profile or selected tool changes after the preview, ProfileDeck rejects the fingerprint without writing anything. Run `switch --dry-run` again and review the new result. - -## What happens during a switch - -Before changing the selected tool, ProfileDeck: - -1. checks that another ProfileDeck change is not still running; -2. checks the current files or login again; -3. saves valid updates from the Profile you are leaving when supported; -4. creates a private operation recovery point; -5. changes only the required files or login; -6. marks the new Profile as current after every change succeeds. - -ProfileDeck stops without applying the switch if it cannot verify the current state or create a usable recovery point. An interrupted or failed operation stays visible in Diagnostics so it can be recovered safely. After a successful switch, ProfileDeck deletes the recovery point. - -## Keep recovery data private +The preview is optional. For another tool, replace `codex` and `work` with its tool and Profile IDs. Use `--plan-fingerprint ` with `--yes` to require the state to match a previous preview. If it has changed, preview again. -An unfinished switch recovery point may contain previous Codex or Grok Build files, a Claude Code account login, or an Antigravity login. Keep the ProfileDeck data directory private and do not commit, upload, or share recovery files. +ProfileDeck stops before writing if it cannot check the current state or create a recovery point. If a switch is interrupted or blocked, run `profiledeck-cli doctor` and follow [Diagnostics and Recovery](./recovery.md). Keep the [local data directory](../reference/data-security.md) private because unfinished-switch recovery files may contain logins. -Recovery returns targets affected by an unfinished switch to their pre-switch state without changing the current Profile. If the current Profile changed after the unfinished switch, ProfileDeck refuses recovery before writing. Updates that were already saved into a Profile remain saved. A successful switch cannot be undone; switch to the intended Profile instead. See [Diagnostics, backups, and recovery](./recovery.md) for the available actions. +A successful switch has no undo. Switch to another Profile if you need a different setup. A tool already running may need a new session to use its changed login. diff --git a/docs/reference/cli.md b/docs/reference/cli.md index 5d78960..0344d68 100644 --- a/docs/reference/cli.md +++ b/docs/reference/cli.md @@ -1,215 +1,56 @@ # CLI Reference -Use this page for command names and common options. Run `profiledeck-cli --help` or `profiledeck-cli --help` for the exact help included with your installed version; installed help takes precedence if it differs from this page. +Run `profiledeck-cli --help` or `profiledeck-cli --help` for the complete syntax supported by your installed version. Put global options before the command: -Angle brackets mark required values. Square brackets mark optional arguments. +- `--config-dir ` uses `/profiledeck` for application data. +- `--grok-home ` selects a Grok Build Home instead of `GROK_HOME` or `~/.grok`. -## Global options +Replace values in angle brackets with your own IDs or paths. -Every command accepts: +Add `--json` to a command that offers it when a script needs structured output. -```text ---config-dir string Use a custom ProfileDeck config directory ---grok-home string Use a custom Grok Build Home -``` - -`--config-dir` is the parent config directory. ProfileDeck creates or uses its `profiledeck` folder below it. - -`--grok-home` overrides `GROK_HOME` and the default `~/.grok` location. Put a global option before the command name. - -## Commands - -| Command | Use it to | -| --- | --- | -| `antigravity` | Save and manage Antigravity Profiles. | -| `backup` | Create, export, restore, and manage encrypted application backups. | -| `claude-code` | Save and manage Claude Code account-login Profiles. | -| `codex` | Manage Codex Profiles and saved settings (Config Sets). | -| `doctor` | Diagnose local-data, permission, and interrupted-operation problems. | -| `grok-build` | Manage Grok Build Profiles and saved settings (Config Sets). | -| `init` | Create ProfileDeck's local data. | -| `provider` | Configure another AI tool for advanced file switching. | -| `profile` | Manage Profiles and advanced file targets. | -| `recover` | Resolve an interrupted or failed switch. | -| `status` | Check whether ProfileDeck is initialized. | -| `switch` | Preview or apply a Profile switch. | -| `usage` | Import and report local Codex usage. | -| `version` | Print version information. | - -## Setup and status - -```bash -profiledeck-cli init [--json] -profiledeck-cli status [--json] -profiledeck-cli version -``` - -## Codex - -```bash -profiledeck-cli codex detect [--codex-dir PATH] [--json] -profiledeck-cli codex profile list [--json] -profiledeck-cli codex profile show [--json] -profiledeck-cli codex profile create [--new-config-set ID] [--config-set-name NAME] [--config-set-description TEXT] [--codex-dir PATH] [--name NAME] [--description TEXT] [--json] -profiledeck-cli codex profile fork --credential-binding share-parent|copy-new --config-binding share-parent|copy-new [--new-config-set ID] [--config-set-name NAME] [--config-set-description TEXT] [--codex-dir PATH] [--name NAME] [--description TEXT] [--json] -profiledeck-cli codex profile save-current [--codex-dir PATH] [--json] -profiledeck-cli codex profile set-config [--json] -profiledeck-cli codex profile delete --yes [--json] - -profiledeck-cli codex config-set list [--json] -profiledeck-cli codex config-set show [--json] -profiledeck-cli codex config-set create [--codex-dir PATH] [--name NAME] [--description TEXT] [--json] -profiledeck-cli codex config-set copy [--name NAME] [--description TEXT] [--json] -profiledeck-cli codex config-set update [--name NAME] [--description TEXT] [--json] -profiledeck-cli codex config-set delete --yes [--json] -``` - -The first `profile create` saves the current Codex login and settings and creates the `shared` Config Set. Later creates reuse the current Config Set unless you pass `--new-config-set`. - -`fork` requires choices for both the login and Config Set, and at least one choice must be `copy-new`. The destination can be a new Profile or an existing Profile that has no Codex data. When reusing a Profile, omitted `--name` and `--description` values leave its details unchanged. Copying settings also requires `--new-config-set`. `save-current` saves the login and settings currently used by Codex. `set-config` changes only a Profile that is not current. - -`config-set create` saves the current `config.toml`. List and show commands return safe summaries. You can delete only a Config Set that no Profile uses. - -See [Codex Profiles](../codex/profiles.md) for task-based examples and safety guidance. - -## Grok Build - -```bash -profiledeck-cli grok-build detect [--json] -profiledeck-cli grok-build profile list [--json] -profiledeck-cli grok-build profile show [--json] -profiledeck-cli grok-build profile create [--new-config-set ID] [--config-set-name NAME] [--config-set-description TEXT] [--name NAME] [--description TEXT] [--json] -profiledeck-cli grok-build profile fork --credential-binding share-parent|copy-new --config-binding share-parent|copy-new [--new-config-set ID] [--config-set-name NAME] [--config-set-description TEXT] [--name NAME] [--description TEXT] [--json] -profiledeck-cli grok-build profile save-current [--json] -profiledeck-cli grok-build profile set-config [--json] -profiledeck-cli grok-build profile delete --yes [--json] - -profiledeck-cli grok-build config-set list [--json] -profiledeck-cli grok-build config-set show [--json] -profiledeck-cli grok-build config-set create [--name NAME] [--description TEXT] [--json] -profiledeck-cli grok-build config-set copy [--name NAME] [--description TEXT] [--json] -profiledeck-cli grok-build config-set update [--name NAME] [--description TEXT] [--json] -profiledeck-cli grok-build config-set delete --yes [--json] -``` - -The first `profile create` saves the current file-based login and uses the `shared` Config Set. If `shared` does not exist, ProfileDeck creates it from the current `config.toml`; a missing file becomes empty settings. A pre-created `shared` Config Set is reused without changing it. Later creates reuse the current Profile's saved Config Set without reading or overwriting the working `config.toml`, unless you pass `--new-config-set`. `auth.json` must be present, non-empty, and valid. - -`fork` requires choices for both the login and Config Set, and at least one choice must be `copy-new`. The destination can be a new Profile or an existing Profile that has no Grok Build data. When reusing a Profile, omitted `--name` and `--description` values leave its details unchanged. `save-current` requires a valid `auth.json` and an existing, valid `config.toml`; an empty `config.toml` is valid. If either requirement fails, neither the saved login nor settings change. Config Set list and detail output never contains `config.toml`. - -Set `--grok-home` before `grok-build` when needed: - -```bash -profiledeck-cli --grok-home /path/to/grok-home grok-build detect -``` - -The Provider remains bound to the first initialized Home. Profile creation, `save-current`, and switching are unavailable while `GROK_AUTH` or `GROK_AUTH_PATH` is set. See [Grok Build Profiles](../grok-build/profiles.md) for switching and safety guidance. - -## Claude Code - -```bash -profiledeck-cli claude-code detect [--json] -profiledeck-cli claude-code profile create [--name NAME] [--description TEXT] [--json] -profiledeck-cli claude-code profile list [--json] -profiledeck-cli claude-code profile show [--json] -profiledeck-cli claude-code profile update [--name NAME] [--description TEXT] [--json] -profiledeck-cli claude-code profile save-current [--yes] [--json] -profiledeck-cli claude-code profile delete --yes [--json] -``` - -`create` saves the current Claude Code account login and makes the new Profile current. `save-current` updates the login used by the current Profile. If that saved login is shared, the command reports how many Profiles will change and requires `--yes`. - -There is no `claude` alias. Preview with `profiledeck-cli switch claude-code --dry-run` when needed, then apply with `profiledeck-cli switch claude-code --yes`. Commands show login status and safe metadata, never token values. - -See [Claude Code Profiles](../claude-code/profiles.md) for login requirements and verification. - -## Antigravity - -```bash -profiledeck-cli antigravity detect [--json] -profiledeck-cli antigravity profile list [--json] -profiledeck-cli antigravity profile show [--json] -profiledeck-cli antigravity profile create [--name NAME] [--description TEXT] [--json] -profiledeck-cli antigravity profile update [--name NAME] [--description TEXT] [--json] -profiledeck-cli antigravity profile save-current [--json] -profiledeck-cli antigravity profile delete --yes [--json] -``` - -`agy` is an alias for `antigravity`. `create` and `save-current` require a valid current Antigravity consumer OAuth login. Output shows safe metadata and never prints login values. - -See [Antigravity Profiles](../antigravity/profiles.md) for compatibility and switching advice. - -## Preview and switch +## Setup and Profiles ```bash -profiledeck-cli switch --dry-run [--json] -profiledeck-cli switch --yes [--plan-fingerprint FINGERPRINT] [--json] +profiledeck-cli init +profiledeck-cli status +profiledeck-cli codex detect +profiledeck-cli codex profile create work +profiledeck-cli codex profile list +profiledeck-cli switch codex work --dry-run +profiledeck-cli switch codex work --yes ``` -`switch --dry-run` is an optional read-only preview. Use `switch --yes` to apply the change. Pass the fingerprint returned by the preview when you want ProfileDeck to reject any state that changed after your review. - -## Usage - -```bash -profiledeck-cli usage sync codex [--codex-dir PATH] [--json] -profiledeck-cli usage sync grok-build [--json] -profiledeck-cli --grok-home PATH usage sync grok-build [--json] -profiledeck-cli usage summary [--provider codex|grok-build] [--json] -profiledeck-cli usage report [--provider codex|grok-build] [--range today|7d|30d|all] [--json] -``` +Replace `codex` with `claude-code`, `antigravity`, or `grok-build` for that tool's Profile commands. Each tool also offers `profile show`, `profile save-current`, and `profile delete`. Profile deletion removes the complete global Profile across tools; see [Profiles and settings](../guide/concepts.md). A switch preview is optional; successful switches cannot be undone. -Only local Codex and Grok Build usage is supported. The default Provider is Codex. `report` defaults to `7d`; `summary` gives a shorter all-time view. See [Codex Usage and Cost](../codex/usage-cost.md) or [Grok Build Usage and Cost](../grok-build/usage-cost.md) for report fields and estimation limits. +Codex and Grok Build additionally offer `config-set` management, `profile set-config`, and `profile fork` for sharing or copying logins and settings. Their [Codex](../codex/profiles.md) and [Grok Build](../grok-build/profiles.md) pages show practical examples. -## Other tools and configuration files - -The following commands are advanced CLI features for tools other than the built-in Codex, Claude Code, Antigravity, and Grok Build workflows. Use each built-in tool's dedicated commands above; generic target commands cannot manage their saved logins or settings. +## Usage and prices ```bash -profiledeck-cli provider list [--json] -profiledeck-cli provider show [--json] -profiledeck-cli provider create [--name NAME] [--adapter ID] [--metadata-json JSON] [--json] -profiledeck-cli provider update [--name NAME] [--adapter ID] [--metadata-json JSON] [--json] -profiledeck-cli provider delete --yes [--json] - -profiledeck-cli profile list [--json] -profiledeck-cli profile show [--json] -profiledeck-cli profile create [--name NAME] [--description TEXT] [--metadata-json JSON] [--json] -profiledeck-cli profile update [--name NAME] [--description TEXT] [--metadata-json JSON] [--json] -profiledeck-cli profile delete --yes [--json] +profiledeck-cli usage sync codex +profiledeck-cli usage sync grok-build +profiledeck-cli usage summary --provider grok-build +profiledeck-cli usage report --provider grok-build --range 30d +profiledeck-cli usage pricing check +profiledeck-cli usage pricing auto off ``` -Deleting a Provider removes all ProfileDeck data owned by it, including its settings, saved resources and bindings, file targets, current-Profile state, usage reports, and completed operation records. Global Profiles, Desktop Agent preferences, tool-owned working logins, settings, and files remain. Deletion stops while that Provider has an unfinished operation. - -All five Profile delete commands perform the same global deletion. An Agent-specific command deletes the complete Profile even when it contains data only for another Agent. Deletion stops if the Profile is current in any Agent or has an unfinished operation. Saved logins and Config Sets used only by that Profile are deleted; shared saved data and unrelated unbound data remain. Completed operation records that refer to the Profile are also removed. Tool-owned working logins, settings, and files do not change. +Use `--provider codex` or `--provider grok-build` for reports; the default is Codex. Report ranges are `today`, `7d`, `30d`, and `all`. See [Codex](../codex/usage-cost.md) or [Grok Build](../grok-build/usage-cost.md) for estimate limits. -Target commands: +## Backups and recovery ```bash -profiledeck-cli profile target add --provider ID --path PATH --format FORMAT --strategy STRATEGY --value-json JSON [--disabled] [--metadata-json JSON] [--json] -profiledeck-cli profile target list [--provider ID] [--all] [--json] -profiledeck-cli profile target show [--json] -profiledeck-cli profile target update [--path PATH] [--format FORMAT] [--strategy STRATEGY] [--value-json JSON] [--enabled] [--disabled] [--metadata-json JSON] [--json] -profiledeck-cli profile target delete --yes [--json] +profiledeck-cli doctor +profiledeck-cli backup create +profiledeck-cli backup list +profiledeck-cli backup export --output +profiledeck-cli backup key export --output --yes +profiledeck-cli backup restore --yes ``` -See [Other Configuration Files](../guide/generic-targets.md) before adding a target. - -## Backups, diagnostics, and recovery - -```bash -profiledeck-cli backup create [--json] -profiledeck-cli backup list [--json] -profiledeck-cli backup show [--json] -profiledeck-cli backup export --output [--json] -profiledeck-cli backup restore [ | --file ] --yes [--json] -profiledeck-cli backup delete --yes -profiledeck-cli backup key status [--json] -profiledeck-cli backup key export --output --yes [--json] -profiledeck-cli backup key import --file [--replace] --yes [--json] -profiledeck-cli doctor [--json] -profiledeck-cli doctor repair-lock --yes [--json] -profiledeck-cli recover --yes [--json] -``` +Backups are encrypted, but the key must be moved separately. Use `profiledeck-cli backup key import --file --yes` on the destination computer. Restore does not change tool-owned files or sign-ins. Use `recover --yes`, `doctor repair-lock --yes`, or `doctor retry-cleanup --yes` only when [Diagnostics](../operations/recovery.md) calls for that action. -Application backups contain the complete ProfileDeck database but do not contain tool-owned working files or system credential-store entries. Export the recovery key separately before moving backups to another system. Replacing a different key requires both `--replace` and `--yes`, and backups encrypted to the old key will no longer open with the current key. +## Other configuration files -`recover` is only for an unfinished switch reported by Diagnostics. A successful switch cannot be undone. See [Diagnostics and Recovery](../operations/recovery.md) for the safe action in each state. +`provider` and `profile target` commands manage advanced local file switching for other tools. They cannot change the managed logins or settings of Codex, Claude Code, Antigravity, or Grok Build. See [Switch Other Configuration Files](../guide/generic-targets.md) for a working example. diff --git a/docs/reference/data-security.md b/docs/reference/data-security.md index 5761f30..ca892c7 100644 --- a/docs/reference/data-security.md +++ b/docs/reference/data-security.md @@ -1,68 +1,35 @@ # Local Data and Security -ProfileDeck keeps Profiles, saved logins, settings, usage reports, backups, and operation history on your device. Treat its data directory as sensitive. +ProfileDeck stores Profiles, logins, settings, usage reports, and backups on your device. Treat its data directory as sensitive. ## Find the data directory -The default location is: - -```text -/profiledeck -``` - -Common examples are: - | System | Default location | | --- | --- | | macOS | `~/Library/Application Support/profiledeck` | | Linux | `$XDG_CONFIG_HOME/profiledeck` or `~/.config/profiledeck` | | Windows | `%AppData%\profiledeck` | -If you pass `--config-dir `, ProfileDeck uses `/profiledeck` instead. - -The directory contains `profiledeck.db` (and SQLite WAL sidecars `profiledeck.db-wal` / `profiledeck.db-shm` when present), encrypted application backups, and temporary recovery material for unfinished switches. Codex, Claude Code, Antigravity, and Grok Build logins may be stored in the database or operation recovery material because ProfileDeck needs them to switch Profiles safely. Saved Grok Build Config Sets may contain the complete local `config.toml`. - -## Protect local data - -ProfileDeck encrypts `.profiledeck-backup` files with age X25519. The live database and unfinished-switch recovery material are not separately encrypted, so anyone who can read your local files may be able to read saved logins. On macOS and Linux, ProfileDeck restricts its own private files and directories where possible. Desktop Diagnostics and `profiledeck-cli doctor` report ProfileDeck, Codex, Grok Build, or Claude Code paths whose permissions may allow access by other local users. These checks do not block startup or Profile switching, and ProfileDeck does not change files owned by those tools during a check. - -- Use your operating system's full-disk encryption and screen lock. -- Do not sync, commit, upload, or share the complete ProfileDeck data directory. -- Use an exported encrypted application backup and separately exported recovery key when moving or reinstalling ProfileDeck. -- Keep recovery-key files outside repositories and shared folders. - -Claude Code support is separate from Claude Desktop. ProfileDeck does not read or change Claude Desktop logins, settings, or processes. - -## Understand application backups and operation recovery - -Application backups contain the complete ProfileDeck database and are encrypted before they are published in `backups/`. ProfileDeck also creates an encrypted backup before updating existing local data to a newer format. If verification or backup creation fails, ProfileDeck stops before updating the data. If the update later fails, startup stops and keeps the encrypted backup available from the recovery screen. - -Manual backups remain until you delete them. Automatic backups run every 24 hours and before update restart, database restore, or a local-data update. ProfileDeck keeps up to ten automatic backups in total and up to three local-data update backups within that total. - -The private X25519 recovery key is stored in the operating system credential store. ProfileDeck does not store it inside a backup. Export the key separately before moving backups to another system, and remember that replacing the current key does not re-encrypt existing files. - -Before a switch changes an external tool, ProfileDeck creates a private recovery point under `recovery//`. It may contain complete Codex or Grok Build files, a Claude Code account login, or an Antigravity login without application-backup encryption. It exists only for an unfinished switch and is deleted after success. It is not listed, exported, or usable to undo a successful switch. +`--config-dir ` uses `/profiledeck` instead. The directory contains `profiledeck.db`, encrypted application backups, and recovery files for unfinished switches. -ProfileDeck records a cleanup obligation before an operation becomes authoritative, then clears it only after the recovery directory has been synchronized. A crash or filesystem error can therefore leave completed-operation material visible as a cleanup warning. While that warning is active, Profile switching and application restore pause, but reads, Doctor, and application backups remain available. Run `profiledeck-cli doctor retry-cleanup --yes` or use **Retry cleanup** in Desktop Diagnostics. The cleanup does not change tool sign-ins or settings. +## Protect saved data -Backup lists and previews show only safe metadata. Keep encrypted backup files private as defense in depth, and never share operation recovery material. +Application backups are encrypted with age X25519. The live database and unfinished-switch recovery files are not separately encrypted and may contain complete logins or settings. Do not sync, commit, upload, or share the data directory. Use full-disk encryption and a screen lock. `profiledeck-cli doctor` can report file permissions that allow other local users access. -## Know when ProfileDeck connects to the internet +The private backup recovery key is stored in your system credential store, not in a backup. Export it separately before moving backups to another computer, and keep exported key files out of shared folders. See [Backups and Recovery](../operations/recovery.md) for commands. A successful switch has no recovery point or undo. -Most ProfileDeck actions use local data only. +## Network access -- Usage sync and reports read local Codex or Grok Build session files and do not contact a billing service. -- Usage price checks download the public ProfileDeck price list from GitHub. The Desktop app checks at most once a day while running; `usage sync` checks first when due. No local usage is sent. Turn automatic checks off in **Settings → Usage prices** or with `profiledeck-cli usage pricing auto off`. -- ChatGPT Codex limit checks contact Codex or OpenAI with the selected saved login. That login is never sent to a custom model-service URL from the saved Codex settings. -- API Key limit checks send the saved API Key to `/v1/usage` on the custom Base URL configured by that Profile. ProfileDeck makes one request without redirects. An HTTP Base URL does not encrypt the API Key or response in transit. Limit results stay in memory and are not added to usage reports or application backups. -- Grok Build credits checks use the current managed Profile and follow the installed Grok Build app's network and sign-in settings. Grok may renew its current sign-in during the check. ProfileDeck does not query inactive Profiles, and the result remains in memory instead of being added to the database, usage reports, or application backups. -- Antigravity limit checks send the current Antigravity access token to a fixed, unpublished Google Cloud Code service. Using this service may carry account risk. ProfileDeck does not refresh, save, or write back the token during a check. The result stays in app memory and is not added to the database, usage reports, or application backups. -- Desktop update checks and downloads contact the public ProfileDeck release on GitHub. +- Usage reports read local Codex and Grok Build sessions. Price-list checks download public rates from GitHub; local usage is not uploaded. Disable automatic checks with `profiledeck-cli usage pricing auto off`. +- ChatGPT Codex limit checks contact Codex or OpenAI with the selected login. API Key limit checks send the saved key to the Profile's custom Base URL; HTTP does not encrypt it in transit. +- Grok Build credits checks use the installed Grok Build app and may renew its current login. +- Antigravity limit checks send the current access token to an unpublished Google Cloud Code service and may carry account risk. They do not refresh or write back the token. +- Desktop update checks and downloads contact ProfileDeck releases on GitHub. -ProfileDeck does not provide cloud sync and does not send telemetry or analytics data. Automatic Codex limit refresh and sign-in renewal are off by default and run only while the Desktop app is open or in the menu bar. +Limit and credits results remain in memory. ProfileDeck does not provide cloud sync or send telemetry. -## What output and usage reports omit +## Output and usage reports -Normal previews, commands, logs, errors, and backup summaries hide saved login values and other sensitive-looking settings. Exported application backups remain encrypted; recovery-key exports are separate sensitive files that must be kept private. +Previews, commands, logs, errors, and backup summaries hide saved login values and sensitive settings. Exported backups remain encrypted; exported recovery keys are separate sensitive files. -Usage reports store token counts, model names, time information, derived session identifiers, and cost estimates. They do not store raw prompts, raw completions, agent results, API keys, direct session identifiers, complete session records, or full source-file paths. Local Codex and Grok Build activity cannot reliably identify the Profile, saved login, or account that served a request, so ProfileDeck does not guess that attribution. +Usage reports store token counts, models, dates, and estimates, but not raw prompts, completions, agent results, API keys, complete session records, or full source-file paths. They cannot reliably attribute historical activity to a Profile, saved login, or account. diff --git a/docs/zh/antigravity/profiles.md b/docs/zh/antigravity/profiles.md index 2df9dd6..aacabd8 100644 --- a/docs/zh/antigravity/profiles.md +++ b/docs/zh/antigravity/profiles.md @@ -1,86 +1,32 @@ # Antigravity Profile -ProfileDeck 可以保存和切换存储在操作系统凭据存储中的 Antigravity 个人 OAuth 登录,但不会代替你登录 Antigravity。 +ProfileDeck 保存并切换操作系统凭据存储中的 Antigravity 个人 OAuth 登录,不代替你登录,也不管理旧版存储、设置或 SSH 与容器使用的独立登录。 ## 开始前准备 -1. 登录 Antigravity,并确认可以正常使用。 -2. 启动 ProfileDeck;如果使用 CLI,请运行 `profiledeck-cli init`。 - -ProfileDeck 不支持旧版 Antigravity 存储方式。 - -## 在桌面端保存 Profile - -1. 在 ProfileDeck 侧边栏中打开 **Antigravity**。 -2. 选择**新建 Profile**。 -3. 输入创建后不会改变的 Profile ID 和用于显示的名称,然后选择**保存 Profile**。 - -新 Profile 会成为 Antigravity 的当前 Profile。ProfileDeck 不会显示其中的访问令牌或刷新令牌。 - -## 使用 CLI 保存 Profile - -先检查当前登录,再保存它: +登录 Antigravity,并确认可以正常使用。CLI 用户需要运行一次 `profiledeck-cli init`。只能保存当前受支持的登录: ```bash profiledeck-cli antigravity detect -profiledeck-cli antigravity profile create work --name Work -``` - -`detect` 只报告登录是否就绪,不会输出登录内容。创建命令要求当前登录有效。 - -查看或重命名已保存的 Profile: - -```bash -profiledeck-cli antigravity profile list -profiledeck-cli antigravity profile show work -profiledeck-cli antigravity profile update work --name "Work account" +profiledeck-cli antigravity profile create work ``` -## 切换 Profile +第一个 Profile 会成为当前 Profile。要保存另一个登录,先在 Antigravity 中登录该账号,再创建另一个 Profile。 -条件允许时,请先关闭 Antigravity 再切换,避免它在变更期间刷新登录;切换后重新打开即可。 +## 切换和保存刷新后的登录 -在桌面端打开目标 Profile,选择**使用 Profile**,检查变更并确认。 +条件允许时,先关闭 Antigravity 再切换,避免它在变更期间刷新登录。切换命令见[审核并切换](../operations/switching.md)。 -使用 CLI 时,可以先预览,再应用变更: - -```bash -profiledeck-cli switch antigravity work --dry-run -profiledeck-cli switch antigravity work --yes -``` - -ProfileDeck 会再次检查当前登录,并在变更前创建私有操作恢复点。如果切换中断,请使用[诊断与恢复](../operations/recovery.md)。 - -## 保存刷新的登录 - -Antigravity 运行时可能刷新登录。短期访问令牌的到期时间不能代表已保存 Profile 的可复用期限,因此 ProfileDeck 不会把它显示为登录过期时间。切离当前 Profile 时,ProfileDeck 会保存有效的刷新后登录。你也可以主动保存: +Antigravity 运行时可能刷新登录。切离当前 Profile 时,ProfileDeck 会保存有效的刷新后登录。若要在登录其他账号前保存,可运行: ```bash profiledeck-cli antigravity profile save-current ``` -在桌面端打开当前 Profile 的 **…** 菜单,然后选择**保存当前登录**。 - -## 删除 Profile - -在桌面端打开 Profile 的操作菜单并选择**删除 Profile**,或运行: - -```bash -profiledeck-cli antigravity profile delete work --yes -``` - -这会从所有 Agent 中删除完整的全局 Profile,而不只是 Antigravity 数据。只有该 Profile 使用的已保存登录会删除,共享登录会保留。当前 Profile 或存在未完成操作的 Profile 不能删除。系统凭据存储中的当前 Antigravity 登录不会改变。 +短期访问令牌的到期时间不能代表已保存 Profile 的可复用期限。共享和删除的影响见[Profile 与设置](../guide/concepts.md)。 ## 检查使用限额 -桌面端会在启动时检查一次当前 Antigravity Profile,并在成功切换后检查一次新 Profile。需要再次检查时,请在当前 Profile 上选择**刷新限额**。ProfileDeck 不会在后台轮询。 - -这些检查会将当前 Profile 的访问令牌发送到 Google Cloud Code 服务。该服务契约未公开,使用它可能带来账号风险。检查期间,ProfileDeck 不会刷新、保存或回写令牌。 - -Profile 列表显示紧凑摘要;Profile 详情显示各分组的 5 小时和每周窗口、剩余百分比、重置时间与检查时间。非当前 Profile 可以保留本次应用会话中较早检查的快照,但必须先使用该 Profile,才能刷新结果。 - -限额快照只存在于内存,不会写入用量报告、应用备份或 ProfileDeck 数据库,也不能用来判断此前的 Antigravity 活动属于哪个 Profile。 - -## 不支持的范围 +桌面端在启动和切换后检查当前 Profile,之后需要手动检查。检查会把访问令牌发送到未公开的 Google Cloud Code 服务,可能带来账号风险。检查期间,ProfileDeck 不会刷新或回写令牌。 -ProfileDeck 不管理 Antigravity 登录流程、设置、旧版存储迁移、Manager 数据、模型级限额明细、用量归属,也不管理 SSH 或容器会话使用的独立登录文件。Antigravity 限额检查仅在桌面端提供。 +限额结果仅保留在内存中,不会写入用量报告或备份,也不能判断此前活动属于哪个 Profile。限额检查只在桌面端提供。 diff --git a/docs/zh/claude-code/profiles.md b/docs/zh/claude-code/profiles.md index d105663..684dba5 100644 --- a/docs/zh/claude-code/profiles.md +++ b/docs/zh/claude-code/profiles.md @@ -1,96 +1,29 @@ # Claude Code Profile -一个 Claude Code Profile 保存一份 Claude Code 账号登录。ProfileDeck 不会修改 Claude Code 设置、MCP 服务器、插件、API Key、云服务认证或 Claude Desktop。 +ProfileDeck 只保存 Claude Code `/login` 创建的账号登录,不代替你登录,也不管理 API Key、Console 或云服务认证、Claude Code 设置及 Claude Desktop。 ## 开始前准备 -- 桌面端会自动初始化 ProfileDeck;CLI 用户需要先运行一次 `profiledeck-cli init`。 -- 保存 Profile 前,先在 Claude Code 中运行 `/login`。 +先在 Claude Code 中运行 `/login`;需要使用 CLI 时,再运行一次 `profiledeck-cli init`。在 macOS 上,ProfileDeck 可能需要读取 Claude Code Keychain 条目的权限。macOS 要求输入的是电脑登录密码,不是 Claude 账号密码。 -ProfileDeck 只保存 `/login` 得到的账号登录,不保存 API Key 或 Console 登录,也不会代替你登录。 - -## 在桌面端保存 Profile - -1. 选择 **Claude Code → Profiles**。 -2. 如果 macOS 要求权限,请选择**授权读取**,允许 ProfileDeck 从 Keychain 读取 Claude Code 登录。 -3. 选择**新建 Profile**,然后输入创建后不会改变的 Profile ID 和用于显示的名称。 -4. 在 Claude Code 中为另一个账号运行 `/login`,返回 ProfileDeck,再保存一个 Profile。 - -第一个保存的 Profile 会成为当前 Profile。保存其他 Profile 不会修改 Claude Code 设置。 - -## 使用 CLI 保存 Profile - -登录第一个账号后运行: - -```bash -profiledeck-cli claude-code detect -profiledeck-cli claude-code profile create personal --name "Personal" -``` - -使用 `/login` 登录第二个账号,再单独保存: +## 保存和切换账号 ```bash -profiledeck-cli claude-code profile create work --name "Work" -profiledeck-cli claude-code profile list +profiledeck-cli claude-code profile create personal ``` -`list` 和 `show` 命令只显示登录状态和过期时间,不会打印令牌值。 +要保存另一个账号,先在 Claude Code 中为该账号运行 `/login`,再创建另一个 Profile。第一个已保存 Profile 会成为当前 Profile。切换使用[共通的切换命令](../operations/switching.md)。切换后请新建 Claude Code 会话,并运行 `/status` 确认账号;已运行的进程不会改变。 -## 切换账号 - -在桌面端选择**使用 Profile**,审核登录变化,然后确认。继续前,ProfileDeck 会创建私有操作恢复点。 - -使用 CLI 时可按需预览: - -```bash -profiledeck-cli switch claude-code personal --dry-run -profiledeck-cli switch claude-code personal --yes -``` - -切换后请新建 Claude Code 会话,并运行 `/status` 确认账号。已经运行的 Claude Code 进程不会改变。 - -如果 Claude Code 刷新了当前登录,ProfileDeck 会在离开前保存有效更新。即使已保存 Profile 的登录已经过期,仍可以切换到该 Profile,再通过 `/login` 续期。 - -## 保存刷新后的登录 - -在桌面端打开当前 Profile 的 **…** 菜单,选择**保存当前登录**,或运行: +切离当前 Profile 时,ProfileDeck 会保存有效的刷新登录。若要在再次运行 `/login` 前保存,可运行: ```bash profiledeck-cli claude-code profile save-current ``` -如果多个 Profile 共用这份登录,ProfileDeck 会显示受影响的 Profile 数量。使用 CLI 时,请先审核该数量,再通过 `--yes` 确认。 - -## 删除 Profile - -在桌面端打开 Profile 的操作菜单并选择**删除 Profile**,或运行: - -```bash -profiledeck-cli claude-code profile delete work --yes -``` - -这会从所有 Agent 中删除完整的全局 Profile,而不只是 Claude Code 数据。只有该 Profile 使用的已保存登录会删除,共享登录会保留。当前 Profile 或存在未完成操作的 Profile 不能删除。Claude Code 当前使用的 Keychain 条目或凭据文件不会改变。 - -## 在 macOS 上允许 Keychain 访问 - -Claude Code 必须先通过 `/login` 在 Keychain 中创建登录,ProfileDeck 才能保存它。打开 Profiles 页面、运行 `detect` 或打开“诊断”时,ProfileDeck 只会检查登录是否可用。 - -需要访问权限时,桌面端会显示**授权读取**。随后 macOS 可能要求输入 macOS 登录密码,以允许 ProfileDeck 访问现有的 Claude Code Keychain 条目。这不是在索取 Claude 账号密码。 - -Keychain 权限按条目分别管理。其他工具无需弹窗,不代表 Claude Code 也不需要授权。 - -## Linux 和 Windows 登录文件 - -ProfileDeck 使用 `CLAUDE_CONFIG_DIR` 下的 `.credentials.json`;未设置该变量时,使用 `~/.claude/.credentials.json`。完成首次 Claude Code 设置后,ProfileDeck 会继续使用当时保存的位置。 - -如果后续 CLI 进程看到不同的 `CLAUDE_CONFIG_DIR`,ProfileDeck 会显示警告,不会静默改用另一个文件。在 Linux 上,ProfileDeck 写入登录文件时会把读取权限限制为当前用户账号。 - -## Claude Code 使用了错误账号 - -Claude Code 设置、`apiKeyHelper`、API Key 环境变量和云服务选项可能优先于所选账号登录。ProfileDeck 会报告自身进程可见的受支持认证覆盖变量名称,但无法检查其他终端或已经运行的 Claude Code 进程。 +如果多个 Profile 共用这份登录,请先核对受影响数量,再使用 `--yes` 确认。共享和删除的影响见[Profile 与设置](../guide/concepts.md)。 -请新建会话、运行 `/status`,并在所选账号未生效时查阅 [Claude Code 认证文档](https://code.claude.com/docs/en/authentication)。 +## 登录位置和认证覆盖 -## 不包含的功能 +在 Linux 和 Windows 上,ProfileDeck 使用 `CLAUDE_CONFIG_DIR/.credentials.json`;未设置该变量时使用 `~/.claude/.credentials.json`。首次设置后会固定该位置,后续 CLI 进程指向其他位置时会警告。 -Claude Code Profile 不包含 Claude Desktop、配额检查、用量归属、Console 或 API Key 账号、Claude Code 设置切换或并行账号会话。 +Claude Code 设置、`apiKeyHelper`、API Key 环境变量或云服务选项可能优先于所选账号。若账号不符,请新建会话、运行 `/status`,并查阅 [Claude Code 认证文档](https://code.claude.com/docs/en/authentication)。ProfileDeck 无法检查其他终端的环境或已经运行的 Claude Code 进程。 diff --git a/docs/zh/codex/profiles.md b/docs/zh/codex/profiles.md index 1a41cf6..e682e12 100644 --- a/docs/zh/codex/profiles.md +++ b/docs/zh/codex/profiles.md @@ -1,151 +1,65 @@ # Codex Profile -一个 Codex Profile 保存一份登录和一组可复用的 Codex 设置,这组设置称为配置集。Fork 到目标 Profile 时,可以分别选择共享或复制登录与设置。 - -每个配置集只包含用户级 `config.toml`。会话、日志、Skills、插件缓存、项目 `.codex/config.toml` 和系统策略不在其中。 +Codex Profile 保存一份登录和一组可复用的用户级 `config.toml` 设置(配置集),不包含会话、日志、Skills、插件、项目设置或系统策略。 ## 开始前准备 -Codex 必须把登录保存在 `auth.json` 中。如果缺少该文件,请在 `$CODEX_HOME/config.toml` 中添加以下设置,然后重新登录: +Codex 必须把登录保存在 `auth.json`,并有有效的 `config.toml`。如果缺少 `auth.json`,请在 `$CODEX_HOME/config.toml` 中添加以下设置,然后重新登录: ```toml cli_auth_credentials_store = "file" ``` -请根据要保存的登录方式运行对应的 Codex 命令: +按账号类型选择登录命令: ```bash -# ChatGPT codex login - -# OpenAI API Key printenv OPENAI_API_KEY | codex login --with-api-key - -# Codex 访问令牌 printf '%s' "$CODEX_ACCESS_TOKEN" | codex login --with-access-token ``` -ProfileDeck 可以保存和切换这些基于文件的登录。仅向 Codex 进程提供 `OPENAI_API_KEY` 或 `CODEX_ACCESS_TOKEN` 不会创建 `auth.json`;需要先运行对应的登录命令,ProfileDeck 才能保存该登录。 - -ProfileDeck 还需要有效的 `config.toml`。CLI 命令按以下顺序查找 Codex 目录: - -1. `--codex-dir` -2. `CODEX_HOME` -3. `~/.codex` +仅把 API Key 或访问令牌设为环境变量不会创建 `auth.json`。CLI 按 `--codex-dir`、`CODEX_HOME`、`~/.codex` 的顺序查找 Codex 文件。 -## 在桌面端保存 Profile - -1. 选择 **Codex → Profiles**。 -2. 选择**新建 Profile**。 -3. 输入创建后不会改变的 Profile ID,以及用于显示的名称。 -4. 保存第一个 Profile 时,把当前 Codex 设置保存到默认的 `shared` 配置集。 - -第一个 Profile 会成为当前 Profile。要保存另一个登录,请运行对应的 Codex 登录命令,返回 ProfileDeck,再保存一个 Profile。如果两个登录应使用相同设置,请复用当前配置集;如果设置需要独立变化,请保存新配置集。 - -## 使用 CLI 保存 Profile +## 保存 Profile ```bash -profiledeck-cli init -profiledeck-cli codex detect profiledeck-cli codex profile create work ``` -第一个 Profile 会保存当前登录和设置、创建 `shared` 配置集,并成为当前 Profile。后续 Profile 默认复用当前配置集: +第一个 Profile 会保存当前登录,并将设置存入 `shared` 配置集。登录另一个账号后可再创建 Profile;默认复用当前配置集,需要独立设置时指定新配置集: ```bash -# 请先运行对应的 Codex 登录命令。 profiledeck-cli codex profile create personal +profiledeck-cli codex profile create client --new-config-set client ``` -需要独立保存当前设置时,运行: - -```bash -profiledeck-cli codex profile create client \ - --new-config-set client \ - --config-set-name "Client" -``` - -## 管理配置集 - -在桌面端 Codex Profiles 页面打开**配置集**。可以创建、复制、重命名或删除已保存设置。仍有 Profile 使用的配置集不能删除。 - -对应的 CLI 命令只显示摘要,不会打印完整设置: - -```bash -profiledeck-cli codex config-set list -profiledeck-cli codex config-set show shared -profiledeck-cli codex config-set create experimental --name "Experimental" -profiledeck-cli codex config-set copy shared local --name "Local" -profiledeck-cli codex config-set update local --description "Local models" -profiledeck-cli codex config-set delete local --yes -``` - -为非当前 Profile 选择其他已保存设置: - -```bash -profiledeck-cli codex profile set-config work shared -``` +修改共享配置集会影响所有使用它的 Profile。要为非当前 Profile 更换已保存设置,可运行 `profiledeck-cli codex profile set-config `。共享和删除规则见[Profile 与配置集](../guide/concepts.md)。 ## Fork Profile -Fork 会把已保存的 Codex 数据添加到目标 Profile。目标可以是新 Profile,也可以是尚无 Codex 数据的现有 Profile;其中其他 Agent 的数据不会改变。如果目标 Profile 的登录或配置集需要独立变化,请复制对应内容,避免影响来源 Profile。 - -桌面端会在 Fork 表单中提供共享或复制选项。使用 CLI 时,至少一项必须使用 `copy-new`: +Fork 可以把 Codex 数据加入新 Profile,或加入尚无 Codex 数据的现有 Profile。登录和设置可分别共享或复制,但至少要复制一项。例如,共享登录、复制设置: ```bash -profiledeck-cli codex profile fork work client-login \ - --credential-binding copy-new \ - --config-binding share-parent - -profiledeck-cli codex profile fork work client-config \ +profiledeck-cli codex profile fork work client \ --credential-binding share-parent \ --config-binding copy-new \ - --new-config-set client-config + --new-config-set client ``` ## 保存更改并切换 -Codex 继续使用普通的 `auth.json` 和 `config.toml` 文件。离开当前 Profile 前,ProfileDeck 会保留当前登录或设置中的有效更改。 - -如果要在登录其他账号或替换当前文件前保存,请打开当前 Profile 的 **…** 菜单,选择**保存当前登录与设置**,或运行: +Codex 继续使用普通的 `auth.json` 和 `config.toml`。切离当前 Profile 时,ProfileDeck 会保存有效更改。如果准备登录其他账号或替换这些文件,可以先运行: ```bash profiledeck-cli codex profile save-current ``` -在桌面端选择**使用 Profile**,审核隐藏敏感值的预览,然后确认。使用 CLI 时运行: - -```bash -profiledeck-cli switch codex work --dry-run -profiledeck-cli switch codex work --yes -``` - -`--dry-run` 预览是可选的只读操作。要确保切换内容与之前的预览一致,请传入计划指纹: - -```bash -profiledeck-cli switch codex work \ - --plan-fingerprint \ - --yes -``` - -当前 `auth.json` 或 `config.toml` 缺失或无效时,预览会提示它不会被保存;确认切换后,ProfileDeck 可以使用所选 Profile 重新创建该文件。当前状态不受支持、无法安全检查或在审核后发生变化时,ProfileDeck 会在写入前停止。请先打开“诊断”或运行 `profiledeck-cli doctor`,再重试。 - -## 删除 Profile - -在桌面端打开 Profile 的操作菜单并选择**删除 Profile**,或运行: - -```bash -profiledeck-cli codex profile delete work --yes -``` - -这会从所有 Agent 中删除完整的全局 Profile,而不只是 Codex 数据。只有该 Profile 使用的已保存登录和配置集也会删除,共享数据会保留。当前 Profile 或存在未完成操作的 Profile 不能删除。删除不会修改 Codex 的 `auth.json`、`config.toml` 或其他工具当前使用的状态。 +工作文件缺失或无效时,ProfileDeck 会提示不保存该文件;切换仍可用所选 Profile 中有效的文件恢复它。切换命令和恢复行为见[审核并切换](../operations/switching.md)。 ## 检查限额并保持登录 -桌面端可以检查 ChatGPT Codex 登录和兼容 API Key 服务的限额。ProfileDeck 会在启动时和成功切换后检查一次当前 Profile;之后需要更新时,请使用**刷新限额**。ChatGPT 检查可能会续期受支持的 Codex 登录,并保存刷新后的登录。 - -可以在 Profile 详情页或 **Codex → 设置**中,把自动刷新限额设为关闭、5、10、30 或 60 分钟。受支持的 ChatGPT 登录还可以启用**自动续期登录**。两项设置默认关闭,并且只在 ProfileDeck 打开或隐藏到菜单栏时运行。 +桌面端可以检查 ChatGPT Codex 登录和兼容 API Key 服务的限额。启动和切换后会检查当前 Profile。ChatGPT 自动刷新限额和自动续期登录均需主动开启,默认关闭;否则后续检查需手动执行。检查可能续期并保存登录。 -对于配置了绝对 HTTP 或 HTTPS 自定义 Base URL 的 API Key Profile,ProfileDeck 会使用已保存的 API Key 向 `/v1/usage` 发送一次兼容性请求。兼容响应可以显示剩余额度或钱包余额、套餐、到期时间和限流窗口。API Key 限额只在启动、切换后或手动刷新时检查,绝不会使用自动刷新间隔。使用 HTTP Base URL 时,API Key 和响应不会受到传输加密保护。 +对于设置了绝对 HTTP 或 HTTPS 自定义 Base URL 的 API Key Profile,限额检查会把已保存密钥发送到该地址的 `/v1/usage`。API Key 只在启动、切换后或手动操作时检查。HTTP 不会加密传输中的密钥或响应。Codex 访问令牌 Profile 不支持自动刷新限额或登录。 -限额信息只会临时保留,不会保存到磁盘或写入用量报告。ProfileDeck 只使用 API 服务响应中的当前快照,不会导入其中的历史用量。Codex 访问令牌 Profile 可以保存和切换,但不会自动刷新其限额或登录。 +限额快照仅临时保留,与[本地用量报告](./usage-cost.md)分开,也不能判断此前活动属于哪个 Profile。 diff --git a/docs/zh/codex/usage-cost.md b/docs/zh/codex/usage-cost.md index 8a9d2db..68e0a56 100644 --- a/docs/zh/codex/usage-cost.md +++ b/docs/zh/codex/usage-cost.md @@ -1,92 +1,34 @@ # Codex 用量与成本 -ProfileDeck 读取本地 Codex 会话数据,展示令牌用量、活动情况和 API 等价成本估算。报告保持离线,也不会把会话归属到某个 Profile 或 ChatGPT 账号。 +ProfileDeck 从本地 Codex 会话汇总令牌用量,并估算标准 API 等价成本。历史活动无法归属到某个 Profile、已保存登录或 ChatGPT 账号。桌面端运行时会同步;CLI 可以按需同步。 -## 在桌面端同步 - -桌面端会在启动后同步,并在 ProfileDeck 窗口打开或驻留菜单栏时继续同步。 - -如需调整间隔,请打开 **Codex → 设置 → 用量报告 → 更新频率**,选择 15 秒、30 秒、1 分钟、2 分钟或 5 分钟;默认值为 1 分钟。用量页面会显示最近一次同步结果,并报告无法读取的文件。 - -会话文件没有变化时,后台同步只检查文件信息,不会读取文件内容。文件正常追加后,只读取一小段完整性校验边界和新增部分。如果现有文件被截短,或 ProfileDeck 检测到之前的用量记录发生变化,它会保留已导入的历史并跳过该文件版本;文件再次变化或手动运行 CLI 同步后会重新检查。 - -## 使用 CLI 同步 - -运行: +## 同步用量 ```bash profiledeck-cli usage sync codex -``` - -ProfileDeck 默认读取: - -```text -$CODEX_HOME/sessions/**/*.jsonl -$CODEX_HOME/archived_sessions/*.jsonl -``` - -如果没有设置 `CODEX_HOME`,则使用 `~/.codex`。如需读取其他 Codex 主目录: - -```bash profiledeck-cli usage sync codex --codex-dir /path/to/codex-home ``` -你可以安全地重复同步,已导入的用量不会再次计数。无效、过大或不支持的记录会被跳过并报告,但其内容不会被保存。 - -删除 Codex Provider 也会删除其已保存用量报告。桌面端后台同步不会重新创建已删除的 Provider;再次运行这条 CLI 同步属于明确的用户操作,它可以重新建立 Codex Provider,并重新导入本地 Codex 日志中仍然存在的用量。 - -## 查看摘要 - -```bash -profiledeck-cli usage summary -profiledeck-cli usage summary --json -``` - -摘要包含事件数、输入和输出令牌、缓存输入、令牌总量、可用时的成本估算,以及成本未知的事件数。 +默认读取 `CODEX_HOME` 或 `~/.codex` 下的会话。重复同步不会重复计数。无效或不支持的记录会跳过并报告,不会修改源文件。删除 Codex Provider 会删除已保存的用量报告;再次明确运行 CLI 同步,可重新导入本地仍存在的记录。 ## 查看报告 ```bash -profiledeck-cli usage report -profiledeck-cli usage report --range today -profiledeck-cli usage report --range 30d --json -profiledeck-cli usage report --range all +profiledeck-cli usage summary +profiledeck-cli usage report --range 30d ``` -默认范围是 `7d`。可用范围如下: - -- `today`:当前本地自然日,按小时分组; -- `7d`:今天和之前六个本地自然日; -- `30d`:今天和之前 29 个本地自然日; -- `all`:跨度不超过 36 个月时按月分组,超过后按年分组。 - -报告使用电脑的本地时区,包含令牌总量、会话数、缓存命中率、已知成本、定价覆盖率、模型明细和同步状态。没有时间戳的记录会计入全量报告的总量和模型明细,其数量会单独显示,但不会出现在时间趋势中。 +报告默认范围为 `7d`,还可选 `today`、`30d` 和 `all`,按电脑本地时区统计。没有时间戳的记录计入全量总数,不进入时间趋势。需要机器可读结果时添加 `--json`。 ## 理解成本估算 -ProfileDeck 根据 [OpenAI 标准 API 价格](https://developers.openai.com/api/docs/pricing)估算成本,按每条记录的准确模型名称和发生日期选择价格。早于已核实价格的记录,或模型名称为 `chat-latest` 等可变别名的记录,成本保持未知。价格更新后,已有估算不会改变;再次同步可补齐此前未知的成本。因此,一份报告可能包含价格更新前后的估算。 - -- `estimated`:所选用量都有可用价格; -- `partial`:只能估算所选用量中的一部分; -- `unknown`:至少一条所选记录没有可用价格。 - -报告始终保留令牌总量,并显示已知成本小计。定价覆盖率表示所选令牌用量中可估价的比例。 - -如果本地记录缺少应用缓存写入或长上下文费率所需的详情,ProfileDeck 会显示部分估算。 +ProfileDeck 使用依据 [OpenAI 标准 API 价格](https://developers.openai.com/api/docs/pricing)编制的价格表,按准确模型名称和记录日期匹配。无法确认的模型别名、没有已核实价格的日期,以及缺少特殊费率所需详情的记录,成本可能未知或仅能部分估算。令牌总量和已知成本小计仍会显示。价格更新不会重算已有估算;再次同步可补齐此前未知的成本。 -应用启动时会检查价格更新,运行期间最多每 24 小时检查一次。CLI 在价格表需要更新时,会先检查再执行 `usage sync`;检查失败不会中断同步。你可以在 **设置 → 用量价格** 中单独管理自动检查,也可以使用: +内置价格表可离线使用。`usage report` 不请求计费服务,也不上传本地用量。检查或关闭价格更新: ```bash -profiledeck-cli usage pricing status profiledeck-cli usage pricing check profiledeck-cli usage pricing auto off -profiledeck-cli usage pricing auto on ``` -离线时可使用内置价格表。`usage report` 不会联网。ProfileDeck 只下载价格表,不会上传本地用量。 - -这些数值不是订阅账单、账号限额、发票或 ChatGPT 余额。生成用量报告时,ProfileDeck 不会请求计费 API。[Codex 限额查询](./profiles.md#检查限额并保持登录)是独立功能,不会改变用量报告,也不会为报告归属账号。 - -## 隐私范围 - -用量存储不包含原始提示词、原始回复、API 密钥或完整源文件路径。ProfileDeck 不会上传用量数据,也不会将其用于遥测。存储与备份建议见[本地数据与安全](../reference/data-security.md)。 +估算不是发票、订阅费用、账号限额或 ChatGPT 余额。[限额检查](./profiles.md#检查限额并保持登录)与用量报告分开。用量存储不包含提示词、回复、API Key 或完整源文件路径;详见[数据与安全](../reference/data-security.md)。 diff --git a/docs/zh/grok-build/profiles.md b/docs/zh/grok-build/profiles.md index 0f82f05..a5066d2 100644 --- a/docs/zh/grok-build/profiles.md +++ b/docs/zh/grok-build/profiles.md @@ -1,143 +1,50 @@ # Grok Build Profile -一个 Grok Build Profile 保存一份基于文件的登录和一组可复用的用户设置,这组设置称为配置集。Fork 到目标 Profile 时,可以分别选择共享或复制登录与设置。 - -ProfileDeck 只管理所选 Grok Home 中的 `auth.json` 和用户级 `config.toml`。会话、日志、插件、项目设置、托管配置及其他 Grok 文件不在其中。 +Grok Build Profile 保存 `auth.json` 中基于文件的登录和用户级 `config.toml` 设置,不包含会话、日志、插件、项目设置或托管配置。 ## 开始前准备 -先登录 Grok Build,并确认 Grok Home 中存在非空且有效的 `auth.json`。缺少 `config.toml` 不会阻止保存;根据当前文件创建配置集时,ProfileDeck 会将其保存为空设置。 - -CLI 命令按以下顺序查找 Grok Home: - -1. `--grok-home` -2. `GROK_HOME` -3. `~/.grok` - -首次成功设置会把 Grok Build Provider 绑定到该绝对路径。之后如果改用其他 Home,ProfileDeck 会拒绝操作,不会静默切换位置。 - -当 `GROK_AUTH` 或 `GROK_AUTH_PATH` 选择了其他认证来源时,创建 Profile、`save-current` 和切换不可用。执行这些操作前,请取消相关变量并让 Grok Build 使用 `auth.json`。 - -涉及文件变更时,请先结束活动 Grok 会话,完成后再启动新会话。ProfileDeck 会与 Grok Build 协调 `auth.json` 变更,但不会把进程或锁文件状态当作会话是否运行的依据。 +先用 Grok Build 登录,并确认 `auth.json` 存在、非空且有效。如果创建新配置集时缺少 `config.toml`,其中的设置为空。修改文件前请结束活动 Grok 会话,完成后再新建会话。 -## 在桌面端保存 Profile +Grok Home 按 `--grok-home`、`GROK_HOME`、`~/.grok` 的顺序选择,首次设置后位置固定。如果 `GROK_AUTH` 或 `GROK_AUTH_PATH` 选择了其他认证来源,则不能创建 Profile、保存或切换。 -1. 选择 **Grok Build → Profiles**。 -2. 选择**新建 Profile**。 -3. 输入创建后不会改变的 Profile ID,以及用于显示的名称。 -4. 保存第一个 Profile 时使用默认的 `shared` 配置集;只有它尚不存在时,ProfileDeck 才会根据当前设置创建。 - -第一个 Profile 会成为当前 Profile。要保存另一个登录,请先用 Grok Build 登录该账号,返回 ProfileDeck,再保存一个 Profile。复用当前配置集只会绑定其中已保存的设置,不会读取或覆盖当前 `config.toml`;需要单独保存当前设置时,请新建配置集。 - -## 使用 CLI 保存 Profile +## 保存 Profile ```bash -profiledeck-cli init -profiledeck-cli grok-build detect profiledeck-cli grok-build profile create work ``` -第一个 Profile 会保存当前登录、使用 `shared` 配置集,并成为当前 Profile。如果 `shared` 尚不存在,ProfileDeck 会根据当前设置创建;预先创建的 `shared` 会保持不变。后续 Profile 默认复用当前 Profile 的已保存配置集,不读取或覆盖当前 `config.toml`: +第一个 Profile 使用 `shared` 配置集;需要时根据当前设置创建。后续 Profile 复用当前 Profile 已保存的配置集,不读取正在使用的 `config.toml`。要单独保存当前设置: ```bash -grok logout -grok login -profiledeck-cli grok-build profile create personal +profiledeck-cli grok-build profile create client --new-config-set client ``` -需要独立保存当前设置时,运行: - -```bash -profiledeck-cli grok-build profile create client \ - --new-config-set client \ - --config-set-name "Client" -``` +使用其他 Grok Home 时,将全局选项放在命令前:`profiledeck-cli --grok-home /path/to/grok-home grok-build profile create work`。 -要使用其他 Grok Home,请把全局选项放在命令前: +Fork 时可分别共享或复制登录与配置集,但至少复制其中一项。例如,共享登录、复制设置: ```bash -profiledeck-cli --grok-home /path/to/grok-home grok-build detect -``` - -## 管理配置集 - -在桌面端 Grok Build Profiles 页面打开**配置集**。可以创建、复制、重命名或删除已保存设置。仍有 Profile 使用的配置集不能删除。 - -对应的 CLI 命令只显示摘要,不会打印 `config.toml`: - -```bash -profiledeck-cli grok-build config-set list -profiledeck-cli grok-build config-set show shared -profiledeck-cli grok-build config-set create experimental --name "Experimental" -profiledeck-cli grok-build config-set copy shared local --name "Local" -profiledeck-cli grok-build config-set update local --description "Local settings" -profiledeck-cli grok-build config-set delete local --yes -``` - -为非当前 Profile 选择其他已保存设置: - -```bash -profiledeck-cli grok-build profile set-config work shared -``` - -## Fork Profile - -Fork 会把已保存的 Grok Build 数据添加到目标 Profile。目标可以是新 Profile,也可以是尚无 Grok Build 数据的现有 Profile;其中其他 Agent 的数据不会改变。如果目标 Profile 的登录或配置集需要独立变化,请复制对应内容,避免影响来源 Profile。 - -桌面端会在 Fork 表单中提供共享或复制选项。使用 CLI 时,至少一项必须使用 `copy-new`: - -```bash -profiledeck-cli grok-build profile fork work client-login \ - --credential-binding copy-new \ - --config-binding share-parent - -profiledeck-cli grok-build profile fork work client-config \ +profiledeck-cli grok-build profile fork work client \ --credential-binding share-parent \ --config-binding copy-new \ - --new-config-set client-config + --new-config-set client ``` +共享和删除的影响见[Profile 与设置](../guide/concepts.md)。 + ## 保存更改并切换 -Grok Build 继续使用普通的 `auth.json` 和 `config.toml` 文件。离开当前 Profile 前,ProfileDeck 会保留当前登录或设置中的有效更改。请打开当前 Profile 的 **…** 菜单,选择**保存当前登录与设置**,或运行: +切离当前 Profile 时,ProfileDeck 会保存有效的登录和设置更改。替换正在使用的文件前,可以先运行: ```bash profiledeck-cli grok-build profile save-current ``` -显式保存要求 `auth.json` 非空且有效,并且 `config.toml` 存在且有效;空的 `config.toml` 仍然有效。任一条件不满足时,ProfileDeck 都不会更改已保存的登录或设置。创建 Profile 时,如果缺少 `config.toml`,仍可创建空设置。 - -在桌面端选择**使用 Profile**,审核操作、目标路径和警告,然后确认。使用 CLI 时运行: - -```bash -profiledeck-cli switch grok-build work --dry-run -profiledeck-cli switch grok-build work --yes -``` - -预览不会包含 `auth.json` 或 `config.toml` 正文。ProfileDeck 会在本地数据中逐字节保存这两个文件,但公开输出只显示操作、目标、路径和警告。 - -当前工作副本缺失或无效时,ProfileDeck 会警告它不会被保存;确认切换后,仍可恢复所选 Profile 中有效的已保存文件。如果 `config.toml` 包含认证覆盖设置,ProfileDeck 会提示 Grok Build 可能绕过所选的已保存登录,但不会打印该设置,也不会自动修改。 +显式保存要求 `auth.json` 有效且非空,并且 `config.toml` 存在且有效;空的 `config.toml` 仍有效。任一检查失败时,两项已保存内容都不会改变。切换仍可恢复所选 Profile 中有效的文件。预览会隐藏两个文件的正文。`config.toml` 中的认证覆盖设置可能绕过所选登录;ProfileDeck 会警告,但不会修改该设置。详见[审核并切换](../operations/switching.md)。 ## 查询 credits 额度 -ProfileDeck 桌面端启动时会查询一次当前 Grok Build Profile,成功切换后也会查询一次。要再次查询,请在当前 Profile 上选择**刷新 credits**。ProfileDeck 不会轮询;非当前 Profile 不能发起新查询。如果本次运行中已经查询过相同登录和设置组合,非当前 Profile 仍可能显示之前的快照。 - -查询会遵循当前 Grok Build 的网络和登录设置。Grok Build 可能续期当前登录。ProfileDeck 只在内存中保留 credits 结果,不会将其写入数据库、用量报告或应用备份。工作登录如有续期,之后仍由现有的显式保存当前状态或切换捕获流程处理。 - -查询 credits 需要受支持的 Grok Build 已保存登录,不支持通过 `GROK_AUTH` 或 `GROK_AUTH_PATH` 提供认证。 - -查询 credits 还需要可正常启动的 Grok Build。如果 ProfileDeck 无法启动 Grok Build,请更新或重新安装后再试。 - -如果通过 `GROK_BIN_DIR` 安装 Grok Build,请在 ProfileDeck 的环境中提供相同的绝对目录。 - -## 删除 Profile - -在桌面端打开 Profile 的操作菜单并选择**删除 Profile**,或运行: - -```bash -profiledeck-cli grok-build profile delete work --yes -``` - -这会从所有 Agent 中删除完整的全局 Profile,而不只是 Grok Build 数据。只有该 Profile 使用的已保存登录和配置集也会删除,共享数据会保留。当前 Profile 或存在未完成操作的 Profile 不能删除。删除不会修改 Grok Build 当前使用的文件。 +桌面端在启动和切换后检查当前 Profile,之后需要手动检查;非当前 Profile 不能刷新。检查使用已安装的 Grok Build,可能续期当前登录。结果仅临时保留,与[本地用量报告](./usage-cost.md)分开,也不是账号账单。 -[Grok Build 用量与估算成本](./usage-cost.md)仍然是基于本地会话记录的离线报告,与 credits 查询相互独立。此集成不支持实际账单或发票。ProfileDeck 不会为 credits 查询配置或管理 Grok Build 自身的网络或认证提供器。 +检查需要受支持的已保存登录和可用的 Grok Build 安装;不支持 `GROK_AUTH`、`GROK_AUTH_PATH`。如果安装时使用了 `GROK_BIN_DIR`,请让 ProfileDeck 也能访问同一个绝对目录。 diff --git a/docs/zh/grok-build/usage-cost.md b/docs/zh/grok-build/usage-cost.md index fce64aa..69dcf1e 100644 --- a/docs/zh/grok-build/usage-cost.md +++ b/docs/zh/grok-build/usage-cost.md @@ -1,85 +1,29 @@ # Grok Build 用量与成本 -ProfileDeck 读取本地 Grok Build 会话记录,展示令牌用量、活动情况、API 等价成本估算和 Grok 上报成本。报告保持离线,也不会把活动归属到某个 Profile、已保存登录或账号。 +ProfileDeck 从本地 Grok Build 会话汇总令牌用量、API 等价估算和 Grok 上报金额。历史活动无法归属到某个 Profile、已保存登录或账号。桌面端运行时会同步;CLI 可以按需同步。 -## 在桌面端同步 - -桌面端会在启动后同步,并在 ProfileDeck 窗口打开或驻留菜单栏时继续同步。 - -如需调整间隔,请打开 **Grok Build → 设置 → 用量报告 → 更新频率**,选择 15 秒、30 秒、1 分钟、2 分钟或 5 分钟;默认值为 1 分钟。Codex 与 Grok Build 分别使用独立的间隔和同步状态。 - -会话文件没有变化时,后台同步只检查文件信息,不会读取文件内容。文件正常追加后,只读取一小段完整性校验边界和新增部分。 - -后台同步只使用现有 Grok Build Provider。如果尚未创建,请打开 **Grok Build → Profiles** 创建一个 Profile,或明确运行一次 CLI 同步。 - -## 使用 CLI 同步 - -运行: +## 同步用量 ```bash profiledeck-cli usage sync grok-build -``` - -ProfileDeck 按 `--grok-home`、`GROK_HOME`、`~/.grok` 的顺序确定 Grok Home。Provider 已存在时,解析出的位置必须与其中保存的 Grok Home 一致。如需指定位置: - -```bash profiledeck-cli --grok-home /path/to/grok-home usage sync grok-build ``` -现有 Provider 绝不会静默改绑到其他 Grok Home。 - -ProfileDeck 读取以下位置匹配的普通文件: - -```text -/sessions/*/*/updates.jsonl -``` - -它不会跟随符号链接。嵌套的 `subagents` 记录会被排除,因为 Grok Build 已把成功子代理的用量计入完成的父回合。 - -你可以安全地重复同步,已导入的用量不会再次计数。缺少用量、空用量或用量不完整的记录会被跳过。如果文件在读取期间发生变化,包含过大或格式错误的终态记录,或出现无法识别的终态格式,ProfileDeck 不会提交该文件中的任何新数据。文件发生变化后,后台同步会重新检查;CLI 同步会立即检查。源文件不会被移动或修改。 - -Grok Build 会话记录新增的字段会被安全忽略;已知字段仍必须使用预期类型,令牌总量也必须保持一致。 - -Fork 复制的历史只计算一次。同一个已完成回合以相同用量出现在多个会话时,ProfileDeck 会将其稳定归入一个派生会话,不保存原始会话标识;如果同一回合的用量冲突,则不会提交受影响的文件,直到文件发生变化或再次运行 CLI 同步。 - -删除 Grok Build Provider 也会删除已保存的用量报告、导入进度和同步设置。桌面端后台同步不会重新创建已删除的 Provider;再次运行这条 CLI 同步属于明确的用户操作,它可以重新建立 Provider,并重新导入本地会话文件中仍然存在的用量。 - -## 查看摘要 - -```bash -profiledeck-cli usage summary --provider grok-build -profiledeck-cli usage summary --provider grok-build --json -``` - -摘要包含事件数、输入和输出令牌、缓存输入、令牌总量、可用时的 API 等价估算和 Grok 上报成本,以及两种金额各自成本未知的事件数。 +所选 Grok Home 必须与此工具已保存的位置一致。重复同步不会重复计数,也不会修改源文件。用量不完整的记录会跳过。如果文件在读取时变化或用量冲突,该文件的新数据不会导入;再次运行 CLI 同步会重新检查。删除 Grok Build Provider 会删除报告和同步设置;明确运行 CLI 同步可重新导入本地仍存在的记录。 ## 查看报告 ```bash -profiledeck-cli usage report --provider grok-build -profiledeck-cli usage report --provider grok-build --range today -profiledeck-cli usage report --provider grok-build --range 30d --json -profiledeck-cli usage report --provider grok-build --range all +profiledeck-cli usage summary --provider grok-build +profiledeck-cli usage report --provider grok-build --range 30d ``` -默认范围是 `7d`。报告使用电脑的本地时区,包含令牌总量、会话数、缓存命中率、API 等价估算与 Grok 上报成本的小计及各自覆盖率、模型明细和同步状态。没有时间戳的记录会计入全量报告的总量和模型明细,其数量会单独显示,但不会出现在时间趋势中。 - -## 理解成本估算 - -ProfileDeck 使用参考 [xAI 标准 API 价格](https://docs.x.ai/developers/pricing)的价格表,按模型和记录发生日期选择费率。Grok Build 的 `grok-4.7-build` 记录会按标准版 `grok-4.7` 费率计算 API 等价估算。Fast 变体、其他内部 `*-build` 标识和可变的 `*-latest` 别名,在无法核实其准确模型映射时仍保持未知。会话记录无法判断单次请求是否进入长上下文价格阶梯,因此估算使用短上下文费率。 - -如果会话包含缓存创建令牌,且该模型有已核实的短上下文费率,ProfileDeck 会显示部分估算。 - -ProfileDeck 还会显示 Grok 在已完成会话记录中上报的金额。如果部分调用没有上报金额,则显示已知金额的小计,并标记为部分上报。只有金额完整的记录才计入上报成本覆盖率;如果所选记录均无上报金额,则上报成本不可用。 - -API 等价估算与 Grok 上报金额分开显示,不会相加。模型无法识别或记录早于已核实价格时,令牌用量和 Grok 上报金额仍会保留,API 等价成本则为未知。价格更新后,已有估算不会改变;再次同步可补齐此前未知的成本。因此,一份报告可能包含价格更新前后的估算。 - -应用启动时会检查价格更新,运行期间最多每 24 小时检查一次。CLI 在价格表需要更新时,会先检查再执行 `usage sync`;检查失败不会中断同步。你可以在 **设置 → 用量价格** 中单独管理自动检查,也可以使用 `profiledeck-cli usage pricing status`、`check` 和 `auto on|off`。离线时可使用内置价格表,`usage report` 不会联网。 +报告默认范围为 `7d`,还可选 `today`、`30d` 和 `all`,按电脑本地时区统计。没有时间戳的记录计入全量总数,不进入时间趋势。需要机器可读结果时添加 `--json`。 -Grok Build 的用量限额面板可能只覆盖进程启动或恢复运行之后的活动;ProfileDeck 报告则读取所选日期内本地会话历史中的已完成回合。因此,即使两者都来自同一会话,总量也可能不同。 +## 理解成本数值 -这两种金额都不是发票、credits 余额、配额或实际账单费用。同步或生成报告时,ProfileDeck 不会连接 xAI 或计费 API。 +API 等价估算使用依据 [xAI 标准 API 价格](https://docs.x.ai/developers/pricing)编制的价格表,按模型和记录日期匹配。`grok-4.7-build` 按标准 `grok-4.7` 费率估算。无法核实的模型变体、较早日期或缺少特殊费率详情,可能使估算未知或仅能部分估算。Grok 上报金额单独显示;缺少金额时,小计标为部分上报。两种金额不会相加。会话记录无法判断长上下文价格阶梯,因此估算使用短上下文费率。 -## 隐私范围 +价格更新不会重算已有估算;再次同步可补齐此前未知的成本。内置价格表可离线使用。`usage report` 不请求计费服务,也不上传本地用量。 -用量存储不包含原始提示词、代理结果、API 密钥、直接会话标识或完整源文件路径。ProfileDeck 不会上传用量数据,也不会将其用于遥测。存储与备份建议见 [本地数据与安全](../reference/data-security.md)。 +两种金额都不是发票、credits 余额、配额或实际账单费用。[Credits 检查](./profiles.md#查询-credits-额度)覆盖的时间可能与本地会话报告不同。用量存储不包含提示词、代理结果、API Key 或完整源文件路径;详见[数据与安全](../reference/data-security.md)。 diff --git a/docs/zh/guide/concepts.md b/docs/zh/guide/concepts.md index 8bc268a..592d517 100644 --- a/docs/zh/guide/concepts.md +++ b/docs/zh/guide/concepts.md @@ -1,57 +1,23 @@ # Profile、登录与设置 -Profile 用来标记某个受支持工具应使用的登录和设置。保存 Profile 不会立即修改对应工具;只有确认切换或恢复未完成切换后,ProfileDeck 才会修改工具文件或系统登录。 +Profile 保存登录和设置。一个 Profile 可以包含多个工具的数据,但每个工具分别记录自己的当前 Profile。创建或编辑 Profile 只改变 ProfileDeck 保存的数据;[切换](../operations/switching.md)才会修改所选工具正在使用的登录或文件。 -## Profile 保存什么 - -| 工具 | 保存的登录 | 保存的设置 | -| --- | --- | --- | -| Codex | 一份 Codex 登录 | 一组已保存的 Codex 设置(配置集) | -| Claude Code | 一份账号登录 | 不包含设置 | -| Antigravity | 一份个人 OAuth 登录 | 不包含设置 | -| Grok Build | 一份基于文件的登录 | 一组已保存的 Grok Build 设置(配置集) | - -每个 Profile 都有用于 CLI 命令和链接的永久 ID。不同工具共用同一个 Profile ID 命名空间,一个 Profile 也可以包含多个工具的已保存数据。 - -## 当前 Profile - -ProfileDeck 会分别记录每个受支持工具的当前 Profile。当前 Profile 对应该工具正在使用的登录或文件: - -- Codex 使用当前 Codex 目录中的 `auth.json` 和 `config.toml`。 -- Claude Code 在 macOS 上将账号登录保存在 Keychain,在 Linux 和 Windows 上保存在凭据文件。 -- Antigravity 使用系统凭据存储中的当前登录。 -- Grok Build 使用已绑定 Grok Home 中的 `auth.json` 和 `config.toml`。 - -离开当前 Profile 前,ProfileDeck 会在可以安全保存时保留有效的刷新登录或有效的 Codex、Grok Build 设置。内容缺失、无效或不受支持时,ProfileDeck 会报告问题,不会静默保存。 - -## 已保存登录 - -一份登录可以由多个 Profile 共享。更新共享登录会影响所有使用它的 Profile,因此桌面端会在保存前显示受影响的 Profile 数量。 - -ProfileDeck 可能显示 Codex Account ID 的末尾字符,帮助区分不同登录。这个值只用于显示,不会决定更新或共享哪份登录。 +Profile ID 创建后不能修改,并在各工具之间共用。一份已保存登录可被多个 Profile 共用;更新它会影响所有使用它的 Profile。保存前,ProfileDeck 会显示受影响的数量。 ## 配置集 -配置集是 Codex 或 Grok Build 用户级 `config.toml` 的可复用副本。两个工具分别拥有自己的配置集。每个工具的第一个 Profile 使用名为 `shared` 的配置集;如尚不存在,会根据当前设置创建;后续 Profile 可以复用它,也可以保存独立副本。 +Codex 和 Grok Build 还会把用户级 `config.toml` 设置保存为配置集,两种工具的配置集互不共用。第一个 Profile 使用 `shared`;必要时根据当前设置创建。之后的 Profile 可以复用或另存一份。 -多个 Profile 共享配置集时,保存更改后的设置会同时更新这些 Profile。如果某个 Profile 的设置需要独立变化,请复制配置集。只有未被任何 Profile 使用的配置集才能删除。 - -配置集不包含会话、日志、插件、Skills、项目设置、托管配置或系统策略。 +修改共享配置集会影响所有使用它的 Profile。需要独立修改时请复制。配置集不包含会话、日志、插件、项目设置或系统策略。 ## 删除 Profile -删除会从所有 Agent 中移除完整的 Profile。ProfileDeck 还会删除只有该 Profile 使用的已保存登录和配置集,但会保留共享数据和无关的未绑定数据。Profile 是任一 Agent 的当前 Profile,或仍有未完成操作引用它时,不能删除。 - -删除只会更改 ProfileDeck 保存的数据,并会清除引用该 Profile 的已完成操作记录;它不会退出工具登录、替换当前设置或删除工具工作文件。 +```bash +profiledeck-cli profile delete --yes +``` -## ProfileDeck 会修改什么 - -创建、编辑或 Fork Profile 时,只会更改 ProfileDeck 保存的数据。确认切换或恢复未完成切换后,ProfileDeck 才可能修改所选工具正在使用的登录或文件。 - -每次修改前,ProfileDeck 都会根据工具当前状态重新检查并创建临时操作恢复点。正常流程请参阅[审核并切换](../operations/switching.md);操作未完成时请参阅[诊断与恢复](../operations/recovery.md)。成功切换不能撤销。 +删除会从所有工具中移除完整的 Profile,以及只有它使用的已保存登录和配置集;共享数据保留。当前 Profile 或仍被未完成切换引用的 Profile 不能删除。删除不会退出工具登录,也不会更改工具正在使用的文件。 ## 本地数据 -Profile、配置集、已保存登录、偏好设置、用量报告和操作历史都保存在 ProfileDeck 本地数据目录中。受支持工具仍然拥有自己正在使用的文件和系统凭据条目。 - -已保存数据、操作恢复点和加密应用备份都可能包含完整登录数据。复制、导出或删除 ProfileDeck 数据前,请阅读[数据与安全](../reference/data-security.md)。 +ProfileDeck 在本地保存 Profile、登录、设置、用量报告和备份。当前数据库和未完成切换的恢复数据可能包含完整登录内容。复制或分享这些文件前,请阅读[数据与安全](../reference/data-security.md)。 diff --git a/docs/zh/guide/generic-targets.md b/docs/zh/guide/generic-targets.md index 58d3ebb..de7756b 100644 --- a/docs/zh/guide/generic-targets.md +++ b/docs/zh/guide/generic-targets.md @@ -1,27 +1,15 @@ # 切换其他配置文件 -通用目标是高级 CLI 功能,用于切换用户明确选择的本地配置文件。Codex、Claude Code、Antigravity 和 Grok Build 必须使用各自的 Profile 命令;通用目标命令不能修改这些工具管理的登录或设置。 +通用目标是高级 CLI 功能,用于切换用户指定的本地配置文件。它不能管理 Codex、Claude Code、Antigravity 或 Grok Build 的登录与设置;这些工具应使用各自的 Profile 命令。 -## 开始前准备 +请使用普通文件的绝对路径;不支持符号链接。先决定替换整个文件还是合并部分值;可能包含敏感内容时,请仔细审核预览。 -- 运行 `profiledeck-cli init` 初始化 ProfileDeck。 -- 使用普通本地文件的绝对路径。 -- 确定要替换整个文件,还是只合并指定值。 - -ProfileDeck 不会修改通过符号链接访问的文件。如果目标文件包含敏感值,请仔细审核预览。 - -## 创建工具和 Profile +## 保存文件目标 ```bash +profiledeck-cli init profiledeck-cli provider create my-tool --adapter generic --name "My Tool" profiledeck-cli profile create work --name "Work" -``` - -Provider ID 用于在后续命令中标识工具;Profile ID 用于标识要切换到的已保存设置。 - -## 添加配置文件 - -```bash profiledeck-cli profile target add work settings \ --provider my-tool \ --path /absolute/path/to/settings.json \ @@ -30,37 +18,20 @@ profiledeck-cli profile target add work settings \ --value-json '{"model":"example-model"}' ``` -## 选择文件修改方式 - -| 策略 | 格式 | `--value-json` 提供的内容 | +| 策略 | 格式 | `--value-json` | | --- | --- | --- | | `replace-file` | `text`、`json`、`toml`、`env` | `{"content":"..."}`,替换整个文件。 | -| `json-merge` | `json` | 合并到当前 JSON 文件的 JSON 对象。 | -| `toml-merge` | `toml` | 转换为 TOML 后合并的 JSON 对象。 | -| `env-merge` | `env` | 转换为环境变量赋值的字符串 JSON 对象。 | +| `json-merge` | `json` | 合并到文件中的 JSON 对象。 | +| `toml-merge` | `toml` | 转为 TOML 后合并的 JSON 对象。 | +| `env-merge` | `env` | 转为变量赋值的字符串 JSON 对象。 | -使用合并策略时,当前文件必须是有效的 JSON、TOML 或 env 内容。内容无效时,请先修复文件,再执行切换。 +合并前,现有文件内容必须有效。添加或编辑目标只更改 ProfileDeck 保存的规则;切换成功后才会修改外部文件。 -## 审核并切换 - -预览是可选操作: +## 切换文件 ```bash profiledeck-cli switch my-tool work --dry-run profiledeck-cli switch my-tool work --yes ``` -预览会显示所选文件,并隐藏疑似敏感值。应用前,ProfileDeck 会再次检查文件并创建操作恢复点。 - -## 查看或恢复 - -```bash -profiledeck-cli provider list -profiledeck-cli profile list -profiledeck-cli profile target list work -profiledeck-cli profile target show work my-tool settings -``` - -添加或编辑目标时,只会修改已保存规则。只有 `profiledeck-cli switch` 成功后,外部文件才会改变。 - -如果切换没有完成,请先运行 `profiledeck-cli doctor`。恢复切换前状态的方法见[诊断与恢复](../operations/recovery.md)。成功切换不能撤销;如需更换配置,请切换到目标 Profile。 +预览可选,会隐藏疑似敏感值。切换失败时,运行 `profiledeck-cli doctor` 并按[恢复说明](../operations/recovery.md)处理。成功切换不能撤销。 diff --git a/docs/zh/guide/getting-started.md b/docs/zh/guide/getting-started.md index ee86140..7dfc427 100644 --- a/docs/zh/guide/getting-started.md +++ b/docs/zh/guide/getting-started.md @@ -1,186 +1,80 @@ # 快速开始 -使用桌面端可以获得可视化操作流程;CLI 适合终端操作。两种入口共用相同的 Profile、应用备份、操作恢复和切换规则。 - -## 开始前准备 - -- Universal 桌面端要求 macOS 14 或更高版本,支持 Apple 芯片和 Intel Mac。 -- Linux 发布支持 amd64;桌面端需要 GTK 4 和 WebKitGTK 6.0。 -- 构建 CLI 需要 Git、Go 1.27、Make 和 POSIX shell。 -- 先安装要管理的 AI Agent,并在保存第一个 Profile 前完成登录。 +保存第一个 Profile 前,先在对应工具中登录。桌面端会自动初始化 ProfileDeck;CLI 用户需要运行一次 `profiledeck-cli init`。 ## 在 macOS 上安装桌面端 -1. 从 [ProfileDeck Releases](https://github.com/strahe/profiledeck/releases) 下载最新的 macOS Universal DMG。正式版使用 `X.Y.Z`,Beta 版使用 `X.Y.Z-beta.N`。 -2. 打开 DMG,把 `ProfileDeck.app` 拖到“应用程序”文件夹。 -3. 打开 ProfileDeck。应用会自动创建本地数据。如果已有当前 Codex 或 Antigravity Profile,启动时还会检查其限额。Codex 可能在检查过程中刷新已保存登录;Antigravity 检查只读取数据。 -4. 在侧栏选择 Codex、Claude Code、Antigravity 或 Grok Build,然后打开 **Profiles**。 - -发布的 DMG 已使用 Developer ID 签名并通过 Apple 公证。如果 macOS 提示应用已损坏或无法验证开发者,请删除该副本,并从官方 Releases 页面重新下载,不要绕过安全警告。 +需要 macOS 14 或更高版本。从 [ProfileDeck Releases](https://github.com/strahe/profiledeck/releases) 下载 Universal DMG 并安装 `ProfileDeck.app`。 -macOS 桌面端可在**设置 → 常规 → 应用更新**中选择正式版或 Beta 更新。本地开发构建不会检查更新。详见[更新桌面端](./updates.md)。 +如果 macOS 提示应用已损坏或无法验证开发者,请从官方 Releases 页面重新下载,不要绕过安全警告。正式版与 Beta 更新见[更新桌面端](./updates.md)。 ## 在 Linux amd64 上安装 -请选择一种安装方式: - -- **DEB 或 RPM 软件包:**同时安装桌面端与 CLI;新版软件包从 GitHub Releases 手动安装。 -- **便携版桌面端:**仅桌面端;请放在当前用户可写的目录,以便应用内更新。详见[更新桌面端](./updates.md)。 +Linux 桌面端需要 GTK 4 和 WebKitGTK 6.0。DEB、RPM 同时包含桌面端与 CLI;便携版压缩包只包含桌面端。 ### 安装 DEB 或 RPM -正式版和 Beta 版 DEB、RPM 都会安装 `profiledeck` 桌面端与 `profiledeck-cli` 命令,添加桌面启动项,并声明 GTK 4 与 WebKitGTK 6.0 依赖。DEB 会在 Ubuntu 24.04 上做安装冒烟测试,RPM 会在 Fedora 44 上测试。 - -在 Ubuntu 24.04 上,从 [ProfileDeck Releases](https://github.com/strahe/profiledeck/releases) 下载 `ProfileDeck__linux_amd64.deb`,然后安装: +从 [ProfileDeck Releases](https://github.com/strahe/profiledeck/releases) 下载对应软件包: ```bash sudo apt install ./ProfileDeck__linux_amd64.deb -``` - -在 Fedora 44 上,下载 `ProfileDeck__linux_amd64.rpm`,然后安装: - -```bash +# 或 sudo dnf install ./ProfileDeck__linux_amd64.rpm ``` -从应用菜单打开 ProfileDeck,或运行 `profiledeck`。CLI 位于 `/usr/bin/profiledeck-cli`,已在 `PATH` 中。 - -这类安装不会在应用内检查或下载更新。请从 GitHub Releases 下载新版对应软件包,再用相同命令安装。详见[更新 Linux 软件包](./updates.md#更新-linux-软件包)。 - -接下来请[保存第一个 Profile](#保存第一个-profile)。 +CLI 命令为 `profiledeck-cli`。后续版本仍需用软件包安装;这类构建不会在应用内更新。 ### 便携版桌面端 -适合只要桌面端,并由应用内更新的场景。 - -1. 先安装运行库: +安装运行库,并从 [ProfileDeck Releases](https://github.com/strahe/profiledeck/releases) 下载 Linux tar 压缩包: ```bash sudo apt install libgtk-4-1 libwebkitgtk-6.0-4 # 或:sudo dnf install gtk4 webkitgtk6.0 ``` -2. 从 [ProfileDeck Releases](https://github.com/strahe/profiledeck/releases) 下载 `ProfileDeck__linux_amd64.tar.gz`。 - -3. 解压并链接到当前用户可写的目录: +在当前用户可写的目录中解压并运行: ```bash -mkdir -p "$HOME/.local/opt/profiledeck" "$HOME/.local/bin" +mkdir -p "$HOME/.local/opt/profiledeck" tar -xzf ProfileDeck__linux_amd64.tar.gz -C "$HOME/.local/opt/profiledeck" -ln -sf "$HOME/.local/opt/profiledeck/profiledeck" "$HOME/.local/bin/profiledeck" +"$HOME/.local/opt/profiledeck/profiledeck" ``` -4. 运行 `profiledeck`(请确保 `$HOME/.local/bin` 在 `PATH` 中)。 - -压缩包只包含 `profiledeck`,不含 CLI。需要 `profiledeck-cli` 命令时请使用 DEB 或 RPM。请把安装目录保持为可写,以便 ProfileDeck 在验证更新后替换程序。详见[更新桌面端](./updates.md)。 - -接下来请[保存第一个 Profile](#保存第一个-profile)。 +安装目录须保持可写,才能使用[应用内更新](./updates.md)。压缩包不含 CLI。 ## 构建并使用 CLI -克隆公开仓库并构建命令: +从源码构建需要 Git、Go 1.27、Make 和 POSIX shell: ```bash git clone https://github.com/strahe/profiledeck.git cd profiledeck make build export PATH="$PWD/bin:$PATH" -profiledeck-cli version profiledeck-cli init ``` -`profiledeck-cli init` 会创建本地数据库、加密应用备份目录和操作恢复目录。要使用其他位置,请传入用户配置根目录: - -```bash -profiledeck-cli --config-dir /path/to/config-root init -``` - -ProfileDeck 会在该目录下创建 `profiledeck` 文件夹。 - -上面的 `export PATH=...` 只会更新当前 shell 的 `PATH`。如需在新终端中继续使用,请把此仓库的 `bin` 目录加入 shell 配置。 +如需使用其他数据位置,在命令前添加 `--config-dir /path/to/config-root`。 ## 保存第一个 Profile -先准备要使用的工具: - -- **Codex:**确认 `CODEX_HOME` 或 `~/.codex` 中存在 `config.toml` 和 `auth.json`。如果缺少 `auth.json`,请完成 [Codex 前置设置](../codex/profiles.md#开始前准备)。 -- **Claude Code:**在 Claude Code 中运行 `/login`。 -- **Antigravity:**登录 Antigravity,并确认可以正常使用。 -- **Grok Build:**登录后确认 `GROK_HOME` 或 `~/.grok` 中存在非空且有效的 `auth.json`。详见 [Grok Build 前置设置](../grok-build/profiles.md#开始前准备)。 +不同工具的登录前提如下: -在桌面端选择工具,然后使用 Profiles 页面中的保存操作。输入创建后不会改变的 Profile ID 和用于显示的名称。要保存另一个账号,请先在对应工具中切换登录,再回到 ProfileDeck 保存另一个 Profile。 +| 工具 | 保存前 | CLI 示例 | +| --- | --- | --- | +| Codex | 准备基于文件的登录和有效的 `config.toml`([详情](../codex/profiles.md#开始前准备)) | `profiledeck-cli codex profile create work` | +| Claude Code | 运行 `/login`([详情](../claude-code/profiles.md#开始前准备)) | `profiledeck-cli claude-code profile create personal` | +| Antigravity | 登录 Antigravity([详情](../antigravity/profiles.md#开始前准备)) | `profiledeck-cli antigravity profile create work` | +| Grok Build | 准备有效的 `auth.json`([详情](../grok-build/profiles.md#开始前准备)) | `profiledeck-cli grok-build profile create work` | -也可以使用以下 CLI 流程。 +运行 `profiledeck-cli init` 后,选择其中一条命令。保存另一个账号前,先在对应工具中登录该账号,再创建另一个 Profile。Profile ID 创建后不能修改。 -每组流程中的 `--dry-run` 命令都是可选预览;使用 `--yes` 应用切换。 - -### Codex +例如,预览并切换 Codex Profile: ```bash -profiledeck-cli codex detect -profiledeck-cli codex profile create work profiledeck-cli switch codex work --dry-run profiledeck-cli switch codex work --yes ``` -### Claude Code - -```bash -profiledeck-cli claude-code detect -profiledeck-cli claude-code profile create personal -profiledeck-cli switch claude-code personal --dry-run -profiledeck-cli switch claude-code personal --yes -``` - -切换后请新建 Claude Code 会话,并运行 `/status` 确认账号。 - -### Antigravity - -```bash -profiledeck-cli antigravity detect -profiledeck-cli antigravity profile create work -profiledeck-cli switch antigravity work --dry-run -profiledeck-cli switch antigravity work --yes -``` - -条件允许时,请先关闭 Antigravity,切换后再重新启动。 - -### Grok Build - -```bash -profiledeck-cli grok-build detect -profiledeck-cli grok-build profile create work -profiledeck-cli switch grok-build work --dry-run -profiledeck-cli switch grok-build work --yes -``` - -保存或切换文件前,请先结束活动 Grok 会话,完成后再启动新会话。 - -## 确认结果 - -切换成功后,桌面端会把所选 Profile 标记为**当前**。在 CLI 中,可以查看对应工具的 Profile 列表: - -```bash -profiledeck-cli codex profile list -profiledeck-cli claude-code profile list -profiledeck-cli antigravity profile list -profiledeck-cli grok-build profile list -``` - -如果 ProfileDeck 报告未完成的更改,或阻止继续切换,请打开**诊断**,或运行: - -```bash -profiledeck-cli doctor -``` - -只执行诊断功能明确建议的恢复操作。未完成切换恢复和应用备份恢复见[诊断与恢复](../operations/recovery.md)。成功切换不能撤销。 - -## 后续步骤 - -- [Codex Profile](../codex/profiles.md) -- [Claude Code Profile](../claude-code/profiles.md) -- [Antigravity Profile](../antigravity/profiles.md) -- [Grok Build Profile](../grok-build/profiles.md) -- [更新桌面端](./updates.md) -- [安全切换](../operations/switching.md) -- [数据与安全](../reference/data-security.md) +`--dry-run` 是可选预览。成功切换不能撤销;影响见[切换说明](../operations/switching.md)。如果切换被阻止或中断,运行 `profiledeck-cli doctor`,并按[恢复说明](../operations/recovery.md)处理。 diff --git a/docs/zh/guide/updates.md b/docs/zh/guide/updates.md index 7edb896..46c88e3 100644 --- a/docs/zh/guide/updates.md +++ b/docs/zh/guide/updates.md @@ -1,41 +1,22 @@ # 更新桌面端 -如何更新取决于你如何安装 ProfileDeck: +更新方式取决于安装方式: -- **macOS 应用**或 **Linux 便携版桌面端**:可在应用内检查更新。 -- **Linux DEB 或 RPM**:从 GitHub Releases 下载并安装新版软件包。应用内不会检查或下载更新。 -- **CLI** 与本地 **dev** 桌面端构建:不检查在线更新,也不显示更新通道选择器。 +| 安装方式 | 更新方法 | +| --- | --- | +| macOS 应用或 Linux 便携版桌面端 | 应用内更新 | +| Linux DEB 或 RPM | 从 [Releases](https://github.com/strahe/profiledeck/releases) 安装新版软件包 | +| 从源码构建的 CLI 或本地开发桌面端 | 手动重新构建或安装 | ## 应用内更新(macOS 与 Linux 便携版) -ProfileDeck 提供两个持久保存的更新通道: +正式版通道只接收正式版本;Beta 通道接收 Beta 和正式版本。首次运行时按当前构建选择通道,以后安装会保留你的选择。自动检查默认开启,启动时和持续运行期间约每六小时检查一次。更新准备好后,由你决定何时重启。 -- **正式版**只接收正式版本(`X.Y.Z`)。 -- **Beta**接收 Beta 版本(`X.Y.Z-beta.N`)和正式版本,因此可以从 Beta 升级到同版本或更高版本随后发布的正式版。 - -首次运行时,正式构建默认选择“正式版”,Beta 构建默认选择“Beta”。后续安装会保留你的选择;从 Beta 升级到正式版后也不会自动退出 Beta 通道。 - -### 检查更新 - -自动检查默认开启。ProfileDeck 会在启动后检查一次,并在保持打开或在后台运行(例如托盘)期间每 6 小时检查一次。 - -打开**设置 → 常规 → 应用更新**,可以选择更新通道、开启或关闭自动检查、立即检查,或查看下载进度。下载期间 ProfileDeck 会保持打开;发现更新后,侧栏也会显示下载和准备状态。 - -更新器处于空闲、已是最新版本或错误状态时可以切换通道。正在检查、下载或已有待重启更新时,需要先完成当前流程。自动检查开启时,切换通道后会立即按新通道检查。 - -### 安装已下载的更新 - -更新准备好后,在方便时选择左下角侧栏中的**重启并更新**。在你选择此操作前,ProfileDeck 会保持打开。 - -重启前,ProfileDeck 会验证更新并创建加密的自动应用备份。如果验证、备份或准备失败,ProfileDeck 不会安装更新,当前版本也会保持不变。更新前备份与其他自动备份合计保留最近 10 个。稍后返回**设置 → 常规 → 应用更新**重试。 - -在 Linux 便携版中,ProfileDeck 还会在创建备份和重启前,确认下载的更新可以安全移入可执行文件所在目录。如果当前安装无法安全替换,ProfileDeck 会保留现有版本,并关闭该安装的应用内更新;请改为手动下载新版便携包。见[便携版桌面端](./getting-started.md#便携版桌面端)。 +重启前,ProfileDeck 会验证下载内容并创建加密应用备份。准备失败时,当前版本保持不变。Linux 便携版的安装目录必须可写;如果无法安全替换程序,请手动下载新版便携包。 ## 更新 Linux 软件包 -DEB 和 RPM 安装不使用应用内更新。**设置 → 常规 → 应用更新**会说明需要从 GitHub Releases 安装新版软件包。 - -从 [ProfileDeck Releases](https://github.com/strahe/profiledeck/releases) 下载对应新版软件包,然后安装: +从 [ProfileDeck Releases](https://github.com/strahe/profiledeck/releases) 下载对应新版软件包并安装: ```bash sudo apt install ./ProfileDeck__linux_amd64.deb @@ -43,19 +24,4 @@ sudo apt install ./ProfileDeck__linux_amd64.deb sudo dnf install ./ProfileDeck__linux_amd64.rpm ``` -不要混用 DEB、RPM 安装与便携版应用内更新。若某版本有问题,请安装之后发布的修复版本。 - -见[安装 DEB 或 RPM](./getting-started.md#安装-deb-或-rpm)。 - -## 了解下载文件 - -GitHub Releases 提供: - -- 用于 macOS 安装的公证 Universal DMG -- 用于 macOS 应用内更新的公证 Universal ZIP -- 用于 Linux 便携版安装与更新的已签名单文件 tar 压缩包 -- 用于安装 Linux 桌面端与 CLI 的 DEB 和 RPM - -应用自行更新时,只会下载 Wails 签名更新清单选中的平台产物,并在准备更新前校验 SHA-512 摘要与 Ed25519ph 签名。 - -发布说明保存在对应的 [GitHub Release](https://github.com/strahe/profiledeck/releases) 中。 +DEB 和 RPM 不使用应用内更新。不要混用软件包安装与便携版更新。安装要求见[快速开始](./getting-started.md)。 diff --git a/docs/zh/index.md b/docs/zh/index.md index 8dccc1e..6811509 100644 --- a/docs/zh/index.md +++ b/docs/zh/index.md @@ -11,8 +11,6 @@ ProfileDeck 把本地 AI 编程工具的登录和设置保存为 Profile。需 | Linux 便携版桌面端 | 只要桌面端;用户目录中应用内更新 | [便携版桌面端](./guide/getting-started.md#便携版桌面端) | | 从源码构建 CLI | 在终端中使用或接入自动化流程 | [构建并使用 CLI](./guide/getting-started.md#构建并使用-cli) | -Universal 桌面端要求 macOS 14 或更高版本,可在 Apple 芯片和 Intel Mac 上原生运行。Linux 软件包和便携版桌面端要求 amd64、GTK 4 与 WebKitGTK 6.0。从源码构建 CLI 需要 Go 1.27 和 Make。 - ## 支持的工具 | 工具 | ProfileDeck 切换的内容 | 不受影响的内容 | @@ -22,26 +20,4 @@ Universal 桌面端要求 macOS 14 或更高版本,可在 Apple 芯片和 Inte | Antigravity | 个人 OAuth 登录 | 登录流程、设置、配额、Manager 数据以及 SSH 或容器登录文件 | | Grok Build | 基于文件的登录和可复用的用户级设置 | 会话、日志、插件、项目设置、托管配置和配额 | -Codex 和 Grok Build 用量报告与 Profile 切换相互独立。报告汇总本地会话数据,不会把用量归属到某个 Profile、已保存登录或账号。 - -桌面端还可以显示当前 Codex 或 Antigravity Profile 的临时使用限额快照。检查不会改变限额,也不会增加活动归属信息。 - -## 切换时会发生什么 - -1. 先审核将要发生的变化。登录内容始终隐藏。 -2. 确认切换后,ProfileDeck 会重新检查当前文件或登录。 -3. ProfileDeck 会在修改所选工具前创建临时恢复点。 -4. 只有变更成功后,所选 Profile 才会成为当前 Profile。 - -如果操作没有完成,请先打开“诊断”,或运行 `profiledeck-cli doctor`,再继续切换。 - -## 继续阅读 - -- [快速开始](./guide/getting-started.md) -- [了解 Profile、登录与设置](./guide/concepts.md) -- [管理 Codex Profile](./codex/profiles.md) -- [管理 Claude Code Profile](./claude-code/profiles.md) -- [管理 Antigravity Profile](./antigravity/profiles.md) -- [管理 Grok Build Profile](./grok-build/profiles.md) -- [查看 Grok Build 用量与估算成本](./grok-build/usage-cost.md) -- [了解数据与安全](./reference/data-security.md) +第一次使用见[快速开始](./guide/getting-started.md)。切换或移动已保存数据前,请阅读[切换说明](./operations/switching.md)和[数据与安全](./reference/data-security.md)。 diff --git a/docs/zh/operations/recovery.md b/docs/zh/operations/recovery.md index 3e56885..c2b282a 100644 --- a/docs/zh/operations/recovery.md +++ b/docs/zh/operations/recovery.md @@ -1,99 +1,52 @@ # 诊断、备份与恢复 -如果 Profile 切换被阻止或没有完成,请打开**诊断**。如果需要保护或恢复 ProfileDeck 保存的应用数据,请打开**设置 → 备份**。这是两个独立流程。 - -## 先检查未完成切换 - -任何未解决的切换都会阻止新的 Profile 切换和应用数据恢复。请先在“诊断”中恢复或安全关闭该操作;ProfileDeck 不会为了执行新操作而丢弃已有恢复点。 - -桌面端“诊断”只显示尚未解决的根切换操作,并为每项显示当前可安全执行的操作。 - -使用 CLI 时运行: - -```bash -profiledeck-cli doctor -profiledeck-cli doctor --json -``` - -如果诊断确认没有变更仍在运行,并提示可以修复切换锁,请使用桌面端提供的操作,或运行: - -```bash -profiledeck-cli doctor repair-lock --yes -``` - -不要仅因为切换耗时较长就修复锁。切换锁仍被持有,或 ProfileDeck 无法安全识别所有受影响目标时,恢复会被拒绝。 - -## 重试恢复文件清理 - -ProfileDeck 通常会在切换、恢复或应用恢复后删除临时操作恢复文件。如果清理未能完成,“诊断”会显示**临时恢复文件需要清理**。已保存数据、诊断和应用备份仍可使用,但 Profile 切换和应用恢复会暂停,直至清理成功。 - -在“诊断”中选择**重试清理**,或运行: - -```bash -profiledeck-cli doctor retry-cleanup --yes -``` - -清理只会移除不属于未解决切换的临时操作恢复文件,不会改变任何工具的登录信息或设置。如果重试提示另一个操作正在进行,请关闭其他 ProfileDeck 窗口。如果警告仍然存在,请继续保护好数据目录,并在解决提示的文件系统问题后重试。 +切换被阻止或中断时,运行 `profiledeck-cli doctor`。未完成切换得到处理前,不能开始新切换或恢复应用数据。 ## 处理未完成切换 -诊断会提供以下两种操作之一: - -- **关闭未完成记录**:ProfileDeck 已确认没有目标被修改,或所有目标已经处于切换前状态。 -- **恢复切换前状态**:所有目标仍处于切换前状态或本次切换的目标状态。 - -确认桌面端提供的操作,或使用 `doctor` 显示的操作 ID: - ```bash +profiledeck-cli doctor profiledeck-cli recover --yes ``` -恢复可能会还原工具自己的文件或所选系统登录,但不会改变当前 Profile。如果未完成切换后当前 Profile 发生变化、目标被其他程序修改、恢复数据损坏或目标无法读取,ProfileDeck 会拒绝写入并提示需要检查的内容。失败后仍可针对原始切换重试。 +使用“诊断”给出的操作 ID 和处理方式。恢复可能还原工具正在使用的文件或系统登录,但不会改变当前 Profile。如果目标已被其他程序修改,或无法安全检查,恢复会在写入前停止。解决报告的问题后,可以重试原操作。 -成功切换不会保留恢复文件,也不能撤销。如果希望使用其他配置,请选择目标 Profile 后重新切换。 +只有“诊断”确认没有切换正在运行并提供修复操作时,才运行 `profiledeck-cli doctor repair-lock --yes`。如果显示**临时恢复文件需要清理**,运行 `profiledeck-cli doctor retry-cleanup --yes`。清理不会更改工具登录或设置;成功清理前,切换和应用恢复仍不可用。 -## 创建和管理应用备份 +成功切换不能恢复或撤销。 -应用备份包含完整的 ProfileDeck 数据库,包括已保存 Profile、设置、用量记录和数据库中保存的凭据。它不包含外部工具的工作文件,也不包含操作系统凭据存储中的条目。 +## 备份 ProfileDeck 数据 -使用以下命令创建和检查备份: +应用备份是完整 ProfileDeck 数据库的加密副本,包含已保存的 Profile、设置、用量和数据库中的凭据,不包含工具正在使用的文件或系统凭据存储条目。 ```bash profiledeck-cli backup create profiledeck-cli backup list -profiledeck-cli backup show profiledeck-cli backup export --output <私有文件> ``` -新版 ProfileDeck 需要更新现有本地数据时,会先检查数据并创建加密自动备份。如果检查或备份创建失败,ProfileDeck 会在更新数据前停止;如果后续数据更新失败,ProfileDeck 会停止启动并保留该加密备份供恢复。请关闭其他 ProfileDeck 窗口后重试;如果仍无法使用本地数据,请从桌面端恢复页面恢复一份确认正常的应用备份。 +自动备份默认开启,桌面端或托盘运行期间约每天执行一次。更新、健康数据库恢复和本地数据升级前还会创建备份;自动备份最多保留十份。手动备份由你自行删除。 -自动备份默认开启。最新自动备份超过 24 小时时,桌面端和托盘会补做一次;更新重启前、健康数据库恢复前和本地数据更新前也会创建。各类自动备份合计最多保留 10 份,其中本地数据更新前备份最多保留 3 份;手动备份由你自行删除。 - -备份文件使用系统凭据存储中的恢复密钥加密。把备份移到其他电脑前,请单独导出密钥: +恢复密钥单独保存在系统凭据存储中;把备份移到其他电脑前,请另外导出密钥: ```bash -profiledeck-cli backup key status profiledeck-cli backup key export --output <私有密钥文件> --yes profiledeck-cli backup key import --file <私有密钥文件> --yes ``` -请妥善保护导出的密钥。导入不同密钥时必须传入 `--replace --yes`;除非重新导入旧密钥,否则新密钥无法打开旧密钥加密的备份。 +请保护密钥文件。用 `--replace --yes` 更换当前密钥不会重新加密旧备份;要打开旧备份,必须重新导入旧密钥。 ## 恢复应用数据 -可以恢复已管理或已导出的备份: - ```bash profiledeck-cli backup restore --yes profiledeck-cli backup restore --file <私有文件> --yes ``` -ProfileDeck 会先验证加密归档和数据库,再替换当前应用数据。当前数据库健康时,会先创建自动安全备份;当前数据库损坏时,确认后可以跳过安全备份继续恢复。 - -恢复会清空所有当前 Profile 标记,并关闭未解决操作,避免把历史状态误认为外部工具的当前状态。它不会修改工具自己的文件或系统登录,也不会自动应用任何 Profile。桌面端成功后会自动重启;CLI 恢复后请重启 ProfileDeck,并明确切换到需要的 Profile。桌面端或其他 ProfileDeck 进程正在使用应用数据时,CLI 会拒绝恢复。 +恢复前会验证备份;当前数据库健康时,还会先创建安全备份;数据库损坏时,经确认可跳过该备份继续恢复。 -应用恢复提交后,ProfileDeck 会删除已过期的操作恢复文件。如果清理未能完成,恢复后的数据仍然有效,桌面端会在重启时自动重试。在清理成功前,Profile 切换和再次恢复应用数据会保持暂停。 +恢复会清除当前 Profile 标记并关闭未完成操作,不会修改工具正在使用的文件或系统登录,也不会自动应用已保存 Profile。 -如果 ProfileDeck 启动时无法打开数据库,桌面端恢复页面仍可导入恢复密钥、列出可用备份并恢复。 +CLI 恢复后请重启 ProfileDeck,再明确切换到需要的 Profile。通过 CLI 恢复前,先关闭其他 ProfileDeck 进程。 -如果 ProfileDeck 提示本地数据格式不受支持,则无法就地更新这些数据。请恢复一份兼容的应用备份。如果要改用新的本地数据,请关闭所有 ProfileDeck 进程,将整个 [ProfileDeck 数据目录](../reference/data-security.md) 移到私密位置,然后重新打开 ProfileDeck 或运行 `profiledeck-cli init`。移动目录会保留旧数据库和备份供后续检查,不会更改工具自己的文件或系统登录。 +如果启动时无法打开数据库,桌面端仍可恢复备份。如果提示本地数据格式不受支持,请恢复兼容的备份。若要改用新的本地数据,请关闭 ProfileDeck,将整个[数据目录](../reference/data-security.md)移到私密位置,再重新打开。保留原目录以备检查。 diff --git a/docs/zh/operations/switching.md b/docs/zh/operations/switching.md index 80f7afb..6b7efa7 100644 --- a/docs/zh/operations/switching.md +++ b/docs/zh/operations/switching.md @@ -1,72 +1,16 @@ # 审核并切换 Profile -切换会改变 Codex、Claude Code、Antigravity 或 Grok Build 使用的登录或设置。ProfileDeck 会让你先检查变更,并在应用前创建临时恢复点。 +切换会修改所选工具正在使用的登录或设置。写入前,ProfileDeck 会检查当前状态,在支持时保存即将切离的 Profile 的有效更新;只有切换成功,新 Profile 才会成为当前 Profile。预览会隐藏敏感值。 -## 在桌面端切换 - -1. 打开 **Codex**、**Claude Code**、**Antigravity** 或 **Grok Build**。 -2. 选择要使用的 Profile。 -3. 选择**使用 Profile**。 -4. 检查将要变更的文件或登录,以及所有警告。 -5. 确认切换。 - -只有变更成功后,ProfileDeck 才会把该 Profile 标记为当前 Profile。如果所选工具没有立即使用新登录,请重启工具或新建会话。 - -## 使用 CLI 预览 - -预览是可选操作。如需在应用前检查切换内容,请运行 `switch --dry-run`: +## 使用 CLI 切换 ```bash profiledeck-cli switch codex work --dry-run -profiledeck-cli switch claude-code personal --dry-run -profiledeck-cli switch antigravity work --dry-run -profiledeck-cli switch grok-build work --dry-run -``` - -如需结构化输出,可添加 `--json`: - -```bash -profiledeck-cli switch codex work --dry-run --json -``` - -对于普通文件,预览会显示路径将被创建、更新还是保持不变。Grok Build 会把登录和设置都视为敏感内容,其预览只显示操作、目标、路径和警告。所有预览都会隐藏敏感值和完整的 Grok Build 文件正文。 - -警告会说明文件或登录是否缺失、无效、不受支持或无法安全变更。请先处理阻止切换的警告。 - -## 使用 CLI 应用 - -```bash profiledeck-cli switch codex work --yes -profiledeck-cli switch claude-code personal --yes -profiledeck-cli switch antigravity work --yes -profiledeck-cli switch grok-build work --yes -``` - -如需确保应用的状态与之前检查的内容完全一致,请复制 `switch --dry-run` 返回的指纹: - -```bash -profiledeck-cli switch codex work \ - --plan-fingerprint \ - --yes ``` -如果预览后 Profile 或所选工具发生变化,ProfileDeck 会拒绝该指纹,不写入任何内容。请重新运行 `switch --dry-run` 并检查新结果。 - -## 切换期间会发生什么 - -更改所选工具前,ProfileDeck 会: - -1. 检查是否还有其他 ProfileDeck 变更正在运行; -2. 再次检查当前文件或登录; -3. 在支持时保存即将切离的 Profile 中的有效更新; -4. 创建私有操作恢复点; -5. 只更改必要的文件或登录; -6. 所有变更成功后,再把新 Profile 标记为当前 Profile。 - -如果无法确认当前状态或创建可用恢复点,ProfileDeck 会停止且不应用切换。中断或失败的操作会保留在“诊断”中,以便安全恢复。切换成功后,ProfileDeck 会删除恢复点。 - -## 妥善保护恢复数据 +预览是可选的。切换其他工具时,替换 `codex` 和 `work`。如果要求实际切换与先前预览的状态一致,请在 `--yes` 命令中添加 `--plan-fingerprint `;状态变化后请重新预览。 -未完成切换的恢复点可能包含之前的 Codex 或 Grok Build 文件、Claude Code 账号登录或 Antigravity 登录。请保持 ProfileDeck 数据目录私有,不要提交、上传或分享其中的恢复文件。 +如果无法检查当前状态或创建恢复点,ProfileDeck 会在写入前停止。切换中断或被阻止时,运行 `profiledeck-cli doctor`,并按[诊断与恢复](./recovery.md)处理。未完成切换的恢复文件可能包含登录内容,请保护[本地数据目录](../reference/data-security.md)。 -恢复会把未完成切换影响的目标还原到切换前状态,但不会改变当前 Profile。如果未完成切换后当前 Profile 已发生变化,ProfileDeck 会在写入前拒绝恢复。已经保存到 Profile 中的更新仍会保留。成功切换不能撤销;如需更换配置,请切换到目标 Profile。可用操作见[诊断、备份与恢复](./recovery.md)。 +成功切换不能撤销;需要其他设置时,请切换到相应 Profile。已在运行的工具可能需要新建会话才能使用更改后的登录。 diff --git a/docs/zh/reference/cli.md b/docs/zh/reference/cli.md index dba89a1..ca07b8e 100644 --- a/docs/zh/reference/cli.md +++ b/docs/zh/reference/cli.md @@ -1,215 +1,56 @@ # CLI 参考 -本页用于查找命令名称和常用选项。请运行 `profiledeck-cli --help` 或 `profiledeck-cli --help`,查看当前安装版本包含的准确帮助;如果与本页不同,以安装版本的帮助为准。 +运行 `profiledeck-cli --help` 或 `profiledeck-cli --help` 可查看当前安装版本支持的完整语法。全局选项放在命令前: -尖括号表示必填值,方括号表示可选参数。 +- `--config-dir ` 使用 `/profiledeck` 保存应用数据。 +- `--grok-home ` 指定 Grok Build Home,优先于 `GROK_HOME` 和 `~/.grok`。 -## 全局选项 +将尖括号中的值替换为自己的 ID 或路径。 -所有命令都支持: +脚本需要结构化结果时,为支持该选项的命令添加 `--json`。 -```text ---config-dir string Use a custom ProfileDeck config directory ---grok-home string Use a custom Grok Build Home -``` - -`--config-dir` 是用户配置根目录。ProfileDeck 会在其下创建或使用 `profiledeck` 文件夹。 - -`--grok-home` 会覆盖 `GROK_HOME` 和默认的 `~/.grok` 位置。全局选项应放在命令名称前。 - -## 命令 - -| 命令 | 用途 | -| --- | --- | -| `antigravity` | 保存和管理 Antigravity Profile。 | -| `backup` | 创建、导出、恢复和管理加密应用备份。 | -| `claude-code` | 保存和管理 Claude Code 账号登录 Profile。 | -| `codex` | 管理 Codex Profile 和已保存设置(配置集)。 | -| `doctor` | 诊断本地数据、权限和中断操作的问题。 | -| `grok-build` | 管理 Grok Build Profile 和已保存设置(配置集)。 | -| `init` | 创建 ProfileDeck 本地数据。 | -| `provider` | 为其他 AI 工具配置高级文件切换。 | -| `profile` | 管理 Profile 和高级文件目标。 | -| `recover` | 处理被中断或失败的切换。 | -| `status` | 检查 ProfileDeck 是否已初始化。 | -| `switch` | 预览或应用 Profile 切换。 | -| `usage` | 导入和报告本地 Codex 用量。 | -| `version` | 输出版本信息。 | - -## 初始化与状态 - -```bash -profiledeck-cli init [--json] -profiledeck-cli status [--json] -profiledeck-cli version -``` - -## Codex - -```bash -profiledeck-cli codex detect [--codex-dir PATH] [--json] -profiledeck-cli codex profile list [--json] -profiledeck-cli codex profile show [--json] -profiledeck-cli codex profile create [--new-config-set ID] [--config-set-name NAME] [--config-set-description TEXT] [--codex-dir PATH] [--name NAME] [--description TEXT] [--json] -profiledeck-cli codex profile fork --credential-binding share-parent|copy-new --config-binding share-parent|copy-new [--new-config-set ID] [--config-set-name NAME] [--config-set-description TEXT] [--codex-dir PATH] [--name NAME] [--description TEXT] [--json] -profiledeck-cli codex profile save-current [--codex-dir PATH] [--json] -profiledeck-cli codex profile set-config [--json] -profiledeck-cli codex profile delete --yes [--json] - -profiledeck-cli codex config-set list [--json] -profiledeck-cli codex config-set show [--json] -profiledeck-cli codex config-set create [--codex-dir PATH] [--name NAME] [--description TEXT] [--json] -profiledeck-cli codex config-set copy [--name NAME] [--description TEXT] [--json] -profiledeck-cli codex config-set update [--name NAME] [--description TEXT] [--json] -profiledeck-cli codex config-set delete --yes [--json] -``` - -第一次运行 `profile create` 会保存当前 Codex 登录和设置,并创建 `shared` 配置集。后续创建默认复用当前配置集,除非传入 `--new-config-set`。 - -`fork` 要求同时选择登录和配置集的处理方式,且至少一项必须是 `copy-new`。目标可以是新 Profile,也可以是尚无 Codex 数据的现有 Profile。复用 Profile 时,省略 `--name` 或 `--description` 会保留相应详情。复制设置时还必须提供 `--new-config-set`。`save-current` 保存 Codex 当前使用的登录和设置;`set-config` 只能更改非当前 Profile。 - -`config-set create` 保存当前 `config.toml`。列表和详情命令只返回安全摘要。只有未被任何 Profile 使用的配置集才能删除。 - -任务示例与安全说明见 [Codex Profile](../codex/profiles.md)。 - -## Grok Build - -```bash -profiledeck-cli grok-build detect [--json] -profiledeck-cli grok-build profile list [--json] -profiledeck-cli grok-build profile show [--json] -profiledeck-cli grok-build profile create [--new-config-set ID] [--config-set-name NAME] [--config-set-description TEXT] [--name NAME] [--description TEXT] [--json] -profiledeck-cli grok-build profile fork --credential-binding share-parent|copy-new --config-binding share-parent|copy-new [--new-config-set ID] [--config-set-name NAME] [--config-set-description TEXT] [--name NAME] [--description TEXT] [--json] -profiledeck-cli grok-build profile save-current [--json] -profiledeck-cli grok-build profile set-config [--json] -profiledeck-cli grok-build profile delete --yes [--json] - -profiledeck-cli grok-build config-set list [--json] -profiledeck-cli grok-build config-set show [--json] -profiledeck-cli grok-build config-set create [--name NAME] [--description TEXT] [--json] -profiledeck-cli grok-build config-set copy [--name NAME] [--description TEXT] [--json] -profiledeck-cli grok-build config-set update [--name NAME] [--description TEXT] [--json] -profiledeck-cli grok-build config-set delete --yes [--json] -``` - -第一次运行 `profile create` 会保存当前基于文件的登录并使用 `shared` 配置集。如果 `shared` 尚不存在,ProfileDeck 会根据当前 `config.toml` 创建;文件缺失时会保存为空设置。预先创建的 `shared` 会原样复用。后续创建默认复用当前 Profile 的已保存配置集,不读取或覆盖当前 `config.toml`;传入 `--new-config-set` 时才会保存当前设置。`auth.json` 必须存在、非空且有效。 - -`fork` 要求同时选择登录和配置集的处理方式,且至少一项必须是 `copy-new`。目标可以是新 Profile,也可以是尚无 Grok Build 数据的现有 Profile。复用 Profile 时,省略 `--name` 或 `--description` 会保留相应详情。`save-current` 要求 `auth.json` 有效,并且 `config.toml` 存在且有效;空的 `config.toml` 仍然有效。任一条件不满足时,已保存的登录和设置都不会改变。配置集列表和详情输出不会包含 `config.toml`。 - -需要时,请把 `--grok-home` 放在 `grok-build` 前: - -```bash -profiledeck-cli --grok-home /path/to/grok-home grok-build detect -``` - -Provider 会一直绑定到首次初始化使用的 Home。当设置了 `GROK_AUTH` 或 `GROK_AUTH_PATH` 时,创建 Profile、`save-current` 和切换不可用。切换与安全说明见 [Grok Build Profile](../grok-build/profiles.md)。 - -## Claude Code - -```bash -profiledeck-cli claude-code detect [--json] -profiledeck-cli claude-code profile create [--name NAME] [--description TEXT] [--json] -profiledeck-cli claude-code profile list [--json] -profiledeck-cli claude-code profile show [--json] -profiledeck-cli claude-code profile update [--name NAME] [--description TEXT] [--json] -profiledeck-cli claude-code profile save-current [--yes] [--json] -profiledeck-cli claude-code profile delete --yes [--json] -``` - -`create` 保存当前 Claude Code 账号登录,并把新 Profile 设为当前 Profile。`save-current` 更新当前 Profile 使用的登录。如果该登录被共享,命令会报告受影响的 Profile 数量,并要求传入 `--yes`。 - -Claude Code 没有 `claude` 别名。如需预览,请运行 `profiledeck-cli switch claude-code --dry-run`;应用时运行 `profiledeck-cli switch claude-code --yes`。命令只显示登录状态和安全元数据,不会显示令牌值。 - -登录要求与验证方式见 [Claude Code Profile](../claude-code/profiles.md)。 - -## Antigravity - -```bash -profiledeck-cli antigravity detect [--json] -profiledeck-cli antigravity profile list [--json] -profiledeck-cli antigravity profile show [--json] -profiledeck-cli antigravity profile create [--name NAME] [--description TEXT] [--json] -profiledeck-cli antigravity profile update [--name NAME] [--description TEXT] [--json] -profiledeck-cli antigravity profile save-current [--json] -profiledeck-cli antigravity profile delete --yes [--json] -``` - -`agy` 是 `antigravity` 的别名。`create` 和 `save-current` 要求 Antigravity 当前存在有效的个人 OAuth 登录。输出只显示安全元数据,不会打印登录内容。 - -兼容性和切换建议见 [Antigravity Profile](../antigravity/profiles.md)。 - -## 预览与切换 +## 初始化与 Profile ```bash -profiledeck-cli switch --dry-run [--json] -profiledeck-cli switch --yes [--plan-fingerprint FINGERPRINT] [--json] +profiledeck-cli init +profiledeck-cli status +profiledeck-cli codex detect +profiledeck-cli codex profile create work +profiledeck-cli codex profile list +profiledeck-cli switch codex work --dry-run +profiledeck-cli switch codex work --yes ``` -`switch --dry-run` 是可选的只读预览。使用 `switch --yes` 应用变更。如果希望 ProfileDeck 在检查后状态发生变化时拒绝切换,请传入预览返回的指纹。 - -## 用量 - -```bash -profiledeck-cli usage sync codex [--codex-dir PATH] [--json] -profiledeck-cli usage sync grok-build [--json] -profiledeck-cli --grok-home PATH usage sync grok-build [--json] -profiledeck-cli usage summary [--provider codex|grok-build] [--json] -profiledeck-cli usage report [--provider codex|grok-build] [--range today|7d|30d|all] [--json] -``` +把 `codex` 换成 `claude-code`、`antigravity` 或 `grok-build`,即可使用对应工具的 Profile 命令。每种工具还提供 `profile show`、`profile save-current` 和 `profile delete`。删除会移除跨工具的完整全局 Profile;见[Profile 与设置](../guide/concepts.md)。切换预览可选,成功切换不能撤销。 -目前只支持本地 Codex 和 Grok Build 用量,缺省 Provider 仍为 Codex。`report` 默认范围为 `7d`;`summary` 提供更简短的全量视图。报告字段和估算限制见 [Codex 用量与成本](../codex/usage-cost.md) 或 [Grok Build 用量与成本](../grok-build/usage-cost.md)。 +Codex 和 Grok Build 还提供 `config-set` 管理、`profile set-config` 和 `profile fork`,用于共享或复制登录与设置。实用示例见 [Codex](../codex/profiles.md) 和 [Grok Build](../grok-build/profiles.md)。 -## 其他工具与配置文件 - -以下命令是面向其他工具的高级 CLI 功能。Codex、Claude Code、Antigravity 和 Grok Build 必须使用上方各自的专用命令;通用文件目标命令不能管理它们保存的登录或设置。 +## 用量与价格 ```bash -profiledeck-cli provider list [--json] -profiledeck-cli provider show [--json] -profiledeck-cli provider create [--name NAME] [--adapter ID] [--metadata-json JSON] [--json] -profiledeck-cli provider update [--name NAME] [--adapter ID] [--metadata-json JSON] [--json] -profiledeck-cli provider delete --yes [--json] - -profiledeck-cli profile list [--json] -profiledeck-cli profile show [--json] -profiledeck-cli profile create [--name NAME] [--description TEXT] [--metadata-json JSON] [--json] -profiledeck-cli profile update [--name NAME] [--description TEXT] [--metadata-json JSON] [--json] -profiledeck-cli profile delete --yes [--json] +profiledeck-cli usage sync codex +profiledeck-cli usage sync grok-build +profiledeck-cli usage summary --provider grok-build +profiledeck-cli usage report --provider grok-build --range 30d +profiledeck-cli usage pricing check +profiledeck-cli usage pricing auto off ``` -删除 Provider 会清除全部由它拥有的 ProfileDeck 数据,包括设置、已保存资源及绑定、文件目标、当前 Profile 状态、用量报告和已完成操作记录。全局 Profile、桌面端 Agent 偏好,以及工具当前使用的登录、设置和文件会保留。Provider 存在未完成操作时,删除会停止。 - -以上五种 Profile 删除命令执行同一个全局删除。即使 Profile 只包含其他 Agent 的数据,从某个 Agent 命令进入也会删除整个 Profile。Profile 是任一 Agent 的当前 Profile,或存在未完成操作时,删除会停止。只有该 Profile 使用的已保存登录和配置集会一并删除;共享数据和无关的未绑定数据会保留。引用该 Profile 的已完成操作记录也会删除。工具当前使用的登录、设置和文件不会改变。 +报告可使用 `--provider codex` 或 `--provider grok-build`,默认是 Codex。范围可选 `today`、`7d`、`30d`、`all`。估算限制见 [Codex](../codex/usage-cost.md) 或 [Grok Build](../grok-build/usage-cost.md)。 -文件目标命令: +## 备份与恢复 ```bash -profiledeck-cli profile target add --provider ID --path PATH --format FORMAT --strategy STRATEGY --value-json JSON [--disabled] [--metadata-json JSON] [--json] -profiledeck-cli profile target list [--provider ID] [--all] [--json] -profiledeck-cli profile target show [--json] -profiledeck-cli profile target update [--path PATH] [--format FORMAT] [--strategy STRATEGY] [--value-json JSON] [--enabled] [--disabled] [--metadata-json JSON] [--json] -profiledeck-cli profile target delete --yes [--json] +profiledeck-cli doctor +profiledeck-cli backup create +profiledeck-cli backup list +profiledeck-cli backup export --output <私有文件> +profiledeck-cli backup key export --output <私有密钥文件> --yes +profiledeck-cli backup restore --yes ``` -添加文件目标前,请先阅读[其他配置文件](../guide/generic-targets.md)。 - -## 备份、诊断与恢复 - -```bash -profiledeck-cli backup create [--json] -profiledeck-cli backup list [--json] -profiledeck-cli backup show [--json] -profiledeck-cli backup export --output [--json] -profiledeck-cli backup restore [ | --file ] --yes [--json] -profiledeck-cli backup delete --yes -profiledeck-cli backup key status [--json] -profiledeck-cli backup key export --output --yes [--json] -profiledeck-cli backup key import --file [--replace] --yes [--json] -profiledeck-cli doctor [--json] -profiledeck-cli doctor repair-lock --yes [--json] -profiledeck-cli recover --yes [--json] -``` +备份已加密,但密钥必须单独转移。在目标电脑上运行 `profiledeck-cli backup key import --file <私有密钥文件> --yes`。恢复不会修改工具自己的文件或登录。只有[诊断](../operations/recovery.md)明确建议时,才运行 `recover --yes`、`doctor repair-lock --yes` 或 `doctor retry-cleanup --yes`。 -应用备份包含完整的 ProfileDeck 数据库,但不包含工具自己的工作文件或系统凭据存储条目。把备份移到其他系统前,请单独导出恢复密钥。替换不同密钥时必须同时传入 `--replace` 和 `--yes`;当前密钥将无法打开旧密钥加密的备份。 +## 其他配置文件 -`recover` 只处理“诊断”报告的未完成切换。成功切换不能撤销。不同状态下的安全操作见[诊断与恢复](../operations/recovery.md)。 +`provider` 和 `profile target` 命令用于其他工具的高级本地文件切换,不能管理 Codex、Claude Code、Antigravity 或 Grok Build 已受管的登录与设置。可运行的示例见[切换其他配置文件](../guide/generic-targets.md)。 diff --git a/docs/zh/reference/data-security.md b/docs/zh/reference/data-security.md index 11c69e8..cdaed1e 100644 --- a/docs/zh/reference/data-security.md +++ b/docs/zh/reference/data-security.md @@ -1,68 +1,35 @@ # 本地数据与安全 -ProfileDeck 会在你的设备上保存 Profile、登录、设置、用量报告、备份和操作历史。请将其数据目录视为敏感内容。 +ProfileDeck 在你的设备上保存 Profile、登录、设置、用量报告和备份。请将其数据目录视为敏感内容。 ## 查找数据目录 -默认位置是: - -```text -<用户配置目录>/profiledeck -``` - -常见位置如下: - | 系统 | 默认位置 | | --- | --- | | macOS | `~/Library/Application Support/profiledeck` | | Linux | `$XDG_CONFIG_HOME/profiledeck` 或 `~/.config/profiledeck` | | Windows | `%AppData%\profiledeck` | -如果传入 `--config-dir `,ProfileDeck 会改用 `/profiledeck`。 - -该目录包含 `profiledeck.db`(以及存在时的 SQLite WAL 附属文件 `profiledeck.db-wal` / `profiledeck.db-shm`)、加密应用备份,以及未完成切换所需的临时恢复数据。ProfileDeck 可能在数据库或操作恢复数据中保存 Codex、Claude Code、Antigravity 和 Grok Build 登录,以便安全切换 Profile。已保存的 Grok Build 配置集可能包含完整的本地 `config.toml`。 - -## 保护本地数据 - -ProfileDeck 使用 age X25519 加密 `.profiledeck-backup` 文件。当前数据库和未完成切换的恢复数据不会单独加密,因此能读取你本地文件的人仍可能读取已保存的登录。操作系统允许时,ProfileDeck 会限制这些文件的权限。桌面端“诊断”和 `profiledeck-cli doctor` 会报告 ProfileDeck、Codex、Grok Build 或 Claude Code 路径中可能允许其他本地用户访问的权限问题。检查不会阻止启动或 Profile 切换,也不会更改这些工具拥有的文件。 - -- 启用操作系统的全盘加密和屏幕锁定。 -- 不要同步、提交、上传或分享完整的 ProfileDeck 数据目录。 -- 移动或重新安装 ProfileDeck 时,请使用已导出的加密应用备份,并单独导出恢复密钥。 -- 恢复密钥文件不得放入仓库或共享文件夹。 - -Claude Code 支持与 Claude Desktop 相互独立。ProfileDeck 不会读取或更改 Claude Desktop 的登录、设置或进程。 - -## 了解应用备份与操作恢复 - -应用备份包含完整的 ProfileDeck 数据库,并会在发布到 `backups/` 前加密。ProfileDeck 把现有本地数据更新为新版格式前也会先创建加密备份。如果检查或备份创建失败,ProfileDeck 会在更新数据前停止;如果后续数据更新失败,启动会停止,并在恢复页面保留该加密备份。 - -手动备份由你自行删除。自动备份每 24 小时执行一次,并会在更新重启、数据库恢复或本地数据更新前创建。各类自动备份合计最多保留 10 份,其中本地数据更新前备份最多保留 3 份。 - -私有 X25519 恢复密钥保存在操作系统凭据存储中,不会写入备份。把备份移到其他系统前,请单独导出密钥;替换当前密钥也不会重新加密已有备份。 - -切换修改外部工具前,ProfileDeck 会在 `recovery//` 下创建私有恢复点。其中可能包含未经过应用备份加密的完整 Codex 或 Grok Build 文件、Claude Code 账号登录或 Antigravity 登录。恢复点只为未完成切换保留,成功后会删除;它不会出现在备份列表中,不能导出,也不能用于撤销成功切换。 +`--config-dir ` 改用 `/profiledeck`。其中包含 `profiledeck.db`、加密应用备份和未完成切换的恢复文件。 -操作状态正式生效前,ProfileDeck 会先登记清理责任;只有恢复目录完成同步后才会清除该责任。因此,崩溃或文件系统错误可能使已完成操作的恢复数据仍然存在,并显示清理警告。警告存在时,Profile 切换和应用恢复会暂停,但读取、诊断和应用备份仍可使用。请运行 `profiledeck-cli doctor retry-cleanup --yes`,或在桌面端“诊断”中选择**重试清理**。清理不会改变工具登录信息或设置。 +## 保护已保存数据 -备份列表和预览只显示安全元数据。作为纵深保护,请保持加密备份私有,并且绝不分享操作恢复数据。 +应用备份使用 age X25519 加密。当前数据库和未完成切换的恢复文件没有单独加密,可能包含完整登录或设置。不要同步、提交、上传或分享数据目录;请启用全盘加密和屏幕锁。`profiledeck-cli doctor` 可以报告允许其他本地用户访问的文件权限。 -## 了解何时联网 +私有备份恢复密钥保存在系统凭据存储中,不在备份里。把备份移到其他电脑前,请单独导出密钥,并避免把密钥文件放在共享目录。命令见[备份与恢复](../operations/recovery.md)。成功切换不保留恢复点,也不能撤销。 -ProfileDeck 的大部分操作只使用本地数据。 +## 何时联网 -- 用量同步和报告读取本地 Codex 或 Grok Build 会话文件,不会请求计费服务。 -- 用量价格检查会从 GitHub 下载公开的 ProfileDeck 价格表。桌面端运行期间每天最多自动检查一次;`usage sync` 在到期时会先检查。不会上传本地用量。可在**设置 → 用量价格**中或通过 `profiledeck-cli usage pricing auto off` 关闭自动检查。 -- ChatGPT Codex 限额查询会使用所选的已保存登录连接 Codex 或 OpenAI。该登录绝不会发送到已保存 Codex 设置中的自定义模型服务地址。 -- API Key 限额查询会把已保存的 API Key 发送到该 Profile 自定义 Base URL 的 `/v1/usage`。ProfileDeck 只发送一次请求且不跟随重定向。HTTP Base URL 不会对传输中的 API Key 或响应加密。限额结果只保留在内存中,不会写入用量报告或应用备份。 -- Grok Build credits 查询会使用当前受管 Profile,并遵循已安装 Grok Build 的网络和登录设置。查询期间,Grok 可能续期当前登录。ProfileDeck 不会查询非当前 Profile,结果只保留在内存中,不会写入数据库、用量报告或应用备份。 -- Antigravity 限额检查会把当前 Antigravity 访问令牌发送到固定但未公开的 Google Cloud Code 服务,使用该服务可能带来账号风险。检查过程中,ProfileDeck 不会刷新、保存或回写令牌。结果只保留在应用内存中,不会写入数据库、用量报告或应用备份。 -- 桌面端更新检查和下载会连接 GitHub 上公开的 ProfileDeck Release。 +- 用量报告读取本地 Codex 和 Grok Build 会话。价格检查从 GitHub 下载公开费率,不上传本地用量。运行 `profiledeck-cli usage pricing auto off` 可关闭自动检查。 +- ChatGPT Codex 限额检查使用所选登录连接 Codex 或 OpenAI。API Key 限额检查将已保存密钥发送到该 Profile 的自定义 Base URL;HTTP 不会加密传输中的密钥。 +- Grok Build credits 检查使用已安装的 Grok Build,可能续期当前登录。 +- Antigravity 限额检查将当前访问令牌发送到未公开的 Google Cloud Code 服务,可能带来账号风险;检查不会刷新或回写令牌。 +- 桌面端更新检查和下载会连接 GitHub 上的 ProfileDeck Release。 -ProfileDeck 不提供云同步,也不会发送遥测或分析数据。Codex 自动限额刷新和登录续期默认关闭,而且只会在桌面端打开或驻留菜单栏时运行。 +限额和 credits 结果仅保留在内存中。ProfileDeck 不提供云同步,也不发送遥测。 -## 输出和用量报告不会包含什么 +## 输出和用量报告 -普通预览、命令、日志、错误和备份摘要会隐藏已保存登录及其他敏感设置。导出的应用备份仍保持加密;恢复密钥导出是另一份敏感文件,必须妥善保管。 +预览、命令、日志、错误和备份摘要会隐藏已保存登录及敏感设置。导出的备份仍保持加密;单独导出的恢复密钥是敏感文件。 -用量报告会保存令牌数、模型名称、时间信息、派生会话标识和成本估算,但不会保存原始提示词、原始回复、代理结果、API 密钥、直接会话标识、完整会话记录或完整源文件路径。本地 Codex 和 Grok Build 活动无法可靠判断请求由哪个 Profile、已保存登录或账号处理,因此 ProfileDeck 不会猜测此类归属。 +用量报告保存令牌数、模型、日期和估算,不保存原始提示词、回复、代理结果、API Key、完整会话记录或完整源文件路径。历史活动无法可靠归属到某个 Profile、已保存登录或账号。 From 62118671e6e2106524ba1bb6a186ccf187488759 Mon Sep 17 00:00:00 2001 From: Lee <7932644+strahe@users.noreply.github.com> Date: Wed, 23 Sep 2026 15:46:56 +0800 Subject: [PATCH 2/3] docs: remove misplaced README screenshots --- README.md | 2 -- README_ZH.md | 2 -- docs/images/desktop-codex-profiles-en.png | Bin 234705 -> 0 bytes docs/images/desktop-codex-profiles-zh.png | Bin 239479 -> 0 bytes 4 files changed, 4 deletions(-) delete mode 100644 docs/images/desktop-codex-profiles-en.png delete mode 100644 docs/images/desktop-codex-profiles-zh.png diff --git a/README.md b/README.md index 8b03010..b89fdae 100644 --- a/README.md +++ b/README.md @@ -27,8 +27,6 @@ ProfileDeck supports Codex, Claude Code, Antigravity, and Grok Build. See [Suppo | **Linux portable app** | Desktop | [Install portable Desktop](docs/guide/getting-started.md#portable-desktop) | | **Build from source** | CLI | [Build and use the CLI](docs/guide/getting-started.md#build-and-use-the-cli) | -![ProfileDeck Desktop showing Profiles and usage limits](docs/images/desktop-codex-profiles-en.png) - ## CLI example For a Codex Profile named `work`: diff --git a/README_ZH.md b/README_ZH.md index 3dbf6fb..1015e6c 100644 --- a/README_ZH.md +++ b/README_ZH.md @@ -27,8 +27,6 @@ ProfileDeck 支持 Codex、Claude Code、Antigravity 和 Grok Build。各工具 | **Linux 便携版** | 桌面端 | [安装便携版桌面端](docs/zh/guide/getting-started.md#便携版桌面端) | | **源码构建** | CLI | [构建并使用 CLI](docs/zh/guide/getting-started.md#构建并使用-cli) | -![ProfileDeck 桌面端中的 Profile 与用量限额](docs/images/desktop-codex-profiles-zh.png) - ## CLI 示例 以名为 `work` 的 Codex Profile 为例: diff --git a/docs/images/desktop-codex-profiles-en.png b/docs/images/desktop-codex-profiles-en.png deleted file mode 100644 index 409fdf1611a48992a253fe2aa243cc6f10e50961..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 234705 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

HL^ht6Si*jeuF+u(A734Mf(nM4{?DH( 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 Ha^imhiwOQt diff --git a/docs/images/desktop-codex-profiles-zh.png b/docs/images/desktop-codex-profiles-zh.png deleted file mode 100644 index 62ed2d6b505f7c6338fd5b48a737476d8dae52b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 239479 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 rjvdXh*QF%yH)K9|)#NH`jj)WKl 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%0A~XNxq2rfr%ozr2+Dw1 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 Ca+4PT From 2c123ba1e4104921ad86a1f722a3cfa610893c06 Mon Sep 17 00:00:00 2001 From: Lee <7932644+strahe@users.noreply.github.com> Date: Wed, 23 Sep 2026 15:55:49 +0800 Subject: [PATCH 3/3] docs: clarify profile and recovery guidance --- README.md | 2 +- README_ZH.md | 2 +- docs/.vitepress/config.ts | 2 +- docs/antigravity/profiles.md | 2 +- docs/codex/profiles.md | 2 +- docs/guide/generic-targets.md | 2 +- docs/guide/getting-started.md | 2 +- docs/operations/recovery.md | 8 ++++---- docs/reference/cli.md | 2 +- docs/reference/data-security.md | 2 +- docs/zh/antigravity/profiles.md | 2 +- docs/zh/guide/generic-targets.md | 2 +- docs/zh/guide/getting-started.md | 2 +- docs/zh/operations/recovery.md | 8 ++++---- docs/zh/reference/cli.md | 2 +- docs/zh/reference/data-security.md | 2 +- 16 files changed, 22 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index b89fdae..ead6cda 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ ProfileDeck supports Codex, Claude Code, Antigravity, and Grok Build. See [Suppo ## CLI example -For a Codex Profile named `work`: +For a Codex Profile with ID `work`: ```bash profiledeck-cli codex profile list diff --git a/README_ZH.md b/README_ZH.md index 1015e6c..c89c6ce 100644 --- a/README_ZH.md +++ b/README_ZH.md @@ -29,7 +29,7 @@ ProfileDeck 支持 Codex、Claude Code、Antigravity 和 Grok Build。各工具 ## CLI 示例 -以名为 `work` 的 Codex Profile 为例: +以 ID 为 `work` 的 Codex Profile 为例: ```bash profiledeck-cli codex profile list diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts index 87e7ff5..411734e 100644 --- a/docs/.vitepress/config.ts +++ b/docs/.vitepress/config.ts @@ -34,7 +34,7 @@ const enGrokBuild = [ const enSafety = [ { text: 'Review and Switch', link: '/operations/switching' }, - { text: 'Recovery', link: '/operations/recovery' }, + { text: 'Diagnostics and Recovery', link: '/operations/recovery' }, { text: 'Data and Security', link: '/reference/data-security' } ] diff --git a/docs/antigravity/profiles.md b/docs/antigravity/profiles.md index 6f65ef9..13d37f9 100644 --- a/docs/antigravity/profiles.md +++ b/docs/antigravity/profiles.md @@ -4,7 +4,7 @@ ProfileDeck saves and switches Antigravity's consumer OAuth login from the opera ## Before you start -Sign in to Antigravity and confirm it works. CLI users run `profiledeck-cli init` once. Only the current supported login can be saved: +Sign in to Antigravity and confirm it works. CLI users run `profiledeck-cli init` once. Use `detect` to check whether the current login is supported before creating a Profile: ```bash profiledeck-cli antigravity detect diff --git a/docs/codex/profiles.md b/docs/codex/profiles.md index 55ac9f4..a1fd547 100644 --- a/docs/codex/profiles.md +++ b/docs/codex/profiles.md @@ -54,7 +54,7 @@ Codex keeps using its normal `auth.json` and `config.toml`. ProfileDeck saves va profiledeck-cli codex profile save-current ``` -If either working file is missing or invalid, ProfileDeck warns that it will not capture that file. A switch can still restore valid files from the selected Profile. See [Review and Switch](../operations/switching.md) for the CLI command and recovery behavior. +If either working file is missing or invalid, ProfileDeck warns that it will not save that file. A switch can still restore valid files from the selected Profile. See [Review and Switch](../operations/switching.md) for the CLI command and recovery behavior. ## Check limits and keep a login active diff --git a/docs/guide/generic-targets.md b/docs/guide/generic-targets.md index a90c3e8..57f78e6 100644 --- a/docs/guide/generic-targets.md +++ b/docs/guide/generic-targets.md @@ -34,4 +34,4 @@ profiledeck-cli switch my-tool work --dry-run profiledeck-cli switch my-tool work --yes ``` -The preview is optional and hides sensitive-looking values. If switching fails, run `profiledeck-cli doctor` and follow [recovery guidance](../operations/recovery.md). A successful switch cannot be undone. +The optional preview hides sensitive-looking values. See [Review and Switch](../operations/switching.md) for switching and recovery. diff --git a/docs/guide/getting-started.md b/docs/guide/getting-started.md index 5af2a62..6b785b4 100644 --- a/docs/guide/getting-started.md +++ b/docs/guide/getting-started.md @@ -77,4 +77,4 @@ profiledeck-cli switch codex work --dry-run profiledeck-cli switch codex work --yes ``` -`--dry-run` is optional. A successful switch cannot be undone; see [switching](../operations/switching.md) for its effects. If a switch is blocked or interrupted, run `profiledeck-cli doctor` and follow [recovery guidance](../operations/recovery.md). +`--dry-run` is optional. See [Review and Switch](../operations/switching.md) for switching effects and recovery. diff --git a/docs/operations/recovery.md b/docs/operations/recovery.md index 2e04257..64c9eb1 100644 --- a/docs/operations/recovery.md +++ b/docs/operations/recovery.md @@ -1,6 +1,6 @@ # Diagnostics, Backups, and Recovery -Use `profiledeck-cli doctor` when a switch is blocked or interrupted. An unfinished switch blocks new switches and application restore until it is resolved. +Desktop shows available recovery actions for blocked or interrupted switches in **Diagnostics**. An unfinished switch blocks new switches and application restore until it is resolved. ## Resolve an unfinished switch @@ -13,12 +13,12 @@ Use the operation ID and action offered by Diagnostics. Recovery may restore a t Use `profiledeck-cli doctor repair-lock --yes` only when Diagnostics confirms that no switch is running and offers lock repair. If it reports **Temporary recovery files need cleanup**, run `profiledeck-cli doctor retry-cleanup --yes`. Cleanup does not change tool logins or settings; switching and application restore remain blocked until it succeeds. -Successful switches cannot be recovered or undone. - ## Back up ProfileDeck data An application backup is an encrypted copy of the complete ProfileDeck database. It includes saved Profiles, settings, usage, and credentials held in that database, but excludes tool-owned working files and system credential-store entries. +Desktop can manage and restore backups in **Settings → Backups**. + ```bash profiledeck-cli backup create profiledeck-cli backup list @@ -45,7 +45,7 @@ profiledeck-cli backup restore --file --yes Restore verifies the backup before replacing ProfileDeck data. When the current database is healthy, ProfileDeck first makes a safety backup. A damaged database may be restored after confirmation without that backup. -Restore clears current-Profile markers and unresolved operations; it does not change any tool's working files or system login, or apply a saved Profile. +After restore, no Profile is current and any unfinished switches in the backup are closed. Tool working files and system logins remain unchanged. Restart ProfileDeck after a CLI restore, then explicitly switch to the Profile you need. Close other ProfileDeck processes before restoring from the CLI. diff --git a/docs/reference/cli.md b/docs/reference/cli.md index 0344d68..6fbed69 100644 --- a/docs/reference/cli.md +++ b/docs/reference/cli.md @@ -21,7 +21,7 @@ profiledeck-cli switch codex work --dry-run profiledeck-cli switch codex work --yes ``` -Replace `codex` with `claude-code`, `antigravity`, or `grok-build` for that tool's Profile commands. Each tool also offers `profile show`, `profile save-current`, and `profile delete`. Profile deletion removes the complete global Profile across tools; see [Profiles and settings](../guide/concepts.md). A switch preview is optional; successful switches cannot be undone. +Replace `codex` with `claude-code`, `antigravity`, or `grok-build` for that tool's Profile commands. Each tool also offers `profile show`, `profile save-current`, and `profile delete`. Deleting a Profile removes it from every tool; see [Profiles and settings](../guide/concepts.md). A switch preview is optional. Codex and Grok Build additionally offer `config-set` management, `profile set-config`, and `profile fork` for sharing or copying logins and settings. Their [Codex](../codex/profiles.md) and [Grok Build](../grok-build/profiles.md) pages show practical examples. diff --git a/docs/reference/data-security.md b/docs/reference/data-security.md index ca892c7..aeba6fc 100644 --- a/docs/reference/data-security.md +++ b/docs/reference/data-security.md @@ -16,7 +16,7 @@ ProfileDeck stores Profiles, logins, settings, usage reports, and backups on you Application backups are encrypted with age X25519. The live database and unfinished-switch recovery files are not separately encrypted and may contain complete logins or settings. Do not sync, commit, upload, or share the data directory. Use full-disk encryption and a screen lock. `profiledeck-cli doctor` can report file permissions that allow other local users access. -The private backup recovery key is stored in your system credential store, not in a backup. Export it separately before moving backups to another computer, and keep exported key files out of shared folders. See [Backups and Recovery](../operations/recovery.md) for commands. A successful switch has no recovery point or undo. +The private backup recovery key is stored in your system credential store, not in a backup. Export it separately before moving backups to another computer, and keep exported key files out of shared folders. See [Backups and Recovery](../operations/recovery.md) for commands. ## Network access diff --git a/docs/zh/antigravity/profiles.md b/docs/zh/antigravity/profiles.md index aacabd8..6740e8b 100644 --- a/docs/zh/antigravity/profiles.md +++ b/docs/zh/antigravity/profiles.md @@ -4,7 +4,7 @@ ProfileDeck 保存并切换操作系统凭据存储中的 Antigravity 个人 OAu ## 开始前准备 -登录 Antigravity,并确认可以正常使用。CLI 用户需要运行一次 `profiledeck-cli init`。只能保存当前受支持的登录: +登录 Antigravity,并确认可以正常使用。CLI 用户需要运行一次 `profiledeck-cli init`。用 `detect` 检查当前登录是否受支持,再创建 Profile: ```bash profiledeck-cli antigravity detect diff --git a/docs/zh/guide/generic-targets.md b/docs/zh/guide/generic-targets.md index de7756b..f9295f9 100644 --- a/docs/zh/guide/generic-targets.md +++ b/docs/zh/guide/generic-targets.md @@ -34,4 +34,4 @@ profiledeck-cli switch my-tool work --dry-run profiledeck-cli switch my-tool work --yes ``` -预览可选,会隐藏疑似敏感值。切换失败时,运行 `profiledeck-cli doctor` 并按[恢复说明](../operations/recovery.md)处理。成功切换不能撤销。 +可选的预览会隐藏疑似敏感值。切换及故障恢复见[切换说明](../operations/switching.md)。 diff --git a/docs/zh/guide/getting-started.md b/docs/zh/guide/getting-started.md index 7dfc427..8e8d7e9 100644 --- a/docs/zh/guide/getting-started.md +++ b/docs/zh/guide/getting-started.md @@ -77,4 +77,4 @@ profiledeck-cli switch codex work --dry-run profiledeck-cli switch codex work --yes ``` -`--dry-run` 是可选预览。成功切换不能撤销;影响见[切换说明](../operations/switching.md)。如果切换被阻止或中断,运行 `profiledeck-cli doctor`,并按[恢复说明](../operations/recovery.md)处理。 +`--dry-run` 是可选预览。切换影响及故障恢复见[切换说明](../operations/switching.md)。 diff --git a/docs/zh/operations/recovery.md b/docs/zh/operations/recovery.md index c2b282a..bf6ed56 100644 --- a/docs/zh/operations/recovery.md +++ b/docs/zh/operations/recovery.md @@ -1,6 +1,6 @@ # 诊断、备份与恢复 -切换被阻止或中断时,运行 `profiledeck-cli doctor`。未完成切换得到处理前,不能开始新切换或恢复应用数据。 +桌面端的“诊断”会显示切换被阻止或中断时可用的恢复操作。未完成切换得到处理前,不能开始新切换或恢复应用数据。 ## 处理未完成切换 @@ -13,12 +13,12 @@ profiledeck-cli recover --yes 只有“诊断”确认没有切换正在运行并提供修复操作时,才运行 `profiledeck-cli doctor repair-lock --yes`。如果显示**临时恢复文件需要清理**,运行 `profiledeck-cli doctor retry-cleanup --yes`。清理不会更改工具登录或设置;成功清理前,切换和应用恢复仍不可用。 -成功切换不能恢复或撤销。 - ## 备份 ProfileDeck 数据 应用备份是完整 ProfileDeck 数据库的加密副本,包含已保存的 Profile、设置、用量和数据库中的凭据,不包含工具正在使用的文件或系统凭据存储条目。 +桌面端也可在**设置 → 备份**中管理和恢复应用备份。 + ```bash profiledeck-cli backup create profiledeck-cli backup list @@ -45,7 +45,7 @@ profiledeck-cli backup restore --file <私有文件> --yes 恢复前会验证备份;当前数据库健康时,还会先创建安全备份;数据库损坏时,经确认可跳过该备份继续恢复。 -恢复会清除当前 Profile 标记并关闭未完成操作,不会修改工具正在使用的文件或系统登录,也不会自动应用已保存 Profile。 +恢复后没有当前 Profile,备份中的未完成切换会被关闭。工具正在使用的文件和系统登录保持不变。 CLI 恢复后请重启 ProfileDeck,再明确切换到需要的 Profile。通过 CLI 恢复前,先关闭其他 ProfileDeck 进程。 diff --git a/docs/zh/reference/cli.md b/docs/zh/reference/cli.md index ca07b8e..8dc2108 100644 --- a/docs/zh/reference/cli.md +++ b/docs/zh/reference/cli.md @@ -21,7 +21,7 @@ profiledeck-cli switch codex work --dry-run profiledeck-cli switch codex work --yes ``` -把 `codex` 换成 `claude-code`、`antigravity` 或 `grok-build`,即可使用对应工具的 Profile 命令。每种工具还提供 `profile show`、`profile save-current` 和 `profile delete`。删除会移除跨工具的完整全局 Profile;见[Profile 与设置](../guide/concepts.md)。切换预览可选,成功切换不能撤销。 +把 `codex` 换成 `claude-code`、`antigravity` 或 `grok-build`,即可使用对应工具的 Profile 命令。每种工具还提供 `profile show`、`profile save-current` 和 `profile delete`。删除 Profile 会将其从所有工具中移除;见[Profile 与设置](../guide/concepts.md)。切换预览可选。 Codex 和 Grok Build 还提供 `config-set` 管理、`profile set-config` 和 `profile fork`,用于共享或复制登录与设置。实用示例见 [Codex](../codex/profiles.md) 和 [Grok Build](../grok-build/profiles.md)。 diff --git a/docs/zh/reference/data-security.md b/docs/zh/reference/data-security.md index cdaed1e..66226af 100644 --- a/docs/zh/reference/data-security.md +++ b/docs/zh/reference/data-security.md @@ -16,7 +16,7 @@ ProfileDeck 在你的设备上保存 Profile、登录、设置、用量报告和 应用备份使用 age X25519 加密。当前数据库和未完成切换的恢复文件没有单独加密,可能包含完整登录或设置。不要同步、提交、上传或分享数据目录;请启用全盘加密和屏幕锁。`profiledeck-cli doctor` 可以报告允许其他本地用户访问的文件权限。 -私有备份恢复密钥保存在系统凭据存储中,不在备份里。把备份移到其他电脑前,请单独导出密钥,并避免把密钥文件放在共享目录。命令见[备份与恢复](../operations/recovery.md)。成功切换不保留恢复点,也不能撤销。 +私有备份恢复密钥保存在系统凭据存储中,不在备份里。把备份移到其他电脑前,请单独导出密钥,并避免把密钥文件放在共享目录。命令见[备份与恢复](../operations/recovery.md)。 ## 何时联网