AskTable
免费试用

AskTable Skill 系统:让 AI Agent 按需调用专业能力

AskTable 团队
AskTable 团队 2026年4月3日

AskTable 正在重新定义 AI Agent 的能力边界。最新引入的 Skill 系统,让 Agent 不再是固定能力的集合,而是可以根据场景动态调用专业技能的智能体。本文将深入解析这一系统的架构设计与实现原理。


一、为什么需要 Skill 系统?

1.1 传统 Agent 的局限

传统的 AI Agent 通常将所有能力编译进系统提示词或工具列表:

1.2 Skill 系统的解法

┌─────────────────────────────────────────────────────────────┐
│                      AskTable Skill 系统                      │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│   ┌─────────┐    ┌─────────┐    ┌─────────┐               │
│   │ Skill 1 │    │ Skill 2 │    │ Skill N │    ← 项目级技能库 │
│   │ 销售分析│    │ 财务报告│    │ 用户画像│               │
│   └────┬────┘    └────┬────┘    └────┬────┘               │
│        │              │              │                      │
│        └──────────────┼──────────────┘                     │
│                       ▼                                    │
│            ┌─────────────────────┐                          │
│            │   Skill Loader      │   ← 三层加载机制          │
│            │  explicit > agent > project                   │
│            └─────────────────────┘                          │
│                       │                                     │
│                       ▼                                     │
│            ┌─────────────────────┐                          │
│            │  activate_skill()   │   ← 按需激活              │
│            │  工具动态注册         │                          │
│            └─────────────────────┘                          │
│                                                             │
└─────────────────────────────────────────────────────────────┘

核心思路:将技能从编译时决策转变为运行时选择。


二、Skill 系统架构

2.1 数据模型

Skill 的数据模型简洁而高效:

class SkillModel(Base):
    id: UUID                          # 技能唯一标识
    project_id: str                   # 所属项目
    name: str                          # 技能名称
    description: str                  # 技能描述(供 Agent 理解)
    content: str                       # 技能指令内容
    created_at: datetime
    modified_at: datetime

设计要点

2.2 关联机制

Skill 通过

skill_ids
与 Data Agent 和 Conversation 关联:

# Data Agent 关联
class DataAgentModel:
    skill_ids: list[str]  # 该 Agent 可用的技能列表

# Conversation 关联
class ConversationModel:
    skill_ids: list[str]   # 该会话可用的技能列表

2.3 三层加载机制

Skill 的加载遵循优先级顺序:

优先级来源说明
1
explicit
显式传入的技能
2
agent
Conversation 关联的 Data Agent 技能
3
project
项目级别的默认技能
加载图表中...

三、动态激活机制

3.1 activate_skill 工具

核心是

activate_skill
工具,它允许 Agent 在对话过程中按需激活技能:

async def activate_skill(
    skill_name: Annotated[str, Field(description="要激活的技能名称")]
) -> str:
    """激活指定技能,返回完整的技能指令。"""
    if skill_name not in skill_map:
        return f"技能 '{skill_name}' 不存在。可用: {available_skills}"
    return skill_map[skill_name]

工作流程

用户提问 → Agent 推理 → 判断需要专业能力 → 调用 activate_skill → 获得技能指令 → 继续执行

3.2 技能目录注入

当 Agent 加载了技能后,系统提示词会包含可用技能目录:

可用技能:
- 销售分析: 分析销售数据,识别趋势和异常
- 财务报告: 生成标准财务报表和分析
- 用户画像: 构建用户特征和行为分析

这样 Agent 能够理解何时应该调用技能,而不只是被动响应。


四、Skill Editor:可视化技能编辑

4.1 独立的编辑会话

系统引入了

skill_editor
对话类型:

class ConversationType(str, Enum):
    chat = "chat"                    # 普通数据分析对话
    skill_editor = "skill_editor"    # 技能编辑对话

4.2 专用工具集

Skill Editor 配备了专属工具:

工具功能
read_skill
读取技能内容
update_skill_desc
更新技能描述
update_skill_content
更新技能指令
edit_skill_content
AI 辅助编辑技能内容

4.3 AI 辅助优化

Skill Editor 的亮点是 AI 辅助优化能力:

用户: 这是一个销售数据分析的技能,帮我完善一下

AI: [分析现有技能内容] →
    [识别缺失场景] →
    [生成增强建议] →
    [更新技能内容]

Agent 可以通过对话来优化技能,而不是直接编辑 JSON 或文本。


五、实战场景

5.1 场景一:专业领域知识注入

需求:让 AI Agent 具备金融行业专业术语和报告规范。

解决方案

  1. 创建 "金融报告" 技能
  2. 编写行业特定的报告模板和分析逻辑
  3. 将技能关联到 Data Agent
# 金融报告技能

## 报告规范
- 使用标准财务术语(EBITDA, ROE, ROA 等)
- 遵循监管要求的披露格式
- 自动计算同比、环比增长率

## 分析框架
1. 盈利能力分析
2. 偿债能力分析
3. 运营效率分析

5.2 场景二:多租户差异化能力

需求:不同客户对同一数据有不同的分析需求。

解决方案

# 项目 A 的 Agent
skill_ids = ["sales通用分析", "retail客户A专属"]

# 项目 B 的 Agent
skill_ids = ["sales通用分析", "manufacturing客户B专属"]

5.3 场景三:技能版本管理

技能内容存储在数据库中,支持:


六、技术实现亮点

6.1 Protocol 模式隔离

Skill 加载逻辑通过三层分离:

视图层 → Service 层 → Repository 层 → 数据库

便于后续扩展(如 Git 存储、外部技能市场)。

6.2 向后兼容

type
字段有默认值
"chat"
,存量对话不受影响:

type: Mapped[str] = mapped_column(String(50), nullable=False, default="chat")

6.3 权限隔离

Skills 通过

project_id
实现完全隔离:


七、与 MCP 的对比

AskTable Skill 系统与 MCP (Model Context Protocol) 有相似之处,但定位不同:

维度MCPAskTable Skill
定位协议层标准应用层实现
颗粒度工具/API自然语言指令
管理外部服务内置数据库
使用方式静态注册动态激活
适用场景系统集成领域知识

简单来说


八、总结

AskTable Skill 系统代表了一种新的 Agent 能力扩展范式:

核心理念:能力不是固定的,而是按需组装的。

三大特性

  1. 项目级管理:技能在项目内共享,可复用
  2. 动态激活:Agent 按需调用,控制上下文长度
  3. AI 优化:通过对话完善技能,降低编辑门槛

适用场景

随着 Skill 系统的成熟,AskTable 正从"通用数据分析工具"进化为"可定制领域专家平台"。


相关阅读

准备好让数据分析更简单了吗?

无需编程,用自然语言提问,AI 自动生成 SQL 查询和可视化图表。立即免费试用 AskTable,体验 AI 驱动的数据分析。

无需信用卡
2 分钟快速上手
支持 33 种数据库