技能系统
技能是按需加载的能力包——而且是「可执行的」:Python-backed 技能直接把函数装进持久内核。
1技能是什么、怎么被加载
Prime Agent 实现 Agent Skills 标准(agentskills.io),并把它扩展成 Python-backed 超集。
一个技能就是一个带 SKILL.md 的目录,内含工作流说明、安装步骤、辅助脚本与参考文档。加载机制是渐进式披露:
- 启动时扫描所有技能位置,只把名称与描述放进系统提示;
- 任务匹配时,代理用
ipython读取完整SKILL.md(模型不总会主动读,可用提示词或/skill:name强制); - 代理按 SKILL.md 里的相对路径使用脚本与资产。
技能从这些位置被发现(内置技能优先级最低,同名技能后者覆盖内置):
| 位置类型 | 路径 |
|---|---|
| 全局 | ~/.prime/agent/skills/、~/.agents/skills/ |
| 项目 | .prime/agent/skills/、.agents/skills/(cwd 及其祖先目录,直到 git 仓库根) |
| 包 | skills/ 目录或 package.json 的 pi.skills 条目 |
| 设置 / CLI | settings 的 skills 数组;--skill <path>(可重复) |
--no-skills(显式 --skill 仍会加载)。2三个内置技能
装好就有,行为与普通技能一致,只是优先级最低。
prime-intellect
Prime Intellect 产品工作流:verifiers 环境与 Environments Hub、评测、Hosted Training 与 prime-rl、沙箱、Prime Inference、GPU 算力等,参考文档按需加载。
skill-creator
教代理创建新技能:markdown 技能布局、frontmatter 规则、放置与优先级,以及完整的 Python-backed 技能契约与模板。
websearch
基于 Serper API 的 Python-backed Google 搜索。在 /login 的 MCP Connections 里填入 serper.dev 的免费 Key 即可,之后内核里直接 await websearch(...)。
print(await websearch("latest Prime Agent release"))
3SKILL.md:结构与 frontmatter
必填只有 name 和 description 两个字段,其余随意发挥。
my-skill/
├── SKILL.md # 必需:frontmatter + 说明
├── scripts/ # 辅助脚本
│ └── process.sh
├── references/ # 按需加载的详细文档
│ └── api-reference.md
└── assets/
└── template.json
---
name: my-skill
description: What this skill does and when to use it. Be specific.
---
# My Skill
## Usage
Run ./scripts/process.sh <input> before packaging.
name 规则:1–64 字符、小写字母数字连字符、不得以连字符开头结尾、不得连续连字符、必须与父目录同名。description 决定代理「什么时候想到它」——写得越具体,命中越准(缺 description 的技能不会被加载)。校验大多是警告,技能照样能用;disable-model-invocation: true 可把技能从系统提示里藏起来,仅允许 /skill:name 显式调用。
4Python-backed 技能:把函数装进内核
SKILL.md 之外多一个 Python 包,Prime Agent 会把它以 editable 方式装进内核 venv。
web-search/
├── SKILL.md
├── pyproject.toml
└── src/
└── web_search/
└── __init__.py
检测规则:有 pyproject.toml 即视为 Python-backed;导入名 = 技能名连字符转下划线;src/<import_name>/__init__.py 必须存在。若模块定义了 run(),整个模块被包成异步可调用:
await web_search("prime agent skills")
await web_search.run("prime agent skills")
help(web_search)
还能在 pyproject.toml 里声明 console script 暴露 shell 命令(脚本名必须与导入名完全一致):
[project]
name = "web-search"
version = "0.1.0"
dependencies = ["requests"]
[project.scripts]
web_search = "rlm.skill:cli"
async def run(query: str, limit: int = 5) -> str:
"""Search the web and return a concise summary."""
...
之后模型既能在 Python 里调用,也能在 shell 模式里跑 !web_search "prime agent" --limit 3。内核 venv 默认在 ~/.prime/agent/kernel-venv;改了 pyproject.toml 依赖,Prime Agent 会自动重建 venv。
5让 Prime Agent 自己造技能
内置的 skill-creator 让你用自然语言描述需求,代理来写包、验导入。
Create a project Python-backed skill named release-audit in
.prime/agent/skills/release-audit. It should expose
await release_audit(repository, target_version), include concise SKILL.md
instructions, declare its dependencies, and verify the callable in a fresh
Prime Agent session.
描述需求时说清三件事:
- Scope(放哪):项目技能
.prime/agent/skills/<name>/(随仓库提交),个人技能~/.prime/agent/skills/<name>/; - Kind(哪类):以指令为主选 markdown 技能;要在 REPL 里调用可复用功能选 Python-backed;
- Contract(契约):预期的 Python 调用、入参、输出、依赖、凭据与验证方式。
新建或改完技能后 /reload 重新发现;Python-backed 技能要开新会话,让内核 setup 完成安装与导入。另外,Claude Code / OpenAI Codex 的技能目录也能直接挂进来:
{
"skills": ["~/.claude/skills", "~/.codex/skills"]
}
「已安装的 Python-backed 技能」是磁盘上的真实包,给内核加可执行功能;「Continual Harness 技能条目」只是 /refine 沉淀的可复用调用描述。前者替代不了后者,反之亦然。