Apache OpenWhisk Standalone Server 完全指南:单 Jar 搭建本地 Serverless 开发环境
后端云原生【免费下载链接】openwhiskApache OpenWhisk is an open source serverless cloud platform项目地址https://gitcode.com/gh_mirrors/ope/openwhisk点击查看免费下载本文围绕 Apache OpenWhisk 仓库中的 Standalone Server 模块core/standalone/README.md展开系统讲解如何用一条java -jar命令在本地启动一个无需 Kafka、CouchDB 等外部依赖的完整 OpenWhisk 平台用于开发调试与功能验证。读完本文你将掌握 Standalone 的全部启动选项、自定义配置命名空间、运行时、CouchDB、API Gateway / 嵌入式 Kafka / User Events 观测栈的开启方式以及基于 KubernetesContainerFactory 和 Docker 的两种进阶运行方案。Playground UIStandalone Server 默认在 3232 端口提供的 Web 试玩界面可快速创建并运行简单 Action。一、设计定位为什么需要 Standalone ServerOpenWhisk 的完整生产部署需要 Controller、Invoker、Kafka、CouchDB、Zookeeper、Etcd、Nginx 等多个组件协作可参考 ansible 部署目录。而 Standalone Server 的目标截然不同在本地以单个 Java 进程模拟一个最小可用的 OpenWhisk 平台专供本地开发与测试。它可以直接以普通 Java 应用方式从命令行运行java -jar openwhisk-standalone.jar启动后默认在3233端口提供 OpenWhisk APIController并在3232端口启动 Playground UI。整个平台只依赖Docker用于运行 Action 容器与Java默认使用内存存储不依赖任何外部中间件。1.1 核心设计要点原文档明确列出了如下关键特性内存存储默认所有数据保存在进程内存中服务停止后全部变更丢失默认用户引导启动时会自动创建guest与whisk.system两个内置命名空间及其默认鉴权密钥跨平台支持 macOS、Linux 与 Windows实验性可插拔存储可通过配置接入 CouchDB 等其他存储实现。1.2 源码层面的零依赖实现从 standalone.conf 可以看到Standalone 通过 SPI 机制将各核心组件替换为轻量实现whisk { spi { ArtifactStoreProvider org.apache.openwhisk.core.database.memory.MemoryArtifactStoreProvider MessagingProvider org.apache.openwhisk.connector.lean.LeanMessagingProvider LoadBalancerProvider org.apache.openwhisk.core.loadBalancer.LeanBalancer ContainerFactoryProvider org.apache.openwhisk.core.containerpool.docker.StandaloneDockerContainerFactoryProvider ... } }即存储使用内存版 ArtifactStore、消息传递使用 Lean 实现、负载均衡使用 LeanBalancerAction 容器则由 Docker 容器工厂管理。此外该配置文件还默认将 Controller 只绑定到localhostwhisk.controller.interface localhost以提升本地安全性内置的whisk-system与guest用户密钥也定义于此文件standalone.conf。二、构建与三种启动方式2.1 用 Gradle 构建可执行 Jar./gradlew :core:standalone:build构建产物可执行 Jar位于bin/目录之后即可通过java -jar bin/openwhisk-standalone.jar运行。2.2 直接以 bootRun 方式运行不想手动打包时可直接运行./gradlew :core:standalone:bootRun如需向启动命令传递参数例如指定运行时清单./gradlew :core:standalone:bootRun --args-m runtimes.json2.3 构建 Docker 镜像./gradlew :core:standalone:distDocker此外Standalone 模块自带 Dockerfile镜像内会内置 Docker CLI 与 wsk CLI容器入口脚本为init。工作目录说明默认数据目录为~/.openwhisk/standalone源码中的defaultWorkDir见 StandaloneOpenWhisk.scala。可用-d/--data-dir指定其他位置用--clean在启动前清空已有状态。三、启动选项全解-h帮助输出逐项解读运行java -jar openwhisk-standalone.jar -h可看到完整帮助信息。以下将所有选项整理为表格默认值结合帮助文本与源码 StandaloneOpenWhisk.scala 归纳选项参数默认值说明-m, --manifest文件路径classpath 中的/runtimes.json定义受支持运行时的 Manifest JSON-c, --config-file文件路径standalone.conf覆盖默认配置的application.conf--api-gw-关闭启用 API Gateway 支持--couchdb-关闭启用 CouchDB 支持--user-events-关闭启用 User Events并附带 Prometheus 与 Grafana--kafka-关闭启用嵌入式 Kafka--kafka-ui-关闭启用 Kafka UI基于 Kafdrop 3--all-关闭一次性启用上述全部可选服务CouchDB、Kafka、API GW、User Events、Kafka UI--api-gw-port端口号3234API Gateway 端口--clean-关闭启动前清理已有状态如数据库-d, --data-dir目录~/.openwhisk/standalone存储目录--dev-kcf-关闭启用 KubernetesContainerFactory 供本地开发--dev-mode-关闭开发者模式跳过预检、避免显式拉取镜像加速启动--dev-user-events-port端口号无指定 user-event 服务端口用于连接已有服务实例做本地开发--disable-color-logging-关闭禁用彩色日志--enable-bootstrap-见下方说明启用默认用户与 Action 的引导API Gateway / Playground 所需--kafka-docker-port端口号9091或随机空闲端口供 Docker 服务使用的 Kafka 端口--kafka-port端口号9092或随机空闲端口Kafka 端口--no-ui-关闭禁用 Playground UI--ui-port端口号3232或随机空闲端口Playground UI 端口-p, --port端口号3233服务器Controller端口-v, --verbose--冗余日志输出--zk-port端口号2181或随机空闲端口Zookeeper 端口-h, --help--显示帮助信息--version--显示程序版本3.1 端口占用策略从源码看除-p/--port外各服务端口遵循首选端口优先、被占用则随机分配的策略未指定端口时先尝试默认端口若被占用则挑选随机空闲端口参见StandaloneDockerSupport.checkOrAllocatePort与getPortStandaloneOpenWhisk.scala。例如 Kafka 首选端口定义在 KafkaLauncher.scalaval preferredKafkaPort 9092 val preferredKafkaDockerPort preferredKafkaPort - 1 // 9091 val preferredZkPort 2181若显式指定了端口且该端口已被占用则对应服务不会启动——这主要用于测试场景测试逻辑自行确定端口并确保服务只在该端口启动。3.2--all的展开逻辑--all并非一个独立开关而是在参数解析阶段被展开为--api-gw --couchdb --user-events --kafka --kafka-ui五个选项见Conf.expandAllModeStandaloneOpenWhisk.scala。四、自定义配置application.conf 覆盖机制4.1 基本覆盖方式通过-c传入自定义application.conf该文件必须include classpath(standalone.conf)以继承默认配置include classpath(standalone.conf) whisk { //Custom config }然后启动java -jar openwhisk-standalone.jar -c custom.conf源码中initConfigLocation会校验配置文件存在性并设置config.file系统属性StandaloneOpenWhisk.scala。4.2 添加自定义命名空间用户在whisk.users下按用户名 uuid:密钥的格式注册自定义用户include classpath(standalone.conf) whisk { users { whisk-test cafebabe-cafe-babe-cafe-babecafebabe:007zO3xZCLrMN6v2BKK1dXYFpXlPkccOFqm12CdAsMgRU4VrNZ9lyGVCGuMDGIwP } }启动后日志中会打印创建成功的用户#tid_userBootstrap事务 ID 标识引导流程[2019-06-21T19:52:02.923Z] [INFO] [#tid_userBootstrap] [StandaloneOpenWhisk] Created user [guest] [2019-06-21T19:52:03.008Z] [INFO] [#tid_userBootstrap] [StandaloneOpenWhisk] Created user [whisk.system] [2019-06-21T19:52:03.094Z] [INFO] [#tid_userBootstrap] [StandaloneOpenWhisk] Created user [whisk.test]实现上bootstrapUsers会读取whisk.users配置并为每个用户调用WhiskAdmin的user create --auth key subject命令完成写入StandaloneOpenWhisk.scala。4.3 使用自定义运行时清单通过-m传入定义运行时的 Manifest JSON例如注册 Ruby 2.5 运行时{ runtimes: { ruby: [ { kind: ruby:2.5, default: true, deprecated: false, attached: { attachmentName: codefile, attachmentType: text/plain }, image: { prefix: openwhisk, name: action-ruby-v2.5, tag: latest } } ] } }启动时指定java -jar openwhisk-standalone.jar -m custom-runtime.json随后访问http://localhost:3233即可在响应中看到新的运行时配置。默认运行时说明未指定 manifest 时Standalone 从 classpath 加载/runtimes.json若该资源不存在例如从 IDE 直接运行则回退到内置的 Node.js 20 运行时定义源码defaultRuntimeStandaloneOpenWhisk.scala。五、选择后端存储内置 CouchDB 与外部 ArtifactStore5.1 内置 CouchDB使用--couchdb会在 Docker 中启动一个 CouchDB 容器默认镜像apache/couchdb:2.3端口 5984数据保存在用户主目录下的.openwhisk/standalone目录中java -jar openwhisk-standalone.jar --couchdbCouchDB 相关的设计文档views在 standalone.conf 中配置这些 JSON 设计文档文件位于 ansible/files 目录如whisks_design_document_for_entities_db_v2.1.0.json。5.2 连接外部 CouchDB 或其他存储如需连接已有的 CouchDB或其他受支持的 ArtifactStore通过-c传入存储配置include classpath(standalone.conf) whisk { couchdb { protocol http host 172.17.0.1 port 5984 username whisk_admin password some_passw0rd provider CouchDB databases { WhiskAuth whisk_local_subjects WhiskEntity whisk_local_whisks WhiskActivation whisk_local_activations } } }然后java -jar openwhisk-standalone.jar -c external-couchdb.conf5.3 Bootstrap 规则外部存储默认不写入默认用户重要行为使用外部 ArtifactStore 时Standalone默认不会引导bootstrap默认用户与 Action例如 API Gateway 与 Playground UI 所需的那些以免污染你的外部存储。只有显式添加--enable-bootstrap才会执行引导。对应的判定逻辑在canInstallUserAndActions中StandaloneOpenWhisk.scala使用内存存储或内置 CouchDB 时总是引导使用外部存储时仅当开启--enable-bootstrap才引导。六、API Gateway 模式通过--api-gw启用 API Gateway启动时会在 Docker 中拉起一个独立的 OpenWhisk API Gateway 容器默认镜像openwhisk/apigateway:0.11.0对外端口为3234可用--api-gw-port修改java -jar openwhisk-standalone.jar --api-gw启用后即可使用 OpenWhisk 的 API Gateway 能力创建、管理 HTTP API 端点详见仓库中的 API Gateway 文档。内部细节路由管理route management所需的 API 端口固定分配在 9000apiGwApiPort checkOrAllocatePort(9000)引导阶段会通过InstallRouteMgmt安装路由管理包StandaloneOpenWhisk.scala。七、嵌入式 Kafka 与 Kafka UI7.1 启动嵌入式 KafkaStandalone 支持直接启动一个嵌入式 Kafka该模式主要面向 OpenWhisk 自身实现的开发调试java -jar openwhisk-standalone.jar --kafka7.2 附加 Kafka UIKafdrop 3同时使用--kafka-ui可拉起基于 Kafdrop 3 的 Web UI用于查看创建的 Topic 及消息结构java -jar openwhisk-standalone.jar --kafka --kafka-uiUI 默认地址为http://localhost:9000若 9000 被占用则自动选择随机端口可从日志中查找whisk-kafka-drop-ui关键字确认实际端口[ 9092 ] localhost:9092 (kafka) [ 9092 ] 192.168.65.2:9091 (kafka-docker) [ 2181 ] Zookeeper (zookeeper) [ 9000 ] http://localhost:9000 (whisk-kafka-drop-ui)源码佐证启用 Kafka 时Standalone 会把消息提供方切换为KafkaMessagingProvider、负载均衡切换为KafkaAwareLeanBalancerStandaloneOpenWhisk.scala即从 Lean 单机模式切换到真实的 Kafka 消息通道。八、User Events 观测栈Kafka Prometheus GrafanaStandalone 支持发出 User Events 度量并借助 Grafana Dashboard 可视化展示。度量由 User Event Service 消费并转换为 Prometheus 指标。一条命令即可拉起完整观测栈java -jar openwhisk-standalone.jar --user-events该模式会依次启动嵌入式 Kafka、User Event Service、Prometheus 与预配置好 Dashboard 的 GrafanaLaunched service details [ 9092 ] localhost:9092 (kafka) [ 9091 ] 192.168.65.2:9091 (kafka-docker) [ 2181 ] Zookeeper (zookeeper) [ 3235 ] http://localhost:3235 (whisk-user-events) [ 9090 ] http://localhost:9090 (whisk-prometheus) [ 3000 ] http://localhost:3000 (whisk-grafana)其中各组件镜像定义在 standalone.confopenwhisk/user-events:nightly、prom/prometheus:v2.5.0、grafana/grafana:6.1.6预置的 Grafana Dashboard 可在 core/monitoring/user-events/compose/grafana/dashboards 找到。关于 User 级指标的背景可参考 metrics 文档 与 user-events 模块说明。九、KubernetesContainerFactory 本地开发--dev-kcfStandalone 可通过--dev-kcf切换为 KubernetesContainerFactoryKCF用于简化 KCF 本身的本地开发。以下步骤基于 Kind用 Docker 容器作为节点的本地 Kubernetes 工具不过只要正确设置KUBECONFIG该模式对任意 Kubernetes 集群均适用。9.1 安装并配置 Kindkind create cluster --wait 5m # 导出 kind 配置供 kubectl 使用 export KUBECONFIG$(kind get kubeconfig-path) # 配置默认命名空间 kubectl config set-context --current --namespacedefault # 查看配置路径 kind get kubeconfig-path /Users/example/.kube/kind-config-kind9.2 启动 StandaloneKCF 模式# 通过 kubeconfig 系统属性指向 kind 配置 java -Dkubeconfig$(kind get kubeconfig-path) -jar bin/openwhisk-standalone.jar --dev-kcfKCF 模式下使用的独立配置为 standalone-kcf.conf它将ContainerFactoryProvider切换为KubernetesContainerFactoryProvider启用端口转发port-forwarding-enabled true并将本地开发场景下镜像可能未预拉取的情形考虑在内run超时放宽到 10 分钟。9.3 验证一次 KCF 调用启动成功后将.wskprops配置指向 Standalone 服务器创建hello.jsfunction main(params) { greeting hello, world var hello {payload: greeting} var result {...hello, ...process.env} console.log(greeting); return result }wsk action create hello hello.js wsk action invoke hello -br输出类似如下HOSTNAME为wsk0-2-prewarm-nodejs10且包含KUBERNETES_*环境变量说明 Action 已运行在 Kubernetes Pod 中KCF 调用链路正常{ HOME: /root, HOSTNAME: wsk0-2-prewarm-nodejs10, KUBERNETES_PORT: tcp://10.96.0.1:443, KUBERNETES_SERVICE_HOST: 10.96.0.1, KUBERNETES_SERVICE_PORT: 443, KUBERNETES_SERVICE_PORT_HTTPS: 443, NODE_VERSION: 10.15.3, PATH: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin, PWD: /nodejsAction, YARN_VERSION: 1.13.0, __OW_ACTION_NAME: /guest/hello, __OW_ACTION_VERSION: 0.0.1, __OW_ACTIVATION_ID: 71e48d2d62e142eca48d2d62e192ec2d, __OW_API_HOST: http://host.docker.internal:3233, __OW_DEADLINE: 1570223213407, __OW_NAMESPACE: guest, __OW_TRANSACTION_ID: iSOoNklk6V7l7eh8KJnvugidKEmaNJmv, payload: hello, world }十、用 Docker 启动 Standalone10.1 一键脚本与本地方案项目发布了一个便捷的一键启动脚本bash (curl -sL ...)形式已测试 Linux、macOS 与 Windows Git Bash。若你不想执行来自网络的任意代码仓库中提供了等价的本地脚本 start.sh 与 stop.sh其核心命令等价于docker run --rm -d \ -h openwhisk --name openwhisk \ -p 3233:3233 -p 3232:3232 \ -v /var/run/docker.sock:/var/run/docker.sock \ openwhisk/standalone:nightly默认发布的 Standalone 控制器镜像为openwhisk/standalone:nightly。脚本启动后会尝试自动打开 Playground若浏览器未自动弹出可访问http://localhost:3232。10.2 配置 wsk CLI如果 Playground 不够用可安装 wsk CLI参见 CLI 文档并通过以下命令获取wsk的配置命令docker logs openwhisk | grep wsk property配置好 CLI 后即可尝试仓库中的 示例 Action 与 samples 文档 中的各种用例。10.3 关闭服务要彻底关闭 OpenWhisk 及其创建的附加容器可使用 stop.sh 或直接执行docker exec openwhisk stop10.4 向 Docker 镜像传递额外参数启动脚本的完整格式为bash (curl -sL openwhisk.sh) [docker-parameters...] [image-name] [standalone-jar-options...]例如bash (curl -sL openwhisk.sh) -e SOME_DOCKER_ENVa openwhisk/standalone:nightly --no-ui额外参数可用于配置运行 OpenWhisk 的 JVM以及向 Action 容器传播环境变量例如为 Action 开启调试JVM_EXTRA_ARGS向运行 OpenWhisk 的 JVM 追加参数。例如-e JVM_EXTRA_ARGS-Dconfig.loads可开启配置追踪也可借此设置任意 OpenWhisk 参数CONTAINER_EXTRA_ENV为每个运行 Action 的容器追加环境变量。例如-e CONTAINER_EXTRA_ENV__OW_DEBUG_PORT8081可为支持调试器启动的镜像如 TypeScript 运行时开启调试端口。后者在配置层面对应 standalone.conf 中的container-factory.container-args.extra-args.env ${?CONTAINER_EXTRA_ENV}。十一、常见注意事项数据易失性默认内存存储意味着服务重启即数据清空适合测试需要持久化时请改用--couchdb或外部存储。外部存储不自动引导连接外部 CouchDB 等 ArtifactStore 时默认不会创建guest/whisk.system等用户与 Action需显式加--enable-bootstrap。端口自动规避除显式指定外Kafka9092、Kafka-docker9091、Zookeeper2181、Kafka UI9000等端口被占用时会自动选择随机空闲端口请以启动日志中Launched service details段落打印的端口为准该日志由 ServiceInfoLogger.scala 输出。运行时最小依赖仅需 Java 与 Docker--dev-kcf模式还需可用且已配置KUBECONFIG的 Kubernetes 集群。赞分享后端云原生【免费下载链接】openwhiskApache OpenWhisk is an open source serverless cloud platform项目地址https://gitcode.com/gh_mirrors/ope/openwhisk点击查看免费下载相关推荐OpenCart 全新安装完整实战指南Linux / Windows / 本地环境安装、CLI 自动化与上线安全配置OpenCart 全新安装完整实战指南Linux / Windows / 本地环境安装、CLI 自动化与上线安全配置 OpenCart 是一款基于 PHP 的云原生后端微服务Apache OpenWhisk开发环境搭建本地调试与测试的终极指南Apache OpenWhisk开发环境搭建本地调试与测试的终极指南 Apache OpenWhisk是一个开源的无服务器计算平台它允许开发者构建、运行和管云原生后端微服务虎符台全面战争MOD管理终极解决方案告别繁琐配置虎符台全面战争MOD管理终极解决方案告别繁琐配置 还在为《全面战争》系列游戏的MOD管理而头疼吗每次切换游戏存档都要重新配置几十个MOD不同MOD之间的桌面应用游戏开发上一篇SMUDebugTool终极指南轻松解锁AMD处理器隐藏性能的完整教程下一篇5分钟构建专业可视化图表Mermaid Live Editor的交互式设计革命创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

