Skip to content

Shell 集成

Shell 集成是 AIS 的核心功能,通过钩子机制自动捕获命令执行错误并触发智能分析。

🔄 Shell 集成工作流程

🚀 集成流程详解

1. 钩子机制 🪝

不同 Shell 使用不同的钩子机制捕获命令执行状态:

  • Bash: trap ERR 捕获失败命令
  • Zsh: preexec + precmd 组合捕获
  • Fish: fish_postexec 事件处理

2. 异步处理

所有分析过程都在后台异步执行,确保不影响用户的正常操作:

bash
# 后台异步执行,不阻塞 Shell
ais analyze --exit-code $exit_code --command "$command" &

3. 智能触发 🎯

只有在特定条件下才触发分析,避免不必要的资源消耗:

  • 命令退出码非零
  • 不是 AIS 内部命令
  • 自动分析功能已启用

🐚 支持的 Shell

完全支持

  • Bash 4.0+
  • Zsh 5.0+
  • Fish 3.0+

基本支持

  • Dash - 基本错误捕获
  • Ksh - 基本错误捕获

🚀 自动设置

一键设置

bash
# 自动检测并配置当前 Shell
ais setup

# 设置完成后重新加载配置
source ~/.bashrc    # Bash
source ~/.zshrc     # Zsh
exec fish          # Fish

验证设置

bash
# 测试 Shell 集成
ais test-integration

# 测试集成状态
ais test-integration

# 触发测试错误
false && echo "这个命令会失败"

🔧 手动配置

Bash 配置

bash
# AIS 已自动配置 shell 集成,无需手动添加
# 如需重新配置,请运行:
ais setup

# 或者手动添加以下内容到 ~/.bashrc
__ais_trap() {
    local exit_code=$?
    if [[ $exit_code -ne 0 ]]; then
        ais analyze --exit-code $exit_code --command "$BASH_COMMAND" &
    fi
}
trap __ais_trap ERR

Zsh 配置

bash
# AIS 已自动配置 shell 集成,无需手动添加
# 如需重新配置,请运行:
ais setup

# 或者手动添加以下内容到 ~/.zshrc
__ais_preexec() {
    AIS_CURRENT_COMMAND="$1"
}
__ais_precmd() {
    local exit_code=$?
    if [[ $exit_code -ne 0 && -n "$AIS_CURRENT_COMMAND" ]]; then
        ais analyze --exit-code $exit_code --command "$AIS_CURRENT_COMMAND" &
    fi
    AIS_CURRENT_COMMAND=""
}
add-zsh-hook preexec __ais_preexec
add-zsh-hook precmd __ais_precmd

Fish 配置

bash
# AIS 已自动配置 shell 集成,无需手动添加
# 如需重新配置,请运行:
ais setup

# 或者手动添加以下内容到 ~/.config/fish/config.fish
function __ais_command_not_found --on-event fish_command_not_found
    ais analyze --exit-code 127 --command "$argv[1]" &
end

function __ais_postexec --on-event fish_postexec
    if test $status -ne 0
        ais analyze --exit-code $status --command "$argv[1]" &
    end
end

⚙️ 集成选项

基本选项

bash
# 查看当前配置
ais config

# 启用/禁用自动分析
ais on
ais off

# 设置上下文收集级别
ais config --set context_level=detailed

🎯 触发条件

默认触发条件

  • 命令退出码非零(失败)
  • 命令不是 AIS 内部命令

🔍 调试集成

常见问题诊断

bash
# 检查集成状态
ais test-integration

# 验证钩子函数
type __ais_trap      # Bash
type __ais_precmd    # Zsh
functions __ais_postexec  # Fish

🛠️ 高级配置

上下文收集

bash
# 设置上下文收集级别
ais config --set context_level=standard

🔒 安全考虑

敏感信息保护

  • AIS 默认已配置敏感目录保护
  • 自动过滤常见的敏感信息(密码、密钥等)

🚫 禁用和卸载

临时禁用

bash
# 临时禁用自动分析
ais off

# 重新启用
ais on

完全卸载

bash
# 手动移除 AIS 集成配置
# 移除 Bash 集成
sed -i '/START AIS INTEGRATION/,/END AIS INTEGRATION/d' ~/.bashrc

# 移除 Zsh 集成
sed -i '/START AIS INTEGRATION/,/END AIS INTEGRATION/d' ~/.zshrc

# 或使用自动卸载脚本
curl -sSL https://raw.githubusercontent.com/kangvcar/ais/main/scripts/uninstall.sh | bash

📋 集成模板

开发环境模板

bash
# 适合开发环境的集成配置
ais config --set auto_analysis=true
ais config --set context_level=detailed

生产环境模板

bash
# 适合生产环境的集成配置
ais config --set auto_analysis=false
ais config --set context_level=minimal

下一步


提示

建议使用 ais setup 命令自动配置 Shell 集成,它会自动检测并配置最佳设置。

性能影响

Shell 集成对性能影响极小,分析过程在后台异步执行,不会影响正常命令执行。

注意

修改 Shell 集成配置后,需要重新加载 Shell 配置或重启终端才能生效。

基于 MIT 许可证发布