2026年4月

扣子2.5试用了一下免费版,每天登录有1500积分,累积可使用7天。如果只是试用,还是够了。
感觉扣子编程还不错。试着写一个投资管理软件,功能需求一点点往上加:
python网页版,投资管理:

  1). excel导入或输入交易记录、资金流水、持仓记录。
  2). 显示股票基本面和k线图
  3). 统计个股或分类(股票,债券,现金)年化收益率。
  4). 统计股票或分类分布占比

前面还挺顺利,在网页里就可以提出需求和问题修改意见,很快能修复完成,并直接在预览看到效果,也可以云端部署。积分消耗也不大,每天都有剩余。
但昨天有个问题,就卡住了,反反复复的修改调试,同样的故障就是无法解决,消耗了3000多积分,只能先暂停。试着下载源码本地调试运行。 但在trae里遇到沙箱和虚拟python环境问题,也是卡住了,不停的在尝试安装虚拟环境。

1.微信bot 配置与安装
不用安装,直接运行:
openclaw channels login --channel openclaw-weixin
显示二维码,微信扫码添加微信clawbot,进入聊天。
2.网页版openclaw聊天:

3.实现财经日报agent:每天对关心的财经消息通过网络搜索,形成摘要,通过微信bot推送。
试用几个skill:tushare,akshare,openclaw 还是太耗tocken.主要问题:skill一旦出现环境问题或其他问题,它就不断尝试
其他方案。特别是环境问题,经常是兜兜转转却无法解决。比如系统默认的python是3.6.8,akshare要求python3.10+,ai聊天都是推荐虚拟环境,但从微信方法无法进入虚拟环境,弄了好久,还是直接将系统默认环境改为python3.11.还有tushare的api积分低无法返回有效信息,openclaw也会尝试其他方案。虽然有勉强的结果输出,但耗时耗tocken,还没做啥事,费用30元已经出去了,还有心跳机制,每30分钟都要消耗tocken,虽不多,但日积月累也是不少。后面还是把大模型改为ollama免费限量模型,关闭心跳,试试看再说。

cat > backup.sh << 'EOF'

!/bin/bash

定义备份文件名 (带时间戳)

BACKUP_FILE="/tmp/server_backup_$(date +%Y%m%d_%H%M%S).tar.gz"

echo "🚀 开始备份阿里云轻量服务器关键数据..."
echo "📂 目标文件: $BACKUP_FILE"

定义需要备份的目录列表

注意:确保路径末尾的斜杠处理正确,tar 会处理相对路径

DIRS_TO_BACKUP=(

"/opt/dockers"
"/etc/letsencrypt"
"/etc/nginx/conf.d"
"/var/www/html"
"/etc/docker"

)

检查目录是否存在

for dir in "${DIRS_TO_BACKUP[@]}"; do

if [ ! -d "$dir" ]; then
    echo "⚠️ 警告: 目录 $dir 不存在,将跳过。"
fi

done

执行压缩打包

使用 --absolute-names 保留绝对路径,方便还原时直接解压覆盖

tar -czvf "$BACKUP_FILE" \

--absolute-names \
"${DIRS_TO_BACKUP[@]}" 2> /tmp/tar_errors.log

检查压缩是否成功

if [ $? -eq 0 ]; then

echo "✅ 备份压缩成功!"

# 获取文件大小
FILE_SIZE=$(du -h "$BACKUP_FILE" | cut -f1)
echo "📦 压缩包大小: $FILE_SIZE"