PaddleCV 系统设计思想深度解析:基于 DAG 的统一推理部署框架

PaddleCV 系统设计思想深度解析:基于 DAG 的统一推理部署框架

人工智能深度学习计算机视觉NLP语音 【免费下载链接】models Officially maintained, supported by PaddlePaddle, including CV, NLP, Speech, Rec, TS, big models and so on. 项目地址: https://gitcode.com/gh_mirrors/mo/models 点击查看 免费下载 导读 Padd…

2026/10/9 2:14:27 阅读更多 →
HTTP协议零基础拆解:请求头、响应状态码与调试实战

HTTP协议零基础拆解:请求头、响应状态码与调试实战

1. 从一次浏览器地址栏输入开始说起如果你正在学 Web 开发,无论你打算写前端、后端、还是做全栈,HTTP 都是那个绕不开的坎。它就像网络世界的普通话,前端和后端沟通、浏览器和服务器沟通、App 和云服务沟通,全都靠它。很多新手被 …

2026/10/9 2:14:27 阅读更多 →
openJiuwen agent-core 代码风格规范:Ruff 格式化、异步安全与模块化日志实践

openJiuwen agent-core 代码风格规范:Ruff 格式化、异步安全与模块化日志实践

人工智能AI AgentAgent 框架大模型工具调用RAG提示工程强化学习 【免费下载链接】agent-core openJiuwen agent-core可提供AI Agent开发、运行、调优与演进相关的全套SDK能力 项目地址: https://gitcode.com/openJiuwen/agent-core 点击查看 免费下载 openJiuwen a…

