oh-my-pi 扩展开发教程:TS 模块即扩展,与内置功能同权

发布时间:2026/8/30 10:51:49

oh-my-pi 扩展开发教程:TS 模块即扩展,与内置功能同权
oh-my-pi 扩展开发教程TS 模块即扩展与内置功能同权【免费下载链接】oh-my-pi⌥ Coding agent with the IDE wired in项目地址: https://gitcode.com/GitHub_Trending/oh/oh-my-pioh-my-piomp是一个内置 IDE 能力的 AI 编码代理支持 60 模型提供商与 31 个内置工具。它的最大亮点之一是扩展开发极其简单一个 TypeScript 模块就是一个扩展。把文件放进指定目录即可注册事件钩子、自定义工具、斜杠命令与内置功能完全同权——这是本文面向新手的 oh-my-pi 扩展开发完整教程。一、什么是TS 模块即扩展在传统插件系统里你可能需要实现一套接口、写清单文件、跑构建脚本。而 oh-my-pi 的扩展只需要满足一个约定模块的默认导出是一个工厂函数。import type { ExtensionAPI } from oh-my-pi/pi-coding-agent; export default function myExtension(pi: ExtensionAPI) { // 在这里注册事件、工具、命令…… }工厂函数接收一个piExtensionAPI对象所有能力都挂在上面。加载流程只有三步发现扫描约定目录找到.ts/.js文件导入用 Bun 直接 import 模块支持 TS 原生无需编译执行工厂注册阶段完成后ExtensionRunner.initialize()接入运行时官方文档docs/extensions.md、加载机制详解见 docs/extension-loading.md。二、扩展放在哪三个自动发现位置 不用任何注册步骤把文件放到以下任一位置就会被自动加载级别路径适用场景项目级项目/.omp/extensions/只对当前仓库生效随代码提交共享用户级~/.omp/agent/extensions/全局生效显式指定命令行-e ./my-ext.ts或配置文件的extensions数组开发调试期最方便配置文件的写法很简单~/.omp/agent/config.ymlextensions: - ~/my-exts/safety.ts - ./local/ext-pack目录形式也支持目录里放index.ts即可若带package.json可用omp.extensions字段声明多个入口文件。加载顺序为项目级 → 用户级 → 插件包 → 显式配置同一路径只加载一次。三、五分钟写出第一个扩展 ✨官方示例 hello-extension 只有 27 行完整覆盖了两大核心能力export default function helloExtension(pi: ExtensionAPI) { // ① 事件监听会话启动时弹一条通知 pi.on(session_start, async (_event, ctx) { ctx.ui.notify(Hello from hello-extension!, info); }); // ② 斜杠命令/hello 向对话中注入一条消息 pi.registerCommand(hello, { description: Send a greeting into the conversation, handler: async (args, ctx) { pi.sendMessage({ content: Hello, ${args}!, display: true }); }, }); }一个模块里可以同时组合 事件处理器pi.on(...)——会话、提示词、工具全生命周期️ LLM 可调用的工具pi.registerTool(...)⌨️ 斜杠命令pi.registerCommand(...)、快捷键、命令行参数 自定义消息渲染器 消息注入 APIsendMessage/sendUserMessage/appendEntry四、与内置功能同权工具、拦截与 UI这是 oh-my-pi 扩展系统的精髓。扩展注册的工具与内置的bash、read、edit走同一条注册表模型调用时完全无法区分而内置工具的执行又全部经过扩展的拦截层。拦截内置工具安全护栏示例官方 safety-hook 示例 展示如何否决内置 bash 工具的调用pi.on(tool_call, async (event) { if (event.toolName ! bash) return; const cmd String(event.input?.command ?? ); if (/\brm\s-rf\s\//.test(cmd)) { return { block: true, reason: refusing to delete root filesystem }; } });tool_call事件支持先执行拦截block阻断或改写inputtool_result支持后执行修补结果内容——对内置和扩展工具一视同仁。包装内置工具而不重写它如果你的扩展工具名与内置工具同名如包装write加日志ctx.invokeTool(...)可以直接委托执行原生实现无需重新实现文件写入逻辑且不会突破审批边界。深入会话与 UI ️ctx.ui.notify/select/confirm/input直接驱动 TUI 对话框与通知pi.sendMessage支持steer打断当前运行、followUp排队、nextTurn下一轮注入三种投递方式pi.appendEntry(...)可把扩展状态持久化进会话切分支/树时自动恢复registerProvider甚至能让扩展注册新的模型提供商用法量显示与内置提供商一致五、加载生命周期两条必须记住的规则 ⚠️注册期 ≠ 运行期工厂函数执行时只能注册此时调用pi.sendMessage()等运行动作会抛出ExtensionRuntimeNotInitializedError。正确姿势是先注册行为放进事件/命令/工具回调。失败相互隔离单个扩展加载失败导入失败、导出不是函数、工厂抛异常只产生一条错误记录不会拖垮其他扩展。另外两个新手常踩的坑后台任务别用裸setInterval扩展在进程内运行、无沙箱隔离裸定时器里抛异常会直接搞崩整个会话。请用ctx.setInterval/ctx.setTimeout异常会被捕获上报且会话结束时自动清理。命令名冲突与内置命令重名时会被跳过并给出诊断ctrlc等保留快捷键不可注册。六、开关与调试 ️目的方法临时禁用全部自动发现启动加--no-extensions显式-e路径仍生效禁用某个扩展配置disabledExtensions: [extension-module:foo]名称取自文件路径开发时热加载直接改文件再启动模块按mtime缓存失效重新导入七、进一步阅读 扩展 API 全量清单事件名、上下文方法、渲染器docs/extensions.md发现路径、加载顺序、失败处理docs/extension-loading.md官方示例hello-extension、safety-hook可运行的 Python/代码执行与图表能力扩展可以围绕它们构建工作流总结在 oh-my-pi 中扩展开发 写一个默认导出工厂函数的 TS 文件 放进.omp/extensions/。事件、工具、命令、UI、甚至提供商注册全部开箱可用且与内置功能同权同拦截。从 hello 到安全护栏最快五分钟即可上手。【免费下载链接】oh-my-pi⌥ Coding agent with the IDE wired in项目地址: https://gitcode.com/GitHub_Trending/oh/oh-my-pi创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

