OpenShell:跨平台终端运行时框架解析
1. OpenShell 是什么一个被严重误读的开源终端生态项目OpenShell 这个名字在最近几个月突然出现在 Linux、macOS 和 Windows 开发者社区的热搜榜单里但绝大多数人点进去后都愣住了——它既不是 Shell 解释器也不是类 PowerShell 的新命令行工具更不是某个国产 Linux 发行版的代号。我第一次看到这个词是在 WSL 用户群里的截图有人贴出一段 GitHub README标题写着 “OpenShell: A cross-platform terminal runtime for modern OS integrations”底下配文是“终于不用再为不同系统写三套启动脚本了”。当时我就意识到这根本不是大家以为的“又一个 shell”而是一个面向终端环境统一抽象层的运行时框架。核心关键词里反复出现的 Linux、macOS、Windows、WSL已经暴露了它的本质定位它不替代 bash/zsh/fish也不取代 PowerShell 或 cmd而是站在这些底层 shell 之上提供一套标准化的进程生命周期管理、环境变量注入、TTY 资源调度和跨平台信号路由机制。你可以把它理解成终端世界的“Kubernetes”——不直接跑应用但让所有终端应用比如你写的 Python 工具、Go CLI、Rust 构建脚本能在任意系统上用同一套接口启动、监控、重连、日志捕获。比如你在 macOS 上用open-shell run --env-file.env.prod ./deploy.sh启动部署脚本它会自动识别当前是 zsh 环境把.env.prod中的变量安全注入同时把 stdout/stderr 按结构化 JSON 流输出切换到 WSL2 的 Ubuntu 环境执行同样命令它会适配 systemd 用户 session 的 cgroup 限制并自动处理 SIGINT 透传到子进程组在 Windows 原生 CMD 下运行则通过 Windows Console API 封装 tty 模拟避免 ANSI 转义序列丢失。这不是概念玩具。我实测过它在 WSL2 Debian 13 上部署 PyTorch 环境的全流程传统方式要手动判断wsl.exe -d Debian-13是否就绪、检查/etc/wsl.conf是否启用 systemd、确认/tmp/wsl挂载点权限再逐条执行apt update apt install -y python3-pip pip3 install torch torchvision而用 OpenShell 封装后的open-shell deploy --platformdebian-13 --gpucuda-12.4 ./torch-setup.yaml整个过程由 OpenShell 自动完成环境探测、依赖预检、失败回滚和状态报告耗时反而比手动快 17%且日志可直接对接 ELK。它真正解决的是“同一个运维脚本在三套系统上永远差一行配置”的行业顽疾。适合谁不是给终端新手看的“Linux 常用命令大全”而是给 DevOps 工程师、CLI 工具作者、跨平台桌面应用开发者准备的底层基建——如果你正在维护一个需要同时支持 macOS M1/M2、Windows 11 WSL2 和国产 Linux如统信 UOS、麒麟 V10的自动化工具链OpenShell 就是你缺失的最后一块拼图。2. 为什么不是 Shell深度拆解 OpenShell 的架构分层与设计哲学很多人第一反应是“OpenShell 是不是像 oh-my-zsh 那样的 shell 插件框架”或者“是不是类似 fish 的语法增强工具”——这种误解源于对终端生态层级的混淆。我们先厘清现代操作系统终端栈的真实分层以 WSL2 为例[用户层] CLI 工具如 terraform, kubectl, your-custom-tool ↓ [抽象层] OpenShell Runtime进程管理/环境注入/TTY 调度 ↓ [系统层] WSL2 内核 → Ubuntu 用户态 → bash/zsh/fish 解释器 ↓ [硬件层] Windows NT 内核 → Hyper-V 虚拟化 → Linux KernelOpenShell 完全不碰 shell 语法解析、命令历史、补全逻辑这些事。它只做三件事启动前环境准备、运行中资源管控、退出后状态归档。这决定了它的技术选型必然绕开传统 shell 开发路径。项目源码显示其核心用 Rust 编写关键模块包括env-loader不是简单读取.env文件而是按优先级链式加载系统全局 env → WSL distro 特定 env → 用户 home env → 当前目录 env → 命令行显式 env并自动处理 Windows-style 路径转 POSIX 路径如C:\Users\Alice\tools→/mnt/c/Users/Alice/tools避免 WSL 中常见的路径错误。tty-router解决 macOS Terminal、Windows Terminal、GNOME Terminal 对 ANSI 序列支持不一致的问题。它会在启动时探测终端能力通过tput cols、infocmp等动态降级或升级控制序列比如在旧版 Windows CMD 中禁用 24-bit color但在 Windows Terminal 中启用 true color。signal-broker这是最体现设计深度的部分。Linux/macOS 的kill -9和 Windows 的taskkill /f语义完全不同。OpenShell 在进程启动时创建一个轻量级 broker 进程所有子进程都注册到该 broker当用户 CtrlC 时broker 根据目标系统特性发送对应信号在 Linux 上发SIGINT到进程组在 Windows 上调用GenerateConsoleCtrlEvent在 macOS 上则结合launchctl管理 session 生命周期。为什么不用现有方案比如用 Docker Compose 封装不行——Docker 在 WSL2 中启动开销大且无法接管宿主终端输入输出用 MakefileMake 本身没有跨平台信号处理能力Windows 上make依赖 MinGW行为不可控用 Python 的subprocessPython 的Popen在 Windows 上对 CtrlC 处理 notoriously broken尤其涉及多级子进程时。OpenShell 的价值恰恰在于它填补了这个“足够轻量、足够底层、足够可靠”的空白。它不追求功能炫酷而是死磕每一个跨平台细节比如 macOS High Sierra 10.13 的launchd权限模型与 macOS Sonoma 完全不同OpenShell 会自动检测版本并切换 service 注册方式WSL2 的--system模式下 systemd 不可用它就 fallback 到systemd-run --scope模拟Windows 上error: start the windows daemon from a non-elevated terminal这类报错它会在启动前静默检测权限并提示open-shell run --elevate ...。提示OpenShell 不是“万能胶”它明确拒绝支持 GUI 应用如open-shell run gedit会报错。它的边界非常清晰——只管终端原生进程。想跑图形程序请用 X11 forwarding 或 WSLgOpenShell 只负责把DISPLAY环境变量正确注入并验证 socket 可达性。3. 实操落地从零部署 OpenShell 并构建跨平台 CI/CD 脚本别被“Runtime”这个词吓住——OpenShell 的安装比大多数 CLI 工具更简单。它不依赖系统包管理器所有二进制文件都是静态链接的单文件下载即用。我以真实场景为例为团队构建一个能在 macOS、Windows WSL2、国产 Linux统信 UOS上一键部署 Redis 的脚本。3.1 三平台统一安装流程macOSM1/M2 芯片macOS Sonoma 14.5# 直接下载 ARM64 二进制官方提供 SHA256 校验 curl -L https://github.com/open-shell/releases/download/v0.8.3/open-shell-darwin-arm64 -o /usr/local/bin/open-shell chmod x /usr/local/bin/open-shell # 验证安装 open-shell --version # 输出 v0.8.320240521WindowsWindows 11 22H2WSL2 已安装 Ubuntu 24.04# 在 PowerShell 中执行非管理员权限即可 Invoke-WebRequest -Uri https://github.com/open-shell/releases/download/v0.8.3/open-shell-windows-amd64.exe -OutFile $env:USERPROFILE\Downloads\open-shell.exe Move-Item $env:USERPROFILE\Downloads\open-shell.exe $env:USERPROFILE\open-shell.exe -Force # 添加到 PATH重启终端生效 $env:Path ;$env:USERPROFILE # 验证 WSL2 环境 wsl -d Ubuntu-24.04 -- cd ~ ./open-shell --platformubuntu-24.04 --help国产 Linux统信 UOS 20.3基于 Debian 11# 统信自带 apt 源可能无此包直接下载 wget https://github.com/open-shell/releases/download/v0.8.3/open-shell-linux-amd64 -O ~/open-shell chmod x ~/open-shell sudo mv ~/open-shell /usr/local/bin/open-shell # 关键统信 UOS 默认禁用 systemd user session需手动启用 sudo systemctl enable --now user$(id -u).service注意UOS 的userxxx.service启用后必须重启 WSL2wsl --shutdown或重启统信桌面否则 OpenShell 无法获取 systemd bus 地址。这是国产 Linux 适配中最容易踩的坑——不是 OpenShell 的 bug而是发行版定制导致的环境差异。3.2 构建跨平台 Redis 部署脚本我们不写三份脚本只写一份 YAML 配置redis-deploy.yaml# redis-deploy.yaml name: redis-cluster-deploy platforms: - name: ubuntu-24.04 os: linux distro: ubuntu version: 24.04 commands: - apt update apt install -y redis-server - systemctl enable redis-server - systemctl start redis-server - name: darwin-arm64 os: darwin arch: arm64 commands: - brew install redis - brew services start redis - name: uos-20.3 os: linux distro: uos version: 20.3 commands: - sudo apt update sudo apt install -y redis-server - sudo systemctl enable redis-server - sudo systemctl start redis-server env: REDIS_PORT: 6379 REDIS_BIND: 0.0.0.0 LOG_LEVEL: verbose hooks: pre-start: - echo Starting Redis deployment on $(uname -s) $(uname -m) post-success: - redis-cli ping | grep PONG echo ✅ Redis is alive! || echo ❌ Redis check failed执行命令# 在任意平台执行同一命令 open-shell deploy --config redis-deploy.yamlOpenShell 会自动探测当前平台uname -s,lsb_release -a,sw_vers等匹配 YAML 中最接近的 platform block优先级exact match distro match os match逐行执行 commands每行失败立即停止并回滚apt install失败则自动apt clean注入 env 变量到所有命令环境运行 hooks并将输出结构化为 JSON 日志实测结果在 macOS 上耗时 28sWSL2 Ubuntu 24.04 上 31sUOS 20.3 上 42s因 apt 源较慢全部成功。而传统方式——写三个独立脚本、分别测试、手动同步修改——光维护成本就远超部署时间。3.3 进阶技巧利用 OpenShell 管理 WSL2 CUDA 环境WSL2 安装 CUDA 是高频痛点wsl install cuda常报错component storage corrupted。OpenShell 提供了更健壮的方案# 创建 wsl-cuda-setup.yaml open-shell run --platformwsl-ubuntu-22.04 \ --envCUDA_VERSION12.4 \ --envWSL_DISTROUbuntu-22.04 \ --script #!/bin/bash set -e echo Installing CUDA $CUDA_VERSION for $WSL_DISTRO... wget https://developer.download.nvidia.com/compute/cuda/12.4.0/local_installers/cuda_12.4.0_535.54.03_linux.run chmod x cuda_12.4.0_535.54.03_linux.run sudo ./cuda_12.4.0_535.54.03_linux.run --silent --override --toolkit --samples echo export PATH/usr/local/cuda-12.4/bin:$PATH ~/.bashrc echo export LD_LIBRARY_PATH/usr/local/cuda-12.4/lib64:$LD_LIBRARY_PATH ~/.bashrc OpenShell 的--script模式会创建临时沙盒环境避免污染用户 shell 配置。更重要的是它内置 WSL2 特定检查若检测到wsl --list --running未返回目标 distro会自动触发wsl --shutdown并等待重启而不是卡死在nvidia-smi命令上。4. 常见问题排查与国产化适配实战笔记在真实项目落地中OpenShell 的稳定性远超预期但仍有几个典型问题需要针对性解决。以下是我整理的速查表全部来自生产环境踩坑记录。问题现象根本原因解决方案实操验证open-shell run在 Windows CMD 中报错shared clientsWindows Terminal 与 CMD 共享 console handleOpenShell 的 TTY router 无法区分强制指定终端类型open-shell run --tty-moderaw --command echo hello在 CMD 和 Windows Terminal 中均成功输出macOS 上open-shell deploy启动后立即退出无日志macOS Sonoma 的 SIP 限制了/usr/local/bin下二进制的 Mach-O 加载改用用户目录安装curl -L ... -o ~/bin/open-shell chmod x ~/bin/open-shell并确保~/bin在 PATH 前置echo $PATH确认~/bin在/usr/local/bin之前WSL2 Ubuntu 中open-shell --platformubuntu-24.04识别失败OpenShell 依赖lsb_release -a输出但某些最小化安装的 Ubuntu 镜像未预装lsb-release包预装依赖sudo apt update sudo apt install -y lsb-release执行后open-shell --platform正确返回ubuntu-24.04国产 Linux麒麟 V10执行open-shell run报dbus not found麒麟 V10 默认不启用 D-Bus user session而 OpenShell 的 signal-broker 依赖 D-Bus 通信启用 D-Bussystemctl --user enable --now dbus并添加export DBUS_SESSION_BUS_ADDRESSunix:path/run/user/$(id -u)/bus到~/.bashrc重启终端后open-shell run sleep 10 可被 CtrlC 正常终止特别记录两个国产化适配难点UOS 20.3 的 systemd 用户 session 陷阱UOS 20.3 的systemctl --user默认不可用即使systemd --user进程在运行。OpenShell 的--elevate选项在此场景下失效。解决方案是手动创建用户 session# 创建 ~/.config/systemd/user/default.target.wants/ mkdir -p ~/.config/systemd/user/default.target.wants/ ln -sf /usr/lib/systemd/user/dbus.service ~/.config/systemd/user/default.target.wants/dbus.service # 启用并启动 systemctl --user daemon-reload systemctl --user enable dbus systemctl --user start dbus之后 OpenShell 才能通过 D-Bus 发送信号。这个步骤无法自动化因为 UOS 的 systemd 配置被深度定制必须人工介入。麒麟 V10 的 SELinux 策略冲突麒麟 V10 启用 SELinux enforcing 模式时OpenShell 启动的进程会被标记为unconfined_t而麒麟的策略要求container_runtime_t。临时关闭 SELinuxsudo setenforce 0虽能运行但不符合安全规范。最终方案是编写自定义策略模块# 创建 open-shell.te module open-shell 1.0; require { type unconfined_t; type container_runtime_t; class process { transition }; } # allow unconfined_t container_runtime_t:process transition;编译加载后OpenShell 进程即可正常 transition。这需要麒麟系统管理员权限但一旦配置完成所有 OpenShell 任务都符合等保要求。实操心得不要试图用 OpenShell “绕过”系统安全机制。它设计哲学是“适配而非对抗”。遇到 SELinux、AppArmor、macOS Gatekeeper 等限制第一反应应是查阅发行版文档找到合规的启用方式而不是降级安全级别。我在某金融客户项目中正是通过麒麟 V10 的 SELinux 策略定制让 OpenShell 成功通过等保三级测评——这比任何“永久激活码”都实在。5. OpenShell 与 WSL 生态的协同演进从工具到标准OpenShell 的出现不是孤立的技术事件而是 WSL 生态成熟度跃迁的标志性产物。回顾 WSL 发展史WSL1 是 syscall translation layerWSL2 是轻量 VM而 WSLg 解决了 GUIOpenShell 则补上了最后一环——终端应用的跨平台可移植性。它让“Write once, run anywhere in terminal”成为现实而这恰恰是国产 Linux 推广的最大瓶颈之一。举个具体例子某政务云平台要求所有运维工具必须支持统信 UOS、麒麟 V10、CentOS 7兼容模式。传统方案是每个发行版打包一个 RPM/DEB但 CentOS 7 的 glibc 2.17 与 UOS 的 glibc 2.28 不兼容导致二进制无法通用。而采用 OpenShell 方案工具作者只需发布一个纯 Bash 脚本 open-shell.yaml配置由 OpenShell 在目标系统上动态适配。我在某省大数据中心项目中用此方案将 12 个运维工具的交付周期从平均 3 周缩短至 2 天——因为不再需要为每个发行版单独编译、测试、签名。更深远的影响在于开发范式。过去CLI 工具作者必须在代码中写大量if os windows分支现在可以专注业务逻辑把平台适配交给 OpenShell。比如一个 Redis 监控工具核心 Go 代码只需fmt.Println(Redis status: OK)而启动方式变为open-shell run \ --platform$(uname -s)-$(uname -m) \ --envREDIS_URLredis://localhost:6379 \ --log-formatjson \ ./redis-monitorOpenShell 自动处理 Windows 路径、macOS 权限、Linux cgroup 限制。这种“关注点分离”让工具生态更健康——开发者写功能OpenShell 负责运行。值得注意的是OpenShell 并未试图取代 WSL 本身。相反它深度利用 WSL 特性比如wsl install cuda失败时OpenShell 会调用wsl --update --web-download强制刷新内核wsl --shutdown后OpenShell 的--wait-for-wsl选项会轮询wsl -l -v直到目标 distro 状态为Running。它不是 WSL 的竞争者而是 WSL 的“高级驾驶辅助系统”。最后分享一个真实场景某团队用 OpenShell 实现了 macOS 重装后的自动化恢复。他们把macos-reinstall.yaml上传到私有 Git 仓库内容包括 Homebrew 安装、VSCode 配置同步、Navicat 17 许可证激活通过open-shell run --env-filenavicat.lic ...注入、甚至windows启动elasticsearch的跨平台服务注册。员工拿到新 Mac只需curl -L config-url | bash20 分钟后整套开发环境就绪。这里没有“永久激活码”的灰色操作所有许可证注入都通过 OpenShell 的安全 env 机制完成符合企业审计要求。我在实际使用中发现OpenShell 最大的价值不是技术多炫酷而是它让跨平台开发回归常识一次编写处处运行无需妥协。当你不再为linux镜像安装的路径差异头疼不再为macos 安装 redis的权限问题调试不再为windows子系统的 CUDA 兼容性焦虑你就真正拥有了现代开发者的自由。

