Jupyter快捷键自定义全指南:从Notebook到JupyterLab的高效配置
1. 搞懂Jupyter的快捷键底子两种模式才是核心1.1 为什么快捷键要分成“编辑模式”和“命令模式”用Jupyter的人一听到快捷键第一反应往往是“背不下来”。实际上Jupyter的快捷键体系并不像Word那样追求“全盘覆盖”它围绕一个非常核心的概念来构建单元格Cell。整个Notebook本质是一长串单元格的列表每个单元格要么是代码要么是Markdown。快捷键输入之前系统必须先知道焦点在哪个区域、要处理的是文本内容还是单元格结构本身。这就是“两种模式”存在的根本原因。按下Enter光标进入当前单元格这叫作编辑模式Edit Mode此时按键应当被当成文本输入比如按下A就在代码里打出一个字母A。按下Esc焦点退出单元格进入命令模式Command Mode此时按键被当成操作指令比如按下A表示“在当前单元格上方插入一个新单元格”按下B表示“在下方插入”。这套设计思路和Vim的Insert与Normal模式非常像本质上都是为了解决同一个矛盾键盘既要用来打字又要用来发指令必须靠模式切换来区分意图。理解这个设计后很多困扰自然就解开了。比如有人发现在单元格里按B没有任何反应以为是快捷键坏了其实只是模式不对。同样的按键在不同模式下含义完全不一样这是Jupyter快捷键的第一原则也是后续自定义快捷键之前必须先搞明白的前提。1.2 默认快捷键里最值得记住的几组很多人的一个误区是一上来就想自定义快捷键结果默认基础键都没用熟。我建议你先花两周把下面这些默认快捷键练到肌肉记忆再谈自定义效率提升远比配一堆花哨键位来得快。命令模式下最核心的操作A / B在当前单元格上方/下方插入新单元格这是Notebook里最高频的动作DD连续按两次D删除当前单元格删除后可以通过Z撤销M / Y把当前单元格切换为Markdown / 代码ShiftEnter运行当前单元格并选中下一个单元格这是日常写代码最常用的键CtrlEnter运行当前单元格但不移动光标AltEnter运行当前单元格并在下方插入一个新单元格C / X / V复制、剪切、粘贴单元格注意是在命令模式下不是编辑模式0 0连续按两次0重启内核Z撤销单元格删除编辑模式下值得记住的Tab代码补全写Python时几乎离不开ShiftTab查看函数文档或签名这个很多人不知道查API特别好用CtrlShift-横线减号拆分当前单元格把长代码块一分为二Esc退回命令模式我把这些快捷键整理成表方便对照记忆模式按键作用命令模式A / B上方/下方插入单元格命令模式DD删除当前单元格命令模式M / Y切换为Markdown / 代码命令模式ShiftEnter运行并选中下一个命令模式CtrlEnter运行当前单元格命令模式AltEnter运行并插入新单元格命令模式C / X / V复制/剪切/粘贴单元格编辑模式Tab代码补全编辑模式ShiftTab查看函数签名与文档编辑模式CtrlShift-拆分单元格编辑模式Esc回到命令模式这几组键练熟之后你的手基本可以不用离开键盘完成80%的笔记本操作。1.3 不同环境下的默认差异Notebook与JupyterLab不是一回事需要特别提醒经典Jupyter Notebook和JupyterLab的快捷键体系并不完全一样。经典Notebook6.x及以前使用的是老式快捷键系统通过custom.js来扩展JupyterLab 3.x之后则完全是另一套基于命令系统的快捷键框架配置方式和底层机制都不同。VSCode里通过插件使用Jupyter的话走的又是VSCode自己的快捷键规则。这意味着你在网上搜到一份快捷键配置教程时先看它针对的是哪个环境。直接照搬到另一个环境轻则无效重则报错。我在本文里会把手动区分开讲尽量避免踩混。2. 在经典Jupyter Notebook里添加自定义快捷键2.1 不写代码的图形界面方式经典Notebook其实内置了一个可视化快捷键编辑面板位置在菜单栏Help → Edit Keyboard Shortcuts。点击后会弹出一个窗口里面列出了所有默认快捷键每一项都可以修改绑定。操作方式很直观先点击某个操作右侧的输入框然后直接按下你想绑定的组合键比如按下CtrlShiftJ系统会识别并写入这个键位点一下Assignment确认关闭弹窗后刷新页面生效。这个方式很适合初学不需要碰配置文件所见即所得。但它有一个很隐蔽的坑这份配置是存在浏览器本地存储localStorage里的不是保存在服务器端。换句话说你在Chrome里配置好的快捷键换到Firefox、换台电脑、或者开了隐身模式全部消失。对我这种长期在多个环境里切换的人来说它只能当作临时方案不能作为正式配置来用。另外还有个小细节菜单栏里的“Edit Keyboard Shortcuts”弹窗某些老版本Notebook里只能查看和修改已有绑定并不能添加“新的”操作项。如果你想让某个未暴露的操作触发快捷键比如“清空所有单元格输出”图形界面就无能为力了必须走下面的文件方式。2.2 一劳永逸的custom.js配置法要让配置真正持久、并且能写入任意操作标准做法是修改custom.js文件。这是Notebook启动时自动加载的JavaScript位于Jupyter配置目录下的custom子目录中。先找到配置文件目录。命令行中执行jupyter --paths输出结果里会列出config路径通常是Linux/macOS~/.jupyter/WindowsC:\Users\用户名\.jupyter\在这个目录下如果还没有custom子目录先手动创建mkdir -p ~/.jupyter/custom然后编辑或创建~/.jupyter/custom/custom.js。custom.js使用RequireJS风格来加载模块一个最基础的添加快捷键的写法如下define([ base/js/namespace, jquery ], function(Jupyter, $) { // 注册一个新的命令模式快捷键CtrlShiftX Jupyter.keyboard_manager.command_shortcuts.add_shortcut(Ctrl-Shift-X, { help: 这是我自定义的快捷键示例, help_index: zz, handler: function(event) { console.log(快捷键被触发); return false; // 阻止浏览器默认行为 } }); });我来逐段解释这段代码做了什么。开头的define是RequireJS的模块定义语法第一行声明依赖base/js/namespace和jquery前者是Jupyter对象本身后者是处理DOM的工具库。接下来调用Jupyter.keyboard_manager.command_shortcuts.add_shortcut来注册一个命令模式下的快捷键。add_shortcut的第一个参数是组合键名称格式是Ctrl-Shift-X这种用连字符连接的写法。第二个参数是配置对象其中handler是真正执行动作的函数。这里务必注意handler里需要对通过Jupyter对象触发的操作做包装不能直接在全局作用域里写死DOM操作否则无法保证与Notebook内部状态的同步。return false这行非常关键。它表示事件已经被处理丢弃默认行为。如果漏写浏览器可能继续往下执行某些组合键会被浏览器或页面本身消费掉造成快捷键失灵或产生奇怪的副作用。如果想添加编辑模式下的快捷键把command_shortcuts换成edit_shortcuts即可Jupyter.keyboard_manager.edit_shortcuts.add_shortcut(Ctrl-Shift-Y, { handler: function(event) { // 在编辑模式下执行自定义动作 return false; } });编辑模式下的快捷键通常需要带修饰键Ctrl、Alt、Shift因为编辑模式下字母键会被当作文本内容。2.3 踩过的坑为什么我的custom.js没生效custom.js不生效是高频问题我总结几个真实经历过的原因第一文件名或路径不对。有些教程说应该放在~/.jupyter/custom/有些说~/.jupyter/下还有版本之间路径有差异。稳妥做法是执行jupyter --paths看输出的config路径然后custom目录务必建在第一个config路径下面。文件名必须是custom.js少写后缀或改成别的名字都不会加载。第二浏览器缓存。这个是最隐蔽的坑。custom.js是页面加载时读取的但浏览器对js文件有缓存。你改了文件内容刷新页面时可能加载的还是旧版本。解决方法是强制刷新CtrlShiftR或者CmdShiftR或者直接在开发者工具里Disable cache后再刷新。第三整个文件因为一个小错误崩溃。custom.js是单个文件执行的如果顶部有语法错误整个文件都不会执行所有自定义快捷键都会失效。排查方法很简单打开浏览器开发者工具F12切到Console面板看有没有红色报错。如果有报错通常能直接定位到custom.js第几行。第四大小写和格式问题。快捷键名称里的分隔符必须是英文连字符不能用下划线写法和官方API要求完全一致。第五混用了编辑器模式配置。比如你想让CtrlH在单元格内部也能生效却把它加到了command_shortcuts里那在编辑模式下按了自然没反应。要区分清楚当前快捷键应该在哪种模式下生效。3. JupyterLab版本的自定义快捷键更现代的框架3.1 界面操作两三分钟搞定一个自定义快捷键JupyterLab对快捷键的支持比经典Notebook成熟得多。最友好的入口是菜单栏Settings → Keyboard Shortcuts。打开后会看到一个完整的快捷键管理界面顶部有搜索框能按操作名称搜也能按绑定的按键搜。添加步骤很直观。在搜索框里输入你想绑定的操作比如输入“clear”会过滤出所有和清除相关的命令。找到你想要的命令后点击它右侧的“”号会出现一个输入框。这时直接按下你想绑定的组合键比如按下CtrlAltKJupyterLab会弹出一个小窗口提示这个组合键当前是否已被占用以及是否绑定到其他命令。确认无误后回车快捷键就生效了它会被自动写入用户设置。如果按键已经被其他命令占用界面会标红提示冲突这时你有两个选择取消绑定或者强行覆盖。覆盖意味着原来的绑定被替代不再生效。做覆盖前建议想清楚别把某个核心命令的快捷键抢走了却不自知。3.2 直接改settings.json可复制、可迁移的正式做法图形界面的操作最终也会落到配置文件里但更适合正式使用的是直接编辑用户设置JSON。所有通过界面配置的快捷键最终都保存在用户设置文件中路径一般是Linux/macOS~/.jupyter/lab/user-settings/WindowsC:\Users\用户名\.jupyter\lab\user-settings\你可以在JupyterLab里打开Settings → Settings Editor左侧选择Keyboard Shortcuts然后点击右侧的高亮文字进入JSON编辑器模式在这里写入自己的快捷键配置。一个完整的自定义快捷键JSON文件长这样{ shortcuts: [ { command: notebook:run-cell-and-select-next, keys: [Accel Shift Enter], selector: [data-jp-kernel-user] }, { command: notebook:clear-cell-output, keys: [Accel Shift K], selector: [data-jp-kernel-user] } ] }这段配置的含义是第一项为运行单元格命令添加Accel Shift Enter组合键第二项为清除当前单元格输出添加Accel Shift K组合键。Accel是一个特殊的占位符它会在不同操作系统上自动替换成对应的修饰键。在Windows和Linux上Accel代表Ctrl键在macOS上它代表Cmd键。用Accel写配置的好处是同一份JSON在Mac和Windows上都能正常工作不会因为系统差异而失效。selector字段决定快捷键的作用范围。JupyterLab是一个多组件应用同一时间可能打开着笔记本、文本编辑器、文件浏览器等多种面板快捷键不能无条件全局生效。[data-jp-kernel-user]这个选择器表示只在笔记本有内核交互的单元格区域生效如果绑定了文件编辑命令selector要改成对应编辑器的选择器。这个文件是支持版本管理的可以提交到Git里随身携带。换了一台新机器克隆配置后放到同样的目录就能无缝还原这一点比经典Notebook的localStorage方案强太多。3.3 怎么找到想要的命令ID自定义快捷键前最大的障碍是我不知道这个操作的命令ID叫什么。最简单的方法在Settings → Keyboard Shortcuts界面用搜索框输入能想到的功能词比如“run”、“clear”、“insert”结果列表里每一行最右侧就有命令ID比如notebook:run-cell-and-select-next。把它抄下来填进JSON的command字段。还有一个进阶方法在开发者工具Console里执行jupyterapp.commands.list()这个命令会列出当前环境中所有已注册的命令ID配合filter可以进行模糊搜索jupyterapp.commands.list().filter(c c.includes(clear))就会输出所有和clear相关的命令ID非常方便。常见命令ID我整理了一下功能命令ID运行单元格并选中下一个notebook:run-cell-and-select-next运行当前单元格notebook:run-cell运行所有单元格notebook:run-all-cells清除当前单元格输出notebook:clear-cell-output清除所有单元格输出notebook:clear-all-cell-outputs在上方插入单元格notebook:insert-cell-above在下方插入单元格notebook:insert-cell-below删除单元格notebook:delete-cell复制单元格notebook:duplicate-cell保存笔记本notebook:save-notebook切换区块折叠notebook:toggle-cell-collapsed切换代码/Markdownnotebook:change-cell-to-code等系列命令需要注意的是不同版本之间命令ID可能有细微变化。比如JupyterLab 3.x和4.x某些notebook命令的前缀从jupyter-notebook:变成notebook:升级时配置可能失效。遇到这种情况就用命令面板或者jupyterapp.commands.list()重新查一遍。4. 三个高频自定义快捷键实操案例4.1 案例一给Notebook添加“运行所有单元格并保存”场景是这样的一次数据清洗跑完我想立刻确认整个流程能不能完整跑通默认操作是点击Cell菜单里的Run All再手动CtrlS保存。次数多了就烦干脆配一个快捷键。先处理经典Notebook在custom.js中写入define([ base/js/namespace ], function(Jupyter) { Jupyter.keyboard_manager.command_shortcuts.add_shortcut(Ctrl-Shift-R, { help: 运行所有单元格并保存, help_index: zz, handler: function(event) { Jupyter.notebook.run_all(); Jupyter.actions.call(notebook:save-notebook); return false; } }); });这里有个容易忽略的细节Jupyter.notebook.run_all()在后台跑完后并不会自动保存文件需要再显式调用保存动作。顺序上先运行后保存配合return false保证浏览器不插队。再说JupyterLab版本。直接写settings.json里的配置{ shortcuts: [ { command: notebook:run-all-cells, keys: [Accel Shift R], selector: [data-jp-kernel-user] }, { command: notebook:save-notebook, keys: [Accel Shift S], selector: [data-jp-kernel-user] } ] }我习惯把运行所有和保存拆成两个快捷键因为有些场景只想运行、不想保存拆开更灵活。这里提醒一个点Accel Shift R在Chrome里默认是“重新加载页面”的快捷键吗不是Chrome默认是CtrlShiftR。但Accel Shift R在macOS下是CmdShiftRChrome里也是强制刷新。所以要小心macOS用户不要把这个组合绑到运行所有上否则按下去浏览器直接刷新配置白搭。经过实测更稳妥的方式是把运行所有绑到Accel Alt R或者Accel Shift F9一类比较冷门的组合上。4.2 案例二在JupyterLab里绑定“清空当前单元格输出”做数据分析和调试时我经常要清空某个块的输出来看干净结果鼠标右键选择“Clear Output”来回跑了无数次。绑定快捷键后效率提升非常明显。在图形界面的操作是Settings → Keyboard Shortcuts → 搜索“clear cell output” → 点击notebook:clear-cell-output行尾的“”号 → 弹窗里按下CtrlAltK注意自己按下的组合键会直接出现在输入框里不要手动打字敲快捷键→ 回车确认。设置好后每次按CtrlAltK当前选中单元格的输出区就被清空。有时我想清空整个笔记本的输出那就要找notebook:clear-all-cell-outputs这个命令绑定方式一模一样。但凡是涉及“全部”的命令我建议确认一下scope是否出问题比如光标在一个单元格里按快捷键是整个笔记本生效还是只作用一个格子。实测下来JupyterLab中clear-all-cell-outputs是全局的不受光标位置影响放心用。4.3 案例三把“插入上方单元格”换到自己顺手的键位默认的A键确实好用但在某些场景下我想用带修饰键的组合避免手从Home Row移开太远。JupyterLab里把notebook:insert-cell-above绑定到CtrlShiftA{ shortcuts: [ { command: notebook:insert-cell-above, keys: [Ctrl Shift A], selector: [data-jp-kernel-user] } ] }这里特意写了Ctrl Shift A而不是Accel Shift A我是故意的。如果写AccelMac上会被替换为Cmd但我希望无论哪个平台都保持同样的键位那么直接写死Ctrl Shift A更符合预期。这类跨平台一致性需求建议明确写死而非用Accel。配置完成后如果你在快捷键管理界面看到这个命令同时背着两把钥匙——一个是系统默认的A键一个是自定义的CtrlShiftA——这是正常现象JupyterLab允许一个命令有多个快捷键绑定互不冲突。4.4 配置管理经验让快捷键配置跟着你走配置这东西最怕重装环境后满地找牙。我个人的做法是创建一个jupyter-config目录里面放两个文件一个用于经典Notebook的custom.js一个用于JupyterLab的shortcuts.json即上面的settings.json内容。这两个文件纳入Git仓库管理每次改完配置就在仓库里提交一次。换新环境时clone仓库把文件复制到对应路径就行。经典Notebook的路径是~/.jupyter/custom/custom.js。JupyterLab的路径更复杂不同版本位置略有差异如果找不到在Settings Editor里能看到当前用户设置的实际存放路径。还有一个技巧如果团队共用一套Jupyter服务器可以通过环境变量JUPYTER_CONFIG_DIR指定配置目录把整个配置目录放到共享存储上这样所有人加载同一份配置。当然前提是大家使用的Jupyter版本一致否则可能引发兼容性问题。5. 常见问题排查实录5.1 快捷键按下没反应按这个顺序排查可能原因排查方法解决方案当前处于编辑模式左下角能否看到光标闪烁按Esc回到命令模式再试绑定作用范围不对JupyterLab中用了错误的selector确认命令是作用于单元格还是编辑器浏览器快捷键冲突按组合键时观察浏览器是否执行了默认动作换一个冷门组合键浏览器缓存了旧配置强制刷新后看是否生效CtrlShiftR / CmdShiftR配置文件有语法错误打开浏览器开发者工具看Console报错根据报错修复对应行提示冲突被覆盖快捷键管理界面搜组合键看归属先移除旧绑定再绑定新命令排第一的永远是模式问题。编辑模式下按字母或简单组合键系统会优先当成文本输出这是设计使然。如果你确认按下了Esc后再执行快捷键仍无效果再往下查。5.2 配置对不上、重启后失效怎么办经典Notebook的localStorage配置方向问题很大。你可能配置好一周后突然失效原因很可能是不小心清除了浏览器站点数据或者浏览器自动清理了localStorage。这种方案本身就不够稳固所以我平时主要用custom.js来配经典Notebook让配置落在服务器端。JupyterLab的settings配置也存在用户目录里的正常不会丢失。但有一种坑如果你同时打开了多个标签页在其中一个标签页修改配置后另一个标签页可能还是旧配置。JupyterLab配置文件是实时读取的但某些内部组件并不会主动监听变化。遇到这种情况刷新所有标签页即可。5.3 想删除或覆盖默认快捷键覆盖默认快捷键在JupyterLab里有一个“remove”技巧。假设你觉得默认的ShiftEnter运行单元格不够顺手想改为CtrlEnter但保留默认可以直接在配置里添加。但如果想彻底移除某一项默认绑定需要用remove字段{ shortcuts: [ { command: notebook:run-cell-and-select-next, keys: [Accel Enter], selector: [data-jp-kernel-user] }, { remove: notebook:run-cell-and-select-next, keys: [Shift Enter], selector: [data-jp-kernel-user] } ] }注意remove的写法它不是一个独立命令而是和命令配对出现的。含义是先删除这个命令在当前selector下绑定的Shift Enter再新增Accel Enter。最终效果是把这个快捷键从ShiftEnter改成CtrlEnterMac上则是CmdEnter。经典Notebook删除快捷键用的是remove_shortcutJupyter.keyboard_manager.command_shortcuts.remove_shortcut(Ctrl-Shift-X);这样就能把之前绑定的快捷键解绑。注意remove_shortcut只删除自定义绑定不能删除系统内置的默认快捷键。试图删除系统快捷键在经典Notebook里是做不到的。5.4 版本升级后快捷键失效这个坑我真的踩过好几次。JupyterLab 3.x升级到4.x时部分命令ID发生了变更。比如原来用jupyter-notebook:run-cell在新版本里可能变成了notebook:run-cell。如果你一早用命令面板搜索到的新ID在升级后就失效了。应对方法只有一个升级之后打开快捷键管理界面搜索你常用的功能名看列表里显示的ID和你配置里的ID是否一致。如果不一致更新配置即可。为了避免来回折腾我反而不太建议在升级大版本后立刻改快捷键配置等新环境稳定两天再一次性把配置调好。另外经典Notebook从6.x到7.x快捷键底层的改动比较大。如果你还依赖custom.js的一些老API升级后可能整体加载失败。我在测试环境里遇到过define is not defined这类报错就是因为新版Notebook不再使用RequireJS加载custom.js。遇到这种版本断层最好直接迁移到JupyterLab而不是在老方案上死磕。6. 让快捷键配置真正融入日常工作6.1 维护一份自己的键位地图配置快捷键最忌讳贪多。我见过有人把二十多个操作都绑上快捷键最后自己都记不住鼠标又切回去了。实用的做法是按使用频率划分层级只给真正高频的操作配置键位。我自己的键位规划是这样运行组ShiftEnter运行并下移、AltEnter运行并插入、CtrlEnter运行不移动结构组A/B上下插入、DD删除、CtrlShiftA我自定义的上方插入输出组CtrlAltK清除当前输出、CtrlShiftO清除所有输出自定义状态组00重启内核、M/Y切换Markdown/代码这组的底层逻辑是运行是最高频操作必须最顺手结构操作用默认键就行输出清理是调试时的高频动作配自定义键很划算状态切换用默认键别乱动。6.2 从快捷键到工作流升级快捷键真正的价值不在于省下几秒而在于打断了“手在键盘和鼠标之间来回切换”的节奏。调试代码时思路正集中在“这一行改完跑一下看看结果”的循环里每一次从键盘移到鼠标再移回来都是一次微小的注意力损失。把高频操作绑到快捷键后这个循环变成纯键盘驱动注意力损耗大幅下降。数据探索场景下典型的操作流是读入数据 → 看shape和信息 → 跑一段清洗 → 看输出 → 画个图。对应快捷键就是ShiftEnter跑CtrlAltK清输出B插新格M切Markdown记笔记。整套流程下来手几乎不离开键盘鼠标只在拖拽选择代码片段时才会碰。我实测下来这个流程适应两周后处理同样规模的表格数据整体操作时间大约能省下两到三成。这个数字不算夸张因为省掉的不是计算时间而是操作摩擦。6.3 不同环境记住各一套配置最后说个容易被忽略的点Jupyter Notebook和JupyterLab的快捷键不要强行保持一致。经典Notebook的编辑模式快捷键体系与JupyterLab差异不小强行统一反而两边都是半吊子。我个人的选择是分析型工作尽量用JupyterLab老项目维护时用到经典Notebook两套快捷键各自成体系互不干扰。配置这东西没有“标准答案”只有适合不适合。一开始多抄人家的配置很正常但最终一定要形成自己高频肌肉记忆的那一套。别急着一次性配完用三五天觉得哪个操作不顺就改一个慢慢调整出来的键位才是真正好用的。我自己是在踩过多次“快捷键没生效”“升级后配置挂掉”的坑之后才逐渐稳定下来这套方案。现在每次重装环境十分钟就能把配置恢复到位比手忙脚乱一边翻教程一边试要省心太多。

相关新闻

Unity 3D框选原理与高性能智能选择系统实现

Unity 3D框选原理与高性能智能选择系统实现

1. 项目概述:为什么“框选多个3D物体”不是个小功能,而是编辑器体验的分水岭在Unity里拖动鼠标画个方框,把场景里散落的十几二十个模型一次性全选中——听起来像基础操作?我带过三届Unity开发实训,每次讲到编辑器扩展&…

2026/10/18 23:23:27 阅读更多 →
Git bug分支不是命令,而是可审计的应急契约

Git bug分支不是命令,而是可审计的应急契约

1. 为什么“bug分支”不是Git的内置概念,却成了团队协作中最常踩坑的术语?“Git中的bug分支”——这个标题乍看像在介绍某个Git原生命令或官方功能,但实际翻遍git help所有子命令、查阅Pro Git官方文档第3版全文,你都找不到一个叫…

2026/10/18 23:23:27 阅读更多 →
Java养老平台后端设计:Spring Boot 2.7适老化系统实战

Java养老平台后端设计:Spring Boot 2.7适老化系统实战

简介:本资源是一套完整的智慧居家养老服务平台系统源码,面向计算机、自动化等相关专业的学生及初入行业的开发者,聚焦居家养老服务数字化场景,适用于课程设计、大作业或毕业设计等实践环节。项目采用Java后端Vue前端技术栈&#x…

2026/10/18 23:23:27 阅读更多 →

最新新闻

AI Agent概念串烧:从智能体闭环到工具调用、记忆机制与落地实践

AI Agent概念串烧:从智能体闭环到工具调用、记忆机制与落地实践

最近聊AI Agent的场合明显变多了,但有意思的是,十次聊天里至少有六次大家说的不是同一件事。有人说Agent就是能自己写报告的聊天框,有人说是一串能自动处理订单的任务流,还有人直接把工作流中间加一个“智能判断”就叫Agent了。这…

2026/10/19 0:22:01 阅读更多 →
Hermes Agent能力分层:会话、工具、MCP与记忆的工程化解耦

Hermes Agent能力分层:会话、工具、MCP与记忆的工程化解耦

1. 这不是又一个“智能体框架”:Hermes Agent 的能力分层到底在解决什么问题?看到“Hermes Agent能力篇:会话、工具、MCP、记忆”这个标题,我第一反应是——得先按下暂停键。过去两年里,我参与过不下七个不同团队的智能…

2026/10/19 0:22:01 阅读更多 →
AI学习入门指南:三大方向技术栈与转行避坑建议

AI学习入门指南:三大方向技术栈与转行避坑建议

“AI 培训到底在教什么?是不是报了班就能学会?为什么我在网上刷了一大堆课,面试还是挂在简历筛选环节?”——这几乎是我在后台收到频率最高的几类问题。作为一个从传统软件开发转型做算法落地,后来又带过不少新人的从业…

2026/10/19 0:22:01 阅读更多 →
可视化AI平台:降低门槛、加速落地与MLOps实践

可视化AI平台:降低门槛、加速落地与MLOps实践

1. “Plug and Play领投SIGAI天使轮”背后的真实产业信号“Plug and Play领投国内首家可视化人工智能平台SIGAI天使轮融资”——这个标题乍看像一则常规的科技媒体通稿,但如果你在AI基础设施、企业级AI落地或早期技术投资领域摸爬滚打过几年,就会立刻意识…

2026/10/19 0:22:01 阅读更多 →
气温预测课程设计:时间序列数据处理与机器学习建模全流程解析

气温预测课程设计:时间序列数据处理与机器学习建模全流程解析

简介:面向Python课程设计与期末大作业场景,机器学习气温预测与可视化项目提供完整源码及使用文档,代码注释全面,新手也能顺利部署运行。项目围绕气温预测任务,构建了MLP三层感知机、LSTM长短期记忆网络、随机森林、决策…

2026/10/19 0:22:01 阅读更多 →
Spring Boot+Vue3多模型AI聊天系统架构设计

Spring Boot+Vue3多模型AI聊天系统架构设计

简介:这是一份面向计算机专业本科生与Java/前端开发者毕业设计与AI应用实践的完整项目源码,聚焦于构建支持多模型接入的现代化AI聊天系统。资源以Spring Boot 3.2 Vue 3双端架构实现,集成DeepSeek、SiliconFlow、Gemini三大主流AI模型API&am…

2026/10/19 0:20:01 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 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/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 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/18 0:55:02 阅读更多 →
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/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练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/18 12:16:16 阅读更多 →