GitNexus大仓库索引性能调优:Worker数量、内存上限与分块策略

GitNexus大仓库索引性能调优:Worker数量、内存上限与分块策略

2026/8/30 10:41:49

GitNexus大仓库索引性能调优:Worker数量、内存上限与分块策略 【免费下载链接】GitNexus GitNexus: The Zero-Server Code Intelligence Engine - GitNexus is a client-side knowledge graph creator that runs entirely in your browser. Drop in a git repositor…

Ghidra 逆向工程工具快速部署:5 步从拿到二进制到团队协作

Ghidra 逆向工程工具快速部署:5 步从拿到二进制到团队协作

2026/8/30 10:41:49

Ghidra 逆向工程工具快速部署:5 步从拿到二进制到团队协作 【免费下载链接】ghidra Ghidra is a software reverse engineering (SRE) framework 项目地址: https://gitcode.com/GitHub_Trending/gh/ghidra Ghidra 是美国国家安全局开源的软件逆向工程&#…

Cloudflare Computer MCP部署实战:MCP_TOKEN安全配置与客户端接入完整流程

Cloudflare Computer MCP部署实战:MCP_TOKEN安全配置与客户端接入完整流程

2026/8/30 10:41:49

Cloudflare Computer MCP部署实战:MCP_TOKEN安全配置与客户端接入完整流程 【免费下载链接】computer Give your agent a computer 👾 项目地址: https://gitcode.com/GitHub_Trending/computer1/computer Cloudflare Computer(comput…

C++全排列算法(STL)

C++全排列算法(STL)

2026/8/30 11:51:52

文章目录1.next_permutation2.prev_permutationSTL提供了两个用来计算排列组合关系的算法&#xff0c;分别是next_permutation和prev_permutation。1.next_permutation //获得之后的字典序 #include<iostream> #include<algorithm> using namespace std; int a[3]…

英伟达算力生态全解析:从云端API调用到NIM自部署实战

英伟达算力生态全解析:从云端API调用到NIM自部署实战

2026/8/30 11:51:52

最近科技圈除了各家大模型版本更新之外&#xff0c;还有一条商业消息值得关注&#xff1a;消息称英伟达暂停了与多家 AI 公司的收益分成协议&#xff0c;目的是规避反垄断审查。很多开发者看到这类新闻&#xff0c;第一反应是“这是商业资本层面的事&#xff0c;跟我有什么关系…

荣耀最新的手机adb无法连接的问题

荣耀最新的手机adb无法连接的问题

2026/8/30 11:51:52

当选择文件传输时&#xff0c;无法adb连接&#xff0c;当选择Midi设备时可以连接。 在linux下用使用lsusb观察,当接入"选择Midi设备"时其vid为0e8d 当接入"文件传输"时其vid为339b lsusb 里的格式是&#xff1a; ID VID:PID 所以这条&#xff1a; ID 1…

字节跳动客户端实习笔试全解析:考点、编程题与代码习惯

