需通过自定义插件机制实现能力延伸:qoder桌面版/cli支持python插件开发,采用后处理钩子模式,在ocr识别等主任务完成后调用receive方法处理list[str]输入,返回结构化结果并热加载生效。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您希望为Qoder平台添加特定业务逻辑或集成自有服务,但发现默认功能无法满足需求,则需要通过自定义插件机制实现能力延伸。以下是针对Qoder扩展开发的实操路径:
一、理解Qoder插件架构与执行时机
Qoder插件系统采用“后处理钩子”模式,在核心引擎完成主任务(如OCR识别、代码分析、自然语言生成)后触发。所有插件必须实现统一接口,并在启动时向全局插件管理器注册,确保其receive方法能被正确调用。
1、确认目标Qoder形态:IDEA插件版不支持用户级插件开发;仅Qoder桌面版及CLI环境开放Python插件注册能力。
2、识别执行阶段:插件仅在文本/代码/图像等原始输出生成后介入,不可修改主模型推理过程。
3、明确输入契约:插件receive方法接收List[str]类型参数,即结构化后的原始识别结果或代码片段列表。
二、创建标准插件目录结构
每个插件必须以独立文件夹形式存在,命名使用小写加短横线(kebab-case),且必须包含SKILL.md主声明文件。该结构是Qoder识别并加载插件的唯一依据。
1、在Qoder工作区根目录下新建文件夹,例如:invoice-field-extractor。
2、进入该文件夹,创建必需文件:SKILL.md。
3、按需添加scripts/子目录,存放Python脚本(如extract_invoice.py)或Shell工具(如notify-wecom.sh)。
4、若需引用外部文档,建立references/目录并放入api-guide.md等说明文件。
三、编写SKILL.md声明文件
SKILL.md是插件的元数据与行为定义中心,Qoder通过解析此文件获取插件名称、描述、触发条件及入口脚本路径。文件必须严格使用Markdown格式,且首行不得为空。
1、在SKILL.md顶部添加FrontMatter区块,包含name与description字段:
```yaml
name: 发票字段提取器
description: 从OCR识别文本中自动抽取发票号码、开票日期、金额三项结构化字段
```
代码编辑 CLI 工具集合:Cursor CLI(agent)和 Qoder CLI(qodercli),用于代码修改、重构、Code Review 及自动化代码任务。
2、在FrontMatter下方空一行,添加usage说明段落,描述典型输入输出示例。
3、指定执行脚本路径:在文件末尾添加script: scripts/extract_invoice.py,路径须相对于插件根目录。
四、实现核心处理逻辑(Python示例)
插件逻辑必须封装于receive方法中,该方法接收List[str]并返回dict或None。返回值将作为插件输出合并至主结果流,供前端展示或后续插件链式调用。
1、在scripts/目录下新建extract_invoice.py。
2、编写标准接收函数:
```python
def receive(texts):
import re
result = {}
full_text = "\n".join(texts)
invoice_no = re.search(r"发票号码[::]*([A-Z0-9]+)", full_text)
if invoice_no:
result["invoice_number"] = invoice_no.group(1).strip()
return result
```
3、确保脚本无顶层执行代码,仅定义receive函数——Qoder通过import方式动态加载并调用。
五、注册并启用插件
插件需显式注册至Qoder运行时环境才能生效。注册操作不依赖重启,支持热加载,但要求路径合法且语法无误。
1、打开Qoder终端(快捷键Ctrl+`),切换至插件所在父目录。
2、执行注册命令:qodercli plugin register ./invoice-field-extractor。
3、观察终端返回信息:成功时显示Registered plugin: invoice-field-extractor (v1.0.0)。
4、触发一次OCR或代码分析任务,检查右侧边栏是否出现新插件输出面板,并显示提取字段。










