# తనిఖీ చేయడం, సరిచేయడం

> ccam doctor తో షేర్ లింక్‌లు, ఫైల్ అనుమతులు, లాగిన్‌లు, Claude Code వెర్షన్‌ను తనిఖీ చేయండి, సురక్షితంగా సరిచేయగలిగిన వాటిని ccam doctor --fix తో సరిచేయండి.

Source: https://ccam.dev/te/features/doctor/ · Updated 2026-10-19

`ccam doctor` మీ ccam ఇన్‌స్టాలేషన్‌ను తనిఖీ చేస్తుంది: Claude Code బైనరీ, ప్రతి ఖాతా ఫోల్డర్, లాగిన్, షేర్ లింక్‌లు, షేర్ చేసిన MCP సర్వర్లు, వినియోగ ఎండ్‌పాయింట్, మీ షార్ట్‌కట్ కమాండ్‌లు. `ccam doctor --fix` డేటా కోల్పోకుండా చేయగలిగిన వాటిని సరిచేస్తుంది, తాను భర్తీ చేసే ఏ ఫైల్‌నైనా ముందుగా బ్యాకప్ ఫోల్డర్‌కు తరలిస్తుంది. `ccam <name>` షేర్ లింక్ సమస్యతో ఆగినప్పుడు, మీరు ఫైళ్లను చేతితో పునరుద్ధరించిన తర్వాత, లేదా Claude Code అప్‌డేట్ తర్వాత దీన్ని రన్ చేయండి.

## వినియోగం

```sh
ccam doctor                  # check everything, change nothing
ccam doctor --fix            # check, then repair what is safe to repair
ccam --dry-run doctor --fix  # report only: what --fix would repair
```

ప్రతి ఫలితం ఒక గుర్తుతో ఉన్న ఒక లైన్: `✓` సరే, `·` సమాచారం, `!` హెచ్చరిక, `✗` ఎర్రర్. ఖాతా ఫలితాలు ఖాతా పేరుతో మొదలవుతాయి.

```console
$ ccam doctor
✓ Claude Code 2.1.302 (Claude Code) (/home/me/.local/bin/claude)
! personal: folder permissions are 755 (should be 0700)
! personal: .credentials.json permissions are 644 (should be 0600)
✓ personal: login valid (me@example.com)
✗ personal: /home/me/.local/share/ccam/profiles/personal/settings.json: set to shared but is a real file, not a link
· personal: unknown entries (Claude Code layout may have changed): newthing
! work: not logged in → `ccam login work`
✓ work: share links OK
! missing shortcuts in /home/me/.local/bin: ccp

`ccam doctor --fix` repairs what it can.
```

`--fix` తో, సరిచేయబడిన ప్రతి ఫలితం `→ fixed` తో ముగుస్తుంది:

```console
$ ccam doctor --fix
✓ Claude Code 2.1.302 (Claude Code) (/home/me/.local/bin/claude)
! personal: folder permissions are 755 (should be 0700) → fixed
! personal: .credentials.json permissions are 644 (should be 0600) → fixed
✓ personal: login valid (me@example.com)
✗ personal: /home/me/.local/share/ccam/profiles/personal/settings.json: set to shared but is a real file, not a link → fixed
· personal: unknown entries (Claude Code layout may have changed): newthing
! work: not logged in → `ccam login work`
✓ work: share links OK
! missing shortcuts in /home/me/.local/bin: ccp → fixed
```

## ఆప్షన్లు

| ఆప్షన్ | ఏమి చేస్తుంది | డిఫాల్ట్ |
| --- | --- | --- |
| `--fix` | సురక్షితంగా సరిచేయగలిగిన వాటిని సరిచేస్తుంది (మారిన ఫైళ్లు బ్యాకప్ అవుతాయి) | ఆఫ్ |
| `--dry-run` (గ్లోబల్) | ప్రతి తనిఖీని రన్ చేస్తుంది కానీ `--fix` ఉన్నా ఏదీ సరిచేయదు | ఆఫ్ |

`ccam doctor` ఆర్గ్యుమెంట్‌లు తీసుకోదు. ఇది `--dry-run` ను పాటిస్తుంది: `ccam --dry-run doctor --fix` `ccam doctor` లాంటి ఫలితాలనే ప్రింట్ చేస్తుంది, ఏదీ మార్చదు.

