Mendefinisikan Karyawan AI Bawaan

Pekerja AI bawaan terdaftar pada plugin. Saat plugin dimuat untuk pertama kalinya, NocoBase akan membuat catatan karyawan yang sesuai dan menandainya sebagai karyawan bawaan; pemuatan plugin berikutnya akan memperbarui informasi default karyawan, kata-kata cepat, keterampilan, dan alat berdasarkan kode.

Bentuk file dan direktori tunggal

Ketika datanya sederhana dan kata-kata cepat yang independen serta sumber daya eksklusif tidak diperlukan, satu file dapat digunakan:

src/ai/ai-employees/lina.ts

Saat Anda memerlukan prompt.md, Keterampilan berpemilik, atau Alat berpemilik, gunakan direktori:

src/ai/ai-employees/nathan/
├── index.ts
├── prompt.md
├── skills/
└── tools/

Format direktori lebih cocok untuk pemeliharaan jangka panjang.

Gunakan defineAIEmployee()

index.ts menggunakan defineAIEmployee() yang disediakan oleh @nocobase/ai:

import { defineAIEmployee } from '@nocobase/ai';

export default defineAIEmployee({
  username: 'developer-helper-dev-assistant',
  category: 'developer',
  description: 'AI employee for helping developers start NocoBase plugin development.',
  avatar: 'nocobase-002-male',
  nickname: 'Dev Helper',
  position: 'Plugin development guide',
  bio: 'Helps developers understand plugin structure and complete small development tasks.',
  greeting: 'Hello, I can help you start a NocoBase plugin development task. What would you like to build?',
});

Bidang utama adalah sebagai berikut:

Bidangmemengaruhi
usernameID unik karyawan AI, diperlukan dan memerlukan stabilitas jangka panjang
categoryKlasifikasi karyawan, seperti developer atau business
descriptionDeskripsi internal dan pengambilan informasi
avatarLogo Avatar
nicknameNama ditampilkan kepada pengguna
positionPosisi
bioPerkenalan
greetingSalam percakapan baru
systemPromptKata perintah sistem default
skillsNama Skill yang terikat secara eksplisit
toolsKonfigurasi Alat terikat secara eksplisit
chatSettingsApakah akan mengaktifkan pengaturan obrolan seperti Keterampilan, Alat, dan mode kata prompt sistem
sortPenyortiran karyawan bawaan

Saat ini tipe tools adalah array objek:

tools: [
  { name: 'greetDeveloper' },
  { name: 'customDataExporter', autoCall: true }, // customDataExporter 的 scope 必须是 CUSTOM
]

autoCall hanya digunakan untuk mengganti izin panggilan karyawan AI saat ini ke Alat CUSTOM. Untuk Alat GENERAL dan SPECIFIED, waktu proses masih berdasarkan defaultPermission milik Alat itu sendiri; jika Alat CUSTOM tidak memiliki konfigurasi tingkat karyawan, Alat tersebut juga akan kembali ke defaultPermission milik Alat tersebut.

Alat yang ditemukan secara otomatis di direktori akan dinormalisasi menjadi { name: 'toolName' }.

Menempatkan Prompt Panjang di prompt.md

Jika karyawan AI menggunakan format direktori, kata-kata perintah sistem dapat dimasukkan ke prompt.md pada tingkat yang sama:

src/ai/ai-employees/dev-helper/prompt.md
You are Dev Helper, a NocoBase plugin development guide.

Help the user break a plugin requirement into small, verifiable steps.

When the user asks you to welcome a developer, load the `welcome-developer` skill and follow it.

Never claim that a Tool succeeded before receiving its result.

prompt.md, jika ada, menggantikan systemPrompt di index.ts. Menempatkan perintah panjang dalam file Markdown lebih mudah untuk ditinjau dan menghindari keluarnya masalah dalam string templat TypeScript.

Contoh Karyawan AI Bawaan: Nathan

Profil karyawan packages/plugins/@nocobase/plugin-flow-engine/src/ai/ai-employees/nathan/index.ts sangat singkat:

export default defineAIEmployee({
  username: 'nathan',
  category: 'developer',
  description: 'AI employee for coding',
  avatar: 'nocobase-002-male',
  nickname: 'Nathan',
  position: 'Frontend code engineer',
  greeting: 'Hello, I’m Nathan, your frontend code engineer...',
});

Kemampuan lengkap Nathan berasal dari sumber lain di direktori yang sama:

nathan/
├── index.ts
├── prompt.md
└── skills/
    └── frontend-developer/
        ├── SKILLS.md
        └── tools/
            ├── getContextApis.ts
            ├── getContextEnvs.ts
            ├── getContextVars.ts
            ├── lintAndTestJS.ts
            ├── patchJSCode.ts
            ├── readJSCode.ts
            └── writeJSCode.ts

Proses pemuatan secara otomatis akan menyelesaikan pengikatan tiga lapis:

  1. File di tools/ didaftarkan sebagai Alat
  2. Alat secara otomatis terikat pada frontend-developer Keterampilan
  3. Skill otomatis terikat pada Nathan

Oleh karena itu, index.ts tidak perlu dicantumkan berulang kali untuk seluruh himpunan skills dan tools.

Tautan terkait