@nteract/actions 动作系统指南:nteract 核心 SDK 中 Redux 动作与 action creator 的完整解析
开发工具数据科学【免费下载链接】archived-desktop-appThe old electron based nteract notebook项目地址https://gitcode.com/gh_mirrors/nt/archived-desktop-app点击查看免费下载nteract/actions是 nteract 核心 SDK 中负责定义动作常量action type 常量与action creator的基础包它把 nteract 应用里每一次用户交互如新建单元格、启动内核、保存笔记本统一编码成带明确定义的 Redux 动作。本文基于该包在仓库中的官方文档结合 src/index.ts、src/utils.ts 及全部 14 个 actionTypes 模块和测试用例展开读完你既能理解动作的类型契约与工厂函数原理也能直接在自己的 reducer、epics 中接入这套动作体系。什么是 actionsRedux 世界中的事件对象在 Redux 架构中action 是带有明确 schema 的纯 JavaScript 对象plain JavaScript object。它只负责描述发生了什么本身不包含任何业务逻辑也不直接修改状态——状态变化交由 reducer 依据 action 类型完成。nteract/actions包中所有动作都遵循这一约定动作对象包含type字段唯一的动作类型字符串以及可选的payload字段携带该动作所需的数据。例如一个执行单元格的动作其 schema 如下与原文档一致{ type: EXECUTE_CELL; payload: { contentRef: ContentRef; // 指向当前笔记本文档的引用 id: CellId; // 目标单元格 id } }ContentRef、CellId等引用类型由nteract/types提供createContentRef()、createKernelRef()等工厂函数创建它们是 nteract 应用在多个文档、多个内核之间精确定位目标对象的句柄。actions 在 nteract 核心 SDK 中的角色原文档指出nteract 应用 UI 中发生的每一个事件通常都会映射成一个 action。例如在笔记本中新建一个单元格 →CREATE_CELL_BELOW/CREATE_CELL_ABOVE/CREATE_CELL_APPEND将当前连接切换到某个 Jupyter 主机 →SET_APP_HOST/ADD_HOST启动、重启、中断内核 →LAUNCH_KERNEL/RESTART_KERNEL/INTERRUPT_KERNEL保存或另存文档 →SAVE/SAVE_AS这些动作被 dispatch 出去之后由两类消费者实现具体功能reducers根据action.type决定如何变更 Redux 状态例如SAVE把保存状态置为savingepics基于 redux-observable 的副作用管线响应动作并触发异步流程例如 packages/epics 中的execute、kernel-lifecycle、contents等模块监听对应动作去执行代码、管理内核进程、读写内容文件然后再派发*_FULFILLED/*_FAILED动作把结果写回状态。因此nteract/actions是整个 nteract 应用事件驱动流的起点UI 事件 → action → reducer/epics → 状态更新。action creators把参数变成动作的工厂函数action creator 是接受一组特定参数、返回一个动作对象的函数。原文档给出了EXECUTE_CELL对应的 action creator 示例此处修正了原文档中的标点笔误function executeCell({ contentRef, cellId }) { return { type: EXECUTE_CELL, payload: { contentRef, id: cellId } }; }nteract/actions为 nteract 支持的所有动作都导出了对应的 action creator并通过 src/index.ts 统一导出export * from ./actionTypes/cell_focus; export * from ./actionTypes/cell_io; export * from ./actionTypes/cell_state; export * from ./actionTypes/cell_structure; export * from ./actionTypes/comm; export * from ./actionTypes/content_publish; export * from ./actionTypes/content_save_load; export * from ./actionTypes/content_state; export * from ./actionTypes/content_structure; export * from ./actionTypes/global; export * from ./actionTypes/host; export * from ./actionTypes/kernel_execution; export * from ./actionTypes/kernel_lifecycle; export * from ./actionTypes/kernel_misc; export * from ./actionTypes/kernelspecs; export { Action, ErrorAction, makeActionFunction } from ./utils;动作的类型契约Action / ErrorAction 与共享 payload 结构动作不只是约定俗成的对象它们有严格的 TypeScript 类型定义位于 src/utils.tsexport interface ActionT extends string, P void { type: T; payload: P; } export interface ErrorActionT extends string, P extends {} | Error Error extends ActionT, P extends Error ? P : P { error: Error, code?: string } { error: true; }ActionT, P泛型接口T约束动作类型字符串P约束 payload 结构ErrorActionT, P在Action基础上额外要求error: true标记并在 payload 中强制携带error可选code用于表达失败类动作如SAVE_FAILED、LAUNCH_KERNEL_FAILED。同时utils 还定义了一批跨模块复用的 payload 组合接口从源码结构看它们是动作 payload 的积木export interface HasKernel { kernelRef: KernelRef } export interface MaybeHasKernel { kernelRef?: KernelRef | null } export interface HasContent { contentRef: ContentRef } export interface MaybeHasContent { contentRef?: ContentRef | null } export interface HasCell extends HasContent { id: CellId } export interface MaybeHasCell extends HasContent { id?: CellId } export interface HasFilepath { filepath: string; } export interface HasFilepathChange extends HasFilepath { prevFilePath: string } export interface HasKernelspecs { kernelspecsRef: KernelspecsRef } export interface HasHost { hostRef: HostRef }Has*表示必须携带该引用MaybeHas*表示可选HasCell是HasContent id的组合用于定位某个文档中的某个单元格动作类型定义时通过交叉类型组合这些接口例如ExecuteCell Actiontypeof EXECUTE_CELL, HasCell、MoveCell Actiontypeof MOVE_CELL, HasCell { destinationId: CellId; above: boolean }。动作工厂makeActionFunction / makeErrorActionFunction / makeZeroArgActionFunctionnteract/actions的 action creator 并非手工逐个编写而是由三个工厂函数批量生成src/utils.tsexport const makeActionFunction T extends Actionstring, any (type: T[type]) { const func (payload: T[payload]) ({ type, payload }); func.with U extends PartialT[payload](partial: U) (payload: SubtractT[payload], U) ({ type, payload: { ...partial, ...payload } as T[payload] }); return func; };makeActionFunctionT(type)生成一个传入 payload、返回{ type, payload }的 creator生成的函数还附带.with(partial)方法用于预填部分 payload 字段返回一个只需剩余字段的新 creator借助utility-types的Subtract做类型剔除makeErrorActionFunctionT(type)生成失败类动作的 creator自动附加error: truemakeZeroArgActionFunctionT(type)生成无参数动作的 creator调用后直接返回{ type }如CLEAR_MESSAGE_QUEUE。以 kernel_execution.ts 为例可以看到三种工厂的典型用法export const executeCell makeActionFunction ExecuteCell (EXECUTE_CELL); export const executeFailed makeErrorActionFunction ExecuteFailed (EXECUTE_FAILED); export const clearMessageQueue makeZeroArgActionFunction ClearMessageQueue (CLEAR_MESSAGE_QUEUE);每个 actionTypes 文件都遵循同一模式先声明type字符串常量 → 再声明TypeScript动作类型 → 最后用工厂生成 creator三个环节一一对应。动作分组总览14 个 actionTypes 模块src/actionTypes 下共 14 个模块按领域划分模块文件覆盖领域典型动作cell_focus.ts单元格焦点FOCUS_CELL、FOCUS_NEXT_CELL、FOCUS_CELL_EDITORcell_io.ts单元格输入输出TOGGLE_CELL_OUTPUT_VISIBILITY、CLEAR_OUTPUTScell_state.ts单元格状态UPDATE_CELL_STATUS、SET_IN_CELL更新 source、execution_count 等cell_structure.ts单元格结构CREATE_CELL_BELOW、MOVE_CELL、DELETE_CELL、CUT/COPY/PASTE_CELLcomm.tsJupyter comm 通信COMM_OPEN、COMM_MESSAGE、COMM_CLOSEcontent_publish.ts内容发布PUBLISH_TO_BOOKSTORE等content_save_load.ts内容保存/加载FETCH_CONTENT、SAVE、SAVE_AS及各自_FULFILLED/_FAILEDcontent_state.ts内容状态TOGGLE_HEADER_EDITOR、UPDATE_FILE_TEXT、OVERWRITE_METADATA_FIELDScontent_structure.ts文档结构NEW_NOTEBOOK、CLOSE_NOTEBOOK、CHANGE_CONTENT_NAMEglobal.ts全局应用SET_GITHUB_TOKEN等host.tsJupyter 主机ADD_HOST、REMOVE_HOST、SET_APP_HOSTkernel_execution.ts代码执行EXECUTE_CELL、EXECUTE_ALL_CELLS、SET_EXECUTION_STATEkernel_lifecycle.ts内核生命周期LAUNCH_KERNEL、RESTART_KERNEL、INTERRUPT_KERNEL、KILL_KERNEL、DISPOSE_KERNELkernelspecs.ts内核规格FETCH_KERNELSPECS、SET_KERNELSPEC_INFO注意命名规律异步动作通常以三段式出现——发起SAVE、成功SAVE_FULFILLED、失败SAVE_FAILED方便 epics 以统一模式编排流程部分常量带CORE/前缀如CORE/FETCH_CONTENT、CORE/ADD_HOST从源码看这是 nteract 核心包内部动作与扩展动作的区分标记。常用动作深析从定义到测试下面结合源码与测试看几个高频动作的具体形态。单元格执行kernel_execution.tsexport const EXECUTE_CELL EXECUTE_CELL; export type ExecuteCell Actiontypeof EXECUTE_CELL, HasCell; export const executeCell makeActionFunctionExecuteCell(EXECUTE_CELL);同文件还定义了批量执行动作EXECUTE_ALL_CELLSpayload 只需HasContent、EXECUTE_ALL_CELLS_ABOVE/BELOW可附带id指定边界以及执行状态动作export type SetExecutionStateAction Actiontypeof SET_EXECUTION_STATE, HasKernel { kernelStatus: string };测试用例 actions-spec.ts 验证了其产出对象expect(actions.setExecutionState({ kernelStatus: KernelStatus.Idle, kernelRef })).toEqual({ type: actionTypes.SET_EXECUTION_STATE, payload: { kernelStatus: KernelStatus.Idle, kernelRef } });单元格结构编辑cell_structure.tsexport type CreateCellBelow Actiontypeof CREATE_CELL_BELOW, MaybeHasCell { cellType: CellType; cell?: ImmutableCell }; export type MoveCell Actiontypeof MOVE_CELL, HasCell { destinationId: CellId; above: boolean }; export const moveCell makeActionFunctionMoveCell(MOVE_CELL);MoveCell通过destinationIdabove布尔值表达移动到某单元格上方/下方。测试用例中对应断言actions-spec.tsexpect(actions.moveCell({ id: 1234, destinationId: 5678, above: true, contentRef })).toEqual({ type: actionTypes.MOVE_CELL, payload: { id: 1234, contentRef, destinationId: 5678, above: true } });内核生命周期kernel_lifecycle.ts该模块定义了从启动到销毁的完整动作链LAUNCH_KERNEL/LAUNCH_KERNEL_SUCCESSFUL/LAUNCH_KERNEL_FAILED、RESTART_KERNEL、INTERRUPT_KERNEL、KILL_KERNEL、SHUTDOWN_REPLY_SUCCEEDED、DISPOSE_KERNEL等。值得注意的参数设计export type RestartKernelOutputHandling None | Clear All | Run All; export type RestartKernel Actiontypeof RESTART_KERNEL, HasContent MaybeHasKernel { outputHandling: RestartKernelOutputHandling };RESTART_KERNEL用outputHandling三态枚举指定重启后对输出的处理策略KillKernelAction则携带restarting与dispose布尔标记区分重启过程中的临时关闭与彻底销毁。测试对launchKernel的断言actions-spec.ts也印证了 payload 结构actions.launchKernel({ kernelSpec: { spec: hokey }, cwd: ., kernelRef, contentRef, selectNextKernel: true }); // { type: LAUNCH_KERNEL, payload: { kernelSpec, cwd, kernelRef, contentRef, selectNextKernel: true } }内容保存/加载content_save_load.tsexport const SAVE SAVE; export type Save Action typeof SAVE, HasContent; export type SaveFulfilled Action typeof SAVE_FULFILLED, HasContent { model: any }; export type SaveFailed ErrorActiontypeof SAVE_FAILED, HasContent; export const save makeActionFunction Save (SAVE); export const saveFulfilled makeActionFunction SaveFulfilled (SAVE_FULFILLED); export const saveFailed makeErrorActionFunction SaveFailed (SAVE_FAILED);测试中saveFailed的产物带有error: true标记这是ErrorAction的运行时体现actions-spec.tsexpect(actions.saveFailed({ error, contentRef })).toEqual({ type: actionTypes.SAVE_FAILED, error: true, payload: { error, contentRef } });实战安装并集成到你的 reducer安装nteract/actionsREADME$ yarn add nteract/actions # 或 $ npm install --save nteract/actionsnteract/actions的设计目标是与其他核心 SDK 包nteract/selectors、nteract/epics、nteract/core搭配使用。原文档与 README 给出的经典场景是在 reducer 中监听SAVE/SAVE_FULFILLED/SAVE_FAILED维护保存状态import actions from nteract/actions; export default function myReducer( state: MyState, action: actions.Save | actions.SaveFulfilled | actions.SaveFailed ) { switch (action.type) { case actions.SAVE: return { ...state, status: saving }; case actions.SAVE_FULFILLED: return { ...state, status: success }; case actions.SAVE_FAILED: return { ...state, status: failed }; default: return state; } }要点通过import actions from nteract/actions同时拿到类型常量actions.SAVE用于switch分支匹配与类型本身actions.Save用于入参类型标注由于常量与 creator 同名成对导出reducer 的case匹配与派发调用使用同一标识符避免魔法字符串漂移若要在 UI 中触发保存只需dispatch(actions.save({ contentRef }))剩余异步工作交给监听SAVE的 epics。测试验证行为即契约actions-spec.ts 是理解这套动作体系最直接的活文档它针对数十个 action creator 逐一断言其产物对象覆盖了带 payload 的动作setLanguageInfo、launchKernel、newNotebook、moveCell可选字段的默认行为unhideAll省略outputHidden/inputHidden时对应字段为undefined错误动作saveFailed自动附加error: true派生动作updateCellSource实际产出SET_IN_CELLpath 为[source]updateCellExecutionCount产出 path 为[execution_count]可见动作之间存在归一化设计。延伸动作文档与进一步阅读原文档提及的 API 参考页面packages.nteract.io属于外部站点此处不展开在本仓库内可直接研读包级说明与安装/使用示例packages/actions/README.md本概述的完整原文packages/actions/docs/overview.md更多示例packages/actions/docs/examples.md全部动作定义packages/actions/src/actionTypes14 个模块类型契约与工厂函数实现packages/actions/src/utils.ts出口统一导出packages/actions/src/index.ts动作消费方示例nteract/epicspackages/epics/src、nteract/corepackages/core/src小结nteract/actions用常量 类型 creator三位一体的方式为 nteract 应用建立了完整、可类型检查的动作体系Action/ErrorAction接口保证动作结构一致三个工厂函数消除重复样板代码14 个领域模块把单元格、内核、内容、主机等核心概念全部动作化。无论你是在构建基于 nteract 的桌面端、Web 端还是自定义的 notebook 应用都可以直接复用这套动作定义配合nteract/selectors读状态、nteract/epics写副作用快速搭出符合 Redux 最佳实践的应用骨架。赞分享开发工具数据科学【免费下载链接】archived-desktop-appThe old electron based nteract notebook项目地址https://gitcode.com/gh_mirrors/nt/archived-desktop-app点击查看免费下载相关推荐nteract/actions 完全指南nteract 笔记本的 Redux Action 定义与 Action Creator 实战nteract/actions 完全指南nteract 笔记本的 Redux Action 定义与 Action Creator 实战 导读 nterac开发工具数据科学nteract 核心 SDK 实战nteract/actions 在 Redux Reducer、React 组件与 redux-observable Epic 中的用法指南nteract 核心 SDK 实战nteract/actions 在 Redux Reducer、React 组件与 redux observable Ep开发工具数据科学NgRx Actions 完整指南Action 接口、Action Creator 与 Signal 驱动的动作分发NgRx Actions 完整指南Action 接口、Action Creator 与 Signal 驱动的动作分发 Actions动作是 NgRx 状态前端状态管理上一篇基于 rsync 脚本自建 Ceph 软件镜像mirroring 目录的完整使用与部署指南下一篇goldmark性能优化指南与C语言cmark匹敌的解析速度创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Lit-LLaMA TPU 支持实战指南:在 Google Cloud TPU v4 上运行 LLaMA 推理

