🎯 主要功能: - 智能检测系统中已安装的现代化命令行工具 - 支持 44 种默认命令映射 (ls→eza, cat→bat, find→fd 等) - 灵活的环境变量配置系统 - AI 提示词集成,优先推荐现代化工具 - 完整的配置状态显示 ⚙️ 配置方式: - 环境变量: AI_SHELL_MODERN_COMMANDS="ls:eza,cat:bat" - .env 文件配置支持 - 动态配置检测和合并 🔧 技术实现: - 新增 get_modern_commands() 配置管理 - 新增 get_available_modern_commands() 系统检测 - 新增 generate_modern_commands_prompt() 提示词生成 - 更新 AI agent 系统提示词 - 完善配置显示和测试脚本 📊 支持的现代化工具: 文件操作: eza, bat, fd, tree 文本处理: rg, sd, choose, delta 系统监控: procs, htop, ncdu, duf 网络工具: gping, httpie, aria2c 编辑器: nvim, micro 其他: zoxide, trash, ouch, pnpm
93 lines
3.1 KiB
Python
Executable File
93 lines
3.1 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
"""
|
|
测试现代化命令替代功能
|
|
"""
|
|
|
|
import sys
|
|
import os
|
|
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..'))
|
|
|
|
from ai_shell.config import (
|
|
get_modern_commands,
|
|
get_available_modern_commands,
|
|
generate_modern_commands_prompt
|
|
)
|
|
|
|
def test_modern_commands():
|
|
"""测试现代化命令配置"""
|
|
print("🧪 测试现代化命令替代功能\n")
|
|
|
|
# 测试获取所有配置的现代化命令
|
|
print("1. 所有配置的现代化命令:")
|
|
all_commands = get_modern_commands()
|
|
for old_cmd, new_cmd in sorted(all_commands.items()):
|
|
status = "✅" if old_cmd != new_cmd else "➡️"
|
|
print(f" {status} {old_cmd} → {new_cmd}")
|
|
print(f" 总计: {len(all_commands)} 个命令\n")
|
|
|
|
# 测试获取系统中可用的现代化命令
|
|
print("2. 系统中可用的现代化命令:")
|
|
available_commands = get_available_modern_commands()
|
|
active_alternatives = {k: v for k, v in available_commands.items() if k != v}
|
|
unchanged_commands = {k: v for k, v in available_commands.items() if k == v}
|
|
|
|
if active_alternatives:
|
|
print(" 已启用的替代:")
|
|
for old_cmd, new_cmd in sorted(active_alternatives.items()):
|
|
print(f" ✅ {old_cmd} → {new_cmd}")
|
|
|
|
if unchanged_commands:
|
|
print(f" 保持原样: {', '.join(sorted(unchanged_commands.keys()))}")
|
|
|
|
print(f" 可用命令总计: {len(available_commands)} 个\n")
|
|
|
|
# 测试生成提示词
|
|
print("3. 生成的 AI 提示词:")
|
|
prompt = generate_modern_commands_prompt()
|
|
if prompt:
|
|
print(prompt)
|
|
else:
|
|
print(" 无可用的现代化命令替代")
|
|
|
|
def test_custom_config():
|
|
"""测试自定义配置"""
|
|
print("\n" + "="*60)
|
|
print("🔧 测试自定义配置")
|
|
|
|
# 设置自定义环境变量
|
|
original_env = os.environ.get("AI_SHELL_MODERN_COMMANDS", "")
|
|
os.environ["AI_SHELL_MODERN_COMMANDS"] = "ls:exa,cat:bat,find:fd,test:custom"
|
|
|
|
print(f"设置环境变量: AI_SHELL_MODERN_COMMANDS={os.environ['AI_SHELL_MODERN_COMMANDS']}")
|
|
|
|
# 重新导入模块以获取新配置
|
|
import importlib
|
|
import ai_shell.config
|
|
importlib.reload(ai_shell.config)
|
|
|
|
from ai_shell.config import get_modern_commands
|
|
|
|
custom_commands = get_modern_commands()
|
|
print("\n自定义配置结果:")
|
|
custom_overrides = ["ls", "cat", "find", "test"]
|
|
for cmd in custom_overrides:
|
|
if cmd in custom_commands:
|
|
print(f" ✅ {cmd} → {custom_commands[cmd]}")
|
|
|
|
# 恢复原始环境变量
|
|
if original_env:
|
|
os.environ["AI_SHELL_MODERN_COMMANDS"] = original_env
|
|
else:
|
|
os.environ.pop("AI_SHELL_MODERN_COMMANDS", None)
|
|
|
|
if __name__ == "__main__":
|
|
test_modern_commands()
|
|
test_custom_config()
|
|
|
|
print("\n" + "="*60)
|
|
print("✅ 测试完成!")
|
|
print("\n使用方法:")
|
|
print("1. 查看当前配置: ai --config")
|
|
print("2. 设置自定义替代: export AI_SHELL_MODERN_COMMANDS=\"ls:eza,cat:bat\"")
|
|
print("3. 测试命令生成: ai \"列出文件\"")
|