Files
ai-terminal-assistant/src/skills/types.ts
T
kurihada 723558ff22 feat: 添加 Skills 系统支持可复用提示模板
- 新增 Skill 类型定义和加载器,支持 YAML/JSON/Markdown 格式
- 实现 Skill 注册表,支持搜索、分类和优先级覆盖
- 添加 8 个内置 Skills: code-review, explain-code, generate-docs 等
- 创建 skill 和 skill_search 工具供 Agent 调用
- 支持从用户目录和项目目录加载自定义 Skills
- 添加完整的单元测试覆盖
2025-12-11 15:56:19 +08:00

110 lines
2.3 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* Skill 系统类型定义
*
* Skill 是可复用的提示模板,类似于 Claude Code 的 Skills 功能。
* 与 Agent 不同,Skill 不是独立的执行单元,而是预定义的提示模板,
* 可以被 Agent 调用来执行特定任务。
*/
/**
* Skill 参数定义
*/
export interface SkillParameter {
/** 参数类型 */
type: 'string' | 'number' | 'boolean' | 'array' | 'object';
/** 参数描述 */
description: string;
/** 是否必需 */
required?: boolean;
/** 默认值 */
default?: unknown;
/** 枚举值(仅 string 类型) */
enum?: string[];
}
/**
* Skill 定义
*/
export interface Skill {
/** Skill 唯一标识 */
name: string;
/** Skill 显示名称 */
displayName?: string;
/** Skill 描述 */
description: string;
/** Skill 分类 */
category?: string;
/** 提示模板(支持变量插值 {{variable}} */
promptTemplate: string;
/** Skill 参数定义 */
parameters?: Record<string, SkillParameter>;
/** 关键词(用于搜索) */
keywords?: string[];
/** 来源(内置/用户定义/项目) */
source: 'builtin' | 'user' | 'project';
/** 来源路径(用户定义或项目 Skill 的文件路径) */
sourcePath?: string;
/** 是否启用 */
enabled?: boolean;
/** 版本 */
version?: string;
/** 作者 */
author?: string;
}
/**
* Skill 执行上下文
*/
export interface SkillContext {
/** 当前工作目录 */
workdir: string;
/** 额外的上下文变量 */
variables?: Record<string, string>;
}
/**
* Skill 执行结果
*/
export interface SkillExecutionResult {
/** 是否成功 */
success: boolean;
/** 渲染后的提示 */
prompt?: string;
/** 错误信息 */
error?: string;
}
/**
* Skill 文件格式(YAML/JSON
*/
export interface SkillFile {
/** 文件版本 */
version?: string;
/** Skill 定义 */
skill: Omit<Skill, 'source' | 'sourcePath'>;
}
/**
* Skill 搜索结果
*/
export interface SkillSearchResult {
/** Skill */
skill: Skill;
/** 匹配分数 */
score: number;
/** 匹配原因 */
matchReason: string;
}
/**
* Skill 注册表配置
*/
export interface SkillRegistryConfig {
/** 用户 Skills 目录 */
userSkillsDir?: string;
/** 项目 Skills 目录 */
projectSkillsDir?: string;
/** 是否自动加载 */
autoLoad?: boolean;
}