2026/10/9 2:14:27 阅读更多 →

最新新闻

电车冷却液的性能指标

电车冷却液的性能指标

电车冷却液和普通防冻液都是乙二醇水基,这是它们唯一像的地方。配方体系,两条路线:普通防冻液靠离子型缓蚀剂防腐——便宜、直接、效果好,代价是电导率高,普遍在 1000 μS/cm 以上,高的能到两三千。燃油车没…

2026/10/9 2:43:43 阅读更多 →
CouchDB RFC 014 深度解读:面向查询端点的书签式(Bookmark)分页 API 设计与语义

CouchDB RFC 014 深度解读:面向查询端点的书签式(Bookmark)分页 API 设计与语义

数据库文档数据库后端 【免费下载链接】couchdb Seamless multi-primary syncing database with an intuitive HTTP/JSON API, designed for reliability 项目地址: https://gitcode.com/gh_mirrors/co/couchdb 点击查看 免费下载 本文基于 CouchDB 官方 RFC 文档 …

2026/10/9 2:43:43 阅读更多 →
xberg Python 绑定实战:用 ExtractionConfig.security_limits 为 ZIP 归档抽取设定安全护栏

xberg Python 绑定实战:用 ExtractionConfig.security_limits 为 ZIP 归档抽取设定安全护栏