కనీసం ఒక `✗` ఫలితం సరిచేయబడకుండా మిగిలితే ఎగ్జిట్ కోడ్ `1`, లేకపోతే `0`. హెచ్చరికలు, సమాచారం ఎప్పుడూ రన్‌ను విఫలం చేయవు. `--fix` లేకుండా రన్ విఫలమైనప్పుడు, ccam ఒక ఖాళీ లైన్‌తో, `` `ccam doctor --fix` repairs what it can. `` తో ముగుస్తుంది. లోడ్ చేయలేని కాన్ఫిగ్ కూడా `1` తో, ఒక `ccam:` ఎర్రర్‌తో ముగుస్తుంది.

## ఇది ఎలా పనిచేస్తుంది

`internal/cli/doctor.go` `~/.config/ccam/config.toml` ను లోడ్ చేసి `internal/doctor/doctor.go` లోని `doctor.Run` ను పిలుస్తుంది, అది తనిఖీలను ఒక స్థిరమైన క్రమంలో రన్ చేసి ఫలితాలను తిరిగి ఇస్తుంది. `--fix` `Options.Fix` గా పంపబడుతుంది, డ్రై రన్‌లో అది false గా సెట్ అవుతుంది.

మధ్య భాగం ప్రతి ఖాతాకు ఒకసారి రన్ అవుతుంది. తనిఖీలు, ప్రతిదానికి `--fix` ఏమి చేస్తుందో:

1. **Claude Code వెర్షన్** (`checkClaude`). లాంచర్ చేసే విధంగానే `claude` బైనరీని కనుగొని `claude --version` ను రన్ చేస్తుంది. వెర్షన్ `2.1.302` తో, అంటే ccam ఫోల్డర్ లేఅవుట్‌ను ధృవీకరించిన వెర్షన్‌తో (`doctor.LayoutVersion`), మొదలు కాకపోతే, అది `· ccam was verified against the folder layout of Claude Code 2.1.302. Any 'unknown entries' below may mean the layout changed` ను జోడిస్తుంది. బైనరీ లేకపోవడం లేదా `--version` విఫలమవడం ఎర్రర్. సరిచేయడం లేదు.
2. **ఎన్విరాన్‌మెంట్‌లో క్రెడెన్షియల్స్** (`checkAuthEnv`). `CLAUDE_CODE_OAUTH_TOKEN`, `ANTHROPIC_API_KEY` లేదా `ANTHROPIC_AUTH_TOKEN` సెట్ అయి ఉంటే హెచ్చరిస్తుంది: ఆ షెల్ నుంచి ప్రారంభించిన ప్రతి ఖాతా దాన్ని వారసత్వంగా పొందుతుంది, Claude Code ఖాతా సొంత లాగిన్ కంటే దానికే ప్రాధాన్యం ఇస్తుంది. సరిచేయడం లేదు; దాన్ని మీరే అన్‌సెట్ చేయండి.
3. **ఫోల్డర్** (`checkProfile`). ఖాతా ఫోల్డర్ లేకపోవడం ఎర్రర్, అది ఆ ఖాతా తనిఖీలను ముగిస్తుంది. గ్రూప్ లేదా ఇతర బిట్‌లు ఏవైనా సెట్ అయిన అనుమతులు హెచ్చరిక; `--fix` `chmod 0700` ను రన్ చేస్తుంది.
4. **లాగిన్ ఫైల్** (`checkCredentials`). `.credentials.json` `lstat` తో తనిఖీ చేయబడుతుంది. సింలింక్ ఎర్రర్, ఎందుకంటే ప్రతి ఖాతాకు సొంత టోకెన్ ఉండాలి, దాన్ని సరిచేయదు. `0600` కాని మోడ్ హెచ్చరిక; `--fix` `chmod 0600` ను రన్ చేస్తుంది. ఆపై లాగిన్ చదవబడుతుంది (macOS లో ముందుగా Keychain నుంచి). లాగిన్ లేకపోవడం `ccam login <name>` ను సూచించే హెచ్చరిక. గడువు ముగిసిన రిఫ్రెష్ టోకెన్ `login expired` ఎర్రర్; గడువు ముగిసిన యాక్సెస్ టోకెన్ కేవలం సమాచారం, ఎందుకంటే Claude Code తదుపరి ప్రారంభంలో దాన్ని పునరుద్ధరిస్తుంది. వీటిలో ఏదీ సరిచేయబడదు.
5. **షేర్ లింక్‌లు** (`share.Check`). `lstat`, `readlink` ను మాత్రమే ఉపయోగించి, `share.Layout` లోని ప్రతి పాత్‌ను ఖాతా షేర్ సెట్టింగ్‌లతో పోలుస్తుంది. ఇది నాలుగు రకాలను నివేదిస్తుంది: లేని లింక్, వేరే చోటికి చూపే లింక్, లింక్ ఉండాల్సిన చోట అసలు ఫైల్, ఇప్పుడు లోకల్ అయిన అంశం కోసం మిగిలిపోయిన లింక్. లేని లింక్ హెచ్చరిక, మిగతావి ఎర్రర్‌లు.
6. **తెలియని ఎంట్రీలు** (`checkUnknownEntries`). ccam కు తెలియని (`share.Known`) ఖాతా ఫోల్డర్‌లోని టాప్-లెవెల్ పేర్లను, Claude Code లేఅవుట్ మారిందనే సూచనగా జాబితా చేస్తుంది. కేవలం సమాచారం.
7. **ప్లగిన్ పాత్‌లు** (`checkPlugins`). ప్లగిన్ రిజిస్ట్రీలు (`installed_plugins.json`, `known_marketplaces.json`) పూర్తి పాత్‌లను నిల్వ చేస్తాయి. ప్రతి గ్రూప్ `plugins/` లో, ఒక ఖాతా ఫోల్డర్ ద్వారా వెళ్లే పాత్‌లు ఆ ఖాతా తీసివేయబడినప్పుడు లేదా పేరు మారినప్పుడు పాడవుతాయి. `--fix` వాటిని `profile.RewritePluginPaths` తో, రిజిస్ట్రీ ఫైల్ యొక్క అటామిక్ రైట్‌తో, గ్రూప్ ఫోల్డర్‌కు మళ్లీ రాస్తుంది.
8. **MCP సర్వర్లు** (`checkMCP`). ప్రతి గ్రూప్ `mcp.json` ను ఒకసారి లోడ్ చేస్తుంది. చదవలేని ఫైల్ ఎర్రర్; `mcp.Validate` లో విఫలమైన సర్వర్ హెచ్చరిక. సరిచేయడం లేదు.
9. **వినియోగ రెస్పాన్స్ ఫార్మాట్** (`checkUsageFormat`). కాష్ లేకుండా, సాధారణ 3 సెకన్ల పరిమితితో, ఒక ఖాతా సమాధానం ఇచ్చే వరకు ఒకదాని తర్వాత ఒకటి వినియోగ ఎండ్‌పాయింట్‌ను అడుగుతుంది. రెస్పాన్స్ ఇకపై పార్స్ కాకపోతే, `ccam usage` స్టేటస్ లైన్ కాష్‌కు మారుతుందని హెచ్చరిస్తుంది. నెట్‌వర్క్‌ను ఉపయోగించే ఏకైక తనిఖీ ఇదే.
10. **షార్ట్‌కట్‌లు** (`checkShims`). ఒక ఖాతాకు షార్ట్‌కట్ ఉన్నప్పుడు మాత్రమే. `~/.local/bin` లో లేని లింక్‌లు హెచ్చరిక; `--fix` `shim.Install` ను పిలుస్తుంది, అది లేని లింక్‌లను మాత్రమే సృష్టిస్తుంది, ఇతర ఫైళ్లను ఎప్పుడూ ముట్టుకోదు. `PATH` లో లేని bin ఫోల్డర్ హెచ్చరిక, దాన్ని సరిచేయదు.

