定制创建claude cli宠物

2026-04-11 13:031阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐
问题描述: Claude Code Buddy Configurator Pro :root { --bg-primary: #f8f9fc; --bg-secondary: #ffffff; --bg-card: #ffffff; --bg-card-hover: #f0f4f8; --border: #e2e8f0; --border-hover: #cbd5e1; --text-primary: #1e293b; --text-secondary: #64748b; --text-muted: #94a3b8; --accent: #6366f1; --accent-hover: #4f46e5; --accent-glow: rgba(99, 102, 241, 0.2); --common: #64748b; --uncommon: #22c55e; --rare: #3b82f6; --epic: #a855f7; --legendary: #f59e0b; --success: #22c55e; --error: #ef4444; --stop: #ef4444; }

* { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif; background: var(--bg-primary); color: var(--text-primary); min-height: 100vh; line-height: 1.6; } .app { max-width: 1200px; margin: 0 auto; padding: 2rem; } header { text-align: center; margin-bottom: 2rem; padding-top: 1rem; } h1 { font-size: 2rem; font-weight: 700; background: linear-gradient(135deg, var(--accent) 0%, #a855f7 50%, var(--legendary) 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; margin-bottom: 0.5rem; } .subtitle { color: var(--text-secondary); font-size: 0.9rem; } .main-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1.5rem; align-items: start; } @media (max-width: 900px) { .main-grid { grid-template-columns: 1fr; } } .panel { background: var(--bg-card); border: 1px solid var(--border); border-radius: 16px; padding: 1rem; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05); } .panel-header { display: flex; align-items: center; gap: 0.5rem; margin-bottom: 1rem; padding-bottom: 0.75rem; border-bottom: 1px solid var(--border); } .panel-icon { width: 28px; height: 28px; background: var(--accent-glow); border-radius: 6px; display: flex; align-items: center; justify-content: center; font-size: 0.9rem; } .panel-title { font-size: 1rem; font-weight: 600; } .config-section { margin-bottom: 0.75rem; } .config-section:last-child { margin-bottom: 0; } .section-label { font-size: 0.7rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; color: var(--text-muted); margin-bottom: 0.5rem; } .species-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(80px, 1fr)); gap: 0.4rem; } .species-btn { background: var(--bg-secondary); border: 1px solid var(--border); border-radius: 8px; padding: 0.5rem 0.3rem; color: var(--text-secondary); font-size: 0.75rem; cursor: pointer; transition: all 0.2s ease; text-align: center; } .species-btn:hover { background: var(--bg-card-hover); border-color: var(--border-hover); color: var(--text-primary); } .species-btn.selected { background: var(--accent); border-color: var(--accent); color: white; box-shadow: 0 2px 8px var(--accent-glow); } .species-btn .emoji { display: block; font-size: 1.25rem; margin-bottom: 0.15rem; } .rarity-row { display: flex; gap: 0.4rem; flex-wrap: wrap; } .rarity-pill { padding: 0.4rem 0.8rem; border-radius: 16px; border: 1px solid; font-size: 0.75rem; font-weight: 500; cursor: pointer; transition: all 0.2s ease; background: transparent; } .rarity-pill[data-rarity="common"] { border-color: var(--common); color: var(--common); } .rarity-pill[data-rarity="uncommon"] { border-color: var(--uncommon); color: var(--uncommon); } .rarity-pill[data-rarity="rare"] { border-color: var(--rare); color: var(--rare); } .rarity-pill[data-rarity="epic"] { border-color: var(--epic); color: var(--epic); } .rarity-pill[data-rarity="legendary"] { border-color: var(--legendary); color: var(--legendary); } .rarity-pill:hover { transform: scale(1.05); } .rarity-pill.selected[data-rarity="common"] { background: var(--common); color: white; } .rarity-pill.selected[data-rarity="uncommon"] { background: var(--uncommon); color: white; } .rarity-pill.selected[data-rarity="rare"] { background: var(--rare); color: white; } .rarity-pill.selected[data-rarity="epic"] { background: var(--epic); color: white; } .rarity-pill.selected[data-rarity="legendary"] { background: var(--legendary); color: white; } .icon-grid { display: flex; gap: 0.4rem; flex-wrap: wrap; } .icon-btn { width: 40px; height: 40px; background: var(--bg-secondary); border: 1px solid var(--border); border-radius: 8px; color: var(--text-primary); font-size: 1rem; cursor: pointer; transition: all 0.2s ease; display: flex; align-items: center; justify-content: center; } .icon-btn:hover { background: var(--bg-card-hover); border-color: var(--border-hover); transform: scale(1.05); } .icon-btn.selected { background: var(--accent); border-color: var(--accent); color: white; } .hat-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(80px, 1fr)); gap: 0.4rem; } .hat-btn { background: var(--bg-secondary); border: 1px solid var(--border); border-radius: 8px; padding: 0.5rem 0.3rem; color: var(--text-secondary); font-size: 0.7rem; cursor: pointer; transition: all 0.2s ease; text-align: center; } .hat-btn:hover { background: var(--bg-card-hover); border-color: var(--border-hover); color: var(--text-primary); } .hat-btn.selected { background: var(--accent); border-color: var(--accent); color: white; } .hat-btn .emoji { display: block; font-size: 1.25rem; margin-bottom: 0.15rem; } .toggle-group { display: flex; gap: 0.4rem; } .toggle-btn { flex: 1; padding: 0.5rem 0.75rem; background: var(--bg-secondary); border: 1px solid var(--border); border-radius: 8px; color: var(--text-secondary); font-size: 0.8rem; font-weight: 500; cursor: pointer; transition: all 0.2s ease; } .toggle-btn:hover { background: var(--bg-card-hover); border-color: var(--border-hover); } .toggle-btn.selected { background: var(--accent); border-color: var(--accent); color: white; } .mode-cards { display: grid; grid-template-columns: 1fr 1fr; gap: 0.4rem; } .mode-card { background: var(--bg-secondary); border: 2px solid var(--border); border-radius: 8px; padding: 0.5rem; cursor: pointer; transition: all 0.2s ease; text-align: center; } .mode-card:hover { border-color: var(--border-hover); transform: translateY(-2px); } .mode-card.selected { border-color: var(--accent); background: rgba(99, 102, 241, 0.08); } .mode-card .icon { font-size: 1rem; margin-bottom: 0.15rem; } .mode-card .label { font-weight: 600; font-size: 0.8rem; margin-bottom: 0.1rem; } .mode-card .desc { font-size: 0.65rem; color: var(--text-muted); } .number-input { display: flex; align-items: center; gap: 0.5rem; } .number-input input { flex: 1; background: var(--bg-secondary); border: 1px solid var(--border); border-radius: 8px; padding: 0.5rem 0.75rem; color: var(--text-primary); font-family: 'JetBrains Mono', monospace; font-size: 0.85rem; outline: none; transition: all 0.2s ease; } .number-input input:focus { border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-glow); } .number-input label { font-size: 0.75rem; color: var(--text-secondary); min-width: 60px; } /* Stats filter */ .stats-filter-grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: 0.4rem; } .stat-filter-item { background: var(--bg-secondary); border: 1px solid var(--border); border-radius: 8px; padding: 0.4rem; text-align: center; } .stat-filter-name { font-size: 0.65rem; color: var(--text-muted); margin-bottom: 0.25rem; } .stat-filter-input { width: 100%; background: transparent; border: none; text-align: center; font-family: 'JetBrains Mono', monospace; font-size: 0.85rem; color: var(--text-primary); outline: none; } .stat-filter-input:focus { color: var(--accent); } .stat-filter-hint { font-size: 0.6rem; color: var(--text-muted); margin-top: 0.15rem; } .run-panel { margin-top: 0.75rem; display: flex; gap: 0.5rem; } .run-btn { flex: 1; padding: 0.75rem 1.5rem; background: linear-gradient(135deg, var(--accent) 0%, #a855f7 100%); border: none; border-radius: 10px; color: white; font-size: 1rem; font-weight: 600; cursor: pointer; transition: all 0.3s ease; display: flex; align-items: center; justify-content: center; gap: 0.5rem; } .run-btn:hover { transform: translateY(-2px); box-shadow: 0 4px 12px var(--accent-glow); } .run-btn:disabled { opacity: 0.5; cursor: not-allowed; transform: none; } .stop-btn { padding: 0.75rem 1rem; background: var(--stop); border: none; border-radius: 10px; color: white; font-size: 0.9rem; font-weight: 600; cursor: pointer; transition: all 0.3s ease; display: none; align-items: center; justify-content: center; gap: 0.5rem; } .stop-btn:hover { background: #dc2626; transform: translateY(-2px); } .stop-btn.active { display: flex; } .output-area { background: var(--bg-secondary); border: 1px solid var(--border); border-radius: 10px; padding: 0.75rem; min-height: 200px; max-height: 400px; overflow: auto; font-family: 'JetBrains Mono', monospace; font-size: 0.75rem; } .output-area:empty::before { content: 'Waiting for results...'; color: var(--text-muted); font-style: italic; } .output-line { padding: 0.2rem 0; border-bottom: 1px solid var(--border); } .output-line:last-child { border-bottom: none; } .output-success { color: var(--success); } .output-error { color: var(--error); } .attempts-badge { display: inline-block; background: var(--accent); color: white; padding: 0.15rem 0.5rem; border-radius: 10px; font-size: 0.65rem; } .copy-btn { background: linear-gradient(135deg, #3b82f6 0%, #1d4ed8 100%); border: none; border-radius: 6px; padding: 0.35rem 0.75rem; color: white; font-size: 0.8rem; font-weight: 600; cursor: pointer; transition: all 0.2s ease; box-shadow: 0 2px 4px rgba(59, 130, 246, 0.3); } .copy-btn:hover { transform: translateY(-1px); box-shadow: 0 4px 8px rgba(59, 130, 246, 0.4); } .copy-btn.copied { background: linear-gradient(135deg, #22c55e 0%, #16a34a 100%); box-shadow: 0 2px 4px rgba(34, 197, 94, 0.3); } .replace-btn { background: linear-gradient(135deg, #f59e0b 0%, #ea580c 100%); border: none; border-radius: 6px; padding: 0.35rem 0.75rem; color: white; font-size: 0.8rem; font-weight: 600; cursor: pointer; transition: all 0.2s ease; margin-left: 0.5rem; box-shadow: 0 2px 4px rgba(245, 158, 11, 0.3); } .replace-btn:hover { transform: translateY(-1px); box-shadow: 0 4px 8px rgba(245, 158, 11, 0.4); } .spinner { width: 16px; height: 16px; border: 2px solid rgba(255,255,255,0.3); border-top-color: white; border-radius: 50%; animation: spin 0.8s linear infinite; } @keyframes spin { to { transform: rotate(360deg); } } .clear-btn { background: transparent; border: 1px solid var(--border); border-radius: 6px; padding: 0.4rem 0.8rem; color: var(--text-secondary); font-size: 0.75rem; cursor: pointer; transition: all 0.2s ease; } .clear-btn:hover { background: var(--bg-card-hover); border-color: var(--border-hover); color: var(--text-primary); } .panel-header-actions { margin-left: auto; } .progress-bar { width: 100%; height: 3px; background: var(--border); border-radius: 2px; overflow: hidden; margin-top: 0.4rem; } .progress-fill { height: 100%; background: linear-gradient(90deg, var(--accent), #a855f7); width: 0%; transition: width 0.2s ease; } .status-bar { display: flex; gap: 0.75rem; font-size: 0.75rem; color: var(--text-muted); margin-top: 0.4rem; } .worker-status { display: flex; gap: 0.4rem; flex-wrap: wrap; margin-top: 0.4rem; } .worker-badge { padding: 0.15rem 0.4rem; border-radius: 4px; font-size: 0.6rem; background: var(--bg-secondary); border: 1px solid var(--border); } .worker-badge.running { background: var(--accent); color: white; border-color: var(--accent); } /* Stats display */ .stats-container { display: grid; grid-template-columns: repeat(5, 1fr); gap: 0.3rem; margin-top: 0.3rem; } .stat-item { text-align: center; padding: 0.3rem; background: var(--bg-secondary); border-radius: 6px; } .stat-name { font-size: 0.55rem; color: var(--text-muted); margin-bottom: 0.15rem; } .stat-bar { height: 6px; background: var(--border); border-radius: 3px; overflow: hidden; margin-bottom: 0.15rem; } .stat-bar-fill { height: 100%; border-radius: 3px; transition: width 0.3s ease; } .stat-value { font-size: 0.75rem; font-weight: 600; } .stat-item.high .stat-bar-fill { background: var(--legendary); } .stat-item.medium .stat-bar-fill { background: var(--epic); } .stat-item.low .stat-bar-fill { background: var(--rare); } /* Modal */ .modal { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.5); z-index: 1000; align-items: center; justify-content: center; } .modal.active { display: flex; } .modal-content { background: var(--bg-card); border-radius: 16px; padding: 1.5rem; max-width: 700px; max-height: 90vh; overflow: auto; box-shadow: 0 20px 40px rgba(0,0,0,0.2); } .modal-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 1rem; } .modal-title { font-size: 1.1rem; font-weight: 600; } .modal-close { background: transparent; border: none; font-size: 1.25rem; cursor: pointer; color: var(--text-muted); } .modal-close:hover { color: var(--text-primary); } .code-block { background: #1e293b; color: #e2e8f0; padding: 0.75rem; border-radius: 6px; font-family: 'JetBrains Mono', monospace; font-size: 0.8rem; overflow-x: auto; white-space: pre-wrap; word-break: break-all; } .step { margin-bottom: 0.75rem; padding-left: 1.25rem; } .step-number { display: inline-block; width: 1.25rem; height: 1.25rem; background: var(--accent); color: white; border-radius: 50%; text-align: center; line-height: 1.25rem; font-size: 0.75rem; margin-left: -1.25rem; margin-right: 0.4rem; } .warning-box { background: #fef3c7; border: 1px solid #f59e0b; border-radius: 6px; padding: 0.75rem; margin-top: 0.75rem; color: #92400e; font-size: 0.85rem; } .success-box { background: #d1fae5; border: 1px solid #22c55e; border-radius: 6px; padding: 0.75rem; margin-top: 0.75rem; color: #047857; font-size: 0.85rem; } .copy-code-btn { background: var(--accent); border: none; border-radius: 6px; padding: 0.4rem 0.8rem; color: white; font-size: 0.8rem; cursor: pointer; margin-top: 0.4rem; } .copy-code-btn:hover { background: var(--accent-hover); } .method-tabs { display: flex; gap: 0.4rem; margin-bottom: 0.75rem; } .method-tab { padding: 0.5rem 1rem; background: var(--bg-secondary); border: 2px solid var(--border); border-radius: 6px; cursor: pointer; transition: all 0.2s ease; font-size: 0.85rem; } .method-tab:hover { border-color: var(--accent); } .method-tab.active { background: var(--accent); color: white; border-color: var(--accent); } .method-content { display: none; } .method-content.active { display: block; } .info-text { color: var(--text-secondary); font-size: 0.85rem; margin-top: 0.4rem; } .sub-step { margin-left: 1.25rem; margin-top: 0.4rem; padding: 0.5rem; background: var(--bg-secondary); border-radius: 6px; border: 1px solid var(--border); font-size: 0.85rem; } .sub-step-title { font-weight: 600; margin-bottom: 0.15rem; } .keyboard-shortcut { display: inline-block; background: var(--border); padding: 0.15rem 0.4rem; border-radius: 4px; font-family: 'JetBrains Mono', monospace; font-size: 0.75rem; margin: 0 0.15rem; }

Claude Code Buddy Configurator Pro

并发搜索 + 后台运行 + 属性筛选 + 一键替换 userID

<div class="main-grid"> <!-- Left Panel: Filters --> <div class="panel"> <div class="panel-header"> <div class="panel-icon">🎯</div> <h2 class="panel-title">筛选条件</h2> </div> <div class="config-section"> <div class="section-label">物种 (Species)</div> <div class="species-grid" id="speciesGrid"></div> </div> <div class="config-section"> <div class="section-label">稀有度 (Rarity)</div> <div class="rarity-row" id="rarityRow"></div> </div> <div class="config-section"> <div class="section-label">眼睛 (Eye)</div> <div class="icon-grid" id="eyeGrid"></div> </div> <div class="config-section"> <div class="section-label">帽子 (Hat)</div> <div class="hat-grid" id="hatGrid"></div> </div> <div class="config-section"> <div class="section-label">闪光 (Shiny)</div> <div class="toggle-group" id="shinyGroup"> <button class="toggle-btn selected" data-value="any">任意</button> <button class="toggle-btn" data-value="true">是 ✨</button> <button class="toggle-btn" data-value="false">否</button> </div> </div> <div class="config-section"> <div class="section-label">属性最小值 (Stats Min)</div> <div class="stats-filter-grid" id="statsFilterGrid"></div> <p style="font-size: 0.65rem; color: var(--text-muted); margin-top: 0.3rem;">留空或0表示不筛选该属性</p> </div> </div> <!-- Right Panel: Settings --> <div class="panel"> <div class="panel-header"> <div class="panel-icon">⚙️</div> <h2 class="panel-title">运行设置</h2> <div class="panel-header-actions"> <button class="clear-btn" onclick="clearOutput()">清空</button> </div> </div> <div class="config-section"> <div class="section-label">模式 (Mode)</div> <div class="mode-cards" id="modeCards"> <div class="mode-card selected" data-mode="random"> <div class="icon">🎲</div> <div class="label">随机</div> <div class="desc">随机生成用户ID</div> </div> <div class="mode-card" data-mode="sequential"> <div class="icon">🔢</div> <div class="label">顺序</div> <div class="desc">按前缀+索引生成</div> </div> </div> </div> <div id="sequentialSettings" style="display: none;"> <div class="config-section"> <div class="section-label">前缀 (Prefix)</div> <div class="number-input"> <input type="text" id="prefixInput" placeholder="user-" value="user-"> </div> </div> <div class="config-section"> <div class="section-label">起始索引 (Start)</div> <div class="number-input"> <input type="number" id="startInput" value="0" min="0"> </div> </div> </div> <div class="config-section"> <div class="section-label">并发数 (Workers)</div> <div class="number-input"> <input type="number" id="workersInput" value="4" min="1" max="16"> <label>线程</label> </div> </div> <div class="config-section"> <div class="section-label">随机字节长度 (Bytes)</div> <div class="number-input"> <input type="number" id="bytesInput" value="32" min="1" max="64"> <label>bytes</label> </div> </div> <div class="config-section"> <div class="section-label">最大尝试次数 (Limit)</div> <div class="number-input"> <input type="number" id="limitInput" value="5000000" min="1"> <label>次</label> </div> </div> <div class="config-section"> <div class="section-label">返回数量 (Count)</div> <div class="number-input"> <input type="number" id="countInput" value="1" min="1" max="100"> <label>个</label> </div> </div> <div class="config-section run-panel"> <button class="run-btn" id="runBtn" onclick="startSearch()"> <span>🚀</span> <span>开始并发搜索</span> </button> <button class="stop-btn" id="stopBtn" onclick="stopSearch()"> <span>⏹</span> <span>停止</span> </button> </div> <div class="progress-bar"> <div class="progress-fill" id="progressFill"></div> </div> <div class="status-bar" id="statusBar"> <span id="statusAttempts">尝试: 0</span> <span id="statusFound">找到: 0</span> <span id="statusTime">时间: 0s</span> </div> <div class="worker-status" id="workerStatus"></div> <div class="config-section"> <div class="section-label">结果 (Results)</div> <div class="output-area" id="outputArea"></div> </div> </div> </div>

🔄 替换 ~/.claude.json 的 userID

×

<div class="step"> <span class="step-number">1</span> <strong>生成的 userID:</strong> </div> <div class="code-block" id="generatedUserId"></div> <button class="copy-code-btn" onclick="copyGeneratedUserId()">📋 复制 userID</button> <hr style="margin: 1rem 0; border-color: var(--border);"> <div class="step"> <span class="step-number">2</span> <strong>选择替换方法:</strong> </div> <div class="method-tabs"> <div class="method-tab active" onclick="switchMethod('powershell')">PowerShell 命令</div> <div class="method-tab" onclick="switchMethod('manual')">手动编辑</div> </div> <!-- PowerShell Method --> <div class="method-content active" id="method-powershell"> <div class="step"> <span class="step-number">A</span> <strong>打开 PowerShell</strong> </div> <div class="sub-step"> <div class="sub-step-title">方法一:快捷键</div> 按 <span class="keyboard-shortcut">Win</span> + <span class="keyboard-shortcut">X</span>,选择 "Windows PowerShell" 或 "终端" </div> <div class="sub-step"> <div class="sub-step-title">方法二:搜索</div> 按 <span class="keyboard-shortcut">Win</span> 键,输入 "powershell",按 <span class="keyboard-shortcut">Enter</span> </div> <div class="sub-step"> <div class="sub-step-title">方法三:运行</div> 按 <span class="keyboard-shortcut">Win</span> + <span class="keyboard-shortcut">R</span>,输入 "powershell",按 <span class="keyboard-shortcut">Enter</span> </div> <div class="step" style="margin-top: 0.75rem;"> <span class="step-number">B</span> <strong>复制并执行以下命令</strong> </div> <p class="info-text">命令会自动读取配置文件、替换 userID、保存文件</p> <div class="code-block" id="replaceCommand"></div> <button class="copy-code-btn" onclick="copyReplaceCommand()">📋 复制命令</button> <div class="step" style="margin-top: 0.75rem;"> <span class="step-number">C</span> <strong>重启 Claude Code</strong> </div> <p class="info-text">关闭 Claude Code CLI 或 IDE 插件,重新启动即可生效</p> <div class="success-box"> ✅ <strong>完成!</strong>执行命令后,userID 已替换。重启 Claude Code 即可看到新的 Buddy。 </div> </div> <!-- Manual Method --> <div class="method-content" id="method-manual"> <div class="step"> <span class="step-number">A</span> <strong>找到配置文件位置</strong> </div> <div class="sub-step"> <div class="sub-step-title">Windows 路径</div> <code style="background: var(--bg-secondary); padding: 0.4rem; border-radius: 4px; display: block; font-size: 0.8rem;"> C:\Users\你的用户名\.claude.json </code> <p class="info-text" style="margin-top: 0.4rem;"> 你的完整路径:<code id="fullPath" style="background: var(--bg-secondary); padding: 0.2rem 0.4rem; border-radius: 4px; font-size: 0.8rem;"></code> </p> </div> <div class="step" style="margin-top: 0.75rem;"> <span class="step-number">B</span> <strong>打开文件</strong> </div> <div class="sub-step"> <div class="sub-step-title">推荐工具</div> VS Code、Notepad++、记事本都可以 </div> <div class="sub-step"> <div class="sub-step-title">快捷方式</div> 在 PowerShell 中执行:<code style="background: var(--bg-secondary); padding: 0.2rem 0.4rem; border-radius: 4px; font-size: 0.8rem;">code "$HOME\.claude.json"</code> </div> <div class="step" style="margin-top: 0.75rem;"> <span class="step-number">C</span> <strong>修改 userID 字段</strong> </div> <p class="info-text">找到并替换:</p> <div class="code-block" id="manualReplaceExample" style="font-size: 0.7rem;"></div> <div class="step" style="margin-top: 0.75rem;"> <span class="step-number">D</span> <strong>保存文件并重启 Claude Code</strong> </div> <div class="warning-box"> ⚠️ <strong>注意:修改前建议备份原文件!</strong><br> <code style="background: var(--bg-secondary); padding: 0.2rem 0.4rem; border-radius: 4px; font-size: 0.75rem;">Copy-Item "$HOME\.claude.json" "$HOME\.claude.json.backup"</code> </div> </div> </div> 网友解答:


--【壹】--:

佬牛b,我去我还不知道咋养,佬们就开始定制了


--【贰】--:

傻了.我粘贴了什么.


--【叁】--:

已经变成金色传说了


--【肆】--:

佬,没有看懂是怎么操作的

标签:纯水
问题描述: Claude Code Buddy Configurator Pro :root { --bg-primary: #f8f9fc; --bg-secondary: #ffffff; --bg-card: #ffffff; --bg-card-hover: #f0f4f8; --border: #e2e8f0; --border-hover: #cbd5e1; --text-primary: #1e293b; --text-secondary: #64748b; --text-muted: #94a3b8; --accent: #6366f1; --accent-hover: #4f46e5; --accent-glow: rgba(99, 102, 241, 0.2); --common: #64748b; --uncommon: #22c55e; --rare: #3b82f6; --epic: #a855f7; --legendary: #f59e0b; --success: #22c55e; --error: #ef4444; --stop: #ef4444; }

* { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif; background: var(--bg-primary); color: var(--text-primary); min-height: 100vh; line-height: 1.6; } .app { max-width: 1200px; margin: 0 auto; padding: 2rem; } header { text-align: center; margin-bottom: 2rem; padding-top: 1rem; } h1 { font-size: 2rem; font-weight: 700; background: linear-gradient(135deg, var(--accent) 0%, #a855f7 50%, var(--legendary) 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; margin-bottom: 0.5rem; } .subtitle { color: var(--text-secondary); font-size: 0.9rem; } .main-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1.5rem; align-items: start; } @media (max-width: 900px) { .main-grid { grid-template-columns: 1fr; } } .panel { background: var(--bg-card); border: 1px solid var(--border); border-radius: 16px; padding: 1rem; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05); } .panel-header { display: flex; align-items: center; gap: 0.5rem; margin-bottom: 1rem; padding-bottom: 0.75rem; border-bottom: 1px solid var(--border); } .panel-icon { width: 28px; height: 28px; background: var(--accent-glow); border-radius: 6px; display: flex; align-items: center; justify-content: center; font-size: 0.9rem; } .panel-title { font-size: 1rem; font-weight: 600; } .config-section { margin-bottom: 0.75rem; } .config-section:last-child { margin-bottom: 0; } .section-label { font-size: 0.7rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; color: var(--text-muted); margin-bottom: 0.5rem; } .species-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(80px, 1fr)); gap: 0.4rem; } .species-btn { background: var(--bg-secondary); border: 1px solid var(--border); border-radius: 8px; padding: 0.5rem 0.3rem; color: var(--text-secondary); font-size: 0.75rem; cursor: pointer; transition: all 0.2s ease; text-align: center; } .species-btn:hover { background: var(--bg-card-hover); border-color: var(--border-hover); color: var(--text-primary); } .species-btn.selected { background: var(--accent); border-color: var(--accent); color: white; box-shadow: 0 2px 8px var(--accent-glow); } .species-btn .emoji { display: block; font-size: 1.25rem; margin-bottom: 0.15rem; } .rarity-row { display: flex; gap: 0.4rem; flex-wrap: wrap; } .rarity-pill { padding: 0.4rem 0.8rem; border-radius: 16px; border: 1px solid; font-size: 0.75rem; font-weight: 500; cursor: pointer; transition: all 0.2s ease; background: transparent; } .rarity-pill[data-rarity="common"] { border-color: var(--common); color: var(--common); } .rarity-pill[data-rarity="uncommon"] { border-color: var(--uncommon); color: var(--uncommon); } .rarity-pill[data-rarity="rare"] { border-color: var(--rare); color: var(--rare); } .rarity-pill[data-rarity="epic"] { border-color: var(--epic); color: var(--epic); } .rarity-pill[data-rarity="legendary"] { border-color: var(--legendary); color: var(--legendary); } .rarity-pill:hover { transform: scale(1.05); } .rarity-pill.selected[data-rarity="common"] { background: var(--common); color: white; } .rarity-pill.selected[data-rarity="uncommon"] { background: var(--uncommon); color: white; } .rarity-pill.selected[data-rarity="rare"] { background: var(--rare); color: white; } .rarity-pill.selected[data-rarity="epic"] { background: var(--epic); color: white; } .rarity-pill.selected[data-rarity="legendary"] { background: var(--legendary); color: white; } .icon-grid { display: flex; gap: 0.4rem; flex-wrap: wrap; } .icon-btn { width: 40px; height: 40px; background: var(--bg-secondary); border: 1px solid var(--border); border-radius: 8px; color: var(--text-primary); font-size: 1rem; cursor: pointer; transition: all 0.2s ease; display: flex; align-items: center; justify-content: center; } .icon-btn:hover { background: var(--bg-card-hover); border-color: var(--border-hover); transform: scale(1.05); } .icon-btn.selected { background: var(--accent); border-color: var(--accent); color: white; } .hat-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(80px, 1fr)); gap: 0.4rem; } .hat-btn { background: var(--bg-secondary); border: 1px solid var(--border); border-radius: 8px; padding: 0.5rem 0.3rem; color: var(--text-secondary); font-size: 0.7rem; cursor: pointer; transition: all 0.2s ease; text-align: center; } .hat-btn:hover { background: var(--bg-card-hover); border-color: var(--border-hover); color: var(--text-primary); } .hat-btn.selected { background: var(--accent); border-color: var(--accent); color: white; } .hat-btn .emoji { display: block; font-size: 1.25rem; margin-bottom: 0.15rem; } .toggle-group { display: flex; gap: 0.4rem; } .toggle-btn { flex: 1; padding: 0.5rem 0.75rem; background: var(--bg-secondary); border: 1px solid var(--border); border-radius: 8px; color: var(--text-secondary); font-size: 0.8rem; font-weight: 500; cursor: pointer; transition: all 0.2s ease; } .toggle-btn:hover { background: var(--bg-card-hover); border-color: var(--border-hover); } .toggle-btn.selected { background: var(--accent); border-color: var(--accent); color: white; } .mode-cards { display: grid; grid-template-columns: 1fr 1fr; gap: 0.4rem; } .mode-card { background: var(--bg-secondary); border: 2px solid var(--border); border-radius: 8px; padding: 0.5rem; cursor: pointer; transition: all 0.2s ease; text-align: center; } .mode-card:hover { border-color: var(--border-hover); transform: translateY(-2px); } .mode-card.selected { border-color: var(--accent); background: rgba(99, 102, 241, 0.08); } .mode-card .icon { font-size: 1rem; margin-bottom: 0.15rem; } .mode-card .label { font-weight: 600; font-size: 0.8rem; margin-bottom: 0.1rem; } .mode-card .desc { font-size: 0.65rem; color: var(--text-muted); } .number-input { display: flex; align-items: center; gap: 0.5rem; } .number-input input { flex: 1; background: var(--bg-secondary); border: 1px solid var(--border); border-radius: 8px; padding: 0.5rem 0.75rem; color: var(--text-primary); font-family: 'JetBrains Mono', monospace; font-size: 0.85rem; outline: none; transition: all 0.2s ease; } .number-input input:focus { border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-glow); } .number-input label { font-size: 0.75rem; color: var(--text-secondary); min-width: 60px; } /* Stats filter */ .stats-filter-grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: 0.4rem; } .stat-filter-item { background: var(--bg-secondary); border: 1px solid var(--border); border-radius: 8px; padding: 0.4rem; text-align: center; } .stat-filter-name { font-size: 0.65rem; color: var(--text-muted); margin-bottom: 0.25rem; } .stat-filter-input { width: 100%; background: transparent; border: none; text-align: center; font-family: 'JetBrains Mono', monospace; font-size: 0.85rem; color: var(--text-primary); outline: none; } .stat-filter-input:focus { color: var(--accent); } .stat-filter-hint { font-size: 0.6rem; color: var(--text-muted); margin-top: 0.15rem; } .run-panel { margin-top: 0.75rem; display: flex; gap: 0.5rem; } .run-btn { flex: 1; padding: 0.75rem 1.5rem; background: linear-gradient(135deg, var(--accent) 0%, #a855f7 100%); border: none; border-radius: 10px; color: white; font-size: 1rem; font-weight: 600; cursor: pointer; transition: all 0.3s ease; display: flex; align-items: center; justify-content: center; gap: 0.5rem; } .run-btn:hover { transform: translateY(-2px); box-shadow: 0 4px 12px var(--accent-glow); } .run-btn:disabled { opacity: 0.5; cursor: not-allowed; transform: none; } .stop-btn { padding: 0.75rem 1rem; background: var(--stop); border: none; border-radius: 10px; color: white; font-size: 0.9rem; font-weight: 600; cursor: pointer; transition: all 0.3s ease; display: none; align-items: center; justify-content: center; gap: 0.5rem; } .stop-btn:hover { background: #dc2626; transform: translateY(-2px); } .stop-btn.active { display: flex; } .output-area { background: var(--bg-secondary); border: 1px solid var(--border); border-radius: 10px; padding: 0.75rem; min-height: 200px; max-height: 400px; overflow: auto; font-family: 'JetBrains Mono', monospace; font-size: 0.75rem; } .output-area:empty::before { content: 'Waiting for results...'; color: var(--text-muted); font-style: italic; } .output-line { padding: 0.2rem 0; border-bottom: 1px solid var(--border); } .output-line:last-child { border-bottom: none; } .output-success { color: var(--success); } .output-error { color: var(--error); } .attempts-badge { display: inline-block; background: var(--accent); color: white; padding: 0.15rem 0.5rem; border-radius: 10px; font-size: 0.65rem; } .copy-btn { background: linear-gradient(135deg, #3b82f6 0%, #1d4ed8 100%); border: none; border-radius: 6px; padding: 0.35rem 0.75rem; color: white; font-size: 0.8rem; font-weight: 600; cursor: pointer; transition: all 0.2s ease; box-shadow: 0 2px 4px rgba(59, 130, 246, 0.3); } .copy-btn:hover { transform: translateY(-1px); box-shadow: 0 4px 8px rgba(59, 130, 246, 0.4); } .copy-btn.copied { background: linear-gradient(135deg, #22c55e 0%, #16a34a 100%); box-shadow: 0 2px 4px rgba(34, 197, 94, 0.3); } .replace-btn { background: linear-gradient(135deg, #f59e0b 0%, #ea580c 100%); border: none; border-radius: 6px; padding: 0.35rem 0.75rem; color: white; font-size: 0.8rem; font-weight: 600; cursor: pointer; transition: all 0.2s ease; margin-left: 0.5rem; box-shadow: 0 2px 4px rgba(245, 158, 11, 0.3); } .replace-btn:hover { transform: translateY(-1px); box-shadow: 0 4px 8px rgba(245, 158, 11, 0.4); } .spinner { width: 16px; height: 16px; border: 2px solid rgba(255,255,255,0.3); border-top-color: white; border-radius: 50%; animation: spin 0.8s linear infinite; } @keyframes spin { to { transform: rotate(360deg); } } .clear-btn { background: transparent; border: 1px solid var(--border); border-radius: 6px; padding: 0.4rem 0.8rem; color: var(--text-secondary); font-size: 0.75rem; cursor: pointer; transition: all 0.2s ease; } .clear-btn:hover { background: var(--bg-card-hover); border-color: var(--border-hover); color: var(--text-primary); } .panel-header-actions { margin-left: auto; } .progress-bar { width: 100%; height: 3px; background: var(--border); border-radius: 2px; overflow: hidden; margin-top: 0.4rem; } .progress-fill { height: 100%; background: linear-gradient(90deg, var(--accent), #a855f7); width: 0%; transition: width 0.2s ease; } .status-bar { display: flex; gap: 0.75rem; font-size: 0.75rem; color: var(--text-muted); margin-top: 0.4rem; } .worker-status { display: flex; gap: 0.4rem; flex-wrap: wrap; margin-top: 0.4rem; } .worker-badge { padding: 0.15rem 0.4rem; border-radius: 4px; font-size: 0.6rem; background: var(--bg-secondary); border: 1px solid var(--border); } .worker-badge.running { background: var(--accent); color: white; border-color: var(--accent); } /* Stats display */ .stats-container { display: grid; grid-template-columns: repeat(5, 1fr); gap: 0.3rem; margin-top: 0.3rem; } .stat-item { text-align: center; padding: 0.3rem; background: var(--bg-secondary); border-radius: 6px; } .stat-name { font-size: 0.55rem; color: var(--text-muted); margin-bottom: 0.15rem; } .stat-bar { height: 6px; background: var(--border); border-radius: 3px; overflow: hidden; margin-bottom: 0.15rem; } .stat-bar-fill { height: 100%; border-radius: 3px; transition: width 0.3s ease; } .stat-value { font-size: 0.75rem; font-weight: 600; } .stat-item.high .stat-bar-fill { background: var(--legendary); } .stat-item.medium .stat-bar-fill { background: var(--epic); } .stat-item.low .stat-bar-fill { background: var(--rare); } /* Modal */ .modal { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.5); z-index: 1000; align-items: center; justify-content: center; } .modal.active { display: flex; } .modal-content { background: var(--bg-card); border-radius: 16px; padding: 1.5rem; max-width: 700px; max-height: 90vh; overflow: auto; box-shadow: 0 20px 40px rgba(0,0,0,0.2); } .modal-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 1rem; } .modal-title { font-size: 1.1rem; font-weight: 600; } .modal-close { background: transparent; border: none; font-size: 1.25rem; cursor: pointer; color: var(--text-muted); } .modal-close:hover { color: var(--text-primary); } .code-block { background: #1e293b; color: #e2e8f0; padding: 0.75rem; border-radius: 6px; font-family: 'JetBrains Mono', monospace; font-size: 0.8rem; overflow-x: auto; white-space: pre-wrap; word-break: break-all; } .step { margin-bottom: 0.75rem; padding-left: 1.25rem; } .step-number { display: inline-block; width: 1.25rem; height: 1.25rem; background: var(--accent); color: white; border-radius: 50%; text-align: center; line-height: 1.25rem; font-size: 0.75rem; margin-left: -1.25rem; margin-right: 0.4rem; } .warning-box { background: #fef3c7; border: 1px solid #f59e0b; border-radius: 6px; padding: 0.75rem; margin-top: 0.75rem; color: #92400e; font-size: 0.85rem; } .success-box { background: #d1fae5; border: 1px solid #22c55e; border-radius: 6px; padding: 0.75rem; margin-top: 0.75rem; color: #047857; font-size: 0.85rem; } .copy-code-btn { background: var(--accent); border: none; border-radius: 6px; padding: 0.4rem 0.8rem; color: white; font-size: 0.8rem; cursor: pointer; margin-top: 0.4rem; } .copy-code-btn:hover { background: var(--accent-hover); } .method-tabs { display: flex; gap: 0.4rem; margin-bottom: 0.75rem; } .method-tab { padding: 0.5rem 1rem; background: var(--bg-secondary); border: 2px solid var(--border); border-radius: 6px; cursor: pointer; transition: all 0.2s ease; font-size: 0.85rem; } .method-tab:hover { border-color: var(--accent); } .method-tab.active { background: var(--accent); color: white; border-color: var(--accent); } .method-content { display: none; } .method-content.active { display: block; } .info-text { color: var(--text-secondary); font-size: 0.85rem; margin-top: 0.4rem; } .sub-step { margin-left: 1.25rem; margin-top: 0.4rem; padding: 0.5rem; background: var(--bg-secondary); border-radius: 6px; border: 1px solid var(--border); font-size: 0.85rem; } .sub-step-title { font-weight: 600; margin-bottom: 0.15rem; } .keyboard-shortcut { display: inline-block; background: var(--border); padding: 0.15rem 0.4rem; border-radius: 4px; font-family: 'JetBrains Mono', monospace; font-size: 0.75rem; margin: 0 0.15rem; }

Claude Code Buddy Configurator Pro

并发搜索 + 后台运行 + 属性筛选 + 一键替换 userID

<div class="main-grid"> <!-- Left Panel: Filters --> <div class="panel"> <div class="panel-header"> <div class="panel-icon">🎯</div> <h2 class="panel-title">筛选条件</h2> </div> <div class="config-section"> <div class="section-label">物种 (Species)</div> <div class="species-grid" id="speciesGrid"></div> </div> <div class="config-section"> <div class="section-label">稀有度 (Rarity)</div> <div class="rarity-row" id="rarityRow"></div> </div> <div class="config-section"> <div class="section-label">眼睛 (Eye)</div> <div class="icon-grid" id="eyeGrid"></div> </div> <div class="config-section"> <div class="section-label">帽子 (Hat)</div> <div class="hat-grid" id="hatGrid"></div> </div> <div class="config-section"> <div class="section-label">闪光 (Shiny)</div> <div class="toggle-group" id="shinyGroup"> <button class="toggle-btn selected" data-value="any">任意</button> <button class="toggle-btn" data-value="true">是 ✨</button> <button class="toggle-btn" data-value="false">否</button> </div> </div> <div class="config-section"> <div class="section-label">属性最小值 (Stats Min)</div> <div class="stats-filter-grid" id="statsFilterGrid"></div> <p style="font-size: 0.65rem; color: var(--text-muted); margin-top: 0.3rem;">留空或0表示不筛选该属性</p> </div> </div> <!-- Right Panel: Settings --> <div class="panel"> <div class="panel-header"> <div class="panel-icon">⚙️</div> <h2 class="panel-title">运行设置</h2> <div class="panel-header-actions"> <button class="clear-btn" onclick="clearOutput()">清空</button> </div> </div> <div class="config-section"> <div class="section-label">模式 (Mode)</div> <div class="mode-cards" id="modeCards"> <div class="mode-card selected" data-mode="random"> <div class="icon">🎲</div> <div class="label">随机</div> <div class="desc">随机生成用户ID</div> </div> <div class="mode-card" data-mode="sequential"> <div class="icon">🔢</div> <div class="label">顺序</div> <div class="desc">按前缀+索引生成</div> </div> </div> </div> <div id="sequentialSettings" style="display: none;"> <div class="config-section"> <div class="section-label">前缀 (Prefix)</div> <div class="number-input"> <input type="text" id="prefixInput" placeholder="user-" value="user-"> </div> </div> <div class="config-section"> <div class="section-label">起始索引 (Start)</div> <div class="number-input"> <input type="number" id="startInput" value="0" min="0"> </div> </div> </div> <div class="config-section"> <div class="section-label">并发数 (Workers)</div> <div class="number-input"> <input type="number" id="workersInput" value="4" min="1" max="16"> <label>线程</label> </div> </div> <div class="config-section"> <div class="section-label">随机字节长度 (Bytes)</div> <div class="number-input"> <input type="number" id="bytesInput" value="32" min="1" max="64"> <label>bytes</label> </div> </div> <div class="config-section"> <div class="section-label">最大尝试次数 (Limit)</div> <div class="number-input"> <input type="number" id="limitInput" value="5000000" min="1"> <label>次</label> </div> </div> <div class="config-section"> <div class="section-label">返回数量 (Count)</div> <div class="number-input"> <input type="number" id="countInput" value="1" min="1" max="100"> <label>个</label> </div> </div> <div class="config-section run-panel"> <button class="run-btn" id="runBtn" onclick="startSearch()"> <span>🚀</span> <span>开始并发搜索</span> </button> <button class="stop-btn" id="stopBtn" onclick="stopSearch()"> <span>⏹</span> <span>停止</span> </button> </div> <div class="progress-bar"> <div class="progress-fill" id="progressFill"></div> </div> <div class="status-bar" id="statusBar"> <span id="statusAttempts">尝试: 0</span> <span id="statusFound">找到: 0</span> <span id="statusTime">时间: 0s</span> </div> <div class="worker-status" id="workerStatus"></div> <div class="config-section"> <div class="section-label">结果 (Results)</div> <div class="output-area" id="outputArea"></div> </div> </div> </div>

🔄 替换 ~/.claude.json 的 userID

×

<div class="step"> <span class="step-number">1</span> <strong>生成的 userID:</strong> </div> <div class="code-block" id="generatedUserId"></div> <button class="copy-code-btn" onclick="copyGeneratedUserId()">📋 复制 userID</button> <hr style="margin: 1rem 0; border-color: var(--border);"> <div class="step"> <span class="step-number">2</span> <strong>选择替换方法:</strong> </div> <div class="method-tabs"> <div class="method-tab active" onclick="switchMethod('powershell')">PowerShell 命令</div> <div class="method-tab" onclick="switchMethod('manual')">手动编辑</div> </div> <!-- PowerShell Method --> <div class="method-content active" id="method-powershell"> <div class="step"> <span class="step-number">A</span> <strong>打开 PowerShell</strong> </div> <div class="sub-step"> <div class="sub-step-title">方法一:快捷键</div> 按 <span class="keyboard-shortcut">Win</span> + <span class="keyboard-shortcut">X</span>,选择 "Windows PowerShell" 或 "终端" </div> <div class="sub-step"> <div class="sub-step-title">方法二:搜索</div> 按 <span class="keyboard-shortcut">Win</span> 键,输入 "powershell",按 <span class="keyboard-shortcut">Enter</span> </div> <div class="sub-step"> <div class="sub-step-title">方法三:运行</div> 按 <span class="keyboard-shortcut">Win</span> + <span class="keyboard-shortcut">R</span>,输入 "powershell",按 <span class="keyboard-shortcut">Enter</span> </div> <div class="step" style="margin-top: 0.75rem;"> <span class="step-number">B</span> <strong>复制并执行以下命令</strong> </div> <p class="info-text">命令会自动读取配置文件、替换 userID、保存文件</p> <div class="code-block" id="replaceCommand"></div> <button class="copy-code-btn" onclick="copyReplaceCommand()">📋 复制命令</button> <div class="step" style="margin-top: 0.75rem;"> <span class="step-number">C</span> <strong>重启 Claude Code</strong> </div> <p class="info-text">关闭 Claude Code CLI 或 IDE 插件,重新启动即可生效</p> <div class="success-box"> ✅ <strong>完成!</strong>执行命令后,userID 已替换。重启 Claude Code 即可看到新的 Buddy。 </div> </div> <!-- Manual Method --> <div class="method-content" id="method-manual"> <div class="step"> <span class="step-number">A</span> <strong>找到配置文件位置</strong> </div> <div class="sub-step"> <div class="sub-step-title">Windows 路径</div> <code style="background: var(--bg-secondary); padding: 0.4rem; border-radius: 4px; display: block; font-size: 0.8rem;"> C:\Users\你的用户名\.claude.json </code> <p class="info-text" style="margin-top: 0.4rem;"> 你的完整路径:<code id="fullPath" style="background: var(--bg-secondary); padding: 0.2rem 0.4rem; border-radius: 4px; font-size: 0.8rem;"></code> </p> </div> <div class="step" style="margin-top: 0.75rem;"> <span class="step-number">B</span> <strong>打开文件</strong> </div> <div class="sub-step"> <div class="sub-step-title">推荐工具</div> VS Code、Notepad++、记事本都可以 </div> <div class="sub-step"> <div class="sub-step-title">快捷方式</div> 在 PowerShell 中执行:<code style="background: var(--bg-secondary); padding: 0.2rem 0.4rem; border-radius: 4px; font-size: 0.8rem;">code "$HOME\.claude.json"</code> </div> <div class="step" style="margin-top: 0.75rem;"> <span class="step-number">C</span> <strong>修改 userID 字段</strong> </div> <p class="info-text">找到并替换:</p> <div class="code-block" id="manualReplaceExample" style="font-size: 0.7rem;"></div> <div class="step" style="margin-top: 0.75rem;"> <span class="step-number">D</span> <strong>保存文件并重启 Claude Code</strong> </div> <div class="warning-box"> ⚠️ <strong>注意:修改前建议备份原文件!</strong><br> <code style="background: var(--bg-secondary); padding: 0.2rem 0.4rem; border-radius: 4px; font-size: 0.75rem;">Copy-Item "$HOME\.claude.json" "$HOME\.claude.json.backup"</code> </div> </div> </div> 网友解答:


--【壹】--:

佬牛b,我去我还不知道咋养,佬们就开始定制了


--【贰】--:

傻了.我粘贴了什么.


--【叁】--:

已经变成金色传说了


--【肆】--:

佬,没有看懂是怎么操作的

标签:纯水