OpenShell:开源AI命令行助手,自然语言变可执行命令
我几年前就开始折腾终端工具链从 zsh 到 fish从 oh-my-zsh 到各种 fancy prompt折腾到最后发现一个尴尬的现实无论怎么美化、补全、加插件终端最核心的效率瓶颈一直没解决——人类的自然语言和机器的命令行之间始终隔着一层翻译。你要查磁盘用量得记住df -h要递归查找文件内容得拼出grep -rn要是想压缩日志再排除掉某些目录一长串管道符和参数能让你查半天 man page。OpenShell 就是冲着这个痛点来的。这个开源项目把终端、AI 命令解析、插件系统和安全审批机制揉在了一起让你可以像聊天一样向终端描述意图由它帮你生成、解释、优化和执行命令。并不是说它要取代 bash 或 zsh而是给 CLI 加了一个语义层。这篇分享我会从项目设计思路、核心架构、部署实操到踩坑记录把我实际用下来的经验完整走一遍。适合被命令行折磨过、又不想彻底放弃终端效率的人也适合想给自己的工具链加一层智能化的开发者。1. 项目概述OpenShell 到底在解决什么问题1.1 一个被低估的刚需命令行为什么还需要再发明一次先说个真实的场景。我曾帮一个朋友排查服务器问题他在生产环境的目录下想统计每个子文件夹占用但又不包括挂载点和日志目录。他自己拼了几分钟命令还是不对。我过去敲了一行du -sh --exclude*.log */秒出结果。他跟我说你这行命令我天天遇到但就是记不住。这个场景特别典型也正好说明 CLI 的学习曲线问题不在能力而在记忆负担。du的参数有没有--excludefind的-exec怎么传参awk的语法为什么那么反直觉这些是鸡生蛋的问题你用得越多越熟练但越不常用就越容易忘忘了再去查又觉得浪费时间。OpenShell 的思路很实际不推翻现有命令而是在你和你熟悉的命令之间插入一个 AI 语义层。你输入看看磁盘还剩多少空间它给你df -h你确认之后才执行。就像给命令加了一个同声传译翻译错了你可以纠正纠正完它还能记住你的偏好。1.2 核心定位不是又一个 shell而是壳上的助手很多第一次接触这个项目的人会误以为 OpenShell 是一个新 shell要替代 bash。实际上项目名字拆开看就明白了Open Shell重点在Open开放和开源而不是再造一个命令解释器。从架构上看OpenShell 跑在你的默认 shell 之上更像一个智能命令行助手。它拦截你的输入判断是常规命令还是自然语言描述。如果是后者就通过本地或远程模型把描述转成命令然后以候选命令的形式展示由你决定是执行、修改还是放弃。这样一来几个很直接的痛点就被解决了。第一你不用离开已经习惯的 shellzsh 的补全、fish 的语法高亮都保留。第二AI 只负责翻译不负责执行所有命令都要经过你确认天然规避了AI 乱跑命令的风险。第三一切皆可扩展后面我会专门讲插件系统OpenShell 本身只是个框架能力全在扩展里。1.3 目标用户谁用这东西收益最大我接触这个项目后把适合 OpenShell 的人画了个像大概是这三类第一类是写脚本但记不住参数的开发者。你可能每周都用find、xargs、jq但每次都要翻手册。OpenShell 把这部分记忆成本外包给模型你只需要描述把所有 JSON 里 status 为 error 的 id 提取出来。第二类是运维和系统管理员。这类人群的命令操作频率高而且经常要跑到不熟悉的服务器上看问题。用 OpenShell 把繁琐的排查命令自动拼好等于随行带了一个熟悉 Linux 的同事。第三类是刚转入后端领域的新手。学习阶段最痛苦的往往不是概念而是那些反直觉的参数拼写。OpenShell 生成的命令带解释等于边干活边学命令学习效率比死记硬背高很多。不适合的人也有比如你本来就用得很熟练敲命令比组织自然语言还快那这层翻译反而是多余动作。另外如果你完全不想让任何 AI 接触自己的终端输入输出那就别碰这类工具后面我会讲它的数据流向。2. 核心架构与技术拆解2.1 三层架构CLI 层、服务层、插件层OpenShell 的整体架构并不复杂但层次分得很清楚。大概可以分为三层第一层是CLI 交互层负责与用户交互。它读取输入行做高亮渲染管理交互式确认流程。这一层也可以用得上终端原生的特性比如fzf的模糊搜索、zsh的快捷键绑定都是可以对接的。第二层是服务核心层也是整个项目的大脑。它负责解析输入、调度模型、评估置信度、生成候选命令、执行审批流。这些逻辑与具体终端实现解耦所以你换了前端界面比如从命令行换到 Web 面板核心服务不需要动。第三层是插件系统。OpenShell 的所有外部能力都通过插件暴露命令模板、自定义工具函数、输出分析脚本甚至是新的模型接入方式。插件系统保证了 OpenShell 不是一锤子买卖你想让它学会什么新能力写一个插件挂上去就行。这套分层带来的最大好处是可替换性。模型可以换UI 可以换插件可以换但核心的意图转命令链路是稳定的。这也符合开源项目一贯的做法——提供一个精干的核心把扩展留给生态。2.2 AI 命令解析引擎从自然语言到可执行命令的链路命令解析是 OpenShell 最核心的部分。它的处理链路大致是意图识别判断你输入的是普通命令、OpenShell 原生指令还是自然语言描述。上下文收集把当前目录、操作系统类型、常用 shell 环境变量、历史命令概要等作为上下文附加给模型。命令生成模型根据上下文生成候选命令同时附带一句话解释。置信度评级OpenShell 会根据命令的合法性、参数完整性、潜在危险程度给命令打个评分。人工确认高置信度的命令可以直接展示低置信度或高危险性的操作则强制要求确认。这里面比较值得说的是上下文收集这一步。同一个自然语言描述在 Linux 服务器和 macOS 上可能对应不同写法在项目目录里和在/etc下意图也可能截然不同。OpenShell 会把当前工作目录、用户身份、平台类型一起发给模型这样生成的命令才不会水土不服。生成命令这一步我在实测中看到它默认会要求模型输出结构化 JSON而不是纯文本。例如{ command: find . -name \*.log\ -mtime 7 -delete, explanation: 删除当前目录下 7 天前的 .log 文件, risk: moderate, suggested_review: true }结构化输出的好处是客户端可以可靠地解析命令和解释而不是从一段自然语言里硬抠命令字串。这比我见过的一些直接把 AI 输出当命令执行的工具要严谨得多。模型这一层OpenShell 的默认设计是优先本地模型可选远程 API。本地模型跑起来隐私性最好但需要你有足够的机器配置远程 API 效果更稳但敏感信息会出本机。官方支持的模型接口抽象得很薄意味着你完全可以自己接任意兼容 OpenAI 协议的接口。2.3 安全沙箱与执行审批机制让 AI 生成命令不难难的是保证这些命令不会把服务器搞挂。OpenShell 在这方面做了几层防护我认为这是它区别于那些玩具级 AI 终端工具的核心亮点。首先是默认不执行。所有生成的命令默认停留在候选状态由用户按回车确认后才真正送入 shell。这个机制没什么技术难度但它是安全的第一道闸门——AI 只是助手不是司机。其次是危险命令识别。OpenShell 维护了一个敏感命令特征库像rm -rf、mkfs、dd、 /dev/sda这类命令会打上高危标签即便你输入的自然语言描述本身很普通只要生成的命令触碰这些模式它会强制二次确认并高亮红色警告。再一个就是命令白名单机制。你可以在配置里指定哪些命令可以直接执行。我自己的策略是把ls、cat、df、ps、grep这些只读命令加入白名单AI 生成这类命令时直接运行不需要每次确认。而涉及删除、覆盖、权限变更的操作一律手动批。最后是会话隔离。OpenShell 不会把每条命令的执行结果无限制地塞给模型。它默认只传递命令文本、输出摘要和错误信息的关键行避免敏感数据无意中被模型读取。这个设计我喜欢很多同类产品忽略了输出数据同样敏感这个事实。2.4 插件系统与可扩展性设计插件系统的设计决定了 OpenShell 的上限。从项目架构来看插件接口大致分为三类命令插件注册自定义指令比如/health触发的是一段系统健康检查脚本。模型插件接入新的模型服务商或私有推理端点。分析插件对命令输出做后处理比如抓取错误日志并做摘要。我拿命令插件举个例子。假设你想让 OpenShell 学会一个查看服务端口占用的自定义指令传统做法是你得记住ss -tlnp | grep之类的组合。有了插件系统你可以注册一个/port 8080指令触发后执行预设的检查逻辑并格式化输出。这等于把高频操作沉淀成肌肉记忆但又不用背命令。插件开发本身不复杂我后面会在实操部分用代码示例展开讲。核心思想是OpenShell 提供上下文对象插件读上下文、返回结果主程序负责渲染。职责单一接口清晰。3. 安装部署与快速上手3.1 安装方式与环境准备OpenShell 的安装方式比较灵活官方提供了几种路线。我自己的主力机是 macOS服务器是 Ubuntu所以两条路都走过。最方便的是通过包管理器安装。如果你有 Python 环境直接pip install open-shell-cli如果你主力是 Node 生态也可以走 npmnpm install -g openshell/cli另外官方还提供了一个安装脚本适合 Linux 服务器这种不想装运行时的地方curl -sSL https://get.openshell.dev | bash这个脚本会把可执行文件装到/usr/local/bin并自动检测你的默认 shell 写入初始化配置。需要注意一点安装脚本走 curl 管道执行有风险我在生产服务器上会先下载脚本看一眼再做处理。装完之后验证是否成功openshell --version3.2 基础配置模型接入是第一步OpenShell 默认不会绑定任何模型服务商第一次运行会引导你配置模型接入。如果你有本地推理环境比如 Ollama 或其他兼容 OpenAI 协议的本地服务配置非常简单# ~/.openshell/config.yaml model: provider: openai-compatible base_url: http://localhost:11434/v1 api_key: ollama model: qwen2.5:7b如果走远程 API把base_url换成服务商地址填上 key 即可。我建议第一次上手的读者直接用本地模型配置简单不说还能避免命令和输出内容出网。接下来是安全策略配置。下面是我个人推荐的一版初始配置适合大多数日常使用security: confirm_before_execute: true allowlist: - ls - cat - head - tail - grep - df - ps - free - uptimeconfirm_before_execute设成true所有 AI 生成的命令默认要确认。allowlist里的命令是只读类我允许它们自动放行不影响效率。3.3 日常使用一种新的交互节奏配置完成进入交互界面后输入方式跟普通 shell 一样只不过多了一种自然语言模式。你可以把 OpenShell 当成一个翻译器你 看看磁盘还剩多少空间 OS: df -h 显示文件系统磁盘空间用量 [Enter 执行 | Tab 修改 | Esc 取消]回车执行正常看到输出。如果想修改按 Tab 进入编辑模式把命令改成你想要的样子再回车。再比如你 找到当前目录下最近 3 天改过的 py 文件排除 venv OS: find . -name *.py -mtime -3 -not -path ./venv/* 查找当前目录下 3 天内修改的 Python 文件排除 venv 目录这种交互节奏最大的变化是你不再需要一次把命令想完整。先描述大概意图看它生成的命令再逐步修正。这个过程比坐在空 shell 前苦想参数要顺畅得多。OpenShell 也保留了原生命令前缀。比如你想跳过 AI 解析、直接用 bash 执行就以前缀!开头你 !tail -f app.log这个设计很贴心等于给了你一个随时退出的手动挡。3.4 与现有工具链的融合大家担心一个问题用了 OpenShell我原来的 zsh 主题、别名、脚本还好使吗从使用体验来看OpenShell 会在你的默认 shell 里挂一个 wrapper你原有的.zshrc、别名、函数、prompt 主题都不受影响。因为它把外部命令的解析结果送进当前 shell 执行并没有另起一个隔离环境。不过有一个小坑是如果你的.zshrc里有类似于exec或者重定义bindkey的操作需要留意加载顺序——OpenShell 的初始化脚本会在你交互式 shell 启动后再接管输入理论上与你自定义配置共存但暴力改键位的脚本有概率把它挤掉。另外OpenShell 可以跟tmux很好地配合。它原生检测到自己是跑在 tmux 会话里时允许你通过快捷键把候选命令发送到另一个 pane这个功能对一边开会一边在服务器上调命令的场景很实用。4. 进阶插件开发与二次扩展4.1 自定义指令模板把高频操作沉淀成快捷指令用得越久你越会发现自己有些操作反复出现。比如说排查 Java 进程、看 Docker 容器状态、清理某个服务产生的临时文件。这些操作完全可以固化成指令模板不用每次麻烦 AI。模板定义在~/.openshell/templates.yaml里格式很简单templates: - name: jstack-id description: 查看指定 Java 进程的线程快照 params: - name: pid required: true description: Java 进程 ID command: jstack {{pid}} /tmp/jstack-{{pid}}.txt less /tmp/jstack-{{pid}}.txt配置完之后在会话里输入你 /jstack-id 12345OpenShell 会渲染出完整命令确认后执行。这个功能把背命令的压力进一步降到了零你只要记住自己起的短名字就行。4.2 插件开发实战写一个日志摘要插件模板适合固定动作插件则适合需要逻辑处理的操作。我拿一个日志摘要插件做示例感受一下接口风格。假设场景每次排查线上问题时都要从大日志文件里统计 ERROR 数量、提取出现最多的异常类型。传统做法是拼grep | awk | sort | uniq的长管道现在写成插件# ~/.openshell/plugins/logsum/logsum.py from openshell import plugin plugin.register(namelogsum, description分析日志文件中的错误摘要) def run(ctx, args): path args.get(path, ctx.cwd() /app.log) lines open(path, r, errorsignore).readlines() error_lines [l for l in lines if ERROR in l] total len(error_lines) from collections import Counter kinds Counter() for line in error_lines: parts line.split() if len(parts) 3: kinds[parts[2]] 1 return { total_errors: total, top_exceptions: kinds.most_common(5) }这个插件通过plugin.register暴露为/logsum指令ctx是上下文对象能拿到当前目录、shell 类型等信息。返回值是结构化数据OpenShell 会用表格渲染。整个开发体验比给现有 shell 写补全脚本舒服得多——补全脚本要应付各种 sh 方言的坑Python 写插件则很清爽。4.3 日志审计与历史回放OpenShell 默认记录所有交互会话包括你输入的自然语言描述、生成的命令、最终是否执行、关键输出摘要。这个设计值得单独说一下因为它让终端操作从不可追溯变成了可回放。我遇到过一次事故同事在生产环境误删了一批文件事后想知道当时发生了什么。因为 OpenShell 的日志里记录了命令的原始意图和实际执行命令一看日志就定位到了是 AI 生成命令时把目录参数解析错了加上确认不仔细导致事故。有这份审计日志复盘效率高很多。日志默认路径是~/.openshell/logs/按日期滚动。你也可以在配置里把日志输出目录改到共享位置这样小团队可以共用一份操作记录库。5. 踩坑记录与问题速查表5.1 模型接入的隐藏坑先说一个最常见的坑本地模型对命令行理解的差异远比想象中大。我最初用 7B 模型的时候它经常把find . -name *.py写成find . -name *.py不带引号在含空格的文件名场景下直接炸。这个问题的根源是模型没有接受过足够的命令行数据训练它不懂 shell 的引用规则。我的经验解法是把 shell 类型和引用规则明确写进系统提示词。OpenShell 的配置里支持自定义指令前缀我会追加一段instruction: - Always quote glob patterns: find . -name \*.py\ - Never use rm -rf unless the users description explicitly says delete recursively.实测加了这类约束后命令准确率提升不少。另外模型参数量尽量不要低于 7B3B 级别的模型生成命令的可靠性堪忧。5.2 路径冲突与执行环境陷阱OpenShell 默认把你的命令交给$SHELL执行但有个问题在 tmux 里开多个会话时每个 pane 的shell环境变量可能指向不同 shellzsh、bash、fish 混用这会导致同一句命令在不同 pane 里表现不一致。我遇到一次状况日志插件里用了!!执行历史命令的写法这个语法在 bash 里没问题换到 zsh 语境直接被当成无效字符处理。后来我把插件和模板统一强制走bash --noprofile -c去执行避免不同 shell 方言的干扰。OpenShell 的executor配置里可以指定固定解释器executor: shell: /bin/bash args: [--noprofile, -c]5.3 危险命令误生成时的应对策略即便有危险命令库我也碰到过一次模型把清理 tmp 目录理解成直接rm -rf /tmp/*好在 OpenShell 的二次确认机制拦住了。事后我在配置里加了一条规则任何/tmp/目录的清理建议都先展示find /tmp -type f -mtime 1列表而不是直接删除。这个用模板也能实现templates: - name: cleartmp description: 列出并清理 tmp 目录中 1 天前的文件 command: find /tmp -type f -mtime 1 -print核心原则就一句话生产环境的删除操作永远先列出清单再动手。5.4 性能优化降低命令返回延迟本地模型做推理时延迟是个绕不开的问题。7B 模型在 M 系列芯片上推理一条命令大概需要 3 到 5 秒在纯 CPU 的服务器上可能要翻倍。这个延迟对完整体验是致命的因为人会下意识觉得不如我直接敲命令。我的优化方案有几个层次。第一给模型开KV cache和量化用 Q4 或 Q5 量化可以把显存占用降一半速度也能提。第二把 OpenShell 的温度参数调低到 0.1 左右命令生成任务不需要太多创造性低温度意味着更稳定的输出和更快的收敛。第三设置快捷命令跳过 AI的规则遇到白名单命令直接放行减少无效模型调用。真正用下来OpenShell 的定位慢慢从花哨玩具变成了备用大脑。它不是每一次都要你用而是在你犹豫的时候给你一个可靠的参考方向。我个人的使用习惯是排查问题用自然语言描述让它给排查命令批量操作、自动化脚本则直接绕开它用原生 shell 干活。最后分享一个我一直在用的小技巧把一周内最高频执行的 AI 生成命令挑出十条整理成模板存到templates.yaml。这样一来用了一段时间后你会发现自己对智能解析的依赖越来越低因为高频操作已经从临时翻译沉淀成了肌肉记忆——这可能是这个工具最反直觉的价值它最终教会你的不是依赖 AI而是更懂命令行本身。

