Skip to main content
· 11 min read

contextBridge 解决的不是"怎么把 API 传给页面",而是"怎么让页面用 Node 能力但看不到 Node 环境"。

  1. 本质:在 isolated world 创建一道有边界的桥,preload 能跑 Node,页面只能摸到白名单 API
  2. 机制:preload 跑在 isolated world,主世界(页面)拿不到 preload 的闭包变量,只能拿到白名单出口
  3. 能力exposeInMainWorld 暴露受限 API,序列化约束守住边界(Function、Symbol、Error 不能裸传)
  4. 类型系统:preload 内 typeof api + 全局 Window['electronAPI'] 声明,编译期对齐
  5. 反模式:暴露整个 ipcRenderer、暴露 process、关掉 contextIsolation
· 7 min read

Electron 渲染层的真正主角不是 BrowserWindow,是 webContents

  1. 定位:每个渲染页面背后都有一个 webContents 实例
  2. 三种获取方式:BrowserWindow.webContentswebContents.getAllWebContents()<webview> 标签
  3. 核心 API:loadURLloadFile、导航事件、executeJavaScriptopenDevTools
  4. 关键推送webContents.send 是 main 主动通知 renderer 的唯一通道
  5. 与 IPC 的关系:send 单向 main → renderer,invoke 反向,组合用才能双向
  6. 踩坑:webContents 销毁后再 send 直接抛错
  7. 与视图的关系:webContents 是内容,BrowserWindow / webContentsView 是宿主
· 6 min read

Git submodule 是 Git 原生的多仓库嵌套机制,父仓库只记 commit hash,不存文件内容。

  1. 是什么:主仓库子目录里嵌入独立 Git 仓库,各自有 commit 历史
  2. 三个核心命令submodule add / init + update / update --remote
  3. 典型场景:第三方库源码嵌入、独立发布周期的子项目
  4. 致命坑 1新 clone 是空目录,必须 init + update 才有内容
  5. 致命坑 2:子模块默认 detached HEAD,commit 容易推不上去
  6. 致命坑 3:主仓库切分支后忘了 update --remote,代码对不上
  7. 替代方案:monorepo 处理强耦合,subtree 处理简单嵌入
· 6 min read

裸装的 DeepSeek Harness 是毛坯房,介绍一些不错的插件补齐 Agent 该有的样子。

  1. 先装市场dsh-market 是入口,装完才谈得上装别的
  2. 补基础设施:侧边栏(文件 / 终端 / Git / 子任务)优先级最高
  3. 控成本:余额查询 + 限额熔断,涨价后这是刚需
  4. 加能力:视觉模型接入、会话跨工具双向迁移
  5. 做排查:上下文查看器暴露轮次 / 压缩 / token 构成
  6. 提效率@ 文件引用增强、Skills 管理、皮肤市场
  7. 生态现状:近千款插件重复率极高,筛选成本大于安装成本
· 7 min read

Pi 极简内核决定了所有"看起来复杂"的功能都靠外挂。

  1. 设计哲学:极简内核 + plugin + skills 双路径,所有可定制能力外挂
  2. 安装姿势:从官网 packages 列表复制命令,全局默认;加 -l 改为项目级
  3. 8 大常用插件:联网、并行子代理、MCP 适配器、BTW、Plan Mode、Goal、Dynamic Workflows、微信
  4. Skills 协议:放 .agents/skills/ 目录即生效,Playwright CLI 是典型用法
  5. Web UI:社区 star 数最高项目接管插件 / 技能管理面板
  6. Pi 自己写插件:内置开发知识,UI 定制、权限保护类插件都能跑通
· 8 min read