Lit-LLaMA TPU 支持实战指南:在 Google Cloud TPU v4 上运行 LLaMA 推理

人工智能大模型预训练微调LoRA模型量化 【免费下载链接】lit-llama Implementation of the LLaMA language model based on nanoGPT. Supports flash attention, Int8 and GPTQ 4bit quantization, LoRA and LLaMA-Adapter fine-tuning, pre-training. Apache 2.0-licensed. 项…

2026/10/10 5:10:27 阅读更多 →
LogicStack-LeetCode 刷穿 LeetCode:611. 有效三角形的个数(中等)——排序、二分与双指针三解法全解析

LogicStack-LeetCode 刷穿 LeetCode:611. 有效三角形的个数(中等)——排序、二分与双指针三解法全解析

教程文档 【免费下载链接】LogicStack-LeetCode 公众号「宫水三叶的刷题日记」刷穿 LeetCode 系列文章源码 项目地址: https://gitcode.com/gh_mirrors/lo/LogicStack-LeetCode 点击查看 免费下载 本篇技术指南围绕「刷穿 LeetCode」系列第 611 题展开,…

2026/10/10 5:10:27 阅读更多 →
AnyPS5实战:从零打造PS5远程游戏串流与网络优化方案

AnyPS5实战:从零打造PS5远程游戏串流与网络优化方案

