- 博客(142)
- 资源 (10)
- 收藏
- 关注
原创 04 · 贯穿示例:Ada 的订单接入工作流
本文以Ada搭建订单处理工作流为例,浅析n8n核心概念与角色:从编辑器中创建节点、发布工作流,到外部触发Webhook,经由队列执行引擎逐节点运行,完成加税、调用API、生成摘要等操作。全程覆盖工作流、节点、数据项、凭据、执行等8大概念与11个关键角色,展现HTTP、JSON、API、UI、ID、DB等技术要素的协同运作。
2026-10-08 08:45:53
20
原创 03 · n8n 概念地图:8 个核心概念与 11 个关键角色
本文系统梳理n8n核心概念与关键角色,从“节点”“数据项”“连接”等基础抽象出发,构建工作流架构全景图。通过领域映射与组件职责划分,揭示触发器、执行引擎、凭据管理等11个核心组件如何协同实现事件驱动的工作流编排,为后续深度剖析奠定基础。
2026-10-08 08:45:14
25
原创 02 · n8n 为何存在:从胶水代码到工作流引擎
本文剖析n8n诞生的必然性:在“胶水代码”困境下,传统方案或不可控、或受限于云端、或难扩展。n8n以可自托管、可视化与可编程并重为设计核心,通过节点契约、凭据存储、表达式引擎、触发器与执行历史等机制,将工作流抽象为可复用、可观测、可审计的数据图,真正实现企业级自动化。
2026-10-08 08:07:53
237
原创 01 · n8n 源码解析:认知心智模型指南总览
本文是专栏「n8n 工作流引擎剖析」的第 1 篇。这是一份基于 n8n2.41.0(提交c1463d0e)源码、按"认知心智模型"方法写成的中文学习指南的开篇——先建立全局认知地图,后续文章会陆续深入到 Webhook 接入、执行引擎、表达式引擎、凭据加解密、任务运行器等具体模块的源码细节。n8n2.41.0,提交c1463d0e(2026-09-26),克隆自的浅克隆仓库。下文出现的所有源码路径均相对于该仓库中的packages/目录。
2026-10-08 07:56:14
33
原创 From PV Operations and Monitors to Modern Java Concurrency
How Dijkstra's PV operations and Hoare's monitors map onto modern Java: Semaphore as P/V, synchronized and wait/notify as a Mesa-style monitor, ReentrantLock + Condition, AQS, and pitfalls traced to theory.
2026-10-06 16:46:20
167
原创 从 PV 操作、管程到现代 Java 并发
本文揭示了操作系统中的PV操作与管程思想如何在Java并发中重生:synchronized、wait/notify源自管程,Semaphore即信号量的直接实现,而ReentrantLock与Condition则是显式管程。理解其背后原理,方能掌握为何wait()需置于while循环、为何用notifyAll()等“江湖规矩”。从OS内核的futex到JVM的AQS,层层抽象皆源于同一思想——用结构化方式管理共享资源的访问与同步。
2026-10-06 16:44:19
395
原创 Reverse Proxy: First Principles, from the Bank Edge to the AI Gateway
First principles on the reverse proxy: the only server the client ever sees. Through the bank edge chain Keycloak -> Kong -> OPA -> Spring Boot (TLS, routing, rate limiting), then the same pattern as an AI gateway: model routing, token metering, DLP.
2026-09-30 11:26:24
182
原创 反向代理:从银行边缘网关到 AI 网关的第一性原理
从第一性原理拆解反向代理:它不是负载均衡器的别名,而是客户端唯一能看到的服务器。以银行边缘链路 Keycloak → Kong → OPA → Spring Boot 为例,串起 TLS 终结、路由、限流、审计;再延伸到 AI 网关(模型路由、Token 计量、LLM 响应 DLP)与银行合规场景。
2026-09-30 11:25:18
200
原创 用 PKI 做用户与设备认证:把凭证从「共享秘密」换成「硬件私钥」
本文提出以硬件存储的椭圆曲线密钥取代传统凭证,实现更安全的身份认证。通过私钥永不离开硬件、公钥证书可验证、签名绑定会话挑战等机制,解决共享秘密的三大缺陷:数据库泄露、重放攻击与钓鱼欺骗。选用ECC(如P-256或Ed25519)因密钥小、性能优且广泛支持硬件安全模块。关键在于私钥存于TPM/Secure Enclave等可信环境,配合生物识别与密钥认证(attestation),确保身份真实性。注册阶段依赖带外信任,结合一次性令牌与硬件证明,由CA签发短期证书,最终构建可规模化、抗攻击的零信任认证体系。
2026-09-24 10:34:43
177
原创 Nginx 做反向代理:角色、实现,以及那些会咬人的默认值
本文厘清“Nginx 与反向代理”的范畴关系:反向代理是角色,Nginx 是其实现之一。核心在于理解其事件驱动架构如何实现高并发、连接复用与负载均衡,并揭示 proxy_pass 路径规则、请求头继承机制及缓冲策略的深层影响。重点提醒:斜杠陷阱、动态上游解析、X-Forwarded-For 安全处理与流式场景下的缓冲缺陷,是运维中常见故障根源。
2026-09-24 10:24:52
194
原创 Spring Boot 启动生命周期:内嵌 Tomcat 到底是怎么跑起来的
Spring Boot Web 应用不是把 WAR 丢进独立安装的 Tomcat,而是 java -jar 在同一个进程里同时拉起 JVM、Spring Boot 和内嵌 Tomcat。本文按顺序拆开整个启动过程:可执行 JAR 的结构与构建打包、SpringApplication.run 与容器 refresh 的次序、Tomcat 已初始化与真正开始监听的区别,以及为什么 ApplicationReadyEvent 和就绪探针才是可以接流量的信号。
2026-09-23 17:58:59
521
原创 Playwright:把端到端测试从「玄学」变回工程
Playwright 是微软开源的端到端测试框架,支持 Chromium、Firefox、WebKit 三大浏览器,具备自动等待、重试断言、用户级定位器等特性,有效解决传统 E2E 测试中“等待时机”与“选择器脆弱”问题。其架构采用多 worker 并行运行,每个测试独立上下文,结合网络拦截、录制工具与可视化报告,提升稳定性与开发效率。通过 codegen 录制、setup 登录复用、API Mock 等功能,实现高效、可靠的自动化测试与浏览器任务脚本。
2026-09-23 17:58:07
269
原创 Public Key Infrastructure for User and Device Authentication
Using an ECC key pair held in device hardware as the credential, instead of a password, OTP or bearer token. Why a shared secret cannot do what a private key can; the mechanism, the comparison, and what breaks it.
2026-09-22 14:13:21
207
原创 Nginx as a Reverse Proxy
Reverse proxy is a role; Nginx is one implementation. This walks the two-connection lifecycle everything follows from, fan-out and TLS termination, the Kubernetes dynamic-upstream pitfall (host resolution cached at startup), SSE handling, and a hardening c
2026-09-22 14:12:00
210
原创 Agent、Skill 与 MCP:三层职责的边界在哪里
Agent、Skill、MCP 是三层互相垂直的职责:Agent 是运行时,Skill 是知识包,MCP 是接线协议。本文从第一性原理拆开三者边界、各自独立的失效模式与安全模型,用反例说明缺了某一层会怎样,并给出判别规则与 MCP 部署成本陷阱。
2026-09-22 14:10:47
497
原创 Playwright: Reliable End-to-End Testing for Web Apps
Playwright 是微软开源的浏览器自动化与端到端(E2E)测试框架,一套 API 驱动 Chromium、Firefox、WebKit。本文讲解它消除 flaky 测试的机制:自动等待、可重试的 web-first 断言、面向用户的 getByRole 定位器与隔离的 browser context,并给出配置、storageState 复用登录、page.route 网络打桩、fixtures 与页面对象、Trace Viewer 调试和 CI 分片实践。
2026-09-21 09:59:57
63
原创 Spring Boot Startup Lifecycle: Hosting an Application With Embedded Tomcat
本文梳理 Spring Boot Web 应用的启动生命周期:Gradle bootJar 打包出内嵌 Tomcat 的可执行 JAR,JarLauncher 启动 Start-Class,随后 Servlet 上下文刷新、Tomcat 连接器启动、DispatcherServlet 与 Spring Security 过滤器链注册,最后 ApplicationRunner 执行、就绪探针放行。重点区分 Tomcat initialized 与 application ready 的差别。
2026-09-21 09:58:04
158
原创 CountDownLatch in Java
CountDownLatch 是 JUC 中最小的协调原语:一个一次性、无所有者的倒数计数器,归零时一次释放所有等待线程。本文讲清它的 API 与 AQS 共享模式实现,给出三种用法——等待 N 个任务完成、用 1 个闩当发令枪让 N 个线程同时开跑、带超时的 await——并结合 Spring Boot 启动时并行预热缓存的实例,梳理常见坑与 CyclicBarrier、Semaphore、CompletableFuture 的选型。
2026-09-18 15:36:59
310
原创 User Behaviour Analysis With Tealium and Sentry
User Behaviour Analysis (UBA) leverages Tealium (TMS/CDP) for tracking user actions like page views and conversions, and Sentry (APM/error monitoring) to capture errors, performance issues, and session replays. Tealium enables instrumenting once for multi-
2026-09-18 15:35:40
383
原创 TTY, PTY, and Non-TTY Shell Sessions
TTY、PTY与非TTY的本质区别在于标准流连接的设备类型:TTY为硬件或软件模拟的终端设备,提供行编辑、信号处理、窗口大小等终端特性;PTY是软件实现的伪终端,实际使用中几乎所有的终端会话均为PTY;非TTY则连接管道、文件或套接字,不具终端功能。关键判断依据为isatty()函数。真正影响程序行为的是“是否为TTY”,而非具体实现方式。
2026-09-16 13:13:14
212
原创 uv:用一个工具替换整条 Python 工具链
uv 是由 Astral 开发的统一 Python 工具链,以单个静态二进制替代传统碎片化工具(如 pyenv、pip、poetry 等),实现解释器管理、虚拟环境、依赖锁定与项目构建一体化。通过 uv init 初始化项目,uv add 自动创建环境并生成跨平台的 uv.lock 锁文件,确保本地与 CI 环境一致。其核心优势在于将隐式状态显式化,支持 PEP 723 脚本元数据与无缝迁移,显著提升开发效率与可复现性。
2026-09-16 13:11:03
467
原创 Hidden Reasoning Tokens Are Silently Truncating Your Structured JSON Output
Reasoning models bill hidden chain-of-thought from the same max_tokens budget as the visible answer, so structured JSON truncates intermittently. Diagnose it via reasoning_tokens, then cap reasoning — a 150-token cap beat a bigger one.
2026-09-16 13:08:07
608
原创 12. 完整重演:一句话请求的完整旅程 + 动手练习
本文将八个角色整合为一条连续时间线,详述从按下回车到任务完成的每一毫秒进程:从启动加载、会话初始化,到系统提示装配、LLM请求发出、流式响应接收,直至首次工具调用执行。全程标注关键步骤、部件上场时机与可替换点,附七个动手练习与速查卡,助你深度掌控协作流程。
2026-09-15 08:41:26
214
原创 11. 能力接缝:文件、命令、沙箱、审批、子代理
本文深入解析DSH架构中的“接缝”机制:一个完整的可替换能力需包含服务定义、提供者与消费者三者,缺一不可。通过一次provider替换,即可将Bash、PTY、LSP等能力整体迁移至远程,实现“零代码改动”的环境切换。沙箱采用三档策略(只读/工作区写入/全权),强调文件效果管控,并诚实声明“部分执行”事实。审批系统遵循fail-closed原则,四态输出确保安全可控。子代理接缝设计使Claude Code与Codex成为可调用的独立组件,体现架构的灵活性与可扩展性。
2026-09-15 08:40:34
153
原创 10. 工具注册表与执行管线:一次工具调用要过五道关
一次工具调用要过五道关:模型只看见 ToolSchema(name/description/parameters),execute()、isConcurrencySafe() 等宿主字段绝不泄漏;并发安全默认"不安全",需显式声明;allow/deny/ask 三态决策遵循 fail-closed,审批不可用即拒绝;finalizeContent 快照保证重放一致;Code Mode 下模型直呼原生工具会被直接拒绝。
2026-09-14 13:40:18
448
原创 09. LLM 接缝:把“厂商协议“关进一个可替换的盒子
本文详解 LlmAdapter 八条契约及其对应的真实事故防护,涵盖流式响应顺序、工具参数保真、错误统一处理、单次调用语义、超时兜底、上下文溢出归一化、归属头注入及空回复重试等核心机制。重点解析 llm/stream 水瀑布拦截点前置设计,实现缓存/回放无需改核心逻辑;并通过 prepareCall() 保障配置一致性与重试策略捕获,确保路由热替换下的日志可追溯性与行为确定性。
2026-09-14 13:37:24
293
原创 08. 系统提示装配:模型看见的前缀是被“拼“出来的
本文详解Prompt装配机制中PromptSection的有序拼接逻辑,揭示order约定、complete段落独占系统提示的设计原理,阐明PromptContext与Section分离以保障KV Cache命中率的核心考量,并解析变量插值、工具schema动态筛选与遮蔽机制,实现安全、高效、可预测的提示生成。
2026-09-14 13:33:36
223
原创 07. Agent Loop:一个 turn 到底发生了什么
turn 与 step 的精确定义;inbox 两条队列 next-turn/next-step 与 followup/steer/inject 三个别名;agent/pre-step 这个决定模型看见什么的拦截点;工具调用的并发调度(barrier 与滚动池);取消、错误恢复与压缩重试如何在同一条时间线上共存。
2026-09-11 23:04:40
146
原创 06. 会话日志:唯一真相源,以及“模型可见即已记录“
逐条读 SessionEvent 事件表:消息历史是派生出来的而不是存下来的;turn/step/user/assistant/chunk/tool-call/tool-result 各记什么;为什么连原始流式分片都要落盘;以及那条运行时不变量——任何进入模型请求的东西都必须能从日志重建。
2026-09-11 23:03:21
100
原创 05. 组装层:Profile、Bundle、Patch 与 Agent Preset
讲启动时插件树如何从空列表叠出来:bundle 层→profile 补丁→home 补丁→--patch 覆盖层;dsh --dump-config 为什么是这个项目最该先跑的命令;宿主平面与代理平面这条分界线——谁能拥有注册表、谁只能拥有工具;一个 preset 为什么必须待在带 isolate 的 group 里。
2026-09-11 23:02:13
221
原创 04. Cordis 内核:为什么“一切皆插件“不是口号
拆解 DeepSeek Harness 内核 Cordis:插件即服务、上下文即仓库、inject 声明依赖、类型化事件、注册即可撤销效果五个概念;emit/waterfall/parallel/serial 四种派发模式;waterfall 的 next() 为何是环绕中间件而非回调链;'没有特权核心可打补丁'的代码后果。
2026-09-11 23:00:55
387
原创 03. 概念地图:八个概念、八个角色、一个运行示例
本文系统构建DSH架构全景:以八大核心概念(如插件、可撤销效果、类型化事件等)为基石,定义八类角色(如Cordis内核、Agent Loop等)的职责边界与协作逻辑,通过一张协作总览图揭示启动、会话、回合三级流程。结合12步运行示例,明确“所有模型可见事实皆源于只追加日志”的设计原则,实现架构可复现、可拆解、可替换,为后续深度解析奠定基础。
2026-09-10 18:47:45
156
原创 02. DeepSeek Harness 是什么:定义、边界与生态位置
一句话定义 DeepSeek Harness:模型之外那层可替换的智能体外壳。本文拆解它的两句设计信条各自换来什么,它不是什么(不是模型、不是 IDE、不是又一个 Agent 编排 SDK),它与 Claude Code、Codex、LangGraph、MCP 的关系,以及四个 preset 的定位。
2026-09-10 18:45:51
507
原创 01. 为什么需要 harness:模型再强,也不会自己去读文件
2025年,一个两百行的AI代码助手循环,背后是六个月对上下文超限、工具执行、用户中断、日志追溯等系统工程难题的攻坚。真正的差距不在于模型,而在于“harness”——那层让LLM能理解环境、调用工具、持续工作的外壳。当一体化产品将壳焊死,可替换性、可审计性与可复现性便成奢望。2026年,开源可插拔的harness成为独立品类:一切皆插件,每轮运行可追溯。它不仅是技术基建,更是推动Agent生态从黑盒走向透明、协作与演进的关键。
2026-09-10 18:44:08
231
原创 DeepSeek Harness 深入指南 / DeepSeek Harness Series
本系列深度拆解 DeepSeek Harness(DSH)如何将“模型 + Harness = Agent”从口号落地为可插拔、可审计的智能体架构。通过12篇文章,逐层剖析Cordis内核、组装层、会话日志、Agent Loop等八大关键角色,以“读package.json、改README、跑lint”为例,全程追踪12步执行链,揭示每一步皆可替换的插件化设计。强调“骨架即稳定”,即使API变动,核心思想仍可复用。面向开发者,提供可重演、可定制的Agent构建范式。
2026-09-10 18:43:21
365
原创 MCP 模型上下文协议:十二、自测、练习与源码入口
这是MCP指南系列的收官篇,提供自测题检验理解、按顺序的动手实践(从示例到OAuth)、源码阅读入口、延伸阅读,并说明系列刻意未涉及的领域。旨在将概念转化为实战能力。
2026-09-08 22:00:24
158
原创 MCP 模型上下文协议:十一、完整走查 · 端到端全深度重跑
系列主干的收尾篇:把 Ana 排查滞留订单的那一个请求,端到端、全深度地重跑一遍,看它如何依次穿过宿主、客户端、传输层、服务器与授权层五个组件。全程约 70 秒、两道人工审批闸门、一条完整审计记录——此前各篇讲过的每一个概念,都会在这里被看见正在干活。
2026-09-08 21:03:28
187
原创 MCP 模型上下文协议:十、授权与信任边界 · OAuth 2.1
MCP 授权层:远程服务器如何用 OAuth 2.1(授权码 + PKCE、动态客户端注册、受众绑定)认证用户,本地 stdio 服务器为什么完全没有鉴权、又靠进程边界与最小权限保护。并解释信任模型的核心——模型没有权限,人才有——以及提示注入、令牌透传、混淆代理这些真实攻击面。
2026-09-08 21:00:59
298
原创 MCP 模型上下文协议:九、深入服务器 · 工具、资源与提示
MCP服务器通过工具、资源、提示三个原语分别面向模型、应用和用户,规范各自职责。工具设计应注重描述准确、粒度合理、输出受限,错误信息需让模型可读可修正。服务器可反向请求客户端帮助,遵循最小权限原则,才能让模型高效正确地使用其能力。
2026-09-08 20:58:38
215
原创 MCP 模型上下文协议:八、深入传输层 · stdio 与 Streamable HTTP
深入传输层:stdio 与 Streamable HTTP 各自如何给字节流分帧、HTTP 传输为什么长成现在这样(会话 id、SSE 断点续传),以及各自坏掉时会发生什么。这一层对 MCP 语义一无所知——锚定在贯穿示例的第 0 步与第 6 步。
2026-09-07 13:34:24
469
pro asp.net mvc2 framework
2010-12-04
Understanding the Linux Kernel
2010-12-31
jQuery Novice to Ninja
2010-12-31
Architecting Angular Applications with Redux, RxJS, and NgRx
2018-12-20
Angular Router
2018-12-20
More efficient C#
2010-12-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