如何将Claude code命令与atuin等按键记录工具关联并记录子shell命令?
实现命令行AI工具与按键记录工具的关联方案
针对Atuin的配置调整
- 修改Atuin的记录规则:Atuin默认忽略非交互式shell命令,可通过配置强制记录子shell和AI工具的命令。编辑
~/.config/atuin/config.toml,添加或修改以下内容:
该配置会让Atuin记录所有会话的命令,包括子shell和Claude code调用产生的执行命令。record_mode = "always" ignore_sessions = false - 手动补全记录:若Claude code通过自定义脚本触发,可在脚本末尾添加Atuin手动记录命令:
将atuin history add --command "$CLAUD_EXECUTED_CMD" --cwd "$PWD"$CLAUD_EXECUTED_CMD替换为实际执行的命令变量,确保每次调用后主动写入Atuin历史。
替代或辅助工具方案
- ShellHook脚本:编写通用shell钩子脚本,拦截所有命令执行事件。在
~/.bashrc或~/.zshrc中添加:
该钩子会在每个命令执行前触发,将命令写入自定义日志文件的同时,强制同步到Atuin,覆盖默认忽略规则。preexec() { local cmd="$1" echo "$(date +%Y-%m-%dT%H:%M:%S) $USER@$HOSTNAME: $PWD: $cmd" >> ~/.full_command_history atuin history add --command "$cmd" --cwd "$PWD" 2>/dev/null } - script命令:用
script命令包裹Claude code调用,强制记录整个会话:script -a -f ~/claude_session.log -c "claude-code your-prompt"-a表示追加日志,-f实时刷新,所有Claude执行的命令和输出都会被记录到指定文件,可后续手动导入Atuin或直接用于审计。 - MCP类工具:
- ShellHub:可配置全局命令捕获规则,针对Claude code这类特定命令设置强制记录策略,其会话审计功能可完整保存所有子shell和工具调用的命令流。
- Teleport:作为服务器访问和会话管理工具,它的会话录制功能可捕获所有终端操作,包括AI工具的命令执行,录制的会话可导出用于审计,也可通过配置与Atuin做数据同步。
注意事项
- 确保工具权限设置正确,避免普通用户无法写入日志或Atuin数据库。
- 使用钩子脚本时,需测试是否与其他shell插件冲突,比如zsh的oh-my-zsh自带preexec钩子,需合并逻辑。
- 敏感命令需在记录前做脱敏处理,避免泄露密码或密钥。
内容的提问来源于stack exchange,提问作者Kavi Vaidya
相关产品推荐
相关产品推荐