AI 时代浏览器的角色正在反转 —— 过去三年「把 agent 塞进浏览器」(agent in browser,AI 浏览器)这条路线已经被验证为死胡同,OpenAI Atlas 不到 10 个月就宣告停服;新范式是「把浏览器塞进 agent」(browser in agent,内嵌浏览器),浏览器作为 agent 的工具组件存在。

  1. 范式反转:浏览器在 AI 时代从「容器」降级为「工具」。
  2. 根本原因:用户心智太窄,必须先有想法才打开浏览器;而 agent 时代用户常驻的是 agent。
  3. 新范式优势browser in agent 把浏览器变成按需工具,避免了独立 AI 浏览器的心智负担。
  4. 规律可推广:不局限于浏览器,凡是「agent 接管传统软件」都跑得通,凡是「独立 AI 垂直软件」都可能会重演 Atlas 结局。
  5. 趋势结论:用户的工作流以 agent 为中心,传统软件是被调用的工具。
· 8 min read

Pi 把"一次会话"抽象成可遍历的工作单元,五大命令撑起完整的生命周期管理。

  1. 核心概念:Session 是 Pi 多轮对话的工作单元,三次问答 + 一次 /new 就是一段独立历史
  2. 启动与续接/new 新开、pi -c 续最近、pi -r 交互式挑选历史 session
  3. /tree 回退:Pi 特别的对话树设计,历史可跳到任意节点,从那里继续或开新分支,三选项可控制回退方式
  4. /fork vs /clone/fork 从单节点分叉只带之前历史,/clone 复制整棵会话树
  5. 代码回退/tree 只回退对话不碰文件,必须 git 配合才能回滚实际代码改动
  6. /compact vs /new:压缩省空间但模糊重点,清空彻底但丢弃中间细节
· 7 min read

只给四个工具不是减配,是把所有会因团队而异的东西都从内核里拿出去。

  • 默认工具只有 个:read / bash / edit / write
  • MCP、sub-agent、待办事项、权限弹窗一律不进核心
  • 理由:每个团队的权限规则都不一样,内置任何一套都是错的
  • 循环内核极简:模型决定动工具,工具返回结果,再交回模型
  • 内核之外开了三十多个插口,从会话启动到归档通知
  • 提示词只能写原则,tool_call 前的 Hook 代码才是停止键
  • 极简不等于省事,扩展继承运行账号的全部权限
· 9 min read

DeepSeek Harness 把 AI 编程工具的每个组件都做成可插拔插件——模型适配器、工具注册、日志,连 AI 循环本身都能换。

  1. 定位:可拆装重组的 Agent 平台骨架,"成品车" vs "开源引擎 + 配件市场"
  2. 核心:连 AI 循环都是插件,4 层可替换 + seam 设计一处替换全局生效
  3. 标志:日志即真相,AI 看到的字节从账本重算,runtime 断言强制
  4. 适合:平台团队 / 合规重行业 / 多模型 A/B 测试;普通用户用 Codex / Claude Code 扩展够用
  5. 现状:0.1.0-rc.5 Preview,可接入绝大数模型,第三方插件鱼龙混杂,权限过大
  6. 设计模式:可逆副作用 / 类型化事件 / 文档生成 + 完整性守卫 / 防御式加载 / UI 订阅事件
· 7 min read

Claude Code 跨会话消息把多 Agent 协作从「手动搬运上下文」推进到「自动通知对方」。

  1. 核心能力:一个会话可把文字摘要发给另一个会话,接收方在原任务里继续处理
  2. 三种模式互发摘要 / 双向问答 / Claude 主动通知 改动影响
  3. 关键约束:只传文字摘要,不传完整历史,也不传文件
  4. 使用姿势ListAgents 列出可达会话,SendMessage 按名称发送,prompt 触发即可
  5. 硬门槛:Claude Code v2.1.224+,支持 macOS 与 Linux
  6. 跨机器边界:跨机器或网页会话只能回复,不能主动发起对话
  7. 关键边界这不是会话迁移,要搬完整上下文仍需恢复原会话
  8. 方向意义:多 Agent 协作从「手动衔接」走向「自动通知」,是 Agent 协作从单点走向网络的关键一步
发文趋势
近 12 个月 · 共 171
91011121234567268