Mga feature

Pagkopya ng dati nang setup

Huling na-update noong Oktubre 19, 2026
Sinubukan gamit ang ccam 0.6.0 at Claude Code 2.1.302

Machine translation mula sa Ingles ang pahinang ito. Malugod naming tinatanggap ang mga pagwawasto. I-edit ang pahinang ito sa GitHub

Sa pahinang ito

Kung gumamit ka ng Claude Code bago ang ccam, nasa ~/.claude at ~/.claude.json ang iyong setup. Kinokopya ito ng ccam migrate sa isang share group, kaya nagsisimula ang bawat account na nagshe-share ng mga item na iyon sa pamamagitan ng group na dala ang setup na mayroon ka na. Binabasa lang ang source folder, at gumagana pa rin ang karaniwang claude gaya ng dati. Patakbuhin ito nang isang beses pagkatapos ng una mong ccam add, at ulit tuwing magsisimulang mag-share ng mga MCP server ang isang account.

Paggamit

ccam migrate                         # ~/.claude into group default, checklist on a terminal
ccam --dry-run migrate               # show the plan, copy nothing
ccam migrate --settings --mcp        # only these items, no checklist
ccam migrate --history --yes         # conversation history only, no questions
ccam migrate ~/.claude-work --group work

Sa terminal, kapag walang item flag at walang --yes, magpapakita muna ang ccam ng checklist:

 Copy into group default

 From /home/me/.claude
 ? Choose what to copy (Space to toggle)
 › [x] MCP servers
   [x] settings.json
   [x] global CLAUDE.md
   [x] agents, commands, skills
   [ ] conversation history

 Enter show the plan · Esc cancel

Tino-toggle ng Space (o x) ang item na nasa ilalim ng cursor, naglilipat ang mga arrow key o j/k, ipinapakita ng Enter ang plano, at nagpi-print ng Cancelled. ang Esc, q o Ctrl+C. Minamarkahan ng not found ang mga item na walang laman sa source. Kapag in-uncheck mo ang lahat, ipi-print ng ccam ang Nothing selected. at hihinto.

Pagkatapos ay ipi-print ng ccam ang plano at magtatanong bago ito kumopya:

$ ccam migrate --yes
Copy from /home/me/.claude into group default (/home/me/.local/share/ccam/groups/default):
  mcp         ~/.claude.json  new: fs, linear
              sign-ins        linear → personal; skipped: work (not logged in yet)
  settings    settings.json   new: 61 B
  memory      CLAUDE.md       new: 11 B
  extensions  agents/         add 1 file the group lacks (6 B)
              skills/         add 1 file the group lacks (13 B)
              not found, skipped: commands/, plugins/, output-styles/, rules/
  Conversation history (projects/, history.jsonl) is not included; add --history to copy it.
✓ Copied into group default: 2 MCP servers, settings.json, CLAUDE.md, agents/, skills/, MCP sign-ins for personal
MCP sign-ins were not copied to: work (not logged in yet). Sign in to those servers there with /mcp.
Accounts that share these through group default:
  mcp         personal, work
  settings    personal, work
  memory      personal, work
  extensions  personal, work

Umaabot lang ang isang group sa mga account na nagshe-share ng item sa pamamagitan nito, kaya inililista sila ng buod bawat item. Para sa mga account na hindi, ipi-print ng ccam ang mga command na ccam share <name> --<item> on na nag-o-on ng sharing.

Mga option

Option Ano ang ginagawa Default
[folder] Ang Claude Code folder na pagkokopyahan ~/.claude
--settings Kopyahin ang settings.json off
--memory Kopyahin ang global na CLAUDE.md off
--extensions Kopyahin ang agents/, commands/, skills/, plugins/, output-styles/, rules/ off
--mcp Kopyahin ang mga user MCP server (mcpServers sa .claude.json) off
--history Kopyahin ang kasaysayan ng usapan (projects/, history.jsonl) off
-g, --group string Ang share group na kokopyahan default
-y, --yes Kumopya nang hindi nagtatanong; kapag may conflict, pinapanatili ang kopya ng group off
--dry-run (global) I-print ang plano at huminto bago ang anumang tanong o pagkopya off