看到“AnyPS5”这个项目名,第一反应是这群玩家真会起名字:字面意思是“任意一台PS5”,实际干的事是让任何一台PS5都能脱离客厅的束缚——手机、平板、笔记本、旧电脑,甚至异地另一台主机,都能随时接过来继续玩。我不是…

2026/10/10 5:10:27 阅读更多 →

最新新闻

开源实时协作Markdown编辑器HedgeDoc:自托管与权限管理指南

开源实时协作Markdown编辑器HedgeDoc:自托管与权限管理指南

如果你所在的环境里,协作记录一直散落在聊天记录、本地文本和邮箱附件之间,我建议你认真了解一下 HedgeDoc。它是一款开源的、基于 Web 的实时协作 Markdown 编辑器,浏览器打开就能用,也能在自己的服务器上搭建。我把团队内部的技…

2026/10/10 5:44:39 阅读更多 →
变步长扰动观察法光伏MPPT仿真:S-Function与Boost电路实践

变步长扰动观察法光伏MPPT仿真:S-Function与Boost电路实践

上次接了个仿真任务,要求搭一套能随光照强度突变“时刻跟踪”最大功率点的光伏MPPT模型。原以为Simulink里找一个现成模块拖进去就行,结果翻遍标准库也没找到变步长扰动观察法仿真模型,最后老老实实把算法写进s-function模块,配合…

