MonkeyCode 插件开发实战:5步创建你的第一个AI编程插件

张开发
2026/6/11 18:10:09 15 分钟阅读

分享文章

MonkeyCode 插件开发实战:5步创建你的第一个AI编程插件
MonkeyCode 插件开发实战5步创建你的第一个AI编程插件MonkeyCode 的插件系统让开发者可以扩展平台能力。无论是添加新的代码模板、集成第三方服务、还是定制AI行为插件系统都能满足。本文通过一个实际案例手把手教你开发MonkeyCode插件。插件能做什么MonkeyCode 插件可以扩展AI的Prompt模板添加自定义代码生成器集成第三方工具和服务自定义工作流步骤添加新的代码检查规则开发环境准备# 1. 克隆插件模板\ngit clone https://github.com/chaitin/monkeycode-plugin-template.git\nmv monkeycode-plugin-template my-first-plugin\ncd my-first-plugin\n\n# 2. 安装依赖\nnpm install\n\n# 3. 目录结构\nmy-first-plugin/\n├── package.json # 插件元信息\n├── src/\n│ ├── index.ts # 入口文件\n│ ├── commands/ # 命令定义\n│ ├── templates/ # 代码模板\n│ └── hooks/ # 钩子函数\n├── README.md # 插件文档\n└── test/ # 测试5步创建插件代码片段生成器我们将创建一个插件为AI提供团队自定义的代码片段模板。Step 1: 配置插件信息// package.json\n{\n name: monkeycode-plugin-team-snippets,\n version: 1.0.0,\n description: 团队代码片段模板,\n monkeycode: {\n minVersion: 1.5.0,\n type: template-provider,\n permissions: [read:workspace]\n },\n main: dist/index.js\n}Step 2: 定义代码模板// src/templates/crud-api.ts\nexport const crudApiTemplate {\n name: CRUD API Generator,\n description: 生成标准的CRUD API接口,\n language: typescript,\n framework: express,\n \n parameters: [\n { name: modelName, type: string, description: 模型名称 },\n { name: fields, type: Field[], description: 字段定义 },\n { name: authRequired, type: boolean, default: true }\n ],\n \n generate: (params) {\n const { modelName, fields, authRequired } params;\n return \nimport { Router } from express;\nimport { ${modelName} } from ../models/${modelName};\n\nconst router Router();\n${authRequired ? import { authMiddleware } from ../middleware/auth; : }\n\n// 获取列表\nrouter.get(/${authRequired ? , authMiddleware : }, async (req, res) {\n const items await ${modelName}.findMany({\n where: buildFilter(req.query),\n ...buildPagination(req.query)\n });\n res.json({ data: items, total: await ${modelName}.count() });\n});\n\n// 获取详情\nrouter.get(/:id${authRequired ? , authMiddleware : }, async (req, res) {\n const item await ${modelName}.findUnique({ where: { id: req.params.id } });\n if (!item) return res.status(404).json({ error: Not found });\n res.json(item);\n});\n\n// 创建\nrouter.post(/${authRequired ? , authMiddleware : }, async (req, res) {\n const item await ${modelName}.create({ data: req.body });\n res.status(201).json(item);\n});\n\n// 更新\nrouter.put(/:id${authRequired ? , authMiddleware : }, async (req, res) {\n const item await ${modelName}.update({\n where: { id: req.params.id },\n data: req.body\n });\n res.json(item);\n});\n\n// 删除\nrouter.delete(/:id${authRequired ? , authMiddleware : }, async (req, res) {\n await ${modelName}.delete({ where: { id: req.params.id } });\n res.status(204).send();\n});\n\nexport default router;\n;\n }\n};Step 3: 注册插件钩子// src/hooks/index.ts\nimport { PluginContext } from monkeycode-plugin-sdk;\nimport { crudApiTemplate } from ../templates/crud-api;\n\nexport function registerHooks(context: PluginContext) {\n // 注册模板提供者\n context.registerTemplateProvider({\n id: team-crud-api,\n name: 团队标准CRUD API,\n templates: [crudApiTemplate],\n \n // 匹配条件当AI需要创建API时推荐使用此模板\n matchCondition: (task) {\n return task.description.includes(API) || \n task.description.includes(接口);\n }\n });\n \n // 注册AI Prompt增强\n context.registerPromptEnhancer({\n id: team-standards,\n enhance: (originalPrompt, task) {\n return originalPrompt \\n\\n请遵循以下团队规范\\n \n - 使用Express TypeScript\\n \n - 错误响应格式: { code, message, details }\\n \n - 使用Prisma ORM\\n \n - 所有接口需要分页支持;\n }\n });\n}Step 4: 编写入口文件// src/index.ts\nimport { registerHooks } from ./hooks;\n\nexport function activate(context: PluginContext) {\n console.log(Team Snippets 插件已激活);\n registerHooks(context);\n}\n\nexport function deactivate() {\n console.log(Team Snippets 插件已停用);\n}Step 5: 测试和发布# 运行测试\nnpm test\n\n# 构建\nnpm run build\n\n# 本地测试\n# 将插件目录链接到 MonkeyCode 的插件目录\nln -s $(pwd) ~/.monkeycode/plugins/team-snippets\n\n# 发布到 MonkeyCode 插件市场\nnpx monkeycode publish插件API参考TemplateProviderinterface TemplateProvider {\n id: string;\n name: string;\n templates: CodeTemplate[];\n matchCondition?: (task: Task) boolean;\n}\n\ninterface CodeTemplate {\n name: string;\n description: string;\n language: string;\n framework?: string;\n parameters: Parameter[];\n generate: (params: Recordstring, any) string;\n}PromptEnhancerinterface PromptEnhancer {\n id: string;\n enhance: (prompt: string, task: Task) string;\n}Hook点钩子触发时机用途onTaskCreate任务创建时自动添加标签、分配模板onBeforeCodegenAI生成代码前注入团队规范、选择模板onAfterCodegenAI生成代码后自动格式化、Lint修复onBeforeCommitGit提交前代码检查、安全扫描onTaskComplete任务完成时通知、统计进阶多团队插件管理企业场景中不同团队可能有不同的插件配置// 管理后台配置\n{\n backend-team: {\n plugins: [team-crud-api, team-db-migration],\n aiModel: deepseek-v3,\n codeStyle: pep8\n },\n frontend-team: {\n plugins: [team-react-component, team-css-modules],\n aiModel: glm-4,\n codeStyle: prettier\n }\n}总结MonkeyCode的插件系统让团队可以将自己的编码规范、常用模板和最佳实践固化到平台中。AI不再是通用助手而是了解你团队的专属助手。5步就能创建一个插件快去试试吧。插件开发文档monkeycode.docs.baizhi.cloud/plugins插件模板仓库github.com/chaitin/monkeycode-plugin-templateGitHubgithub.com/chaitin/MonkeyCode

更多文章