Hard to use across machines: state outside repo, absolute paths in generated launcher, per-repo config sprawl

Aperta
#219 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
15/100
Tipo di issue
Funzionalità
Chiarezza
Da chiarire
Stato di attività
Attiva
Ambito
devtools

Direzione di ricerca

This is a design discussion, not a single change: state location (~/.tokeneconomizer), the generated launcher ~/.tokeneconomizer/bin/te with its hardcoded plugin-cache path, and the per-repo .claude/settings.local.json deny rules are the places it touches. Settle the intended storage layout and runtime path resolution with the maintainers before any code is written; done means an agreed design, not a patch.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Feedback after using TokenEconomizer 0.1.0 (Claude Code plugin, Windows) across several repositories on two PCs, with ~/.claude synced through git. I ended up uninstalling it. These are the problems that led to that.

1. Not friendly to cloud/git sync
  • Learned state lives in ~/.tokeneconomizer (repos/, index.json, sessions/, locks/), outside ~/.claude and outside the repository. It cannot travel with a synced config or with the repo, so every machine relearns from scratch.
  • Per-repo state folders have hashed names (e.g. my-repo-73d35aa8b6, plus .bak-<timestamp> copies), so they cannot be matched or merged across machines by a person.
2. Absolute paths baked into generated files
  • The launcher written at session start, ~/.tokeneconomizer/bin/te, is a script like exec 'C:\Users\<name>\.claude\plugins\cache\tokeneconomizer\tokeneconomizer\0.1.0\scripts\te' "$@". It hardcodes the plugin cache path including user name and plugin version, so it is only valid on one machine and breaks on every plugin update or on a different profile folder.
  • Please resolve the plugin location at runtime (e.g. via CLAUDE_PLUGIN_ROOT or relative to the script) instead of writing it into a generated file.
3. Hard to see what is enabled where
  • Per-repo behaviour is spread over several places: .claude/settings.local.json deny rules in each repo, an extraKnownMarketplaces entry in each project's .claude/settings.json, project-scope plugin installs, and the state under ~/.tokeneconomizer.
  • In two of my repos the tool pruning had silently added about 250 entries to permissions.deny (Artifact, scheduled-tasks, Teams/Outlook/SharePoint connectors, Power Automate tools, ...). Nothing in the project made it obvious why those tools were missing. Support for finding out which repos are affected was limited to a command that must be run inside each repo.
  • With a user-level install plus project-level installs, the plugin list shows the same plugin several times, which made it hard to tell which copy applies where.
Suggestions
  • Keep state inside the repo (or an opt-in, relocatable directory), in a readable, mergeable format.
  • No absolute paths in generated files.
  • One place that shows which repos are enabled and what has been pruned, and prune via an explicit, visible, reversible step rather than a large silent deny list.
Lingua principale
Python
Stelle
5.6k
Fork
344
Merge medio
17h 41m
PR unite (30g)
73

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di microsoft/TokenEconomizer

Tutte le issue di microsoft/TokenEconomizer

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.