debugging-troubleshooting-2025 by josiahsiegel/claude-plugin-marketplace
npx skills add https://github.com/josiahsiegel/claude-plugin-marketplace --skill debugging-troubleshooting-2025强制要求:在 Windows 上始终对文件路径使用反斜杠
在 Windows 上使用编辑或写入工具时,您必须在文件路径中使用反斜杠 (\),而不是正斜杠 (/)。
示例:
D:/repos/project/file.tsxD:\repos\project\file.tsx这适用于:
除非用户明确要求,否则切勿创建新的文档文件。
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
遵循 2025 年最佳实践的 Bash 脚本综合调试技术与故障排除模式。
#!/usr/bin/env bash
set -euo pipefail
# 启用调试模式
set -x
# 您的命令在此处
command1
command2
# 禁用调试模式
set +x
# 继续执行,无调试
command3
#!/usr/bin/env bash
set -euo pipefail
# 自定义调试提示符,包含文件:行号:函数
export PS4='+(${BASH_SOURCE}:${LINENO}): ${FUNCNAME[0]:+${FUNCNAME[0]}(): }'
set -x
my_function() {
local var="value"
echo "$var"
}
my_function
set +x
输出:
+(script.sh:10): my_function(): local var=value
+(script.sh:11): my_function(): echo value
value
#!/usr/bin/env bash
set -euo pipefail
# 通过环境变量启用
DEBUG="${DEBUG:-false}"
debug() {
if [[ "$DEBUG" == "true" ]]; then
echo "[DEBUG] $*" >&2
fi
}
# 用法
debug "开始处理"
process_data
debug "处理完成"
# 运行:DEBUG=true ./script.sh
#!/usr/bin/env bash
set -euo pipefail
# 调试包装器
debug_function() {
local func_name="$1"
shift
echo "[TRACE] 调用:$func_name $*" >&2
set -x
"$func_name" "$@"
local exit_code=$?
set +x
echo "[TRACE] 退出代码:$exit_code" >&2
return $exit_code
}
# 用法
my_complex_function() {
local arg1="$1"
# 复杂逻辑
echo "结果:$arg1"
}
debug_function my_complex_function "test"
#!/usr/bin/env bash
set -euo pipefail
# 分析函数执行时间
profile() {
local start_ns end_ns duration_ms
start_ns=$(date +%s%N)
"$@"
local exit_code=$?
end_ns=$(date +%s%N)
duration_ms=$(( (end_ns - start_ns) / 1000000 ))
echo "[PROFILE] '$*' 耗时 ${duration_ms}ms (退出:$exit_code)" >&2
return $exit_code
}
# 用法
profile slow_command arg1 arg2
#!/usr/bin/env bash
set -euo pipefail
# 跟踪所有函数调用
trace_on() {
set -o functrace
trap 'echo "[TRACE] ${FUNCNAME[0]}() 从 ${BASH_SOURCE[1]}:${BASH_LINENO[0]} 调用" >&2' DEBUG
}
trace_off() {
set +o functrace
trap - DEBUG
}
# 用法
trace_on
function1
function2
trace_off
#!/usr/bin/env bash
set -euo pipefail
# 在任何点检查所有变量
inspect_vars() {
echo "=== 变量转储 ===" >&2
declare -p | grep -v "^declare -[^ ]*r " | sort >&2
echo "===================" >&2
}
# 检查特定变量
inspect_var() {
local var_name="$1"
echo "[INSPECT] $var_name = ${!var_name:-<未设置>}" >&2
}
# 用法
my_var="test"
inspect_var my_var
inspect_vars
#!/usr/bin/env bash
set -euo pipefail
# 综合错误处理器
error_handler() {
local exit_code=$?
local line_number=$1
echo "错误:命令执行失败,退出代码 $exit_code" >&2
echo " 文件:${BASH_SOURCE[1]}" >&2
echo " 行号:$line_number" >&2
echo " 函数:${FUNCNAME[1]:-main}" >&2
# 打印堆栈跟踪
local frame=0
while caller $frame; do
((frame++))
done >&2
exit "$exit_code"
}
trap 'error_handler $LINENO' ERR
# 您的脚本逻辑
risky_command
#!/usr/bin/env bash
set -euo pipefail
DRY_RUN="${DRY_RUN:-false}"
# 安全执行包装器
execute() {
if [[ "$DRY_RUN" == "true" ]]; then
echo "[DRY-RUN] 将执行:$*" >&2
return 0
else
"$@"
fi
}
# 用法
execute rm -rf /tmp/data
execute cp file.txt backup/
# 运行:DRY_RUN=true ./script.sh
#!/usr/bin/env bash
set -euo pipefail
OPERATIONS=()
# 跟踪操作以便回滚
track_operation() {
local rollback_cmd="$1"
OPERATIONS+=("$rollback_cmd")
}
# 执行回滚
rollback() {
echo "正在回滚操作..." >&2
for ((i=${#OPERATIONS[@]}-1; i>=0; i--)); do
echo " 执行:${OPERATIONS[$i]}" >&2
eval "${OPERATIONS[$i]}" || true
done
}
trap rollback ERR EXIT
# 示例用法
mkdir /tmp/mydir
track_operation "rmdir /tmp/mydir"
touch /tmp/mydir/file.txt
track_operation "rm /tmp/mydir/file.txt"
# 如果脚本失败,回滚会自动执行
问题: 手动运行正常,但计划任务时失败。
解决方案:
#!/usr/bin/env bash
set -euo pipefail
# 为 cron 修复 PATH
export PATH="/usr/local/bin:/usr/bin:/bin"
# 设置工作目录
cd "$(dirname "$0")" || exit 1
# 记录所有内容以便调试
exec 1>> /var/log/myscript.log 2>&1
echo "[$(date)] 脚本开始"
# 您的命令在此处
echo "[$(date)] 脚本完成"
问题: 处理包含空格的文件时脚本失败。
调试:
#!/usr/bin/env bash
set -euo pipefail
# 准确显示脚本看到的内容
debug_filename() {
local filename="$1"
echo "文件名:'$filename'" >&2
echo "长度:${#filename}" >&2
hexdump -C <<< "$filename" >&2
}
# 正确处理
while IFS= read -r -d '' file; do
debug_filename "$file"
# 处理 "$file"
done < <(find . -name "*.txt" -print0)
问题: 在 Linux 上工作正常,但在 macOS 上失败。
调试:
#!/usr/bin/env bash
set -euo pipefail
# 平台检测与调试
detect_platform() {
echo "=== 平台信息 ===" >&2
echo "操作系统:$OSTYPE" >&2
echo "Bash:$BASH_VERSION" >&2
echo "PATH:$PATH" >&2
# 检查工具版本
for tool in sed awk grep; do
if command -v "$tool" &> /dev/null; then
echo "$tool:$($tool --version 2>&1 | head -1)" >&2
fi
done
echo "====================" >&2
}
detect_platform
# 使用可移植模式
case "$OSTYPE" in
linux*) SED_CMD="sed" ;;
darwin*) SED_CMD=$(command -v gsed || echo sed) ;;
*) echo "未知平台" >&2; exit 1 ;;
esac
问题: 变量在预期位置不可用。
调试:
#!/usr/bin/env bash
set -euo pipefail
# 显示变量作用域
test_scope() {
local local_var="local"
global_var="global"
echo "函数内部:" >&2
echo " local_var=$local_var" >&2
echo " global_var=$global_var" >&2
}
test_scope
echo "函数外部:" >&2
echo " local_var=${local_var:-<未设置>}" >&2
echo " global_var=${global_var:-<未设置>}" >&2
# 子 shell 作用域问题
echo "test" | (
read -r value
echo "在子 shell 中:$value"
)
echo "子 shell 之后:${value:-<未设置>}" # 空的!
#!/usr/bin/env bash
set -euo pipefail
# 交互式断点
breakpoint() {
local message="${1:-断点}"
echo "$message" >&2
echo "变量:" >&2
declare -p | grep -v "^declare -[^ ]*r " >&2
read -rp "按 Enter 继续,'i' 进行检查:" choice
if [[ "$choice" == "i" ]]; then
bash # 进入交互式 shell
fi
}
# 用法
value=42
breakpoint "关键操作之前"
critical_operation "$value"
#!/usr/bin/env bash
# 实时监视脚本执行
watch_script() {
local script="$1"
shift
while true; do
clear
echo "=== 正在运行:$script $* ==="
echo "=== $(date) ==="
bash -x "$script" "$@" 2>&1 | tail -50
sleep 2
done
}
# 用法:watch_script myscript.sh arg1 arg2
#!/usr/bin/env bash
set -euo pipefail
readonly LOG_FILE="${LOG_FILE:-/var/log/myscript.log}"
log() {
local level="$1"
shift
local timestamp
timestamp=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
echo "${timestamp} [${level}] $*" | tee -a "$LOG_FILE" >&2
}
log_info() { log "INFO" "$@"; }
log_warn() { log "WARN" "$@"; }
log_error() { log "ERROR" "$@"; }
log_debug() { [[ "${DEBUG:-false}" == "true" ]] && log "DEBUG" "$@"; }
# 用法
log_info "开始处理"
log_debug "调试信息"
log_error "某些操作失败"
#!/usr/bin/env bash
set -euo pipefail
# 确保日志文件存在且可写
setup_logging() {
local log_file="${1:-/var/log/myscript.log}"
local log_dir
log_dir=$(dirname "$log_file")
if [[ ! -d "$log_dir" ]]; then
mkdir -p "$log_dir" || {
echo "无法创建日志目录:$log_dir" >&2
return 1
}
fi
if [[ ! -w "$log_dir" ]]; then
echo "日志目录不可写:$log_dir" >&2
return 1
fi
# 将所有输出重定向到日志
exec 1>> "$log_file"
exec 2>&1
}
setup_logging
#!/usr/bin/env bash
set -euo pipefail
# 分析脚本中的每个命令
profile_script() {
export PS4='+ $(date +%s.%N) ${BASH_SOURCE}:${LINENO}: '
set -x
# 您的命令在此处
command1
command2
command3
set +x
}
# 分析输出:
# + 1698765432.123456 script.sh:10: command1 (快)
# + 1698765437.654321 script.sh:11: command2 (5 秒 - 慢!)
#!/usr/bin/env bash
set -euo pipefail
# 跟踪内存使用情况
check_memory() {
local pid=${1:-$$}
ps -o pid,vsz,rss,comm -p "$pid" | tail -1
}
# 执行期间监控
monitor_memory() {
while true; do
check_memory
sleep 1
done &
local monitor_pid=$!
# 您的命令在此处
"$@"
kill "$monitor_pid" 2>/dev/null || true
wait "$monitor_pid" 2>/dev/null || true
}
monitor_memory ./memory_intensive_task.sh
#!/usr/bin/env bash
# test_functions.sh
# 导入要测试的脚本
source ./functions.sh
# 测试计数器
TESTS_RUN=0
TESTS_PASSED=0
TESTS_FAILED=0
# 断言函数
assert_equals() {
local expected="$1"
local actual="$2"
local test_name="${3:-测试}"
((TESTS_RUN++))
if [[ "$expected" == "$actual" ]]; then
echo "✓ $test_name" >&2
((TESTS_PASSED++))
else
echo "✗ $test_name" >&2
echo " 预期:$expected" >&2
echo " 实际:$actual" >&2
((TESTS_FAILED++))
fi
}
# 运行测试
test_add_numbers() {
local result
result=$(add_numbers 2 3)
assert_equals "5" "$result" "add_numbers 2 3"
}
test_add_numbers
# 摘要
echo "========================================" >&2
echo "运行测试:$TESTS_RUN" >&2
echo "通过:$TESTS_PASSED" >&2
echo "失败:$TESTS_FAILED" >&2
[[ $TESTS_FAILED -eq 0 ]]
#!/usr/bin/env bash
set -euo pipefail
# 使用 ShellCheck 验证脚本
validate_script() {
local script="$1"
if ! command -v shellcheck &> /dev/null; then
echo "ShellCheck 未安装" >&2
return 1
fi
echo "正在对 $script 运行 ShellCheck..." >&2
if shellcheck --severity=warning "$script"; then
echo "✓ ShellCheck 通过" >&2
return 0
else
echo "✗ ShellCheck 失败" >&2
return 1
fi
}
# 用法
validate_script myscript.sh
有效的调试需要系统化的方法、全面的日志记录和适当的工具。掌握这些技术,为 2025 年生产就绪的 Bash 脚本做好准备。
每周安装数
81
仓库
GitHub 星标数
21
首次出现
2026 年 1 月 24 日
安全审计
安装于
gemini-cli63
opencode63
claude-code61
codex60
cursor59
github-copilot55
MANDATORY: Always Use Backslashes on Windows for File Paths
When using Edit or Write tools on Windows, you MUST use backslashes (\) in file paths, NOT forward slashes (/).
Examples:
D:/repos/project/file.tsxD:\repos\project\file.tsxThis applies to:
NEVER create new documentation files unless explicitly requested by the user.
Comprehensive debugging techniques and troubleshooting patterns for bash scripts following 2025 best practices.
#!/usr/bin/env bash
set -euo pipefail
# Enable debug mode
set -x
# Your commands here
command1
command2
# Disable debug mode
set +x
# Continue without debug
command3
#!/usr/bin/env bash
set -euo pipefail
# Custom debug prompt with file:line:function
export PS4='+(${BASH_SOURCE}:${LINENO}): ${FUNCNAME[0]:+${FUNCNAME[0]}(): }'
set -x
my_function() {
local var="value"
echo "$var"
}
my_function
set +x
Output:
+(script.sh:10): my_function(): local var=value
+(script.sh:11): my_function(): echo value
value
#!/usr/bin/env bash
set -euo pipefail
# Enable via environment variable
DEBUG="${DEBUG:-false}"
debug() {
if [[ "$DEBUG" == "true" ]]; then
echo "[DEBUG] $*" >&2
fi
}
# Usage
debug "Starting process"
process_data
debug "Process complete"
# Run: DEBUG=true ./script.sh
#!/usr/bin/env bash
set -euo pipefail
# Debug wrapper
debug_function() {
local func_name="$1"
shift
echo "[TRACE] Calling: $func_name $*" >&2
set -x
"$func_name" "$@"
local exit_code=$?
set +x
echo "[TRACE] Exit code: $exit_code" >&2
return $exit_code
}
# Usage
my_complex_function() {
local arg1="$1"
# Complex logic
echo "Result: $arg1"
}
debug_function my_complex_function "test"
#!/usr/bin/env bash
set -euo pipefail
# Profile function execution time
profile() {
local start_ns end_ns duration_ms
start_ns=$(date +%s%N)
"$@"
local exit_code=$?
end_ns=$(date +%s%N)
duration_ms=$(( (end_ns - start_ns) / 1000000 ))
echo "[PROFILE] '$*' took ${duration_ms}ms (exit: $exit_code)" >&2
return $exit_code
}
# Usage
profile slow_command arg1 arg2
#!/usr/bin/env bash
set -euo pipefail
# Trace all function calls
trace_on() {
set -o functrace
trap 'echo "[TRACE] ${FUNCNAME[0]}() called from ${BASH_SOURCE[1]}:${BASH_LINENO[0]}" >&2' DEBUG
}
trace_off() {
set +o functrace
trap - DEBUG
}
# Usage
trace_on
function1
function2
trace_off
#!/usr/bin/env bash
set -euo pipefail
# Inspect all variables at any point
inspect_vars() {
echo "=== Variable Dump ===" >&2
declare -p | grep -v "^declare -[^ ]*r " | sort >&2
echo "===================" >&2
}
# Inspect specific variable
inspect_var() {
local var_name="$1"
echo "[INSPECT] $var_name = ${!var_name:-<unset>}" >&2
}
# Usage
my_var="test"
inspect_var my_var
inspect_vars
#!/usr/bin/env bash
set -euo pipefail
# Comprehensive error handler
error_handler() {
local exit_code=$?
local line_number=$1
echo "ERROR: Command failed with exit code $exit_code" >&2
echo " File: ${BASH_SOURCE[1]}" >&2
echo " Line: $line_number" >&2
echo " Function: ${FUNCNAME[1]:-main}" >&2
# Print stack trace
local frame=0
while caller $frame; do
((frame++))
done >&2
exit "$exit_code"
}
trap 'error_handler $LINENO' ERR
# Your script logic
risky_command
#!/usr/bin/env bash
set -euo pipefail
DRY_RUN="${DRY_RUN:-false}"
# Safe execution wrapper
execute() {
if [[ "$DRY_RUN" == "true" ]]; then
echo "[DRY-RUN] Would execute: $*" >&2
return 0
else
"$@"
fi
}
# Usage
execute rm -rf /tmp/data
execute cp file.txt backup/
# Run: DRY_RUN=true ./script.sh
#!/usr/bin/env bash
set -euo pipefail
OPERATIONS=()
# Track operations for rollback
track_operation() {
local rollback_cmd="$1"
OPERATIONS+=("$rollback_cmd")
}
# Execute rollback
rollback() {
echo "Rolling back operations..." >&2
for ((i=${#OPERATIONS[@]}-1; i>=0; i--)); do
echo " Executing: ${OPERATIONS[$i]}" >&2
eval "${OPERATIONS[$i]}" || true
done
}
trap rollback ERR EXIT
# Example usage
mkdir /tmp/mydir
track_operation "rmdir /tmp/mydir"
touch /tmp/mydir/file.txt
track_operation "rm /tmp/mydir/file.txt"
# If script fails, rollback executes automatically
Problem: Script runs fine manually but fails when scheduled.
Solution:
#!/usr/bin/env bash
set -euo pipefail
# Fix PATH for cron
export PATH="/usr/local/bin:/usr/bin:/bin"
# Set working directory
cd "$(dirname "$0")" || exit 1
# Log everything for debugging
exec 1>> /var/log/myscript.log 2>&1
echo "[$(date)] Script starting"
# Your commands here
echo "[$(date)] Script complete"
Problem: Script fails when processing files with spaces.
Debugging:
#!/usr/bin/env bash
set -euo pipefail
# Show exactly what the script sees
debug_filename() {
local filename="$1"
echo "Filename: '$filename'" >&2
echo "Length: ${#filename}" >&2
hexdump -C <<< "$filename" >&2
}
# Proper handling
while IFS= read -r -d '' file; do
debug_filename "$file"
# Process "$file"
done < <(find . -name "*.txt" -print0)
Problem: Works on Linux but fails on macOS.
Debugging:
#!/usr/bin/env bash
set -euo pipefail
# Platform detection and debugging
detect_platform() {
echo "=== Platform Info ===" >&2
echo "OS: $OSTYPE" >&2
echo "Bash: $BASH_VERSION" >&2
echo "PATH: $PATH" >&2
# Check tool versions
for tool in sed awk grep; do
if command -v "$tool" &> /dev/null; then
echo "$tool: $($tool --version 2>&1 | head -1)" >&2
fi
done
echo "====================" >&2
}
detect_platform
# Use portable patterns
case "$OSTYPE" in
linux*) SED_CMD="sed" ;;
darwin*) SED_CMD=$(command -v gsed || echo sed) ;;
*) echo "Unknown platform" >&2; exit 1 ;;
esac
Problem: Variables not available where expected.
Debugging:
#!/usr/bin/env bash
set -euo pipefail
# Show variable scope
test_scope() {
local local_var="local"
global_var="global"
echo "Inside function:" >&2
echo " local_var=$local_var" >&2
echo " global_var=$global_var" >&2
}
test_scope
echo "Outside function:" >&2
echo " local_var=${local_var:-<not set>}" >&2
echo " global_var=${global_var:-<not set>}" >&2
# Subshell scope issue
echo "test" | (
read -r value
echo "In subshell: $value"
)
echo "After subshell: ${value:-<not set>}" # Empty!
#!/usr/bin/env bash
set -euo pipefail
# Interactive breakpoint
breakpoint() {
local message="${1:-Breakpoint}"
echo "$message" >&2
echo "Variables:" >&2
declare -p | grep -v "^declare -[^ ]*r " >&2
read -rp "Press Enter to continue, 'i' for inspect: " choice
if [[ "$choice" == "i" ]]; then
bash # Drop into interactive shell
fi
}
# Usage
value=42
breakpoint "Before critical operation"
critical_operation "$value"
#!/usr/bin/env bash
# Watch script execution in real-time
watch_script() {
local script="$1"
shift
while true; do
clear
echo "=== Running: $script $* ==="
echo "=== $(date) ==="
bash -x "$script" "$@" 2>&1 | tail -50
sleep 2
done
}
# Usage: watch_script myscript.sh arg1 arg2
#!/usr/bin/env bash
set -euo pipefail
readonly LOG_FILE="${LOG_FILE:-/var/log/myscript.log}"
log() {
local level="$1"
shift
local timestamp
timestamp=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
echo "${timestamp} [${level}] $*" | tee -a "$LOG_FILE" >&2
}
log_info() { log "INFO" "$@"; }
log_warn() { log "WARN" "$@"; }
log_error() { log "ERROR" "$@"; }
log_debug() { [[ "${DEBUG:-false}" == "true" ]] && log "DEBUG" "$@"; }
# Usage
log_info "Starting process"
log_debug "Debug info"
log_error "Something failed"
#!/usr/bin/env bash
set -euo pipefail
# Ensure log file exists and is writable
setup_logging() {
local log_file="${1:-/var/log/myscript.log}"
local log_dir
log_dir=$(dirname "$log_file")
if [[ ! -d "$log_dir" ]]; then
mkdir -p "$log_dir" || {
echo "Cannot create log directory: $log_dir" >&2
return 1
}
fi
if [[ ! -w "$log_dir" ]]; then
echo "Log directory not writable: $log_dir" >&2
return 1
fi
# Redirect all output to log
exec 1>> "$log_file"
exec 2>&1
}
setup_logging
#!/usr/bin/env bash
set -euo pipefail
# Profile each command in script
profile_script() {
export PS4='+ $(date +%s.%N) ${BASH_SOURCE}:${LINENO}: '
set -x
# Your commands here
command1
command2
command3
set +x
}
# Analyze output:
# + 1698765432.123456 script.sh:10: command1 (fast)
# + 1698765437.654321 script.sh:11: command2 (5 seconds - slow!)
#!/usr/bin/env bash
set -euo pipefail
# Track memory usage
check_memory() {
local pid=${1:-$$}
ps -o pid,vsz,rss,comm -p "$pid" | tail -1
}
# Monitor during execution
monitor_memory() {
while true; do
check_memory
sleep 1
done &
local monitor_pid=$!
# Your commands here
"$@"
kill "$monitor_pid" 2>/dev/null || true
wait "$monitor_pid" 2>/dev/null || true
}
monitor_memory ./memory_intensive_task.sh
#!/usr/bin/env bash
# test_functions.sh
# Source the script to test
source ./functions.sh
# Test counter
TESTS_RUN=0
TESTS_PASSED=0
TESTS_FAILED=0
# Assert function
assert_equals() {
local expected="$1"
local actual="$2"
local test_name="${3:-Test}"
((TESTS_RUN++))
if [[ "$expected" == "$actual" ]]; then
echo "✓ $test_name" >&2
((TESTS_PASSED++))
else
echo "✗ $test_name" >&2
echo " Expected: $expected" >&2
echo " Actual: $actual" >&2
((TESTS_FAILED++))
fi
}
# Run tests
test_add_numbers() {
local result
result=$(add_numbers 2 3)
assert_equals "5" "$result" "add_numbers 2 3"
}
test_add_numbers
# Summary
echo "========================================" >&2
echo "Tests run: $TESTS_RUN" >&2
echo "Passed: $TESTS_PASSED" >&2
echo "Failed: $TESTS_FAILED" >&2
[[ $TESTS_FAILED -eq 0 ]]
#!/usr/bin/env bash
set -euo pipefail
# Validate script with ShellCheck
validate_script() {
local script="$1"
if ! command -v shellcheck &> /dev/null; then
echo "ShellCheck not installed" >&2
return 1
fi
echo "Running ShellCheck on $script..." >&2
if shellcheck --severity=warning "$script"; then
echo "✓ ShellCheck passed" >&2
return 0
else
echo "✗ ShellCheck failed" >&2
return 1
fi
}
# Usage
validate_script myscript.sh
Effective debugging requires systematic approaches, comprehensive logging, and proper tooling. Master these techniques for production-ready bash scripts in 2025.
Weekly Installs
81
Repository
GitHub Stars
21
First Seen
Jan 24, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykPass
Installed on
gemini-cli63
opencode63
claude-code61
codex60
cursor59
github-copilot55
Lark Drive API 使用指南:飞书云文档、Wiki、表格 Token 处理与文件管理
37,500 周安装
Microsoft Teams自动化指南:通过Rube MCP实现频道消息、聊天与会议管理
72 周安装
Electrobun 最佳实践:TypeScript + Bun 跨平台桌面应用开发指南
72 周安装
ATXP Memory:AI代理记忆管理工具 - 云端备份与本地向量搜索
72 周安装
Brave Search Spellcheck API:智能拼写检查与查询纠正,提升搜索准确性
72 周安装
Amazon竞品分析器 - 自动化抓取ASIN数据,深度分析竞争对手定价、规格与评论
72 周安装
qa-use:AI驱动开发工作流的端到端测试与浏览器自动化工具
72 周安装