Claude配置管理工具

一个用于管理Claude Code配置文件的终端用户界面(TUI)应用,提供MCP服务器、项目和对话的层次化管理功能。

  • by joeyism
  • Python
  • 本地部署
  • 22 星标
  • 更新于
在 GitHub 查看 joeyism/claude-code-config

使用说明

Claude代码配置

用于管理Claude Code配置文件的现代终端用户界面(TUI)应用程序(~/.claude.json).通过直观的分层界面简化MCP服务器、项目和对话的管理。

特性

MCP服务器管理

  • 分层视图:以树形结构浏览全局和项目级MCP服务器
  • 添加、编辑、删除:MCP服务器配置的完整CRUD操作
  • 复制服务器:通过可视化剪贴板跟踪快速复制服务器配置
  • 移动服务器:在全局范围和项目之间移动服务器
  • 多范围支持:管理全局服务器和特定于项目的服务器
  • 敏感值屏蔽:默认情况下掩盖API密钥和机密(按 V 切换)

项目与对话管理

  • 项目浏览器:查看您的所有Claude Code项目,包括服务器、对话和历史记录计数
  • 真实对话管理:浏览、查看详细信息和删除实际 .jsonl 来自文件系统的对话文件
  • 对话统计:查看每个对话的消息计数、文件大小和年龄
  • 对话清理:删除具有完整元数据可见性的旧对话
  • 历史记录管理:在项目之间查看、删除和移动历史记录项
  • 项目组织:查看每个项目配置了哪些MCP服务器

安全性和可靠性

  • 自动备份:每次保存前创建带时间戳的备份
  • 撤消/恢复系统:完全支持撤消/重做 Ctrl+Z/Ctrl+Y (最多50个动作)
  • JSON验证:确保您的配置保持有效
  • 回滚支持:如果需要,可以轻松从备份中恢复
  • 非破坏性操作:删除前确认
  • 错误记录:具有导出功能的持久错误日志(按 l 查看)

高级功能

  • 环境变量支持:手柄 ${VAR} 服务器配置中的语法
  • HTTP/SSE服务器:支持stdio、HTTP和SSE服务器类型,并支持标头
  • 大文件处理:高效管理大型配置文件(处理多MB文件)
  • 视觉导航:直观的基于树的导航和焦点管理
  • 视觉变化指示器:使用查看未保存的更改 * 在标题栏和橙色保存按钮中
  • 增强剪贴板:复制/粘贴服务器和历史记录,并进行可视化状态跟踪

安装

来自PyPI

pip install claude-code-config

来源

git clone https://github.com/joeyism/claude-code-config.git
cd claude-code-config
pip install -e .

用法

启动TUI应用程序:

claude-config
# or use the short alias
ccm

键盘快捷键

导航

  • ↑/↓ 或 j/k:导航树
  • Enter 或 Space:展开/折叠树节点
  • Right/Left:展开/折叠节点

行动

  • a:添加新的MCP服务器或历史记录项
  • e:编辑所选服务器或历史记录项
  • d:删除所选项目(服务器、对话或历史记录)
  • c:将所选服务器或历史记录项复制到剪贴板
  • p:从剪贴板粘贴
  • m:将服务器或历史记录项移动到其他项目
  • v:查看粘贴的内容详细信息

文件操作

  • s:保存更改
  • r:从磁盘重新加载
  • q 或 Ctrl+C:退出(如果未保存更改,则确认)

高级功能

  • V:切换敏感值遮罩(显示/隐藏秘密)
  • Ctrl+Z:撤消上次操作
  • Ctrl+Y:重做操作
  • u:查看撤消/重做历史记录
  • l:查看错误日志
  • x:清除剪贴板
  • ?:显示帮助

配置文件结构

该工具管理 ~/.claude.json,其中包括:

  • mcpServers:全局MCP(模型上下文协议)服务器配置
  • 项目:项目特定设置,包括:
    • mcpServers:项目级MCP服务器配置
    • 对话:每个项目的对话历史记录(注:实际对话为 .jsonl 文件在 ~/.claude/projects/)
    • 历史:用户输入历史记录,便于快速访问
    • 各种项目特定设置
  • 其他设置:各种克劳德代码设置(保留)

层次结构

Claude Configuration
├── Global Servers (1)
│   └── 📡 terraform-cloud-mcp
└── Projects
    ├── 📁 delorean (3s, 15c, 14h)
    │   ├── MCP Servers (3)
    │   │   ├── 📡 mcp_server_mysql
    │   │   ├── 📡 replicate_server
    │   │   └── 📡 bigquery
    │   ├── Conversations (15)
    │   │   └── 💬 Implement user auth (4 days ago)
    │   └── History (14)
    │       └── 📝 ...
    └── 📁 web (2s, 8c, 20h)
        └── ...

MCP服务器格式

标准服务器:

{
  "command": "npx",
  "args": ["-y", "@modelcontextprotocol/server-example"],
  "env": {
    "API_KEY": "${API_KEY}"
  }
}