相关新闻

Spring AI ReactAgent阿里云生产落地实战

Spring AI ReactAgent阿里云生产落地实战

1. 这不是“第九掌”,而是Spring AI在阿里云生态落地的临界点“降SpringAI阿里第9掌-或跃在渊-ReactAgent”——这个标题乍看像武侠小说里的秘籍名,但如果你最近在Java后端、AIGC工程化或企业级AI应用开发一线摸爬滚打,大概率已经在这几个关键…

2026/10/7 10:04:45 阅读更多 →
【八个月网安课程】第九周·周三:目录扫描工具——Dirsearch、dirb、御剑参数配置与字典使用

【八个月网安课程】第九周·周三:目录扫描工具——Dirsearch、dirb、御剑参数配置与字典使用

以下是第九周周三学习内容的详细展开。今天你将掌握渗透测试信息收集中最基础也最关键的一环——目录扫描。通过使用 Dirsearch、dirb、御剑等工具,你能快速发现目标站点上隐藏的后台、备份文件、配置文件等敏感路径,为后续漏洞利用铺路。第九周周三&…

2026/10/7 10:03:45 阅读更多 →
在 Web 自动化测试中,页面元素的加载往往具有异步性和不确定性

在 Web 自动化测试中,页面元素的加载往往具有异步性和不确定性

