تحتوي بيئة التشغيل على 15 وحدة. إضافة وحدة سادسة عشرة هو قرار مهم - افعل ذلك عندما لا تتناسب وظيفة جديدة مع أي منطقة موجودة وتكون مهمة بما يكفي لتكون جزءًا دائمًا من خط الأنابيب.
قبل إضافة وحدة، فكر فيما إذا كانت الوظيفة تنتمي لوحدة موجودة. إذا كانت أداة جديدة، فربما تنتمي إلى cerebellum كقدرة. إذا كانت فحص أمان جديد، فتنتمي إلى amygdala. الوحدات الجديدة هي للوظائف الإدراكية الجديدة فعلاً.
import { Corpus } from '@main/runtime/corpus/corpus'export interface MyModuleOpts { workspaceRoot: string corpus: Corpus}export class MyModule { private readonly workspaceRoot: string private readonly corpus: Corpus constructor(opts: MyModuleOpts) { this.workspaceRoot = opts.workspaceRoot this.corpus = opts.corpus // Subscribe to events this module cares about this.corpus.on('message.received', (payload) => this.handleMessage(payload)) } async doSomething(input: string): Promise<MyResult> { // Module logic here // Emit events for other modules to react to this.corpus.emit('my-module.completed', { input, result }) return result } private handleMessage(payload: MessagePayload): void { // React to events from other modules }}
جميع الاتصالات بين الوحدات تمر عبر أحداث corpus. هذا يحافظ على رسم التبعيات مسطحًا ويجعل الوحدات قابلة للاختبار بشكل مستقل.
// WRONG — direct import creates couplingimport { Hippocampus } from '@main/runtime/hippocampus/hippocampus'// RIGHT — communicate via eventsthis.corpus.emit('memory.store-requested', { content })this.corpus.on('memory.stored', (payload) => { /* ... */ })
مسؤولية واحدة
كل وحدة تفعل شيئًا واحدًا بالضبط. إذا كنت تضيف وظيفتين غير مرتبطتين، فهما وحدتان (أو إحداهما تنتمي لوحدة موجودة).
حالة مساحة العمل دائمًا Markdown
قابلة للقراءة البشرية، قابلة لإصدار Git، قابلة لتحليل نموذج اللغة. لا تستخدم أبدًا الصيغ الثنائية أو JSON لحالة مساحة العمل. Markdown مع بيانات YAML الوصفية هو المعيار.
قابلة للاختبار بشكل مستقل
يجب أن تكون وحدتك قابلة للاختبار بمحاكاة corpus فقط. إذا احتجت لمحاكاة خمسة أشياء أخرى، فوحدتك لديها تبعيات كثيرة جدًا.
التكوين عبر مساعد مساحة العمل
إذا احتاجت وحدتك لتكوين، اقرأه من config.json عبر مساعد مساحة العمل. لا تخترع آلية تكوين جديدة.