HTTP服务器:

{
  "type": "http",
  "url": "https://api.example.com/mcp",
  "headers": {
    "Authorization": "Bearer ${API_TOKEN}"
  }
}

发展

设置开发环境

# Clone the repository
git clone https://github.com/joeyism/claude-code-config.git
cd claude-code-config

# Install with development dependencies
pip install -e ".[dev]"

运行测试

# Run full test suite
pytest tests/

# Or run quick validation tests
python test_phase1_simple.py

代码格式化

black claude_code_config/
ruff check claude_code_config/

为什么使用Claude代码配置?

这 ~/.claude.json 文件可以增长到数百个项目和服务器的几兆字节。手动编辑变为:

  • 容易出错:易于破解的JSON语法
  • 困难:在各个项目中很难找到特定的服务器
  • 冒险的:无自动备份
  • 耗时的:导航大型嵌套结构

Claude Code Config通过以下方式解决了这些问题:

  • 可视化树导航
  • 具有验证和撤消/重做功能的安全编辑
  • 自动备份
  • 快速搜索和过滤
  • 具有文件大小跟踪功能的会话管理

常见用例

  1. 清理旧对话:通过删除对话(包含文件大小信息和总统计数据)释放空间
  2. 管理历史记录项目:在项目之间查看、删除或移动历史条目(支持撤消)
  3. 组织MCP服务器:在全局范围和项目范围之间移动服务器
  4. 复制服务器配置:新项目的重复工作配置(带剪贴板跟踪)
  5. 审核服务器使用情况:查看哪些项目使用哪些MCP服务器
  6. 安全地编辑配置:使用撤消/重做安全网进行更改
  7. 保护秘密:在不公开API密钥的情况下浏览配置(自动屏蔽功能)
  8. 跟踪对话增长:监控对话文件大小并清理大型旧对话

最近的增强功能(2026年1月)

第一阶段:用户体验改进

撤消/恢复系统

  • 具有完整的撤消/重做功能 Ctrl+Z (撤消)和 Ctrl+Y (重做)
  • 在破坏性操作之前,使用自动快照存储多达50个先前状态
  • 使用查看撤消/重做历史记录 u 钥匙
  • 保存/重新加载后的智能清算
  • 为意外变更提供安全网

变化的视觉指示器

  • 标题栏显示 * 修改配置时
  • 字幕显示“⚠ 当有未保存的修改时,显示“未保存的更改”
  • 保存按钮从绿色变为橙色并显示 * 当存在更改时
  • 修改后自动更新
  • 清晰的视觉反馈可防止意外数据丢失

增强剪贴板

  • 顶部的状态栏显示剪贴板内容:服务器或历史记录项
  • 带有图标的视觉反馈(📋) 以及彩色信息
  • 新 x 快速清除剪贴板的快捷方式
  • 显示详细摘要:“服务器'name'|环境:2个变量|标头:1个项目”
  • 类型感知剪贴板区分服务器和历史记录项

持续错误日志

  • 按 l 查看全面的错误日志
  • 存储最近100个错误的完整详细信息(消息、回溯、上下文)
  • 功能:浏览错误、导出到文件、清除日志、按严重程度过滤
  • 具有15秒超时的增强通知包括错误日志提示
  • 帮助解决问题,而不会丢失错误信息

改进对话

  • 移动服务器对话框现在与移动历史对话框一致
  • 清晰的目标选择界面
  • 在项目之间移动项目的更好用户体验

新键盘快捷键:

  • Ctrl+Z:撤消上次操作
  • Ctrl+Y:重做
  • u:查看撤消/重做历史记录
  • l:查看错误日志
  • x:清除剪贴板

添加的文件:

  • claude_code_config/undo.py:撤消/重做管理器实施
  • claude_code_config/error_log.py:错误记录系统
  • tests/test_phase1.py:全面的测试套件

真实对话管理

发现 该工具最初在中查找对话 ~/.claude.json 在...之下 projects[path].conversations,但此字段始终为空。Claude Code实际上将对话存储为 .jsonl 文件在 ~/.claude/projects/<project-name>/。许多用户有数百个对话,但无法查看或管理它们!

已实施的解决方案:

  1. 会话文件模型 (conversations.py)

    • 作语法分析 .jsonl 来自文件系统的对话文件
    • 提取丰富的元数据:标题(来自第一条用户消息)、创建日期、消息计数、文件大小
    • 提供人类可读的年龄(“4天前”)和大小(KB/MB)格式化程序
    • 支持删除实际对话文件
  2. 对话扫描仪 (conversations.py)

    • 自动扫描 ~/.claude/projects/ 启动时的目录
    • 按项目对对话进行分组,以便有组织地显示
    • 提供统计数据:总对话数、项目数、累计规模
    • 高效扫描:只读取前50行进行元数据提取
    • 针对大型对话文件进行了性能优化
  3. 增强的ConfigMgr (config.py)

    • 集成ConversationScanner,用于实时文件系统扫描
    • 新方法: get_conversations(project_path) -检索特定项目的对话
    • 新方法: get_all_conversations() -按项目对所有对话进行分组
    • 新方法: get_conversation_stats() -获得全面的统计数据
  4. TUI更新 (tui.py)

    • 从文件系统而不是配置文件加载真实对话
    • 树显示对话标题和年龄:“💬 实现用户身份验证(4天前)”
    • 详细信息面板显示了全面的元数据:
      • 全称
      • 对话ID
      • 消息计数
      • 文件大小(KB/MB)
      • 人类可读年龄
      • 完整文件路径位置
    • 删除功能现在删除实际 .jsonl 磁盘文件
    • 每个项目最多显示50个对话,以提高UI性能