在 Web 自动化测试中,页面元素的加载往往具有异步性和不确定性。传统的 time.sleep() 强制等待方式不仅效率低下,还会导致脚本脆弱、难以维护。Selenium 提供的 expected_conditions(简称 EC)模块,配合 WebDriverWait …

2026/10/7 10:03:45 阅读更多 →

最新新闻

Spring Boot+Vue民宿预订系统:从表设计到并发防超卖实战

Spring Boot+Vue民宿预订系统:从表设计到并发防超卖实战

前阵子帮一位做民宿的朋友做了一套客房预订管理系统,技术栈选了 Spring Boot Vue。他原本的运营方式是微信接单、Excel 记房态,旺季一到预订信息和真实房态经常对不上,最离谱的一次是同一间大床房同一天被订出去三次,客人到店才发…

2026/10/7 10:34:17 阅读更多 →
深度强化学习破解动态柔性作业车间调度难题

深度强化学习破解动态柔性作业车间调度难题

简介:面向智能制造与生产管理领域的研究者,这份资源针对多任务并行、设备负载波动、紧急插单等动态生产场景,提供基于深度强化学习的柔性作业车间调度完整实现方案。压缩包共181个文件,总大小约2.93MB,主要包括93个PyT…

2026/10/7 10:34:17 阅读更多 →
Flutter多视频同时播放与缓存优化:播放器池与生命周期管理

