插件管理
了解如何管理和创建插件,扩展工作空间能力
插件管理
插件是 Knodo 的扩展机制,让您可以添加自定义的 Agent 和工具。本文档介绍插件的管理和创建方法。
什么是插件?
插件是包含 Agent 定义和工具函数的扩展包。
插件目录结构可参考官方示例:
apps/plugins/javis
插件管理
进入插件管理
- 进入工作空间设置
- 点击"插件管理"选项卡
插件列表
显示工作空间中的插件:

| 字段 | 说明 |
|---|---|
| 名称 | 插件名称 |
| 版本 | 当前版本 |
| 来源 | 市场/自定义 |
| 状态 | 启用/禁用 |
| Agent 数 | 包含的 Agent 数量 |
| 工具数 | 包含的工具数量 |
绑定插件
从技能市场
最简单的方式是从技能市场安装:
- 进入技能市场
- 找到需要的Skill
- 点击或文字要求AI安装
详细了解:技能市场
上传自定义插件
上传自己创建的插件:

- 准备插件 ZIP 文件
- 点击"上传插件"按钮
- 选择 ZIP 文件
- 等待上传和验证
- 完成绑定
绑定限制
- ZIP 文件大小有限制限制,具体见界面要求
- 代码经过安全检查
管理插件
启用/禁用
- 在插件列表找到目标插件
- 点击启用/禁用开关
禁用的插件:
- Agent 不会出现在对话中
- 工具不可使用
- 配置保留
更新插件
- 找到有更新的插件
- 点击"更新"按钮
- 确认更新
解绑插件
- 找到目标插件
- 点击"解绑"按钮
- 确认操作
解绑后:
- 插件从工作空间移除
- Agent 和工具不再可用
查看插件详情
基本信息
点击插件名称查看详情:
- 插件名称和描述
- 版本信息
- 作者信息
- 包含的 Agent 列表
- 包含的工具列表
Agent 详情
点击 Agent 名称查看:
- Agent 名称和描述
- 完整的 Prompt 内容
- 使用的工具
工具详情
点击工具名称查看:
- 工具名称和描述
- 输入参数
- 返回值说明
创建自定义插件
插件结构
my-plugin/ ├── .claude-plugin/ # 元数据目录(必需) │ └── plugin.json # 插件清单 ├── commands/ # 自定义斜杠命令(可选) │ └── my-command.md ├── agents/ # 子代理定义(可选) │ └── my-agent.md ├── skills/ # 自动技能(可选) │ └── my-skill/ │ └── SKILL.md ├── hooks/ # 事件钩子配置(可选) │ └── pre-commit.json ├── .mcp.json # MCP 服务器配置(可选) ├── .lsp.json # LSP 服务器配置(可选) └── scripts/ # 钩子执行脚本(可选) └── validate.sh
目录说明
| 目录/文件 | 必需 | 说明 |
|---|---|---|
.claude-plugin/ | 是 | 元数据目录,包含 plugin.json |
plugin.json | 是 | 插件清单文件,定义插件基本信息 |
commands/ | 否 | 自定义斜杠命令,用户可通过 /命令 调用 |
agents/ | 否 | 子代理定义,每个 Agent 一个 Markdown 文件 |
skills/ | 否 | 自动技能,按标准 Skill 目录结构组织 |
hooks/ | 否 | 事件钩子配置,响应特定事件 |
.mcp.json | 否 | MCP (Model Context Protocol) 服务器配置 |
.lsp.json | 否 | LSP (Language Server Protocol) 服务器配置 |
scripts/ | 否 | 钩子执行脚本,被 hooks 调用 |
plugin.json
插件清单文件,位于 .claude-plugin/ 目录:
{ "version": "1.0.0", "description": "我的自定义插件", "author": { "name": "Dev Team", "email": "dev@example.com" }, "license": "MIT", "agents": [ "./agents/xxx-agent.md" ], "skills": "./skills/", "commands": "./commands/" }
Agent 定义
Agent 使用 Markdown 文件定义,存放在 agents/ 目录:
--- name: 我的 Agent description: 这是一个自定义 Agent --- # 角色设定 你是一个专业的助手... # 任务说明 你需要帮助用户... # 输出格式 请按以下格式输出...
Skill 定义
技能使用标准 Skill 目录结构,存放在 skills/ 目录:
skills/ └── my-skill/ ├── SKILL.md # 核心指令文件 ├── templates/ # 模板文件(可选) ├── examples/ # 示例文件(可选) └── references/ # 参考资料(可选)
详细的 Skill 目录结构请参考:技能市场 - 技能目录结构
打包插件
将插件目录打包为 ZIP 文件:
zip -r my-plugin.zip my-plugin/
上传测试
- 上传到工作空间
- 测试 Agent 和工具
- 修改并迭代
内置环境变量
插件中的脚本和工具可以访问以下内置环境变量,用于获取当前会话的上下文信息:
| 变量名 | 说明 | 示例值 |
|---|---|---|
JAVIS_WORKSPACE_ID | 当前工作空间 ID | cm5abc123def456 |
JAVIS_WORKSPACE_NAME | 当前工作空间名称 | 我的项目 |
JAVIS_LOGIN_USERNAME | 当前登录用户名 | 张三 |
JAVIS_LOGIN_USER_EMAIL | 当前登录用户邮箱 | zhangsan@example.com |
JAVIS_FRONTEND_BASE_URL | 前端服务基础 URL | https://javis.example.com |
JAVIS_COOKIE | 认证 Cookie(用于调用后端 API) | session=xxx; ... |
JAVIS_PLUGIN_BASE_ROOT | 插件根目录(仅沙箱模式) | /plugins |
使用示例
在 Skill 或工具脚本中访问环境变量:
Bash 脚本:
#!/bin/bash echo "当前工作空间: $JAVIS_WORKSPACE_NAME" echo "当前用户: $JAVIS_LOGIN_USERNAME"
Python:
import os workspace_name = os.environ.get('JAVIS_WORKSPACE_NAME', '') user_email = os.environ.get('JAVIS_LOGIN_USER_EMAIL', '') print(f"工作空间: {workspace_name}, 用户邮箱: {user_email}")
调用后端 API
使用 JAVIS_COOKIE 和 JAVIS_FRONTEND_BASE_URL 可以调用后端 API:
curl -X GET "${JAVIS_FRONTEND_BASE_URL}/api/v1/workspaces/${JAVIS_WORKSPACE_ID}" \ -H "Cookie: ${JAVIS_COOKIE}"
注意:
JAVIS_COOKIE包含用户认证信息,请勿在日志中输出或分享给第三方。
插件最佳实践
1. 清晰的命名
# 好的命名 name: code-review-helper description: 代码审查助手,帮助检查代码质量 # 避免 name: plugin1 description: 一个插件
2. 完整的文档
- 在 plugin.json 中提供详细描述
- 为每个 Agent 写清晰的说明
- 为 Skill 添加完整的使用指南
3. 版本管理
"version": "1.0.0" // 初始版本 "version": "1.1.0" // 新增功能 "version": "1.0.1" // Bug 修复
常见问题
Q:插件可以分享给其他人吗?
A:可以。将 ZIP 文件分享给他人,或提交到技能市场。
Q:插件中的脚本可以访问外部 API 吗?
A:可以,但需要在安全沙箱内执行,部分能力受限。
Q:如何调试插件?
A:上传后在对话中测试,查看错误信息进行调试。
Q:插件会影响其他工作空间吗?
A:不会。插件只在绑定的工作空间中生效。
Q:插件支持哪些配置文件格式?
A:plugin.json 使用 JSON 格式,Agent 和 Skill 使用 Markdown 格式。