@sema-agent/core
Version:
Stateless, task-oriented AI agent core
41 lines (40 loc) • 2.38 kB
TypeScript
/**
* Teacher-mode quick start (design/96 问题1 + S6/S7) — a thin shell over {@link runWithTeacher}.
*
* `runWithTeacher` (src/agents/teacher.ts) is mechanically complete: a cheap student does the work and only
* escalates to a strong advisor when detectably stuck/wrong, with full guard defaults (maxEscalations 3 /
* teacherSpendRatioCap 0.4 / stuckThreshold 3 / stuckHardOverride 5 / useStuckMonitor true). The gap is the
* 画像 layer: callers hand-write a TeacherConfig + two ModelRefs every time. This adds the one-liner shell.
*
* Honest: the model pairing (which is cheap / which is strong) is deploy-side knowledge — core fills guard
* defaults only. The guard defaults are NOT re-stated here: we let teacher.ts own them (single source of
* truth, no drift).
*/
import type { RunnerSelfSeat } from "../core/runner/contracts.js";
import type { ModelRef, TaskSpec } from "../core/types.js";
import { type TeacherRunResult } from "../agents/teacher.js";
export interface TeacherModePair {
/** The cheap student model (used for most turns, saves tokens). */
student: ModelRef;
/** The strong advisor model (consulted only when the student is stuck). */
advisor: ModelRef;
}
/**
* One-line teacher mode — CC's "one switch and it's good". Internally: advisor → {@link TeacherConfig.model},
* student → `helperModel` (the cheap student model also runs the stuck-monitor / verifier) and the
* student task spec's `model`. All guards use teacher.ts's built-in defaults (not re-stated here, so core
* owns the single source of truth). The caller supplies only the two models + the task spec.
*/
export declare function teacherMode(runner: RunnerSelfSeat, spec: TaskSpec, pair: TeacherModePair): Promise<TeacherRunResult>;
/**
* Teacher-mode preset profile (G2: a profile = which two models to fill). The two model cells are role-name
* placeholders the deploy side maps to concrete models (core never guesses); guard defaults are NOT pinned
* here — teacher.ts's built-in defaults are the single source of truth.
*/
export interface TeacherProfile {
/** Cheap model role name (deploy maps it to a cheap model, e.g. "subagent"). */
studentRole: string;
/** Strong model role name (deploy maps it to a strong model, e.g. "advisor"). */
advisorRole: string;
}
export declare const TEACHER_PROFILE: TeacherProfile;