Kapag walang item flag, ang checklist ang nagpapasya sa terminal. Sa labas ng terminal, o kapag may --yes, kinokopya ng ccam ang lahat maliban sa kasaysayan ng usapan. Hindi kasama ang kasaysayan bilang default dahil puwedeng malaki ang projects/.

Ang ibig sabihin ng --group on ay default. Tinatanggihan ang --group off at --group local na may --group takes a group name, not "off". Sinusunod ng ccam migrate ang --dry-run, at lumalabas pa rin ang checklist sa dry run para ma-preview mo ang isang pagpili.

Paano ito gumagana

Pinipili ng internal/cli/migrate.go ang mga item, saka binabasa ng migrate.Build ang source at ang group at nagbabalik ng plano. Walang isinusulat hanggang Plan.Apply, pagkatapos mong kumpirmahin.

  1. Hanapin ang source. Tinatanggihan ng checkSource ang path na wala, hindi folder, o walang kilalang entry ng Claude Code. Hinahanap ng migrate.ClaudeJSON ang .claude.json na kabilang sa folder: sa loob nito, o para sa ~/.claude na walang ganito sa loob, ang ~/.claude.json na katabi nito. Doon ito iniimbak ng Claude Code kapag hindi nakatakda ang CLAUDE_CONFIG_DIR.
  2. Itugma ang mga item sa mga path. Galing ang bawat path sa share.Layout, ang parehong listahan ng pinapayagan na ginagamit ng ccam share. Binabasa ang mga MCP server mula sa .claude.json gamit ang mcp.LocalServers, na gumagamit ng scanner na profile.TopLevelValue sa halip na i-parse ang buong file.
  3. Kopyahin, huwag kailanman ilipat. Napupunta ang mga file sa ~/.local/share/ccam/groups/<group>/ gamit ang fsutil.AtomicWrite o fsutil.CopyFile; napupunta ang mga MCP server sa mcp.json ng group.

Itinutugma ng bawat item ang isang source path sa isang group path:

Putol-putol ang dalawang hilera ng kasaysayan dahil kinokopya lang ang mga ito kapag may --history. Nakalista ang .credentials.json at .claude.json sa share.Never at hindi kailanman umaabot sa group: nagbabalik ang Build ng internal error kung lumabas man ang isa sa layout, at nilalaktawan ang mga ito ayon sa pangalan habang dinadaanan ang folder.

Binibigyan ng buildEntry ng estado ang bawat path, at iyon ang inilalarawan ng bawat linya ng plano:

  • Missing: wala sa source, o file kung saan inaasahan ang folder. Inililista nang isang beses bawat item bilang not found, skipped.
  • Linked: tumuturo na sa kopya ng group ang source path, halimbawa kapag folder ng ccam profile ang source.
  • Same: may kaparehong nilalaman na ang group.
  • New: wala ito sa group, kaya kinokopya nang buo.
  • Merge: folder sa magkabilang panig. Idinadagdag lang ng copyMissing ang mga file na wala sa group; nananatili ayon sa group ang mga file na magkaiba at sinasabi ng plano ang group copies kept. Para sa plugins/, pinagsasama ang mga registry na installed_plugins.json at known_marketplaces.json, at isinusulat ulit ang mga absolute na plugin path para tumuro sa folder ng group.
  • Conflict: file sa magkabilang panig na magkaiba ang nilalaman. Ikaw ang pipili bawat file: keep group, use mine, at merge JSON para sa mga .json file (isang deep merge kung saan nananaig ang group sa nagbabanggaang value) o merge by line para sa history.jsonl. Conflict din ang MCP server na naiiba ang definition, na may keep group o use mine. Ang unang nakalistang pagpipilian ang default kapag pinindot mo ang Enter; laging pinapanatili ng --yes ang kopya ng group.