### షేర్ లింక్‌లను సరిచేయడం

ప్రారంభ మార్గం లేని లింక్‌ను అక్కడికక్కడే సృష్టిస్తుంది, కానీ డేటా కోల్పోయే అవకాశం ఉన్న దేనికైనా ఆగి ఇక్కడికి సూచిస్తుంది:

```console
$ ccam work
ccam: stopped because of share link problems:
  /home/me/.local/share/ccam/profiles/work/CLAUDE.md: set to shared but is a real file, not a link
Repair them with `ccam doctor --fix`, then run again
```

ఏ షేర్ లింక్ సమస్యకైనా, `--fix` ఖాతా షేర్ సెట్టింగ్‌లను ప్రస్తుత స్థితిగా, లక్ష్య స్థితిగా రెండింటిగా ఇచ్చి `share.Build` ను పిలుస్తుంది, ఆపై `Plan.Apply`. `Build` ప్రతి దశను డిస్క్‌లో ఉన్నదాని నుంచి మళ్లీ తయారు చేస్తుంది, `ccam share` ఉపయోగించే అదే ప్రణాళిక, కాబట్టి సరిచేయడం షేరింగ్ ఆన్ చేసే అవే నియమాలను పాటిస్తుంది.

ఇక్కడ `settings.json` ఒక అసలు ఫైల్. గ్రూప్‌లో ఇప్పటికే వేరే `settings.json` ఉంది కాబట్టి, ఘర్షణ తన డిఫాల్ట్ ఎంపిక `KeepGroup` ను తీసుకుంటుంది, కాబట్టి గ్రూప్ కాపీ ఉంటుంది. ఖాతా ఫైల్ ఖాతా ఫోల్డర్‌లోని `.ccam-backup/<time>/settings.json` కు తరలుతుంది, `os.Symlink` పాత్‌ను గ్రూప్‌కు లింక్ చేస్తుంది. ఇతర సందర్భాలు:

