Claude Code脚本自动化:批量执行命令技巧
你还在手动逐个执行Claude Code命令吗?面对成百上千的资源需要处理时,重复的手动操作不仅浪费时间,还容易出错。本文将系统讲解如何利用awesome-claude-code项目中的脚本工具实现命令批量执行,从环境配置到高级技巧,帮你彻底摆脱繁琐的重复劳动,提升10倍工作效率。
读完本文你将学到:
- 自动化脚本的核心工作原理与架构设计
- 5种实用批量执行模式及代码实现
- 错误处理与日志分析的高级技巧
- 性能优化方案与最佳实践
- 真实场景案例分析与解决方案
自动化脚本架构解析
awesome-claude-code项目的脚本系统采用模块化设计,主要包含资源管理、验证、生成和通知四大核心模块,通过Makefile实现任务编排,形成完整的自动化工作流。
核心模块关系图
classDiagram
class ResourceManagement {
+ add_resource.py : 资源添加
+ submit_resource.py : 资源提交
+ sort_resources.py : 资源排序
}
class Validation {
+ validate_links.py : 链接验证
+ validate_new_resource.py : 新资源验证
+ validate_single_resource.py : 单个资源验证
}
class Generation {
+ generate_readme.py : README生成
+ generate_resource_id.py : 资源ID生成
+ generate_logo_svgs.py : Logo生成
}
class Notification {
+ badge_issue_notification.py : 徽章通知
+ manual_badge_notification.py : 手动徽章通知
+ badge_notification_core.py : 通知核心
}
ResourceManagement --> Validation : 依赖
Generation --> ResourceManagement : 使用数据
Notification --> ResourceManagement : 发送通知
Validation --> Generation : 提供验证后数据
关键脚本功能说明
| 脚本文件 | 主要功能 | 输入 | 输出 | 适用场景 |
|---|---|---|---|---|
| add_resource.py | 交互式资源添加 | 用户输入 | CSV条目 | 单个资源添加 |
| submit_resource.py | 完整提交流程 | 资源数据 | PR请求 | 批量资源提交 |
| generate_readme.py | README生成 | CSV数据 | README.md | 文档更新 |
| validate_links.py | 链接有效性验证 | CSV数据 | 验证报告 | 批量链接检查 |
| badge_issue_notification.py | 徽章通知自动化 | CSV数据 | GitHub Issues | 新资源通知 |
环境准备与基础配置
在开始批量执行命令前,需要确保环境配置正确,这是自动化流程顺畅运行的基础。
系统要求
- Python 3.8+
- Git 2.20+
- GitHub CLI (gh) 2.0+
- 必要依赖包
环境搭建步骤
# 克隆仓库
git clone https://gitcode.com/GitHub_Trending/aw/awesome-claude-code
cd awesome-claude-code
# 安装依赖
pip install -r requirements.txt
# 配置GitHub CLI认证
gh auth login
# 安装git hooks
make install-hooks
# 验证环境
python scripts/validate_new_resource.py --check-env
配置文件说明
项目主要配置文件位于templates目录下:
categories.yaml: 资源分类定义resource-overrides.yaml: 资源覆盖配置announcements.yaml: 公告配置
可通过修改这些文件自定义自动化行为,例如添加新的资源分类:
# 在categories.yaml中添加
- id: cli-tools
name: CLI工具
description: 命令行工具和实用程序
icon: terminal
subcategories:
- id: batch-processing
name: 批量处理工具
- id: file-manipulation
name: 文件操作工具
批量执行核心技术
1. 顺序执行模式
顺序执行是最基础的批量处理模式,适用于需要按顺序执行且可能存在依赖关系的任务。submit_resource.py中实现了完整的顺序工作流:
def run(self):
"""执行完整的资源提交工作流"""
stages = [
(WorkflowStage.PREFLIGHT, self.check_prerequisites),
(WorkflowStage.COLLECT_RESOURCE, self.run_add_resource),
(WorkflowStage.GENERATE_README, self.generate_readme),
(WorkflowStage.REVIEW_CHANGES, self.review_changes),
(WorkflowStage.CREATE_BRANCH, self.create_branch),
(WorkflowStage.COMMIT_CHANGES, self.commit_changes),
(WorkflowStage.PUSH_BRANCH, self.push_branch),
(WorkflowStage.CREATE_PR, self.create_pr),
]
for stage, method in stages:
self.logger.info(f"\n===== 阶段: {stage.value} =====")
if not method():
self.logger.error(f"阶段 {stage.value} 失败,中止工作流")
return 1
self.logger.info(f"\n===== 阶段: {WorkflowStage.COMPLETE.value} =====")
self.show_success()
return 0
适用场景:资源提交、完整工作流执行、有依赖关系的任务序列
2. 并行执行模式
对于独立的任务,可以采用并行执行模式大幅提高效率。以下是基于Python concurrent.futures的并行执行实现:
def validate_multiple_resources_parallel(resource_list, max_workers=5):
"""并行验证多个资源"""
from concurrent.futures import ThreadPoolExecutor, as_completed
results = []
with ThreadPoolExecutor(max_workers=max_workers) as executor:
# 创建所有任务
future_to_resource = {
executor.submit(validate_single_resource, **resource): resource
for resource in resource_list
}
# 处理完成的任务
for future in as_completed(future_to_resource):
resource = future_to_resource[future]
try:
result = future.result()
results.append({
"resource": resource,
"valid": result[0],
"data": result[1],
"errors": result[2]
})
except Exception as exc:
results.append({
"resource": resource,
"valid": False,
"errors": [f"执行错误: {str(exc)}"]
})
return results
使用示例:批量验证资源链接
# 从CSV加载资源列表
resources = load_resources_from_csv("THE_RESOURCES_TABLE.csv")
# 并行验证,最多同时验证10个
results = validate_multiple_resources_parallel(resources, max_workers=10)
# 处理结果
for result in results:
if not result["valid"]:
print(f"资源 {result['resource']['Display Name']} 验证失败:")
for error in result["errors"]:
print(f" - {error}")
适用场景:链接验证、资源检查、独立任务处理
3. 条件执行模式
根据不同条件执行不同命令,实现智能化批量处理。在validate_links.py中,使用条件执行来处理不同类型的链接:
def validate_url(url, max_retries=5):
"""根据URL类型应用不同验证策略"""
# 处理GitHub URL特殊情况
if "github.com" in url:
# 对GitHub仓库使用API验证
return validate_github_url(url)
elif url.startswith("mailto:"):
# 邮件地址验证
return validate_email(url)
elif url.endswith((".png", ".jpg", ".jpeg", ".gif", ".svg")):
# 图片链接验证
return validate_image_url(url, max_retries)
elif url.startswith(("http://", "https://")):
# 常规HTTP链接验证
return validate_http_url(url, max_retries)
else:
# 不支持的URL类型
return False, f"不支持的URL类型: {url}"
适用场景:多类型资源处理、差异化验证、动态任务路由
4. 定时执行模式
通过crontab或系统定时任务,实现脚本的定期自动执行。
示例crontab配置:
# 每天凌晨3点执行链接验证
0 3 * * * cd /data/web/disk1/git_repo/GitHub_Trending/aw/awesome-claude-code && python scripts/validate_links.py --auto-fix >> /var/log/claude-validate.log 2>&1
# 每周一上午9点生成README
0 9 * * 1 cd /data/web/disk1/git_repo/GitHub_Trending/aw/awesome-claude-code && make generate >> /var/log/claude-generate.log 2>&1
日志轮转配置:创建/etc/logrotate.d/claude-code
/var/log/claude-*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 root adm
}
适用场景:定期维护、周期性检查、自动更新
5. 事件触发模式
利用git hooks实现事件触发的自动化执行,当特定事件发生时自动运行脚本。
项目中的pre-push钩子示例:
#!/bin/sh
# hooks/pre-push
# 推送前执行资源验证
echo "Running pre-push checks..."
python scripts/validate_new_resource.py
# 获取退出码
exit_code=$?
# 如果验证失败,阻止推送
if [ $exit_code -ne 0 ]; then
echo "❌ 资源验证失败,请修复错误后再推送"
exit 1
fi
echo "✅ 所有检查通过,可以推送"
exit 0
安装钩子:
# 自动安装钩子
make install-hooks
# 或手动安装
cp hooks/pre-push .git/hooks/
chmod +x .git/hooks/pre-push
适用场景:代码提交验证、推送前检查、部署前测试
错误处理与日志分析
自动化脚本批量执行时,完善的错误处理机制至关重要,能帮助快速定位和解决问题。
错误处理策略
- 重试机制:对网络请求等不稳定操作实现自动重试
def validate_http_url(url, max_retries=5):
"""带重试机制的HTTP链接验证"""
retry_count = 0
backoff_factor = 0.3 # 指数退避因子
while retry_count < max_retries:
try:
response = requests.head(
url,
allow_redirects=True,
timeout=10,
headers={
"User-Agent": "Awesome-Claude-Code/1.0 (Resource Validator)"
}
)
# 2xx和3xx状态码视为成功
if response.status_code < 400:
return True, f"状态码: {response.status_code}"
# 429太多请求,使用Retry-After头信息
if response.status_code == 429 and "Retry-After" in response.headers:
retry_after = int(response.headers["Retry-After"])
time.sleep(retry_after)
continue
# 其他错误状态码
return False, f"HTTP错误: {response.status_code}"
except requests.exceptions.RequestException as e:
# 网络错误,准备重试
retry_count += 1
if retry_count >= max_retries:
return False, f"请求失败: {str(e)} (重试次数耗尽)"
# 指数退避
sleep_time = backoff_factor * (2 **(retry_count - 1))
time.sleep(sleep_time)
return False, "未知错误"
2.** 错误分类 **:对不同类型错误采取不同处理策略
def handle_validation_error(error_type, resource, error_details):
"""根据错误类型执行不同处理"""
if error_type == "critical":
# 严重错误,中止处理
log_critical_error(resource, error_details)
send_alert_email(resource, error_details)
raise ValidationError(f"严重错误: {error_details}")
elif error_type == "warning":
# 警告,记录但继续处理
log_warning(resource, error_details)
add_to_review_queue(resource)
elif error_type == "temporary":
# 临时错误,稍后重试
log_temporary_error(resource, error_details)
add_to_retry_queue(resource)
else:
# 普通错误,仅记录
log_error(resource, error_details)
日志分析与监控
1.** 结构化日志 **:使用JSON格式记录日志,便于自动化分析
def setup_structured_logging():
"""配置JSON格式日志"""
import json
from pythonjsonlogger import jsonlogger
logger = logging.getLogger()
logHandler = logging.StreamHandler()
class CustomJsonFormatter(jsonlogger.JsonFormatter):
def add_fields(self, log_record, record, message_dict):
super(CustomJsonFormatter, self).add_fields(log_record, record, message_dict)
log_record['timestamp'] = datetime.datetime.utcnow().isoformat()
log_record['level'] = record.levelname
log_record['module'] = record.module
formatter = CustomJsonFormatter('%(timestamp)s %(level)s %(module)s %(message)s')
logHandler.setFormatter(formatter)
logger.addHandler(logHandler)
logger.setLevel(logging.INFO)
return logger
2.** 日志分析脚本**:批量处理日志文件,提取关键指标
def analyze_logs(log_dir, output_file):
"""分析日志文件,生成执行报告"""
results = {
"total_commands": 0,
"success_count": 0,
"error_count": 0,
"error_types": defaultdict(int),
"most_failed_commands": defaultdict(int),
"daily_stats": defaultdict(lambda: {"success": 0, "errors": 0})
}
# 处理所有日志文件
for filename in os.listdir(log_dir):
if filename.endswith(".log"):
with open(os.path.join(log_dir, filename), "r") as f:
for line in f:
try:
log_entry = json.loads(line)
results["total_commands"] += 1
# 按日期统计
date = log_entry["timestamp"][:10]
if "error" in log_entry:
results["error_count"] += 1
results["daily_stats"][date]["errors"] += 1
# 错误类型分析
error_type = extract_error_type(log_entry["error"])
results["error_types"][error_type] += 1
# 失败命令跟踪
if "command" in log_entry:
results["most_failed_commands"][log_entry["command"]] += 1
else:
results["success_count"] += 1
results["daily_stats"][date]["success"] += 1
except json.JSONDecodeError:
continue
# 生成报告
with open(output_file, "w") as f:
json.dump(results, f, indent=2)
return results
性能优化策略
当处理大量资源时,脚本执行效率变得至关重要。以下是几种有效的性能优化方法:
1. 资源池化
对于频繁创建和销毁的资源(如网络连接),使用池化技术提高效率:
def create_requests_session_pool(size=10):
"""创建HTTP会话池,重用连接"""
session = requests.Session()
# 配置连接池
adapter = requests.adapters.HTTPAdapter(
max_retries=3,
pool_connections=size, # 连接池数量
pool_maxsize=size # 每个连接池的最大连接数
)
# 为HTTP和HTTPS安装适配器
session.mount("http://", adapter)
session.mount("https://", adapter)
# 设置默认超时
session.timeout = 10
# 设置User-Agent
session.headers.update({
"User-Agent": "Awesome-Claude-Code/1.0 (Batch Processor)"
})
return session
# 创建会话池
session_pool = create_requests_session_pool(size=15)
# 在验证函数中使用
def validate_http_url_with_pool(url, session):
try:
response = session.head(url, allow_redirects=True)
return response.status_code < 400
except requests.exceptions.RequestException:
return False
2. 增量处理
只处理变更的资源,避免重复处理所有内容:
def process_changed_resources_only(csv_path, last_processed_path):
"""仅处理上次处理后变更的资源"""
# 加载上次处理记录
if os.path.exists(last_processed_path):
with open(last_processed_path, "r") as f:
last_processed = json.load(f)
last_timestamp = last_processed.get("timestamp", 0)
processed_ids = set(last_processed.get("processed_ids", []))
else:
last_timestamp = 0
processed_ids = set()
# 当前时间戳
current_timestamp = time.time()
# 加载当前资源
current_resources = load_resources_from_csv(csv_path)
changed_resources = []
for resource in current_resources:
resource_id = resource.get("ID")
# 检查是否是新资源或已更新资源
if (resource_id not in processed_ids or
parse_resource_date(resource.get("Date Added", "")) > last_timestamp):
changed_resources.append(resource)
# 处理变更的资源
results = process_resources(changed_resources)
# 保存处理记录
with open(last_processed_path, "w") as f:
json.dump({
"timestamp": current_timestamp,
"processed_ids": [r.get("ID") for r in current_resources]
}, f)
return results
3. 优先级队列
对任务进行优先级排序,确保重要任务优先执行:
def prioritize_resources(resources):
"""为资源处理分配优先级"""
priority_queue = PriorityQueue()
for resource in resources:
# 根据多个因素确定优先级
priority = 0
# 资源类型优先级
resource_type = resource.get("Category", "")
if resource_type == "Essential":
priority += 5
elif resource_type == "Recommended":
priority += 3
# 链接状态优先级(失效链接优先处理)
link_status = resource.get("Link Status", "unknown")
if link_status == "broken":
priority += 10
# 日期优先级(最近添加的优先)
try:
date_added = datetime.datetime.strptime(
resource.get("Date Added", ""), "%Y-%m-%d"
)
days_since_added = (datetime.datetime.now() - date_added).days
# 新添加的资源优先级更高
priority += max(0, 10 - days_since_added // 7)
except ValueError:
pass
# 负数值因为PriorityQueue是最小堆
priority_queue.put((-priority, resource))
return priority_queue
# 使用优先级队列处理资源
def process_resources_by_priority(resources):
queue = prioritize_resources(resources)
results = []
while not queue.empty():
priority, resource = queue.get()
result = process_single_resource(resource)
results.append(result)
# 标记任务完成
queue.task_done()
return results
最佳实践与常见问题
最佳实践
1.** 原子化操作 **:确保每个脚本只负责单一功能,便于组合和复用
2.** 幂等性设计 **:脚本可以安全地多次执行而不会产生副作用
def idempotent_resource_update(resource_id, data):
"""幂等性资源更新"""
# 先检查资源当前状态
current_resource = get_resource_by_id(resource_id)
# 如果已经是目标状态,直接返回成功
if is_resource_up_to_date(current_resource, data):
return True, "资源已是最新状态"
# 执行更新
return update_resource(resource_id, data)
3.** 详细日志 **:记录足够详细的操作日志,便于问题诊断
4.** 输入验证 **:对所有用户输入和外部数据进行严格验证
def validate_resource_input(data):
"""验证资源输入数据"""
errors = []
# 必填字段检查
required_fields = ["Display Name", "Primary Link", "Category"]
for field in required_fields:
if not data.get(field, "").strip():
errors.append(f"必填字段缺失: {field}")
# 格式验证
if "Display Name" in data and len(data["Display Name"]) > 100:
errors.append("资源名称过长,最大100个字符")
if "Primary Link" in data and not is_valid_url(data["Primary Link"]):
errors.append(f"无效的URL格式: {data['Primary Link']}")
if "License" in data and data["License"] not in VALID_LICENSES:
errors.append(f"无效的许可证类型: {data['License']}")
return len(errors) == 0, errors
5.** 版本控制 **:对配置文件和重要数据进行版本控制
常见问题与解决方案
Q1: 批量执行时遇到GitHub API速率限制
解决方案:实现智能限流和等待机制
def check_rate_limit(github_client):
"""检查并处理GitHub API速率限制"""
rate_limit = github_client.get_rate_limit()
remaining = rate_limit.core.remaining
reset_time = rate_limit.core.reset
# 计算重置时间(UTC格式)
reset_timestamp = reset_time.timestamp()
current_timestamp = time.time()
seconds_until_reset = reset_timestamp - current_timestamp
# 如果剩余请求不足10%,等待重置
if remaining < rate_limit.core.limit * 0.1:
# 添加随机延迟避免同时请求
sleep_time = seconds_until_reset + random.uniform(1, 10)
print(f"GitHub API速率限制即将用尽,剩余{remaining}个请求")
print(f"等待{int(sleep_time)}秒后重试...")
time.sleep(sleep_time)
return True
return False
Q2: 网络不稳定导致批量任务失败
解决方案:实现断点续传机制
def batch_process_with_resume(process_func, items, state_file="batch_state.json"):
"""带断点续传的批量处理"""
# 加载上次处理状态
if os.path.exists(state_file):
with open(state_file, "r") as f:
state = json.load(f)
completed = set(state["completed"])
failed = state.get("failed", [])
start_index = state.get("next_index", 0)
print(f"恢复批量处理: 已完成{len(completed)}个,失败{len(failed)}个")
else:
completed = set()
failed = []
start_index = 0
results = {"completed": [], "failed": []}
try:
for i, item in enumerate(items[start_index:], start=start_index):
item_id = get_item_id(item)
# 跳过已完成项
if item_id in completed:
continue
print(f"处理项 {i+1}/{len(items)}: {item_id}")
# 执行处理函数
try:
success, result = process_func(item)
if success:
completed.add(item_id)
results["completed"].append(item_id)
else:
failed.append({"id": item_id, "error": result})
results["failed"].append({"id": item_id, "error": result})
except Exception as e:
failed.append({"id": item_id, "error": str(e)})
results["failed"].append({"id": item_id, "error": str(e)})
# 定期保存状态
if i % 10 == 0:
save_batch_state(state_file, completed, failed, i + 1)
# 完成后删除状态文件
if os.path.exists(state_file):
os.remove(state_file)
except KeyboardInterrupt:
print("\n用户中断,保存当前状态...")
save_batch_state(state_file, completed, failed, i)
raise
return results
def save_batch_state(state_file, completed, failed, next_index):
"""保存批量处理状态"""
with open(state_file, "w") as f:
json.dump({
"completed": list(completed),
"failed": failed,
"next_index": next_index,
"timestamp": time.time()
}, f)
Q3: 脚本执行过程中占用过多系统资源
解决方案:实现资源控制机制
def limit_resource_usage():
"""限制脚本资源使用"""
import resource
# 限制CPU时间(秒)
resource.setrlimit(resource.RLIMIT_CPU, (60, 120))
# 限制内存使用(字节)
# 例如限制为512MB
memory_limit = 512 * 1024 * 1024
resource.setrlimit(resource.RLIMIT_AS, (memory_limit, memory_limit))
# 限制文件描述符数量
resource.setrlimit(resource.RLIMIT_NOFILE, (1024, 1024))
# 在脚本开头调用
if __name__ == "__main__":
limit_resource_usage()
main()
案例分析:批量资源更新
让我们通过一个实际案例,展示如何组合使用上述技巧实现复杂的批量操作。
需求描述
需要更新CSV文件中所有"工具"类别的资源,添加统一的标签,并更新它们的"Last Updated"字段为当前日期。
实现步骤
- 创建批量更新脚本
#!/usr/bin/env python3
"""批量更新资源标签的脚本"""
import csv
import datetime
import os
import sys
from pathlib import Path
def batch_update_resources(csv_path, category, update_func):
"""
批量更新特定类别的资源
Args:
csv_path: CSV文件路径
category: 要更新的资源类别
update_func: 应用于资源的更新函数
"""
# 创建备份
backup_path = f"{csv_path}.backup.{datetime.datetime.now().strftime('%Y%m%d%H%M%S')}"
with open(csv_path, "r", encoding="utf-8") as src, open(backup_path, "w", encoding="utf-8") as dst:
dst.write(src.read())
print(f"创建备份文件: {backup_path}")
# 读取并处理CSV
updated_count = 0
resources = []
with open(csv_path, "r", encoding="utf-8") as f:
reader = csv.DictReader(f)
fieldnames = reader.fieldnames
resources = list(reader)
# 应用更新函数到符合条件的资源
for resource in resources:
if resource.get("Category") == category:
update_func(resource)
updated_count += 1
# 写回CSV
with open(csv_path, "w", encoding="utf-8", newline="") as f:
writer = csv.DictWriter(f, fieldnames=fieldnames)
writer.writeheader()
writer.writerows(resources)
return updated_count
def add_tags_and_update_date(resource):
"""添加标签并更新日期的函数"""
# 添加标签
current_tags = resource.get("Tags", "").strip()
new_tags = "tools,automation"
if current_tags:
# 避免重复标签
tags_list = [t.strip() for t in current_tags.split(",")]
for tag in new_tags.split(","):
if tag not in tags_list:
tags_list.append(tag)
resource["Tags"] = ", ".join(tags_list)
else:
resource["Tags"] = new_tags
# 更新最后更新日期
resource["Last Updated"] = datetime.datetime.now().strftime("%Y-%m-%d")
def main():
if len(sys.argv) != 2:
print(f"用法: {sys.argv[0]} <CSV文件路径>")
sys.exit(1)
csv_path = sys.argv[1]
if not os.path.exists(csv_path):
print(f"错误: 文件不存在 - {csv_path}")
sys.exit(1)
# 执行批量更新
updated_count = batch_update_resources(
csv_path,
"工具",
add_tags_and_update_date
)
print(f"批量更新完成,共更新 {updated_count} 个资源")
# 生成新的README
print("正在生成新的README.md...")
os.system("make generate")
print("操作完成,请检查并提交更改")
if __name__ == "__main__":
main()
- 添加执行权限并运行
chmod +x scripts/batch_update_tags.py
python scripts/batch_update_tags.py THE_RESOURCES_TABLE.csv
- 创建定时任务定期执行
# 添加到crontab,每月1日执行
0 0 1 * * cd /path/to/repo && python scripts/batch_update_tags.py THE_RESOURCES_TABLE.csv >> batch_update.log 2>&1
总结与展望
通过本文介绍的批量执行技巧,你可以大幅提高使用Claude Code的效率,减少重复劳动。从简单的顺序执行到复杂的优先级队列,从错误处理到性能优化,这些技术不仅适用于awesome-claude-code项目,也可以应用到其他需要自动化批量处理的场景。
未来,我们可以期待更智能的自动化功能:
- 基于AI的资源分类和标签推荐
- 实时资源监控和自动更新
- 分布式批量处理系统
掌握这些自动化技巧,将使你能够更专注于创造性工作,而不是繁琐的重复操作。现在就开始应用这些技术,提升你的Claude Code使用体验吧!
相关资源
如果你觉得本文有帮助,请点赞、收藏并关注,以便获取更多类似内容。下期我们将探讨如何构建自定义的Claude Code插件,敬请期待!
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00- QQwen3-Coder-Next2026年2月4日,正式发布的Qwen3-Coder-Next,一款专为编码智能体和本地开发场景设计的开源语言模型。Python00
xw-cli实现国产算力大模型零门槛部署,一键跑通 Qwen、GLM-4.7、Minimax-2.1、DeepSeek-OCR 等模型Go06
PaddleOCR-VL-1.5PaddleOCR-VL-1.5 是 PaddleOCR-VL 的新一代进阶模型,在 OmniDocBench v1.5 上实现了 94.5% 的全新 state-of-the-art 准确率。 为了严格评估模型在真实物理畸变下的鲁棒性——包括扫描伪影、倾斜、扭曲、屏幕拍摄和光照变化——我们提出了 Real5-OmniDocBench 基准测试集。实验结果表明,该增强模型在新构建的基准测试集上达到了 SOTA 性能。此外,我们通过整合印章识别和文本检测识别(text spotting)任务扩展了模型的能力,同时保持 0.9B 的超紧凑 VLM 规模,具备高效率特性。Python00
KuiklyUI基于KMP技术的高性能、全平台开发框架,具备统一代码库、极致易用性和动态灵活性。 Provide a high-performance, full-platform development framework with unified codebase, ultimate ease of use, and dynamic flexibility. 注意:本仓库为Github仓库镜像,PR或Issue请移步至Github发起,感谢支持!Kotlin08
VLOOKVLOOK™ 是优雅好用的 Typora/Markdown 主题包和增强插件。 VLOOK™ is an elegant and practical THEME PACKAGE × ENHANCEMENT PLUGIN for Typora/Markdown.Less00