用途:

查看对话:

  1. 发射 claude-config
  2. 导航到树中的任何项目
  3. 展开项目节点以查看“对话(N)”
  4. 展开以查看所有标题和年龄的对话
  5. 选择对话以在右侧面板中查看完整详细信息

删除旧对话:

  1. 从树中选择对话
  2. 按 d 删掉
  3. 在对话框中确认删除(显示对话标题)
  4. 这 .jsonl 文件已从文件系统中永久删除

统计示例:

  • 测试显示,12个项目中有302个对话
  • 总大小:30.85 MB对话数据
  • 顶级项目: python-movie-maker 86个对话

技术细节:

  • 文件格式: ~/.claude/projects/<project-name>/<conversation-id>.jsonl
  • 文件中的每一行都是一个JSON对象(每行一条消息)
  • 性能:仅读取元数据的前50行
  • 显示限制:UI中显示的每个项目50个对话

安全:敏感值屏蔽

问题 在浏览MCP服务器时,诸如API密钥、令牌和机密之类的敏感值在环境变量和标题中以纯文本显示。这带来了肩上冲浪、意外截图、屏幕共享和剪贴板状态暴露等安全风险。

解决方案:

默认遮罩

  • 默认情况下,为了安全起见,所有环境变量和标头值都会被屏蔽
  • 节目 **** 而不是详细信息面板中的实际值
  • 自动应用于全局和项目范围的服务器
  • 每次启动应用程序时,屏蔽重置为启用状态(基于会话的安全性)

切换可见性

  • 按 V (大写V)暂时打开/关闭遮罩
  • 出现视觉通知:“🔒 敏感值被掩盖“或”👁 敏感值可见”
  • 状态在会话期间持续存在,但在应用程序重新启动时重置为掩码
  • 允许在需要时显示值,而不会影响默认安全性

遮蔽显示示例:

Environment Variables:
  API_KEY = ****
  SECRET_TOKEN = ****

Headers:
  Authorization = ****
  CONTEXT7_API_KEY = ****

Press 'e' to edit | [*****] (V to toggle)

未屏蔽显示(按V后):

Environment Variables:
  API_KEY = sk-1234567890abcdef...
  SECRET_TOKEN = token123...

Headers:
  Authorization = Bearer xyz123...
  CONTEXT7_API_KEY = ctx7sk-abc...

Press 'e' to edit | [SHOWN] (V to toggle)

受保护的剪贴板

  • 剪贴板状态栏显示摘要而不是实际值
  • 例子: 📋 Clipboard: Server 'context7' | Env: 2 vars | Headers: 1 items
  • 即使被复制,状态栏中也不会显示敏感数据
  • 防止在屏幕共享过程中意外暴露

视觉指示器

  • [*****] 值被屏蔽时显示的指示器(默认)
  • [SHOWN] 当值可见时,指示器出现
  • 指示器出现在带有切换指令的详细面板中
  • 颜色编码通知(信息为屏蔽,警告为可见)

编辑表单行为

  • 编辑服务器时(按 e),表单总是显示真实的未屏蔽值
  • 编辑和保存配置更改所必需的
  • 仅浏览视图使用屏蔽以确保安全
  • 编辑表单独立操作,可以完全访问值

安全优势:

  • 默认安全姿态(启动时屏蔽)
  • 防止肩膀冲浪和未经授权的观看
  • 屏幕截图和屏幕录制安全
  • 在演示和屏幕共享会话期间受到保护
  • 基于会话:自动重置为安全状态

实施:

  • 修改了7个地点 tui.py
  • 添加约40条线,实现完整的遮蔽系统
  • 性能影响:可忽略不计(每次操作<1ms)
  • 修改的文件: claude_code_config/tui.py

贡献

欢迎投稿!请随时提交拉取请求。

  1. 克隆该仓库
  2. 创建功能分支(git checkout -b feature/AmazingFeature)
  3. 提交您的更改(git commit -m 'Add some AmazingFeature')
  4. 推到分支(git push origin feature/AmazingFeature)
  5. 打开拉取请求

许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

致谢

  • 建于 文本的 -Python的现代TUI框架
  • 设计用于 克劳德代码 通过Anthropic
  • 受复杂JSON文件需要更好的配置管理工具的启发

支持

如果您遇到任何问题或有任何建议,请 打开一个问题 在GitHub上。