Flutter多视频同时播放与缓存优化:播放器池与生命周期管理

1. Flutter 里的“同时播放多个视频”到底难在哪 先说结论: Flutter 的 video_player、chewie 这些插件,默认设计就是“一个播放器实例对应一个视频源”,你如果同时在页面里放三个视频,大概率会看到黑屏、声音重叠、甚至直接 OOM…

2026/10/7 10:34:16 阅读更多 →
Linux高频命令实战:从环境检查到日志排障的运维手册

Linux高频命令实战:从环境检查到日志排障的运维手册

初接手一台不熟悉的服务器,心跳通常会加速半拍。环境变量对不对、服务有没有起来、日志在哪写、磁盘还剩多少,这些问题不摸清楚,后面每一步都像踩在棉花上。Linux的诱惑和门槛恰好都在同一个地方:一切皆文件、一切可脚本化&#x…

2026/10/7 10:34:15 阅读更多 →
TPOT实战指南:用遗传编程自动化机器学习管道与超参数搜索

TPOT实战指南:用遗传编程自动化机器学习管道与超参数搜索

如果你和我一样,每天跟表格数据打交道,肯定经历过这种循环:清洗、编码、试模型、调参、再试模型,小半天就没有了。所谓AutoML,就是把这个循环自动化,而TPOT是其中非常适合“从零上手”的一个库。它能自动搜…