# 尝试获取本机公网IP (阿里云内网元数据)
PUBLIC_IP=$(curl -s http://100.100.100.200/latest/meta-data/eipv4)
if [ -z "$PUBLIC_IP" ]; then
    # 如果元数据获取失败,尝试通过网卡获取
    PUBLIC_IP=$(curl -s ifconfig.me)
fi

echo "------------------------------------------------"
echo "📥 下载链接 (请在浏览器中打开):"
echo "http://${PUBLIC_IP}/backup_$(date +%Y%m%d_%H%M%S).tar.gz"
echo "------------------------------------------------"
echo ""
echo "💡 提示:如果无法直接下载,请使用 scp 命令将 /tmp/server_backup_*.tar.gz 下载到本地。"

# 为了方便,把文件软链接到 Nginx 根目录(如果 Nginx 正在运行且允许访问)
# 这样你可以直接通过 http://IP/filename 下载,无需配置复杂的 Web 服务器
if [ -d "/var/www/html" ]; then
    LINK_NAME="/var/www/html/backup_latest.tar.gz"
    ln -sf "$BACKUP_FILE" "$LINK_NAME"
    echo "🔗 已创建快捷下载链接: http://${PUBLIC_IP}/backup_latest.tar.gz"
fi

else

echo "❌ 备份失败!请检查 /tmp/tar_errors.log"
exit 1

fi
EOF

赋予执行权限

chmod +x backup.sh

cat > restore.sh << 'EOF'

!/bin/bash

定义备份文件路径 (请根据实际情况修改,或者通过参数传入)

默认查找 /tmp 目录下最新的备份文件

BACKUP_FILE=$(ls -t /tmp/server_backup_*.tar.gz 2>/dev/null | head -n 1)

if [ -z "$BACKUP_FILE" ]; then

echo "❌ 错误: 在 /tmp 目录下未找到备份文件 (server_backup_*.tar.gz)"
echo "💡 请先将备份文件上传到 /tmp 目录。"
exit 1

fi

echo "🚀 开始从备份还原服务器数据..."
echo "📦 使用备份文件: $BACKUP_FILE"

1. 检查并安装必要软件 (简单检测)

echo "🔍 检查基础环境..."
if ! command -v docker &> /dev/null; then

echo "⚠️ 警告: 未检测到 Docker,请确保已预先安装 Docker 和 Docker Compose。"

fi

2. 停止正在运行的容器 (防止文件冲突)

echo "🛑 停止可能正在运行的 Docker 容器..."
cd /opt/dockers 2>/dev/null && docker compose down 2>/dev/null
cd - > /dev/null

3. 解压备份文件

--absolute-names: 使用绝对路径解压

--overwrite: 覆盖已存在的文件

echo "📂 正在解压文件..."
tar -xzvf "$BACKUP_FILE" --absolute-names --overwrite

4. 修复权限 (关键步骤)

echo "🔧 修复目录权限..."

修复 Nginx 网页目录权限

if [ -d "/var/www/html" ]; then

# 假设使用 www-data 用户 (Debian/Ubuntu),如果是 CentOS 可能是 nginx 或 root
chown -R www-data:www-data /var/www/html
chmod -R 755 /var/www/html
echo "✅ /var/www/html 权限已修复"

fi

修复 Docker 数据目录权限

if [ -d "/opt/dockers" ]; then

# Docker 挂载的目录通常保持 root 权限即可,或者跟随 docker-compose 配置
# 这里主要确保目录可读写
chmod -R 755 /opt/dockers
echo "✅ /opt/dockers 权限已修复"

fi

5. 修复 Let's Encrypt 证书权限

证书目录权限要求非常严格,否则 Certbot 会报错

if [ -d "/etc/letsencrypt" ]; then

chmod -R 755 /etc/letsencrypt
# 确保私钥等敏感文件只有 root 可读
find /etc/letsencrypt -type f -name "*.pem" -exec chmod 644 {} \;
echo "✅ /etc/letsencrypt 权限已修复"

fi

6. 重启服务

echo "⚙️ 启动 Docker 容器..."
cd /opt/dockers
if [ -f "docker-compose.yml" ] || [ -f "docker-compose.yaml" ]; then

# 尝试启动所有服务
docker compose up -d
echo "✅ Docker 容器已尝试启动"

else

echo "⚠️ 未检测到 docker-compose.yml,跳过容器启动。"

fi

重启 Nginx 以加载新的配置

echo "🔄 重启 Nginx..."
systemctl restart nginx 2>/dev/null || service nginx restart 2>/dev/null
if [ $? -eq 0 ]; then

echo "✅ Nginx 已重启"

else

echo "⚠️ Nginx 重启失败,请检查配置文件是否正确。"

fi

echo "------------------------------------------------"
echo "🎉 还原完成!"
echo "请检查以下服务状态:"
echo "1. docker ps"
echo "2. systemctl status nginx"
echo "------------------------------------------------"
EOF

chmod +x restore.sh