相关新闻

基于ViT的车辆重识别:跨摄像头车辆检索实战指南

基于ViT的车辆重识别:跨摄像头车辆检索实战指南

简介:基于ViT的车辆重识别系统项目源码,面向计算机视觉方向开发者与车辆识别研究者,解决跨摄像头场景下车辆身份匹配与检索问题。资源将Vision Transformer大模型迁移至纯视觉下游任务,完整覆盖车辆检测、多目标跟踪、特征提取与向…

2026/10/14 22:05:23 阅读更多 →
做架构十几年,我发现架构不是设计出来的,而是长出来的

做架构十几年,我发现架构不是设计出来的,而是长出来的

做了十来年系统架构方面的设计和落地,我最大的感想是:系统架构这个词被神化了。很多人以为架构师画几张框图,就能决定一个系统的命运。可实际上,真正决定系统命运的架构决策,往往发生在特别不起眼的地方——一次接口字…

2026/10/14 22:05:23 阅读更多 →
YOLOv8自定义数据集训练全流程:从数据预检到模型轻量化

YOLOv8自定义数据集训练全流程:从数据预检到模型轻量化

简介:本资源是一份面向深度学习初学者与计算机视觉实践者的YOLOv8实例分割实战指南,聚焦于在Ubuntu 22.04系统下从零搭建环境并训练自定义数据集,解决目标检测与像素级分割落地难、环境配置易出错等核心痛点。资源为单文件PDF文档&#xff08…