2026/10/10 5:44:39 阅读更多 →
AnyPS5远程串流全攻略:从局域网到广域网,低延迟玩转PS5

AnyPS5远程串流全攻略:从局域网到广域网,低延迟玩转PS5

1. 从“AnyPS5”这个标题说起:它到底想解决什么问题第一次看到“AnyPS5”这个标题,我脑子里蹦出来的第一反应是:这大概率是一个围绕“跨平台串流”或者“远程访问”做文章的项目。为什么这么判断?因为“Any”这个前缀在技术圈里几…

2026/10/10 5:44:39 阅读更多 →
Zeek 证书透明度验证指南:深入解析 validate-sct.zeek 的 SCT 校验机制

Zeek 证书透明度验证指南:深入解析 validate-sct.zeek 的 SCT 校验机制

网络安全网络IDS 【免费下载链接】zeek Zeek is a powerful network analysis framework that is much different from the typical IDS you may know. 项目地址: https://gitcode.com/gh_mirrors/ze/zeek 点击查看 免费下载 导读 本文围绕 Zeek 的 policy/protoc…

2026/10/10 5:44:39 阅读更多 →
YCBlogs 开源项目全景导览:Android 组件封装库、视频播放器、线程池与多渠道打包实战指南

YCBlogs 开源项目全景导览:Android 组件封装库、视频播放器、线程池与多渠道打包实战指南