后端AI 应用NLP 【免费下载链接】xberg Polyglot document intelligence with a Rust core: extract text, metadata, images, tables, and structured data from 106 formats across 140 file extensions, plus code intelligence for 371 languages. Fifteen bindings, with …

2026/10/9 2:43:43 阅读更多 →
EcoPaste 剪贴板管线深度解析:从 OS 监听、去重入库到写回抑制的完整实现

EcoPaste 剪贴板管线深度解析:从 OS 监听、去重入库到写回抑制的完整实现

桌面应用开发工具 【免费下载链接】EcoPaste 🎉跨平台的剪贴板管理工具 | Cross-platform clipboard management tool 项目地址: https://gitcode.com/gh_mirrors/ec/EcoPaste 点击查看 免费下载 本文基于 EcoPaste 仓库中的《Clipboard Pipeline》设计…

2026/10/9 2:43:43 阅读更多 →
微信二次开发如何设计人工接管锁?WechatApi 多客服同时处理同一客户时的并发控制

微信二次开发如何设计人工接管锁?WechatApi 多客服同时处理同一客户时的并发控制

官网友情链接: wechatapi.net 微信二次开发如何做好友来源归因?WechatApi 从二维码到CRM渠道的完整链路 个人微信客户从哪里来,是销售和运营非常关心的问题。 客户可能通过: 官网二维码; 活动海报; 销售…

