分享
Skills 设计模式
输入“/”快速插入内容
Skills 设计模式
用户1208
用户1208
5月29日修改
相关内容
:「开发方法论」 | 「多智能体协调」
适用于超越单智能体、单文件提示词的 Skills(技能模块)的实践模式。这些模式针对具体的失败场景:重复发现相同事实的子智能体、应用于错误文件的规则、将检测与修复混为一谈的 Skills(技能模块)。
共享基础事实注入
问题
:当你启动 N 个并行子智能体来审计或分析一组产物时,每个智能体都会独立发现相同的基础事实(文件列表、导航结构、CLI 命令、Schema)。这意味着 N 次冗余读取、N 个需要分别信任的独立事实,以及 N 次某个智能体看到过时文件状态的风险。
模式
:编排者一次性计算一个共享的事实基准,然后将相同的块逐字注入到每个子智能体的提示词中。
代码块
Plain Text
编排者(阶段 1)
├── 读取导航结构 → 提取分组
├── 文件匹配 → 获取当前列表
├── 列出 CLI 命令 → 获取当前命令
└── 编译成"基础事实"字符串
编排者(阶段 2)
├── 智能体 1 提示词:"## 基础事实\n{共享块}\n\n## 你的范围\n章节 A"
├── 智能体 2 提示词:"## 基础事实\n{共享块}\n\n## 你的范围\n章节 B"
└── 智能体 3 提示词:"## 基础事实\n{共享块}\n\n## 你的范围\n章节 C"
共享块应包含的内容
:
•
导航结构或文件层级(让每个智能体知道有哪些内容)
•
当前 CLI 命令或 API 端点(用于捕获对已删除命令的引用)
•
领域实体列表(包、模块、服务)
•
当前日期(用于捕获现在已过时的版本引用)
为何有效
:每个智能体从相同的快照开始。如果基础事实列表显示某个 CLI 命令不存在,智能体就无法凭空捏造一个。编排者是结构的单一事实来源;子智能体是各自负责章节内容的单一事实来源。
Token(词元)权衡
:共享块会为每个子智能体提示词增加 Token(词元)。对于 5 个智能体的并行审计,500 个 Token(词元)的基础事实块预先花费 2500 个 Token(词元)。消除每智能体的重复发现会节省这些成本,而且远不止于此。将块的大小控制在实际需要的范围内,而不是你能包含的所有内容。
实现注意事项
:基础事实块应该是一个字符串,而不是文件引用。如果你让智能体"读取
docs.json
",每个智能体都会独立读取它。在编排者中一次性编译,然后直接粘贴进去。
在
Packmind doc-audit skill
(.claude/skills/doc-audit/SKILL.md,阶段 1)中观察到。参见「致谢」。
通过 Frontmatter 路径进行预过滤引用
问题
:你有一组规则文件(编程规范、安全策略、风格指南)。每个文件适用于代码库中特定的文件子集。如果你将所有规则传递给审查智能体,智能体会将规则应用于它们不适用的文件,产生误报并浪费上下文。
模式
:在每个规则文件中添加一个
paths:
frontmatter 字段,使用 glob 模式。在启动审查智能体之前,编排者读取此 frontmatter,将 glob 与已修改文件列表进行匹配,并只向每个智能体传递适用的规则。
代码块
YAML
# .claude/rules/standard-testing-good-practices.md
---
name: 测试最佳实践
paths: "**/*.spec.ts,**/*.test.ts"
alwaysApply: false
description: TypeScript 单元测试和集成测试的测试规范
---
## 规则
- 使用 `describe` 块对相关测试进行分组
...
编排者逻辑(简明步骤):
代码块
Plain Text
1. 通配符匹配 .claude/rules/**/*.md → 列出所有规则文件
2. 对每个规则文件:
a. 读取 YAML frontmatter → 提取 paths(glob 模式)
b. 如果 alwaysApply: true → 无条件包含
c. 如果 alwaysApply: false → 将 paths 与已修改文件列表匹配
d. 如果至少一个已修改文件与 glob 匹配则包含
3. 将过滤后的规则集传递给每个审查智能体