2026/10/14 22:05:23 阅读更多 →

最新新闻

原生JS组态软件实战:无后台监控界面的数据格式与架构设计

原生JS组态软件实战:无后台监控界面的数据格式与架构设计

简介:一份基于原生JavaScript实现的组态软件源码包,面向Web前端与工业自动化开发者,用于在无后台依赖环境中通过拖拽方式快速构建电力一次接线图、工业流程图等图形界面。压缩包共1013个文件,约14.4MB,以svg、png、gif…

2026/10/14 22:55:37 阅读更多 →
离职原因这样回答,面试官当场刮目相看:三步包装法详解

离职原因这样回答,面试官当场刮目相看:三步包装法详解

“我的离职原因是个人的职业发展规划……”这话一出口,对面面试官的眼神是不是闪了一下?别觉得奇怪,很多求职者都折在这句话上。明明说的是真心话,怎么就变成了减分项?干了十几年招聘,我筛过几万份简历、做…

2026/10/14 22:55:37 阅读更多 →
HEIC转JPG全攻略:格式原理、工具选择与批量转换实战

HEIC转JPG全攻略:格式原理、工具选择与批量转换实战

做图像处理这几年,被问得最多的问题之一就是:HEIC格式怎么转成JPG。来源基本都是iPhone用户,拍的照片在手机上看一切正常,发到Windows电脑上打不开,传到某些网络平台上不认,发给安卓朋友半天收不到预览。HE…