教程技术博客文档 【免费下载链接】YCBlogs 技术博客笔记大汇总,包括Java基础,线程,并发,数据结构;Android技术博客等等;常用设计模式;常见的算法;网络协议知识点;部分fl…

2026/10/10 5:44:39 阅读更多 →
项目成本管理实战:从估算到挣值管理的全流程解析

项目成本管理实战:从估算到挣值管理的全流程解析

1. 先搞清楚:项目成本管理到底在管什么很多人一听到"项目成本管理",第一反应就是"省钱"。特别是当它作为教材里的第11章出现时,很容易被理解成一套记账、算账、省钱的流程。但实际上,项目成本管理的核心不是&…

2026/10/10 5:43:39 阅读更多 →

日新闻

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

1. 从“卫星轨道分类”这个标题说起:为什么值得花时间搞懂第一次接触“卫星轨道分类”这个概念,很多人会觉得它离自己很远——不就是天上的星星怎么转吗?但如果你正在做航天任务规划、遥感数据接收、星座设计,甚至只是准备一场航天…

2026/10/10 0:00:39 阅读更多 →
Spring AOP 核心原理与实战:从概念到日志切面落地

Spring AOP 核心原理与实战:从概念到日志切面落地

1. 从一个真实痛点说起:为什么你的代码里到处都是重复逻辑刚入行那会儿,我写过一个用户管理模块,注册、登录、改密码、注销四个接口。每个接口里都塞了几乎一样的日志打印、参数校验、事务开启和提交。当时觉得没什么,能跑就行。直…

2026/10/10 0:00:40 阅读更多 →
Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

简介:这是一套面向计算机相关专业学生与项目实战学习者的Python数据采集与分析可视化完整项目,以Boss直聘岗位数据为对象,适合用作毕业设计、课程设计或期末大作业。资源包共38个文件,约246KB,以13个py源码文件为核心&…

2026/10/10 0:00:40 阅读更多 →

周新闻

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/8 15:26:32 阅读更多 →
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/10 1:36:08 阅读更多 →
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/9 10:11:06 阅读更多 →

月新闻

我发现了一个新思路:用 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/10 5:23:50 阅读更多 →
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/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练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/9 6:17:20 阅读更多 →