feat(article): 更新文章内容并集成CDN图片上传功能

- 将文章中的本地图片路径替换为CDN链接
- 修改文章引子部分,更新案例描述和内容细节
- 添加即梦AI图片生成命令配置文件
- 添加七牛云OSS上传命令配置文件和上传脚本
- 创建七牛云存储凭证文档
- 更新OpenClaw相关内容和图片引用链接
This commit is contained in:
邓文兵 2026-03-10 18:00:32 +08:00
parent 95e1129fd2
commit fdf5cc278f
5 changed files with 226 additions and 17 deletions

View File

@ -0,0 +1,54 @@
# 即梦 AI 图片生成
使用即梦 AI火山引擎生成图片。
## 使用方式
用户会提供:
1. **prompt**:图片描述(中文)
2. **output_path**:输出路径(可选,默认保存到当前工作目录)
## 执行步骤
1. 激活项目虚拟环境:`source .venv/bin/activate`
2. 调用 `scripts/jimeng_gen.py` 生成图片
3. 即梦 API 仅支持 **1024x1024** 正方形尺寸
4. 如果用户需要 16:9 比例,先生成 1024x1024再用 Pillow 居中裁剪为 1024x576
5. 展示生成的图片给用户
## 调用示例
```bash
source .venv/bin/activate && python scripts/jimeng_gen.py "图片描述prompt" "输出路径.png"
```
## 16:9 裁剪(如需要)
```bash
source .venv/bin/activate && python -c "
from PIL import Image
img = Image.open('输出路径.png')
w, h = img.size
new_h = int(w * 9 / 16)
top = (h - new_h) // 2
img.crop((0, top, w, top + new_h)).save('输出路径.png')
"
```
## 注意事项
- 即梦 API **仅支持 1024x1024**,其他尺寸会提交成功但生成失败
- 需要非正方形图片时,先生成方形再裁剪
- 提交后需要轮询等待结果,通常 5-10 秒完成
- 脚本位于 `scripts/jimeng_gen.py`,密钥已内置
- 虚拟环境位于 `.venv/`,已安装 `requests``Pillow`
## API 凭证(已内置于脚本)
- Endpoint: `https://visual.volcengineapi.com`
- Region: `cn-north-1`
- Service: `cv`
- 模型: `jimeng_t2i_v40`(即梦图片生成 4.0
- 签名: HMAC-SHA256 V4
$ARGUMENTS

View File

@ -0,0 +1,99 @@
# 七牛云 OSS 上传
将本地文件上传到七牛云 CDN 存储。
## 使用方式
用户会提供:
1. **file_path**:要上传的本地文件路径(支持单个文件或目录)
2. **prefix**OSS 存储路径前缀(可选,默认 `self-media/`
## 执行步骤
1. 激活项目虚拟环境:`source .venv/bin/activate`
2. 使用七牛 Python SDK 上传文件
3. 返回 CDN 访问链接
## 单文件上传
```bash
source .venv/bin/activate && python -c "
from qiniu import Auth, put_file
import os
AK = 't1PIPGcvBY9lJVXFZFb48maTQsGGhvLsR5QQlNq0'
SK = 'KGooFdF5eCLdCIMCOD6x5ofMzu4vYE17T5Mvp9qC'
BUCKET = 'union-saas'
CDN = 'https://cdn.union.jxyunge.com'
local_path = '本地文件路径'
key = 'self-media/远程存储路径'
q = Auth(AK, SK)
token = q.upload_token(BUCKET, key, 3600)
ret, info = put_file(token, key, local_path, version='v2')
if info.status_code == 200:
print(f'上传成功: {CDN}/{key}')
else:
print(f'上传失败: {info}')
"
```
## 批量上传目录
```bash
source .venv/bin/activate && python scripts/upload_qiniu.py
```
脚本 `scripts/upload_qiniu.py` 会上传 `articles/001/images/` 下所有 PNG 文件。
## 自定义批量上传
```bash
source .venv/bin/activate && python -c "
from qiniu import Auth, put_file
import os, glob
AK = 't1PIPGcvBY9lJVXFZFb48maTQsGGhvLsR5QQlNq0'
SK = 'KGooFdF5eCLdCIMCOD6x5ofMzu4vYE17T5Mvp9qC'
BUCKET = 'union-saas'
CDN = 'https://cdn.union.jxyunge.com'
local_dir = '本地目录路径'
prefix = 'self-media/自定义前缀/'
q = Auth(AK, SK)
for f in sorted(glob.glob(os.path.join(local_dir, '*'))):
name = os.path.basename(f)
key = prefix + name
token = q.upload_token(BUCKET, key, 3600)
ret, info = put_file(token, key, f, version='v2')
status = '成功' if info.status_code == 200 else '失败'
print(f'[{status}] {name} -> {CDN}/{key}')
"
```
## 在 Markdown 中替换图片链接
上传后,将文章中的本地图片路径替换为 CDN 链接:
- 本地路径格式:`![alt](本地路径/xxx.png)`
- CDN 链接格式:`![alt](https://cdn.union.jxyunge.com/self-media/xxx.png)`
## 七牛凭证
| 配置项 | 值 |
|--------|------|
| 上传地址 | `https://up-z0.qiniup.com` |
| AK | `t1PIPGcvBY9lJVXFZFb48maTQsGGhvLsR5QQlNq0` |
| SK | `KGooFdF5eCLdCIMCOD6x5ofMzu4vYE17T5Mvp9qC` |
| CDN 域名 | `https://cdn.union.jxyunge.com` |
| 空间名 | `union-saas` |
## 注意事项
- 虚拟环境 `.venv/` 已安装 `qiniu` SDK
- 上传同名文件会覆盖
- CDN 链接格式:`https://cdn.union.jxyunge.com/{key}`
$ARGUMENTS

View File

@ -4,19 +4,21 @@
> 分类:技术解读 / 科普
> 作者老邓唠AI
![封面](001/images/cover.png)
![封面](https://cdn.union.jxyunge.com/self-media/001/cover.png)
## 引子:一觉醒来AI 帮我省了 4200 美元
## 引子:律所用它打官司,淘宝店主用它盯竞品
2026 年 2 月的一个清晨,软件工程师 AJ Stuyvenberg 醒来后发现,他的 AI 助手在他睡觉的 8 个小时里,自动与三家汽车经销商进行了多轮邮件砍价,为他想买的 2026 款现代汽车谈下了 **4200 美元的折扣**
2026 年 2 月,上海某律所合伙人张律师做了一个大胆的实验:他让一只"龙虾"接管了自己的工作流
他甚至没有下达过具体指令。
这只龙虾每天自动抓取裁判文书网的最新判例,分析对手律所过去三年的胜率数据,甚至能模拟庭审对抗——把对方律师可能的论点逐条拆解,提前准备反驳策略。**以前助理团队要干两周的案件调研,龙虾一个晚上就跑完了。**
个 AI 助手的名字叫 **OpenClaw**——一只龙虾
只龙虾的名字叫 **OpenClaw**
更疯狂的是:另一位用户 Hormold 的龙虾,在没有明确授权的情况下,自己翻阅了一封保险拒赔邮件,引用保单条款撰写法律驳回函,迫使保险公司重新启动调查
在杭州,一位淘宝店主让龙虾同时监控拼多多、京东、抖音三个平台的竞品价格,**实时自动调整自己的定价策略**——竞品降了 5 块,龙虾 10 秒内就把自己的价格跟上,还顺手改了详情页的促销文案。另一位闲鱼买家更绝:让龙虾同时跟 **8 个卖家砍价**,最终以低于心理价位 30% 的价格拿下了一台二手 MacBook
**这不是科幻。这是 2026 年正在发生的事。**
**他们甚至不需要盯着屏幕。龙虾在后台 24 小时自己干活。**
这不是科幻。这是 2026 年正在发生的事。
今天,老邓带你深入拆解这只龙虾,以及围绕它诞生的 12 个"兄弟"——从 4000 行代码的极简龙虾,到 10 块钱开发板上的嵌入式龙虾,再到中国大厂的国产龙虾军团。
@ -24,7 +26,7 @@
## 一、OpenClaw那只改变游戏规则的龙虾
![OpenClaw](001/images/openclaw_hero.png)
![OpenClaw](https://cdn.union.jxyunge.com/self-media/001/openclaw_hero.png)
### 它不是聊天机器人,是"数字员工"
@ -116,7 +118,7 @@ OpenClaw 的问题催生了反思,反思催生了一批"兄弟"——它们要
### 3.1 Nanobot —— 4000 行代码的极简龙虾
![Nanobot](001/images/nanobot.png)
![Nanobot](https://cdn.union.jxyunge.com/self-media/001/nanobot.png)
| 维度 | 详情 |
|------|------|
@ -131,7 +133,7 @@ OpenClaw 的问题催生了反思,反思催生了一批"兄弟"——它们要
### 3.2 PicoClaw —— 10 美元开发板上的龙虾
![PicoClaw](001/images/picoclaw.png)
![PicoClaw](https://cdn.union.jxyunge.com/self-media/001/picoclaw.png)
| 维度 | 详情 |
|------|------|
@ -144,7 +146,7 @@ OpenClaw 的问题催生了反思,反思催生了一批"兄弟"——它们要
### 3.3 ZeroClaw —— Rust 写的安全堡垒
![ZeroClaw](001/images/zeroclaw.png)
![ZeroClaw](https://cdn.union.jxyunge.com/self-media/001/zeroclaw.png)
| 维度 | 详情 |
|------|------|
@ -160,7 +162,7 @@ OpenClaw 的安全是"门上加锁"ZeroClaw 是"用钢筋混凝土重建房
### 3.5 memU —— 知识图谱记忆龙虾
![memU](001/images/memu.png)
![memU](https://cdn.union.jxyunge.com/self-media/001/memu.png)
| 维度 | 详情 |
|------|------|
@ -178,11 +180,11 @@ OpenClaw 的记忆是平铺式日志memU 把记忆做成知识图谱——自
## 四、龙虾全家桶:中国大厂篇
![中国龙虾军团](001/images/china_lobsters.png)
![中国龙虾军团](https://cdn.union.jxyunge.com/self-media/001/china_lobsters.png)
### 4.1 LobsterAI —— 网易有道
![LobsterAI](001/images/lobsterai.png)
![LobsterAI](https://cdn.union.jxyunge.com/self-media/001/lobsterai.png)
名字就叫"龙虾 AI",国内最接近 OpenClaw 的产品。两个杀手锏:
- **有 GUI 图形界面**OpenClaw 纯命令行小白用不来LobsterAI 降低了门槛
@ -192,7 +194,7 @@ OpenClaw 的记忆是平铺式日志memU 把记忆做成知识图谱——自
### 4.2 HiClaw —— 阿里 Higress
![HiClaw 架构](001/images/agent_tars.png)
![HiClaw 架构](https://cdn.union.jxyunge.com/self-media/001/agent_tars.png)
HiClaw 是目前**安全架构最先进**的方案。核心设计:
@ -238,7 +240,7 @@ HiClaw 是目前**安全架构最先进**的方案。核心设计:
### 选龙虾决策树
![选龙虾](001/images/choose_guide.png)
![选龙虾](https://cdn.union.jxyunge.com/self-media/001/choose_guide.png)
**按你是谁来选:**
- **小白用户****Nanobot**4000 行代码读懂 Agent 是怎么回事
@ -258,7 +260,7 @@ HiClaw 是目前**安全架构最先进**的方案。核心设计:
## 六、安全避坑指南:养龙虾的 5 条铁律
![安全警示](001/images/security_warning.png)
![安全警示](https://cdn.union.jxyunge.com/self-media/001/security_warning.png)
经过上面的分析,你应该已经明白:**龙虾越强大,风险越大。** 以下是养龙虾的 5 条铁律:

6
passport/七牛.md Normal file
View File

@ -0,0 +1,6 @@
七牛上传地址 https://up-z0.qiniup.com
七牛云存储AK t1PIPGcvBY9lJVXFZFb48maTQsGGhvLsR5QQlNq0
七牛云存储SK KGooFdF5eCLdCIMCOD6x5ofMzu4vYE17T5Mvp9qC
七牛云存储地址 https://cdn.union.jxyunge.com
七牛云存储空间名 union-saas

48
scripts/upload_qiniu.py Normal file
View File

@ -0,0 +1,48 @@
"""上传图片到七牛云 OSS"""
import os
import glob
from qiniu import Auth, put_file
ACCESS_KEY = 't1PIPGcvBY9lJVXFZFb48maTQsGGhvLsR5QQlNq0'
SECRET_KEY = 'KGooFdF5eCLdCIMCOD6x5ofMzu4vYE17T5Mvp9qC'
BUCKET_NAME = 'union-saas'
CDN_DOMAIN = 'https://cdn.union.jxyunge.com'
UPLOAD_PREFIX = 'self-media/001/'
def upload_file(local_path, key):
"""上传单个文件到七牛"""
q = Auth(ACCESS_KEY, SECRET_KEY)
token = q.upload_token(BUCKET_NAME, key, 3600)
ret, info = put_file(token, key, local_path, version='v2')
if info.status_code == 200:
url = f'{CDN_DOMAIN}/{key}'
print(f' OK {os.path.basename(local_path)} -> {url}')
return url
else:
print(f' FAIL {os.path.basename(local_path)}: {info}')
return None
def main():
img_dir = os.path.join(os.path.dirname(__file__), '..', 'articles', '001', 'images')
files = sorted(glob.glob(os.path.join(img_dir, '*.png')))
results = {}
for f in files:
name = os.path.basename(f)
key = UPLOAD_PREFIX + name
url = upload_file(f, key)
if url:
results[name] = url
print(f'\n===== 上传完成: {len(results)}/{len(files)} =====')
for name, url in results.items():
print(f'{name}: {url}')
return results
if __name__ == '__main__':
main()