forked from bai/curriculum-project-hub
feat: make agent roles and skills dynamic
This commit is contained in:
@@ -391,10 +391,20 @@ function formatRoleSlashCommandHelp(role: RoleEntry): string {
|
||||
if (role.defaultModel !== undefined) {
|
||||
lines.push(`- 默认模型: ${role.defaultModel}`);
|
||||
}
|
||||
lines.push(`- 工具范围: ${roleToolsDescription(role)}`, "", `帮助: /help ${role.id} 或 /${role.id} help`);
|
||||
lines.push(
|
||||
`- 工具范围: ${roleToolsDescription(role)}`,
|
||||
`- Skills: ${roleSkillsDescription(role)}`,
|
||||
"",
|
||||
`帮助: /help ${role.id} 或 /${role.id} help`,
|
||||
);
|
||||
return lines.join("\n");
|
||||
}
|
||||
|
||||
function roleSkillsDescription(role: RoleEntry): string {
|
||||
if (role.skills === undefined || role.skills.length === 0) return "无";
|
||||
return role.skills.map((skill) => `${skill.name}@${skill.version}`).join(", ");
|
||||
}
|
||||
|
||||
function roleToolsDescription(role: RoleEntry): string {
|
||||
if (role.tools === undefined) return "全部已注册工具";
|
||||
if (role.tools.length === 0) return "无";
|
||||
|
||||
@@ -37,7 +37,6 @@ import { createPermissionAuthorizer, type AuthorizationDecision, type Permission
|
||||
import { writeAudit } from "../audit.js";
|
||||
import { formatRunCostLine } from "../agent/cost.js";
|
||||
import { createAgentSdkStderrSink } from "../agent/diagnostics.js";
|
||||
import { CURATED_SKILL_IDS } from "../agent/curatedSkills.js";
|
||||
import { InactiveOrganizationError, lockActiveOrganization } from "../org/status.js";
|
||||
import { StreamingAgentCard } from "./card/streaming-card.js";
|
||||
import { createFileDeliveryMcpServer } from "./fileDeliveryTool.js";
|
||||
@@ -406,7 +405,11 @@ export function makeTriggerHandler(deps: TriggerDeps): TriggerHandler {
|
||||
metadata: {
|
||||
roleId,
|
||||
model,
|
||||
requestedSkills: [...CURATED_SKILL_IDS],
|
||||
requestedSkills: (role?.skills ?? []).map((skill) => ({
|
||||
name: skill.name,
|
||||
version: skill.version,
|
||||
contentDigest: skill.contentDigest,
|
||||
})),
|
||||
prompt: agentPrompt.slice(0, 200),
|
||||
sender: senderMetadata,
|
||||
feishuTriggerContext,
|
||||
@@ -482,6 +485,7 @@ export function makeTriggerHandler(deps: TriggerDeps): TriggerHandler {
|
||||
providerProxyEnv: { ...providerLease.sdkEnv },
|
||||
resumeSessionId: sessionMetadata.claudeSessionId,
|
||||
tools: roleTools,
|
||||
skills: role?.skills,
|
||||
mcpServers: { cph_hub: fileDeliveryMcpServer },
|
||||
maxTurns: runPolicy.maxTurns,
|
||||
runId: run.id,
|
||||
|
||||
Reference in New Issue
Block a user