Nitter实战应用:搭建私有Twitter镜像服务
本文详细介绍了Nitter Twitter镜像服务的企业级部署方案,涵盖高可用架构设计、负载均衡配置、Redis缓存集群、容器化部署、监控告警体系、安全加固措施以及数据备份恢复策略。通过微服务架构和自动化运维流程,帮助企业构建稳定可靠的私有Twitter镜像服务平台。
企业级部署架构设计
在企业环境中部署Nitter Twitter镜像服务时,需要充分考虑高可用性、可扩展性、安全性和监控运维等关键因素。基于Nitter的架构特点,我们设计了一套完整的企业级部署方案。
核心架构组件
Nitter企业级部署采用微服务架构模式,主要包含以下核心组件:
| 组件名称 | 功能描述 | 部署方式 |
|---|---|---|
| Nitter应用服务 | 处理Twitter内容请求和渲染 | 多实例负载均衡 |
| Redis缓存集群 | 数据缓存和会话管理 | 主从复制集群 |
| 反向代理层 | 负载均衡和安全防护 | Nginx/HAProxy |
| 会话管理服务 | Twitter API会话令牌管理 | 独立微服务 |
| 监控系统 | 性能监控和告警 | Prometheus + Grafana |
| 日志收集 | 集中式日志管理 | ELK/EFK Stack |
高可用架构设计
flowchart TD
A[用户请求] --> B[CDN/负载均衡器]
B --> C[Nginx反向代理]
C --> D[Nitter实例1]
C --> E[Nitter实例2]
C --> F[Nitter实例N]
D --> G[Redis Sentinel集群]
E --> G
F --> G
G --> H[Redis主节点]
G --> I[Redis从节点1]
G --> J[Redis从节点2]
subgraph 会话管理
K[会话服务] --> L[会话存储]
end
D --> K
E --> K
F --> K
Redis缓存集群配置
在企业级部署中,Redis缓存采用哨兵模式确保高可用性:
# Redis集群配置示例
[Cache]
redisHost = "redis-sentinel"
redisPort = 26379
redisPassword = "${REDIS_PASSWORD}"
redisConnections = 50
redisMaxConnections = 100
listMinutes = 240
rssMinutes = 10
对应的Redis哨兵配置:
# sentinel.conf
sentinel monitor nitter-master 192.168.1.10 6379 2
sentinel down-after-milliseconds nitter-master 5000
sentinel failover-timeout nitter-master 10000
sentinel parallel-syncs nitter-master 1
负载均衡策略
采用Nginx作为反向代理,配置负载均衡和健康检查:
upstream nitter_backend {
least_conn;
server nitter-instance1:8080 max_fails=3 fail_timeout=30s;
server nitter-instance2:8080 max_fails=3 fail_timeout=30s;
server nitter-instance3:8080 max_fails=3 fail_timeout=30s;
# 会话保持配置
sticky cookie srv_id expires=1h domain=.example.com path=/;
}
server {
listen 80;
server_name nitter.example.com;
location / {
proxy_pass http://nitter_backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# 健康检查
health_check interval=10 fails=3 passes=2;
}
# 静态资源缓存
location ~* \.(css|js|png|jpg|jpeg|gif|ico|svg)$ {
expires 1y;
add_header Cache-Control "public, immutable";
proxy_pass http://nitter_backend;
}
}
容器化部署方案
使用Docker Compose进行多环境部署:
version: '3.8'
services:
nitter:
image: nitter:enterprise
deploy:
replicas: 3
update_config:
parallelism: 1
delay: 10s
restart_policy:
condition: on-failure
delay: 5s
max_attempts: 3
environment:
- REDIS_HOST=redis-sentinel
- REDIS_PORT=26379
- NITTER_HOSTNAME=nitter.example.com
- NITTER_HTTPS=true
configs:
- source: nitter_config
target: /app/nitter.conf
networks:
- nitter_network
redis-sentinel:
image: bitnami/redis-sentinel:6.2
deploy:
replicas: 3
environment:
- REDIS_MASTER_HOST=redis-master
- REDIS_MASTER_PORT_NUMBER=6379
- REDIS_SENTINEL_QUORUM=2
networks:
- nitter_network
redis-master:
image: bitnami/redis:6.2
environment:
- REDIS_REPLICATION_MODE=master
- REDIS_PASSWORD=${REDIS_PASSWORD}
volumes:
- redis_data:/data
networks:
- nitter_network
redis-replica:
image: bitnami/redis:6.2
deploy:
replicas: 2
environment:
- REDIS_REPLICATION_MODE=slave
- REDIS_MASTER_HOST=redis-master
- REDIS_MASTER_PASSWORD=${REDIS_PASSWORD}
- REDIS_PASSWORD=${REDIS_PASSWORD}
networks:
- nitter_network
configs:
nitter_config:
file: ./nitter.conf
networks:
nitter_network:
driver: overlay
volumes:
redis_data:
driver: local
监控和告警体系
建立完整的监控指标体系:
# Prometheus监控配置
scrape_configs:
- job_name: 'nitter'
static_configs:
- targets: ['nitter-instance1:8080', 'nitter-instance2:8080']
metrics_path: '/metrics'
- job_name: 'redis'
static_configs:
- targets: ['redis-master:9121', 'redis-replica1:9121']
- job_name: 'nginx'
static_configs:
- targets: ['nginx-exporter:9113']
# 关键监控指标
- nitter_requests_total
- nitter_request_duration_seconds
- nitter_cache_hits_total
- nitter_cache_misses_total
- redis_connected_clients
- redis_memory_used_bytes
- redis_commands_processed_total
安全加固措施
企业级部署必须实施严格的安全策略:
- 网络隔离:使用VPC和网络安全组限制访问
- TLS加密:全链路HTTPS加密传输
- 访问控制:基于IP的白名单和速率限制
- 会话安全:定期轮换HMAC密钥和会话令牌
- 漏洞扫描:定期进行安全扫描和渗透测试
自动化运维流程
采用GitOps理念实现自动化部署:
flowchart LR
A[代码仓库] --> B[CI/CD流水线]
B --> C[构建Docker镜像]
C --> D[镜像仓库]
D --> E[部署到测试环境]
E --> F[自动化测试]
F --> G[部署到生产环境]
G --> H[监控验证]
H --> I[回滚机制]
通过这套企业级部署架构,Nitter服务能够实现99.9%的可用性,支持横向扩展应对高并发访问,同时确保数据安全和运维效率。企业可以根据实际业务需求调整部署规模和配置参数,构建稳定可靠的Twitter镜像服务平台。
负载均衡与高可用方案
Nitter作为一个高性能的Twitter镜像服务,在生产环境中需要部署负载均衡和高可用架构来确保服务的稳定性和可扩展性。本节将详细介绍Nitter的负载均衡策略、高可用方案以及相关的配置实现。
架构设计原则
Nitter的负载均衡架构设计遵循以下核心原则:
- 无状态服务设计:Nitter实例本身是无状态的,所有会话和缓存数据都存储在Redis中
- 水平扩展能力:支持通过增加实例数量来扩展处理能力
- 故障自动恢复:具备自动检测和恢复机制
- 会话一致性:确保用户请求在故障转移时保持一致性
Redis集群配置
Nitter依赖Redis进行缓存和会话管理,Redis集群的高可用配置至关重要:
# Redis Sentinel配置示例
sentinel monitor nitter-master 192.168.1.100 6379 2
sentinel down-after-milliseconds nitter-master 5000
sentinel failover-timeout nitter-master 10000
sentinel parallel-syncs nitter-master 1
# Nitter配置中的Redis连接
redisHost = "redis-sentinel"
redisPort = 26379
redisPassword = "your_secure_password"
redisConnections = 50
redisMaxConnections = 100
负载均衡器配置
Nginx负载均衡配置
upstream nitter_backend {
# 负载均衡策略
least_conn; # 最少连接数策略
# Nitter实例列表
server 192.168.1.101:8080 max_fails=3 fail_timeout=30s;
server 192.168.1.102:8080 max_fails=3 fail_timeout=30s;
server 192.168.1.103:8080 max_fails=3 fail_timeout=30s;
# 健康检查
keepalive 32;
}
server {
listen 80;
server_name nitter.yourdomain.com;
# 反向代理配置
location / {
proxy_pass http://nitter_backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# 连接超时设置
proxy_connect_timeout 30s;
proxy_send_timeout 30s;
proxy_read_timeout 30s;
# 缓冲区优化
proxy_buffering on;
proxy_buffer_size 4k;
proxy_buffers 8 4k;
}
# 健康检查端点
location /health {
access_log off;
return 200 "healthy\n";
add_header Content-Type text/plain;
}
}
HAProxy负载均衡配置
frontend nitter_frontend
bind *:80
mode http
default_backend nitter_backend
backend nitter_backend
mode http
balance roundrobin
option httpchk GET /health
# 服务器配置
server nitter1 192.168.1.101:8080 check inter 2000 rise 2 fall 3
server nitter2 192.168.1.102:8080 check inter 2000 rise 2 fall 3
server nitter3 192.168.1.103:8080 check inter 2000 rise 2 fall 3
# 连接池配置
option http-keep-alive
timeout connect 5s
timeout server 30s
timeout client 30s
Docker Swarm/Kubernetes部署
Docker Compose多实例部署
version: '3.8'
services:
nitter:
image: zedeus/nitter:latest
deploy:
replicas: 3
update_config:
parallelism: 1
delay: 10s
restart_policy:
condition: on-failure
max_attempts: 3
environment:
- NITTER_CONF_FILE=/config/nitter.conf
volumes:
- ./config:/config:ro
- ./sessions:/sessions:ro
networks:
- nitter_network
redis:
image: redis:7-alpine
deploy:
replicas: 1
restart_policy:
condition: on-failure
command: redis-server --appendonly yes
volumes:
- redis_data:/data
networks:
- nitter_network
nginx:
image: nginx:alpine
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
depends_on:
- nitter
networks:
- nitter_network
volumes:
redis_data:
networks:
nitter_network:
driver: overlay
健康检查与监控
Nitter提供了内置的健康检查机制,可以通过以下方式进行监控:
# 健康检查脚本
#!/bin/bash
# 检查Nitter实例健康状态
check_nitter_health() {
local instance=$1
local response=$(curl -s -o /dev/null -w "%{http_code}" "http://${instance}:8080/health" --connect-timeout 5)
if [ "$response" -eq 200 ]; then
echo "Nitter instance ${instance} is healthy"
return 0
else
echo "Nitter instance ${instance} is unhealthy"
return 1
fi
}
# 检查Redis连接状态
check_redis_health() {
redis-cli -h $1 -p $2 ping | grep -q "PONG"
if [ $? -eq 0 ]; then
echo "Redis connection successful"
return 0
else
echo "Redis connection failed"
return 1
fi
}
会话一致性保障
为确保在负载均衡环境下的会话一致性,需要配置合适的会话保持策略:
# 基于IP的会话保持
upstream nitter_backend {
ip_hash;
server 192.168.1.101:8080;
server 192.168.1.102:8080;
server 192.168.1.103:8080;
}
# 或者基于Cookie的会话保持
map $cookie_jsessionid $persistent_backend {
default "";
~^(?<session_id>.+) $session_id;
}
upstream nitter_backend {
hash $persistent_backend consistent;
server 192.168.1.101:8080;
server 192.168.1.102:8080;
server 192.168.1.103:8080;
}
性能优化配置
Nitter实例优化
[Server]
httpMaxConnections = 200 # 增加最大连接数
port = 8080
address = "0.0.0.0"
[Cache]
redisConnections = 50 # 增加Redis连接池大小
redisMaxConnections = 100
listMinutes = 480 # 延长列表缓存时间
rssMinutes = 15 # 调整RSS缓存时间
系统级优化
# 调整系统文件描述符限制
echo "* soft nofile 65536" >> /etc/security/limits.conf
echo "* hard nofile 65536" >> /etc/security/limits.conf
# 调整内核参数
echo "net.core.somaxconn = 65536" >> /etc/sysctl.conf
echo "net.ipv4.tcp_max_syn_backlog = 65536" >> /etc/sysctl.conf
sysctl -p
故障转移与恢复
Nitter的高可用架构包含完整的故障转移机制:
flowchart TD
A[客户端请求] --> B[负载均衡器]
B --> C{健康检查}
C -->|健康| D[Nitter实例1]
C -->|不健康| E[标记为下线]
D --> F[处理请求]
F --> G[返回响应]
E --> H[自动切换到备用实例]
H --> I[Nitter实例2]
I --> F
监控与告警
建立完整的监控体系来确保服务的高可用性:
# Prometheus监控配置
- job_name: 'nitter'
static_configs:
- targets: ['192.168.1.101:8080', '192.168.1.102:8080', '192.168.1.103:8080']
metrics_path: '/metrics'
scrape_interval: 15s
# Alertmanager告警规则
groups:
- name: nitter-alerts
rules:
- alert: NitterInstanceDown
expr: up{job="nitter"} == 0
for: 2m
labels:
severity: critical
annotations:
summary: "Nitter instance down"
description: "Instance {{ $labels.instance }} is down"
通过上述负载均衡和高可用方案的实施,可以构建一个稳定、可扩展的Nitter私有Twitter镜像服务,确保在面对高并发请求和实例故障时仍能提供可靠的服务。
数据备份与恢复策略
在Nitter私有Twitter镜像服务的部署中,数据备份与恢复是确保服务持续可用性的关键环节。Nitter主要依赖Redis作为缓存数据库,存储用户信息、推文数据、列表信息和RSS订阅等关键数据。合理的数据备份策略能够有效防止数据丢失,确保在系统故障或迁移时能够快速恢复服务。
Redis数据持久化机制
Nitter使用Redis作为缓存层,Redis提供了多种持久化机制来保障数据安全:
# Redis RDB持久化配置(默认启用)
save 900 1 # 900秒内至少有1个键被修改
save 300 10 # 300秒内至少有10个键被修改
save 60 10000 # 60秒内至少有10000个键被修改
# Redis AOF持久化配置(推荐启用)
appendonly yes
appendfsync everysec # 每秒同步一次
在Docker部署环境中,Redis容器通过volume挂载实现数据持久化:
# docker-compose.yml中的Redis配置
nitter-redis:
image: redis:6-alpine
volumes:
- nitter-redis:/data
command: redis-server --save 60 1 --loglevel warning
备份策略设计
1. 定时备份脚本
创建自动化备份脚本,定期将Redis数据导出并压缩存储:
#!/bin/bash
# backup_nitter_redis.sh
BACKUP_DIR="/opt/nitter/backups"
DATE=$(date +%Y%m%d_%H%M%S)
REDIS_CONTAINER="nitter-redis"
# 创建备份目录
mkdir -p $BACKUP_DIR
# 执行Redis备份
docker exec $REDIS_CONTAINER redis-cli SAVE
# 复制RDB文件
docker cp $REDIS_CONTAINER:/data/dump.rdb $BACKUP_DIR/dump_$DATE.rdb
# 压缩备份文件
gzip $BACKUP_DIR/dump_$DATE.rdb
# 保留最近30天的备份
find $BACKUP_DIR -name "*.rdb.gz" -mtime +30 -delete
echo "Backup completed: $BACKUP_DIR/dump_$DATE.rdb.gz"
2. 配置文件备份
Nitter的配置文件同样需要定期备份:
#!/bin/bash
# backup_nitter_config.sh
CONFIG_DIR="/opt/nitter"
BACKUP_DIR="/opt/nitter/config_backups"
DATE=$(date +%Y%m%d)
mkdir -p $BACKUP_DIR
cp $CONFIG_DIR/nitter.conf $BACKUP_DIR/nitter.conf.$DATE
cp $CONFIG_DIR/sessions.jsonl $BACKUP_DIR/sessions.jsonl.$DATE
# 保留最近7个版本的配置
ls -t $BACKUP_DIR/nitter.conf.* | tail -n +8 | xargs rm -f
ls -t $BACKUP_DIR/sessions.jsonl.* | tail -n +8 | xargs rm -f
恢复流程
1. Redis数据恢复
当需要恢复Redis数据时,执行以下步骤:
# 停止Redis服务
docker stop nitter-redis
# 解压备份文件
gunzip -c /opt/nitter/backups/dump_20241201_120000.rdb.gz > /var/lib/docker/volumes/nitter-redis/_data/dump.rdb
# 重新启动Redis
docker start nitter-redis
# 验证数据恢复
docker exec nitter-redis redis-cli DBSIZE
2. 配置文件恢复
# 恢复配置文件
cp /opt/nitter/config_backups/nitter.conf.20241201 /opt/nitter/nitter.conf
cp /opt/nitter/config_backups/sessions.jsonl.20241201 /opt/nitter/sessions.jsonl
# 重启Nitter服务
docker-compose restart nitter
监控与告警
建立备份监控体系,确保备份任务正常执行:
#!/bin/bash
# check_backup_status.sh
LOG_FILE="/var/log/nitter_backup.log"
ALERT_EMAIL="admin@example.com"
# 检查最近备份时间
LAST_BACKUP=$(find /opt/nitter/backups -name "*.rdb.gz" -exec stat -c %Y {} \; | sort -n | tail -1)
CURRENT_TIME=$(date +%s)
TIME_DIFF=$((CURRENT_TIME - LAST_BACKUP))
# 如果超过24小时没有备份,发送告警
if [ $TIME_DIFF -gt 86400 ]; then
echo "警告:Nitter备份已超过24小时未执行!" | mail -s "Nitter备份告警" $ALERT_EMAIL
exit 1
fi
echo "备份状态正常" >> $LOG_FILE
灾难恢复计划
制定完整的灾难恢复流程,确保在严重故障时能够快速恢复服务:
flowchart TD
A[灾难发生] --> B{评估影响范围}
B -->|数据丢失| C[启动数据恢复流程]
B -->|服务中断| D[启动服务恢复流程]
C --> E[恢复最新备份]
E --> F[验证数据完整性]
F --> G[重启Redis服务]
D --> H[检查容器状态]
H --> I[重新部署服务]
I --> J[验证服务可用性]
G --> K[服务恢复完成]
J --> K
备份策略优化建议
根据Nitter的数据特点,建议采用分级备份策略:
| 备份类型 | 频率 | 保留时间 | 存储位置 |
|---|---|---|---|
| 全量备份 | 每日 | 30天 | 本地磁盘 |
| 增量备份 | 每小时 | 7天 | 本地磁盘 |
| 异地备份 | 每周 | 90天 | 云存储 |
自动化部署集成
将备份策略集成到CI/CD流程中,确保每次部署都包含数据保护措施:
# GitHub Actions备份工作流示例
name: Nitter Backup
on:
schedule:
- cron: '0 2 * * *' # 每天凌晨2点执行
workflow_dispatch:
jobs:
backup:
runs-on: ubuntu-latest
steps:
- name: Execute remote backup
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USER }}
key: ${{ secrets.SSH_KEY }}
script: |
cd /opt/nitter
./backup_nitter_redis.sh
./backup_nitter_config.sh
通过实施上述数据备份与恢复策略,可以确保Nitter私有Twitter镜像服务在面临各种故障场景时能够快速恢复,最大程度减少服务中断时间,保障用户体验。
监控告警与运维实践
Nitter作为一个高性能的Twitter镜像服务,在生产环境中需要完善的监控告警体系来确保服务的稳定性和可用性。本节将详细介绍Nitter的监控告警机制、健康检查、日志管理以及运维最佳实践。
健康检查与状态监控
Nitter内置了健康检查端点,通过/.health路径可以获取当前实例的运行状态信息。该端点返回JSON格式的健康状态数据,包含会话池统计和请求信息:
{
"sessions": {
"total": 15,
"limited": 2,
"oldest": "2024-01-15T08:30:45Z",
"newest": "2024-01-15T10:45:22Z",
"average": "2024-01-15T09:37:53Z"
},
"requests": {
"total": 1245,
"apis": {
"search": 320,
"tweetDetail": 560,
"userTweets": 365
}
}
}
监控指标说明:
| 指标类别 | 具体指标 | 说明 | 告警阈值 |
|---|---|---|---|
| 会话状态 | total_sessions | 总会话数量 | < 5个 |
| 会话状态 | limited_sessions | 被限制的会话数量 | > 总会话的50% |
| 请求统计 | total_requests | 总请求数量 | 持续下降 |
| API使用 | api_requests | 各API端点请求分布 | 异常波动 |
会话池管理监控
Nitter的会话池是核心组件,需要重点监控。通过/.sessions调试端点可以获取详细的会话状态信息:
flowchart TD
A[会话请求] --> B{会话可用性检查}
B -->|可用| C[分配会话]
B -->|不可用| D[抛出NoSessionsError]
C --> E[执行API请求]
E --> F{请求结果}
F -->|成功| G[更新速率限制信息]
F -->|失败| H[处理错误]
G --> I[释放会话]
H --> J[标记会话限制]
I --> K[等待下次请求]
J --> L[会话恢复检查]
会话池关键监控指标:
# 会话健康状态检查实现
proc getSessionPoolHealth*(): JsonNode =
let now = epochTime().int
var
totalReqs = 0
limited: PackedSet[int64]
reqsPerApi: Table[string, int]
for session in sessionPool:
let created = snowflakeToEpoch(session.id)
if session.limited:
limited.incl session.id
# ... 统计各API请求量
错误监控与告警
Nitter内置了完善的错误处理机制,需要监控以下关键错误类型:
| 错误类型 | 错误代码 | 严重程度 | 处理策略 |
|---|---|---|---|
| RateLimitError | 429 | 警告 | 自动切换会话 |
| NoSessionsError | 503 | 严重 | 需要人工干预 |
| Http404 | 404 | 信息 | 正常业务错误 |
| InternalError | 500 | 严重 | 立即告警 |
错误监控配置示例:
# Prometheus告警规则配置
groups:
- name: nitter_alerts
rules:
- alert: NitterNoSessionsAvailable
expr: nitter_sessions_total < 2
for: 5m
labels:
severity: critical
annotations:
summary: "Nitter会话池耗尽"
description: "可用会话数量低于阈值,需要立即处理"
- alert: NitterHighErrorRate
expr: rate(nitter_errors_total[5m]) > 0.1
for: 2m
labels:
severity: warning
annotations:
summary: "Nitter错误率过高"
description: "5分钟内错误率超过10%"
日志管理与分析
Nitter采用结构化的日志输出,便于日志收集和分析:
template log(str: varargs[string, `$`]) =
if enableLogging:
echo "[sessions] ", str.join("")
# 日志输出示例
[sessions] rate limited by api: search, reqs left: 2, id: 1234567890
[sessions] invalidating: 1234567890
[sessions] successfully added 15 valid account sessions
推荐使用ELK或Loki进行日志收集,配置日志解析规则:
# Filebeat配置
filebeat.inputs:
- type: log
paths:
- /var/log/nitter/nitter.log
json.keys_under_root: true
json.add_error_key: true
# Grok模式匹配
grok:
patterns:
nitter_log: '\[%{WORD:component}\] %{GREEDYDATA:message}'
性能监控指标
建立完整的性能监控指标体系:
graph LR
A[客户端请求] --> B[Nitter实例]
B --> C[Redis缓存]
B --> D[Twitter API]
C --> E[缓存命中率监控]
D --> F[API响应时间监控]
B --> G[请求处理延迟监控]
subgraph 监控指标
H[请求QPS]
I[错误率]
J[缓存命中率]
K[API延迟P99]
L[会话池利用率]
end
E --> J
F --> K
B --> H
B --> I
B --> L
关键性能指标采集:
Nitter作为一个高性能的Twitter镜像服务,通过企业级部署架构可以实现99.9%的可用性。本文提供的完整解决方案包括负载均衡、高可用设计、Redis集群配置、容器化部署、监控告警体系和数据备份策略,确保了服务的稳定性、安全性和可扩展性。企业可根据实际需求调整部署规模,构建可靠的私有Twitter镜像服务。
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00
GLM-4.7-FlashGLM-4.7-Flash 是一款 30B-A3B MoE 模型。作为 30B 级别中的佼佼者,GLM-4.7-Flash 为追求性能与效率平衡的轻量化部署提供了全新选择。Jinja00
VLOOKVLOOK™ 是优雅好用的 Typora/Markdown 主题包和增强插件。 VLOOK™ is an elegant and practical THEME PACKAGE × ENHANCEMENT PLUGIN for Typora/Markdown.Less00
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发起,感谢支持!Kotlin07
compass-metrics-modelMetrics model project for the OSS CompassPython00