自定义工具与自定义 SKILL
当你发现某个操作会反复出现,就应该把它从“每次都写提示词”升级为“可复用能力”。在 Memfit 中,工具负责原子动作,SKILL 负责场景流程。
【配图:资源区总览,标注工具列表、工具编辑器、SKILL 列表、SKILL 编辑器】
先判断做工具还是做 SKILL
| 你想封装什么 | 选择 |
|---|---|
| 一个明确输入、明确输出的动作 | 自定义工具 |
| 一段脚本、一次查询、一个检查器 | 自定义工具 |
| 一套多步骤流程 | 自定义 SKILL |
| 固定角色、固定约束、固定输出格式 | 自定义 SKILL |
| 需要组合多个工具和知识库 | 自定义 SKILL |
工具像“螺丝刀”,SKILL 像“维修流程”。工具越清晰,SKILL 越稳定。
自定义工具
自定义工具是 Agent 可以调用的原子能力。它适合封装内部脚本、检查逻辑、格式转换、查询接口或团队标准操作。
创建工具时重点填写:
| 配置 | 写法建议 |
|---|---|
| 工具名称 | 简短、稳定,使用英文或稳定拼音,避免频繁改名。 |
| 描述 | 写清用途、何时使用、何时不要使用。 |
| 标签 / 关键词 | 放入 Agent 可能搜索到的关键词。 |
| 参数 Schema | 明确参数类型、是否必填、取值范围。 |
| 源码 / 执行逻辑 | 只做工具承诺的事,避免隐藏副作用。 |
| 执行结果 | 返回结构化结果,便于 Agent 继续分析。 |
【配图:AI 工具编辑器,标注基本信息、描述、参数 Schema、源码、测试结果】
工具描述模板
用途:检查目标域名的 TLS 证书有效期和证书链。
适用场景:用户要求检查 HTTPS 证书、过期时间、证书链风险。
输入:domain,必须是域名,不包含 http:// 或 https://。
输出:证书主体、颁发者、过期时间、剩余天数、证书链状态和风险提示。
限制:只做证书信息检查,不进行漏洞利用或高频请求。
参数 Schema 怎么写
参数越明确,Agent 越不容易乱填。
| 参数 | 建议 |
|---|---|
| 字符串 | 写清是否允许 URL、路径、空格和特殊字符。 |
| 数字 | 写清最小值、最大值和默认值。 |
| 布尔值 | 写清 true 和 false 分别意味着什么。 |
| 枚举 | 优先用枚举限制模式,例如 fast、safe、deep。 |
| 路径 | 写清相对路径还是绝对路径,是否允许越出项目目录。 |
测试工具
保存工具前,先用最小输入测试一次,再用边界输入测试一次。
测试检查表:
- 参数为空时是否给出清晰错误。
- 输入非法时是否拒绝执行。
- 执行结果是否能被 Agent 继续理解。
- 是否会修改文件、访问网络或产生高风险副作用。
- 失败时是否返回原因,而不是只返回空结果。
自定义 SKILL
SKILL 用来封装可复用任务策略。它通常包含角色、流程、工具选择、知识库要求、参数 UI 和输出格式。
适合做成 SKILL 的任务:
- Java 代码审计
- Web 安全基线检查
- 项目交接文档生成
- 日志根因分析
- 版本发布检查
- 团队规范审查
【配图:SKILL 编辑器,标注名称描述、工具选择、提示词、参数 UI、输出模板】
SKILL 的关键配置
| 配置 | 作用 |
|---|---|
| 名称与描述 | 让用户和 Agent 知道它适合什么场景。 |
| 标签 | 便于检索和分类。 |
| 工具列表 | 限制 SKILL 可以使用哪些工具。 |
| 知识库要求 | 指明需要挂载哪些规范、文档或历史资料。 |
| 初始化提示词 | 规定任务开始时的角色、目标和执行步骤。 |
| 持续提示词 | 规定整个过程中始终遵守的约束。 |
| 参数 UI | 让用户在执行前填写目标、路径、语言、输出格式。 |
| Review 策略 | 决定哪些步骤需要用户确认。 |
SKILL 提示词怎么写
把 SKILL 提示词写成流程,而不是口号。
示例:
你是 Java 代码审计助手。
流程:
1. 先确认用户输入的审计范围。
2. 只读取指定目录,不主动修改文件。
3. 优先检查鉴权、反序列化、SQL 注入、路径穿越。
4. 每个风险必须给出文件路径、函数名、触发条件、修复建议。
5. 没有证据时不要输出风险。
输出格式:
- 风险等级
- 证据位置
- 原因
- 复现思路
- 修复建议
工具与 SKILL 如何组合
一个稳定的 SKILL 通常由三部分组成:
| 部分 | 例子 |
|---|---|
| 任务策略 | “先确认范围,再分析入口,再输出风险表。” |
| 可用工具 | 文件读取、代码搜索、依赖检查、自定义扫描脚本。 |
| 知识上下文 | 团队安全规范、历史漏洞、项目架构说明。 |
组合示例:
使用“Java 鉴权审计”SKILL。
挂载“团队安全编码规范”知识库。
只读分析 src/main/java/auth 目录。
输出 High / Medium / Low 风险表,并给出证据路径。
发布前检查
在团队内共享工具或 SKILL 前,检查:
- 名称和描述是否能被普通用户看懂。
- 是否限制了高风险操作。
- 参数是否足够明确。
- 失败结果是否可诊断。
- 输出格式是否稳定。
- 是否配套了知识库或示例任务。
排错
| 问题 | 处理方式 |
|---|---|
| Agent 不会选择工具 | 优化工具描述和关键词,明确适用场景。 |
| Agent 乱填参数 | 收紧参数 Schema,增加枚举和范围限制。 |
| 工具结果无法继续分析 | 返回结构化字段,不要只输出自然语言。 |
| SKILL 输出不稳定 | 固定流程、固定输出模板、减少开放式要求。 |
| SKILL 调用了无关工具 | 缩小工具列表,或在持续提示词中写明禁用边界。 |
下一步
完成自定义能力后,回到 Agent 使用教程 用真实任务验证它;如果执行中仍需要频繁纠偏,继续优化 人工干预与上下文修改 中提到的全局和局部上下文。