- గ్రూప్‌లో ఇంకా కాపీ లేకపోతే, ఖాతా ఫైల్ గ్రూప్‌లోకి తరలి దాని మొదటి కంటెంట్ అవుతుంది.
- ఫోల్డర్ అయితే, గ్రూప్‌లో లేని ఫైళ్లు గ్రూప్‌లోకి తరలుతాయి; మిగతావి బ్యాకప్‌కు వెళ్తాయి.
- `history.jsonl` కు, డిఫాల్ట్ `merge by line`: గ్రూప్ లైన్లు, ఆపై మీ కొత్తవి. గ్రూప్ యొక్క మునుపటి కాపీ `.ccam-backup/<time>/group/` లో సేవ్ అవుతుంది.
- మరో గ్రూప్‌కు ఉన్న లింక్ భర్తీ చేయబడుతుంది. ccam బయట ఉన్న ఫోల్డర్‌కు ఉన్న లింక్ బ్యాకప్‌కు వెళ్తుంది, గ్రూప్ ఖాళీగా ఉంటే దాని కంటెంట్ గ్రూప్‌కు మొదటి కంటెంట్ అవుతుంది.
- ఇప్పుడు లోకల్ అయిన అంశం కోసం మిగిలిన లింక్ తీసివేయబడుతుంది, ఖాతాకు గ్రూప్ కంటెంట్ కాపీ లభిస్తుంది.

లింక్‌లను తీసివేయడం తప్ప, ప్రతి దశ డేటాను గ్రూప్‌లోకి లేదా బ్యాకప్ ఫోల్డర్‌లోకి తరలిస్తుంది. ఏదీ తొలగించబడదు.

## భద్రత, ప్రత్యేక సందర్భాలు

- సాధారణ `ccam doctor` ఎప్పుడూ ఏదీ మార్చదు. స్క్రిప్ట్‌లలో నిశ్చింతగా ఉండటానికి `--fix` తో `--dry-run` ను ఉపయోగించండి.
- ఖాతా రన్ అవుతుందో లేదో `doctor --fix` తనిఖీ చేయదు. సెషన్ ఆ ఫైళ్లలో రాస్తూనే ఉంటుంది కాబట్టి, ఒక ఖాతా షేర్ లింక్‌లను సరిచేసే ముందు దాని Claude Code నుంచి నిష్క్రమించండి.
- షేర్ సరిచేయడం విఫలమైతే, ccam ఆ ఖాతాకు `could not repair share links: <error>` అని నివేదించి, దాని తెలియని ఎంట్రీల తనిఖీని దాటవేస్తుంది. ఇతర ఖాతాలు ఇంకా తనిఖీ చేయబడతాయి.
- `ccam share` మధ్యలో విఫలమైతే, అది ముందుగా లక్ష్య సెట్టింగ్‌లను సేవ్ చేసి, `ccam doctor --fix` తో పూర్తి చేయమని చెబుతుంది.
- సింలింక్ అయిన `.credentials.json`, గడువు ముగిసిన లాగిన్, ఎన్విరాన్‌మెంట్ క్రెడెన్షియల్స్ నివేదించబడతాయి కానీ ఎప్పుడూ మార్చబడవు.
- ప్లగిన్ రిజిస్ట్రీ మార్పులు అటామిక్‌గా రాయబడతాయి కానీ `.ccam-backup/` కు కాపీ కావు.

## సంబంధిత పేజీలు

- [MCP సర్వర్లు, సెట్టింగ్‌లు, చరిత్రను షేర్ చేయండి](https://ccam.dev/te/docs/sharing.md)
- [ఇప్పటికే ఉన్న సెటప్‌ను కాపీ చేయడం](https://ccam.dev/te/features/migrate.md)
- [వినియోగ పరిమితులు, ఖాతాలు మార్చడం](https://ccam.dev/te/docs/usage-limits.md)
- [కమాండ్‌లు](https://ccam.dev/te/docs/commands.md)