Ang checklist mismo ay ang tui.MigratePicker na binuo sa component na checklist na ginagamit ng ccam add; minamarkahan ng migrate.Found ang mga nawawalang item gamit ang mga lstat call at ang listahan ng MCP server.

Mga MCP sign-in

Iniimbak ng mga MCP server na nagsa-sign in gamit ang OAuth ang kanilang mga token sa login file, ang .credentials.json sa ilalim ng mcpOAuth, hindi sa listahan ng server. Ginagawa ng Claude Code ang key ng bawat entry bilang <name>| kasama ang unang 16 na character ng sha256 hash ng type, url at headers ng server. Hindi nakadepende sa folder ang key, kaya gumagana ang kinopyang entry sa ibang account basta magkapareho ang definition ng server. Kaya kinokopya lang ng buildLogins sa internal/migrate/logins.go ang mga entry ng mga server na mapupunta sa group sa definition ng source: bago, pareho na, o conflict kung saan pinili mo ang use mine. Kasamang kinokopya ang mga sign-in ng mga plugin server (mga key na nagsisimula sa plugin:) kapag kinopya mo ang mga extension at may plugins/ ang source.

Napupunta ang mga entry sa sariling .credentials.json ng bawat tumatanggap na account, na isinusulat gamit ang fsutil.AtomicWrite sa mode na 0600. Hindi kailanman napupunta ang mga ito sa group. Natatanggap lang ng isang account ang mga ito kung nagshe-share ito ng mcp (o, para sa mga plugin server, extensions) sa pamamagitan ng target na group, at ang mga key lang na wala pa rito ang idinadagdag: pinapanatili ang mga entry na mayroon na ito, na baka mas bago. Inililista ng linya ng plano na sign-ins ang mga server, ang mga tumatanggap na account at ang mga nilaktawan. Nilalaktawan ng ccam ang isang account, at pinapangalanan ito kasama ang dahilan, kapag ito ay:

  • nirehistro sa kinalalagyan nito gamit ang ccam import, dahil baka ginagamit ng karaniwang claude ang login file nito;
  • tumatakbo, dahil isinusulat ulit ng Claude Code ang login file nito (sinusuri ulit bago mismo magsulat, iniuulat bilang started meanwhile);
  • hindi pa naka-log in;
  • nag-iimbak ng login sa macOS Keychain, na hindi sinusulatan ng ccam.

Mag-sign in sa mga server sa nilaktawang account gamit ang /mcp. Ang account na magsisimulang mag-share ng mga MCP server sa ibang pagkakataon ay makakakuha ng mga sign-in kapag pinatakbo mo ulit ang ccam migrate; sinasabi iyon ng buod gamit ang Then run `ccam migrate` again to give them the MCP sign-ins too.

Kaligtasan at mga espesyal na kaso

  • Binabasa lang ang source. Walang file doon na inililipat, nili-link o binabago, at hindi kailanman sinusulatan ang login ng source, kasama sa macOS kung saan baka binabasa ito mula sa Keychain.
  • Bago palitan ang isang group file, dahil sa use mine, sa isang merge, o sa mga bagong MCP server sa umiiral na mcp.json, sine-save ang kopya ng group sa <group>/.ccam-backup/<time>/. Natatangi bawat run ang pangalan ng folder, kaya hindi nagpapatungan ang mga backup ng dalawang run sa parehong segundo. Ipi-print ng buod ang path.
  • Sa --yes, pinapanatili ng bawat conflict ang kopya ng group, at sinasabi ng ccam kung paano pumili sa halip: patakbuhin ang parehong command nang walang --yes.
  • Kapag walang magbabago, ipi-print ng ccam ang Nothing to copy.; kapag pinapanatili ng bawat conflict ang kopya ng group, Nothing to copy: the group keeps its own copies.
  • Kapag pumalya ang pagkopya sa kalagitnaan, humihinto ang ccam na may The source folder was not changed. Group files replaced so far are saved in kasunod ang backup folder.
  • Nagtatapos ang nawawalang source na may no Claude Code folder at <path>. Give the folder to copy from: ccam migrate <folder>.