Replies: 3 comments 10 replies
-
|
It looks great! I have a few questions:
|
Beta Was this translation helpful? Give feedback.
-
|
Thanks for putting this together @wenjin272! With skills, would it make sense to introduce a grouping concept (e.g., a "workspace") for bundling skills, tools, etc. so they can be reused across agents? |
Beta Was this translation helpful? Give feedback.
-
|
@wenjin272 Great proposal! The progressive disclosure model, SKILL.md format, and three-level scoping are solid design. The instruction-only approach with 3 built-in tools ( After going through the design, I have some thoughts below. Would love to discuss with you and the community. 1. Skill-Tool Binding: Reducing Global Tool CountFlink Agents supports function calls as tool calls. Each skill can trigger function calls and also execute its bundled scripts. The scripts part is well designed, each skill has its own But there is a gap on function calls side. Current design only supports static tool list defined globally on ChatModel (
Suggestion: Add mechanism to define tool list per skill. Model-level tool list only defines global minimum tool set (e.g. the 3 built-in skill tools). When LLM loads a skill, that skill's tools become available. When no skill is active, LLM sees only base tools plus skill catalog in system prompt, enough to discover and load the right skill. Looking at existing Flink Agents API, each resource type has its own decorator ( class MyAgent(Agent):
@skill
@staticmethod
def data_analysis() -> ResourceDescriptor:
return ResourceDescriptor(
clazz=ResourceName.SKILL,
path="/opt/skills/data-analysis",
tools=["query_api", "generate_report"], # Tools bound to this skill
)
@skill
@staticmethod
def monitoring() -> ResourceDescriptor:
return ResourceDescriptor(
clazz=ResourceName.SKILL,
path="/opt/skills/monitoring",
tools=["check_status"], # Different tools for this skill
)2. Repository Abstraction: Pluggable Skill SourcesThe proposed Suggestion: Extract pluggable |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Agent Skills Integration
Introduction
Agent Skills are folders of instructions, scripts, and resources that agents can discover and use to do things more accurately and efficiently.
Agent Skills can provide the following capabilities for agents:
For skill authors: Build capabilities once and deploy them across multiple agent products.
For compatible agents: Support for skills lets end users give agents new capabilities out of the box.
For teams and enterprises: Capture organizational knowledge in portable, version-controlled packages.
How Agent Skill Works
Skills use progressive disclosure to manage context efficiently:
Discovery: At startup, agents load only the name and description of each available skill, just enough to know when it might be relevant.
Activation: When a task matches a skill’s description, the agent reads the full SKILL.md instructions into context.
Execution: The agent follows the instructions, optionally loading referenced files or executing bundled code as needed.
This means that the Agent Framework needs to provide the following capabilities:
Provide abstraction and management for Agent Skills, supporting the loading, parsing, and utilization of skills by the Agent.
Offer built-in tools to support the dynamic loading and execution of skills by the Agent:
load_skill: Supports the Agent in loading a complete SKILL.md file.execute_shell_command: Supports the Agent in executing scripts or commands mentioned in SKILL.md.load_skill_resource: Supports the Agent in reading other resources required by the skill.User Interface
How to provide agent skills
Users can provide agent skills for flink-agents jobs in various ways:
Place the skills in a file system accessible to the job.
File systems accessible to the job include:
minicluster/standalone: The flink process runs locally. Skills can be placed directly in a specific path on the local file system.
k8s: The flink process runs within a pod. Users need to use custom images, pod templates, or pv & pvc mechanisms to embed the skills into the image or mount them into the pod.
Folder Format
opt/ └── skills/ └── skill-1/ └── SKILL.md └── skill-2/ └── SKILL.mdAt this point, the absolute path of this directory must be specified in the flink-agents job.
Zip Format: Package the aforementioned skills folder into a zip file; in this case, the absolute path to this zip file must be configured.
Package skills into the job's JAR file.
Place agent skills in the job's resources directory.
flink-agents-job/ └── src/ └── main/ └── java/ └── MyJob.java └── resources/ └── skills/ └── skill-1/ └── SKILL.md └── skill-2/ └── SKILL.mdUsers can specify the relative path within the resources directory in their assignments.
Similarly, skills can also be packaged as a zip file.
Download skills via URL
Currently, only supports packaging skills into a zip file and storing them remotely, such as on oss, s3, etc.
Future support may include downloading skill folders from FTP links, GitHub links, etc.
How to declare skills to be used
Job Level: Any Agent and ChatModel are visible in the job
AgentExecutionEnvironment: Users can declare the skills to be used via the environment.
Configuration:Users can also configure via Config.
Agent Level: Any ChatModel within the Agent is visible.
Users declare the skills available to the Agent using the
@skillsdecorator.ChatModel Level:
Configure the skills available to this Chat Model via
skill_names; these must be a subset of the skills declared for the job or agent.Framework Implementation
Skill Abstraction
AgentSkillis an abstraction of agent skills, containing the following elements:name: The name of the skill.
description: A brief description of the skill.
instructions: The specific content or steps of the skill.
resources: Other files used by the skill, such as scripts, templates, and data files.
Skill Manager
AgentSkillManageris responsible for loading, parsing, and validating Agent Skills.Loading
Supports loading Agent Skills from the following sources:
file system
jar packages
remote urls
Parsing
Parses file content to construct AgentSkill objects.
Supports parsing from zip files.
Validation
Built-in Tools
Built-in tools are the utilities required by the Agent to execute skills during runtime.
load_skill:load the entire skill.
execute_shell_command:execute shell commands, including running python scripts, etc.
load_skill_resource:read the resource files required for the skill, such as reference materials, templates, data, etc.
Future Works
Support fetching agent skills from mcp server
Currently, FastMCP offers Skills Provider capabilities: https://gofastmcp.com/servers/providers/skills. However, Flink-Agents currently integrates the official SDK. Although FastMCP (22.8k stars) has surpassed the official SDK (21.6k stars) to become the most popular MCP framework in the community, it only provides a Python SDK.
Retrieving agent skills via an MCP server can enable dynamic updates of agent skills.
Beta Was this translation helpful? Give feedback.
All reactions