2026/10/7 10:34:13 阅读更多 →
节点CPU占用高?一套通用的排查思路与实战方案

节点CPU占用高?一套通用的排查思路与实战方案

做运维和调试的这些年,“节点CPU占用”这个问题几乎是天天见的。不管是几台物理服务器组成的集群,还是一台边缘网关盒子,或者Windows服务器上那个诡异的System进程,只要CPU飙上去,业务就开始卡,告警就开始响…

2026/10/7 10:33:13 阅读更多 →

日新闻

ROS2机械臂仿真与运动控制:从URDF建模到Gazebo实战全解析

ROS2机械臂仿真与运动控制:从URDF建模到Gazebo实战全解析

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

2026/10/7 1:01:58 阅读更多 →
用浏览器直接改ESP32的WiFi密码:NVS键值配置工具设计与实现

用浏览器直接改ESP32的WiFi密码:NVS键值配置工具设计与实现

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

2026/10/7 1:02:00 阅读更多 →
芯片封装缺陷检测:扫描声学显微镜(SAT)原理与实操指南

芯片封装缺陷检测:扫描声学显微镜(SAT)原理与实操指南

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

2026/10/7 1:02:00 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

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

2026/10/6 7:15:40 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

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

2026/10/6 5:29:09 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

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

2026/10/7 9:29:10 阅读更多 →

月新闻

我发现了一个新思路:用 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/6 8:21:32 阅读更多 →
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/6 4:21:51 阅读更多 →
黑夜航拍船只数据集训练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/6 1:18:13 阅读更多 →