字节跳动客户端实习笔试全解析:考点、编程题与代码习惯

2026/8/30 11:51:52

字节跳动2017客户端工程师实习生笔试题&#xff0c;我当年是真刀真枪考过的。那会儿今日头条已经火到不行&#xff0c;身边投客户端实习岗位的同学一大片&#xff0c;笔试链接发过来的时候我还挺紧张。整场考试90分钟&#xff0c;Web编辑器&#xff0c;没有IDE提示&#xff0c;…

Echo Dot 2改造:树莓派+本地LLM打造离线语音终端

Echo Dot 2改造:树莓派+本地LLM打造离线语音终端

2026/8/30 11:51:52

手上有一台吃灰多年的 Echo Dot 2&#xff0c;原以为它只能当个语音闹钟&#xff0c;或者连上蓝牙放点背景音乐。最近看了不少国外开发者把老智能音箱改造成离线语音助手的案例&#xff0c;决定自己也试一把&#xff1a;把 Echo Dot 2 的麦克风、扬声器和外壳利用起来&#xff…

Remotion 视频检索:10分钟给视频装上全文搜索

Remotion 视频检索:10分钟给视频装上全文搜索

2026/8/30 11:41:51

Remotion 视频检索&#xff1a;10分钟给视频装上全文搜索 【免费下载链接】remotion &#x1f3a5; Make videos programmatically with React 项目地址: https://gitcode.com/GitHub_Trending/re/remotion 昨晚整理一场 90 分钟的分享录像&#xff0c;我需要找到提到「…

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

2026/8/30 0:01:07

每年校招季我都会接触不少准备数据库方向笔试的同学&#xff0c;看到最多的状态就是&#xff1a;简历上写着“熟悉 MySQL”“了解索引优化”&#xff0c;一碰到数据库管理工程师的笔试卷&#xff0c;却在索引、事务、锁、备份恢复这些题目上翻车。网易这套 2018 校园招聘数据库…

数字电路时序基石:深入理解建立时间与保持时间

数字电路时序基石:深入理解建立时间与保持时间

2026/8/30 0:01:07

1. 这不是“背公式”的事&#xff1a;时间参数到底在约束什么你翻过数字电路教材&#xff0c;一定见过这两个词&#xff1a;建立时间&#xff08;Setup Time&#xff09;和保持时间&#xff08;Hold Time&#xff09;。它们常被并列写在触发器&#xff08;Flip-Flop&#xff09…

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

2026/8/30 0:01:07

1. 项目缘起&#xff1a;从赛题到超声波测距机的诞生第八届蓝桥杯单片机设计与开发国赛的题目&#xff0c;我至今记忆犹新。它没有直接给出一个花哨的名字&#xff0c;而是用“超声波测距机”这个朴实无华的功能描述&#xff0c;精准地勾勒出了考核的核心。对于当时备赛的我而言…

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

2026/8/30 0:01:07

每年校招季我都会接触不少准备数据库方向笔试的同学&#xff0c;看到最多的状态就是&#xff1a;简历上写着“熟悉 MySQL”“了解索引优化”&#xff0c;一碰到数据库管理工程师的笔试卷&#xff0c;却在索引、事务、锁、备份恢复这些题目上翻车。网易这套 2018 校园招聘数据库…

数字电路时序基石:深入理解建立时间与保持时间

数字电路时序基石:深入理解建立时间与保持时间

2026/8/30 0:01:07

1. 这不是“背公式”的事&#xff1a;时间参数到底在约束什么你翻过数字电路教材&#xff0c;一定见过这两个词&#xff1a;建立时间&#xff08;Setup Time&#xff09;和保持时间&#xff08;Hold Time&#xff09;。它们常被并列写在触发器&#xff08;Flip-Flop&#xff09…

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

2026/8/30 0:01:07

1. 项目缘起&#xff1a;从赛题到超声波测距机的诞生第八届蓝桥杯单片机设计与开发国赛的题目&#xff0c;我至今记忆犹新。它没有直接给出一个花哨的名字&#xff0c;而是用“超声波测距机”这个朴实无华的功能描述&#xff0c;精准地勾勒出了考核的核心。对于当时备赛的我而言…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/28 7:35:26

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具&#xff0c;覆盖选题构思、文献整理、内容生成、格式排版等核心场景&#xff0c;真正帮你高效搞定论文难题。 一、全流程王者&#xff1a;一站式搞定论文全链路&#xff08;一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/28 7:34:51

2026年真正好用的AI论文工具&#xff0c;核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测&#xff0c;千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队&#xff0c;覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/28 7:34:35

告别游戏崩溃&#xff1a;XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…