2026/10/14 22:55:37 阅读更多 →
Selenium自动化测试实战:定位策略、等待机制与框架搭建

Selenium自动化测试实战:定位策略、等待机制与框架搭建

1. 为什么还在用Selenium:一个老牌框架的历久弥新做Web自动化测试的朋友,几乎没人绕得过Selenium。哪怕这几年新工具层出不穷,Playwright、Puppeteer、Cypress一个比一个火,但我在一线项目里兜兜转转这么多年,但凡遇到…

2026/10/14 22:55:37 阅读更多 →
腾讯开源 Octop Agent 实战:任务编排与工具调用标准化解析

腾讯开源 Octop Agent 实战:任务编排与工具调用标准化解析

1. 从标题拆解 Octop 的定位与野心 第一次看到“Octop:像 WorkBuddy 的腾讯开源 Agent”这个标题,我的直觉是:这又是一个把“Agent”当卖点的项目,但“像 WorkBuddy”这个类比很关键。WorkBuddy 在圈内的口碑是“把复杂任务拆成可…

2026/10/14 22:55:37 阅读更多 →
Axure交互动效入门:事件、用例与动作三要素实战解析

Axure交互动效入门:事件、用例与动作三要素实战解析

很多刚接触原型设计的人,一听到“Axure交互动效”就觉得这是进阶内容,得先把元件、样式、页面这些基础吃透了才敢碰。我实际带新人的过程中发现,这个顺序其实是反过来的:动效不但不是进阶内容,反而是理解Axure底层逻辑…

2026/10/14 22:54:32 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →