Files
ai-shell/scripts/test_modern_commands.py
zackeryyy wang c4d1510ce9 feat: 新增现代化命令替代功能 v0.2.0
🎯 主要功能:
- 智能检测系统中已安装的现代化命令行工具
- 支持 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
2025-07-12 22:32:09 +08:00

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 \"列出文件\"")