2026/10/9 2:43:43 阅读更多 →
Notepad++下载安装

Notepad++下载安装

概述 notepad是可高亮的记事本。 下载 链接:notepad下载 打开链接,选择下载 会跳出三个网盘,选择其中一个,此处我选择夸克,然后转存的网盘 在网盘中将安装包下载到本地,得到压缩包 安装 新建一个文件…

2026/10/9 2:42:43 阅读更多 →

日新闻

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API这个话题,隔三差五就会在群里被翻出来讨论一次。上周还有个同事线上处理一个订单超时问题,排查到最后发现是ZonedDateTime序列化后时区丢了,用户在下单当天晚上看到的时间整整差了8个小时。这类问题几乎每个做Java开发的人都遇到过…

2026/10/9 0:00:49 阅读更多 →
EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

前几个月我手头有好几台机器需要互相访问:办公室台式机、家里 NAS、还有一台云主机。如果只是偶尔传个文件倒还好,问题是工作场景经常要在几处环境之间来回切换,每次都先登录跳板机再层层代理,实在折腾。我先后试过端口映射、自建…

2026/10/9 0:00:49 阅读更多 →
AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent 这个词在过去一年里被反复提及,但真正动手搭过一套能跑起来的 Agent 系统的人都知道,从"知道它是什么"到"让它稳定干活"之间隔着一整套工程决策。我前后参与过几个 Agent 项目的落地,从最初用现成框架拼装&…

2026/10/9 0:01:50 阅读更多 →

周新闻

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/8 15:26:40 阅读更多 →
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/8 10:10:36 阅读更多 →

月新闻

我发现了一个新思路:用 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/8 21:13:17 阅读更多 →
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/8 15:26:17 阅读更多 →
黑夜航拍船只数据集训练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/7 13:34:55 阅读更多 →