@yottameta/yotta-skills-plugin 0.19.1 → 0.19.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/plugins/marketplace.json +1 -1
- package/.claude-plugin/marketplace.json +1 -1
- package/package.json +1 -1
- package/plugin.json +1 -1
- package/skills/yotta-skills/SKILL.md +44 -26
- package/skills/yotta-skills/bin/yotta-skills.js +10 -8
- package/skills/yotta-skills/references/faq.md +11 -3
- package/skills/yotta-skills/references/install-flow.md +6 -6
- package/skills/yotta-skills/references/orchestration.md +14 -10
- package/skills/yotta-skills/references/tutorial.md +1 -1
- package/skills/yotta-skills/scripts/yotta-skills-mcp.py +2 -1
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"authentication": "ON_INSTALL"
|
|
13
13
|
},
|
|
14
14
|
"category": "Developer Tools",
|
|
15
|
-
"version": "0.19.
|
|
15
|
+
"version": "0.19.2",
|
|
16
16
|
"description": "YuanGe (元阁) - orchestration routing, inventory, and one-command installer for the YottaMeta skill family (zero dependencies, Node.js only).",
|
|
17
17
|
"interface": {
|
|
18
18
|
"displayName": "元阁 yotta-skills",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"authentication": "ON_INSTALL"
|
|
13
13
|
},
|
|
14
14
|
"category": "Developer Tools",
|
|
15
|
-
"version": "0.19.
|
|
15
|
+
"version": "0.19.2",
|
|
16
16
|
"description": "YuanGe (元阁) - orchestration routing, inventory, and one-command installer for the YottaMeta skill family (zero dependencies, Node.js only).",
|
|
17
17
|
"interface": {
|
|
18
18
|
"displayName": "元阁 yotta-skills",
|
package/package.json
CHANGED
package/plugin.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
|
|
3
3
|
"name": "yotta-skills",
|
|
4
|
-
"version": "0.19.
|
|
4
|
+
"version": "0.19.2",
|
|
5
5
|
"description": "YuanGe (元阁) - orchestration routing, inventory, and one-command installer for the YottaMeta skill family (zero dependencies, Node.js only).",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "YottaMeta",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: yotta-skills
|
|
3
|
-
version: 0.19.
|
|
4
|
-
description: 元阁 -- 元阁全家技能的总编排策划 + 编排路由 + 一键安装器 + 技能盘点 + 运行时 hook 适配。路由层:--route / route_request 按需求摘要给出候选组合、调用顺序、角色、置信度、依据、已装/缺失状态与安装命令,只建议不自动安装;非元阁家族已装技能按 frontmatter description
|
|
3
|
+
version: 0.19.2
|
|
4
|
+
description: 元阁 -- 元阁全家技能的总编排策划 + 编排路由 + 一键安装器 + 技能盘点 + 运行时 hook 适配。路由层:--route / route_request 按需求摘要给出候选组合、调用顺序、角色、置信度、依据、已装/缺失状态与安装命令,只建议不自动安装;非元阁家族已装技能按 frontmatter description 机械匹配作并列候选(标注来源与未扫描状态,只读不自动调用);策划层:按场景给出「该组合哪几个元技能、组合强在哪、怎么组合使用(安装与调用均由用户确认后执行)」;安装层:一条命令把 YottaMeta 已发布的全部 yotta-* 技能装进指定智能体或目录(默认 --pin 锁死清单精确版本);盘点层:--inventory / --reindex 扫描本机已装技能生成/更新注册表,新装技能自动被发现(install/update 后自动 re-index,会话开工只建议跑本地 --reindex;更新检查走手动 --check 或后台 --check --scheduled);运行时适配层:hook capabilities / evaluate / bind / unbind 按宿主能力矩阵执行六个统一事件并留证降级,元信 before_install 已接入安装管线;自包含零依赖,不依赖任何元技能;MCP 按需加载且需用户确认后写入配置(可选:list_installed_skills/describe_skill/reindex/route_request,不常驻,未加载降级 CLI)。支持 --list 清单 / --route 路由 / install / update / update --check(只读检查)/ update --check --scheduled(后台周检)/ update --auto(家族自动更新)/ hook 适配 / --inventory / --reindex / --dry-run 预览 / --pin(默认)/ --range。触发:需要批量安装或更新元阁全家技能、按场景组合多个元技能、路由或判断该用哪些技能、盘点或查看本机已装技能、重扫技能注册表、给某个智能体或目录一次性铺齐 yotta-* 技能、评估宿主 hook 能力、预览安装清单、锁版本安装、或用户说 元阁/装全家/一次装齐/yotta-skills/install-all/更新全家/检查更新/自动更新/hook 适配/该用哪个技能/路由技能/盘点技能/查看已装技能 等。边界(Do NOT trigger):只做「组合策划 + 静态路由建议 + 清单 + 下载 + 落位 + 汇总 + 盘点 + re-index + hook 适配」,不含技能本体、不做技能内容开发、不 -g 污染全局、不自动安装缺失技能、不静默写宿主配置或全局记忆;家族安装先自举或调用元信装前门禁,DO NOT INSTALL 阻断,非元阁家族包不自动安装。
|
|
5
5
|
license: MIT
|
|
6
6
|
metadata:
|
|
7
7
|
zh_name: 元阁
|
|
@@ -9,20 +9,32 @@ metadata:
|
|
|
9
9
|
|
|
10
10
|
## 使用须知(先做这一步)
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
本技能为**按需触发**技能,本身不常驻。「元阁总编排策划」这套组合决策如果想在**每个会话都可用**,
|
|
13
|
+
可以由用户把它写进客户端的全局记忆文件(Codex 的 `AGENTS.md`、Claude Code 的 `CLAUDE.md`、
|
|
14
|
+
其它智能体的全局/永久记忆),使下个会话自动注入。
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
**这是可选步骤,且必须先获得用户明确同意。AI 不得静默写入,也不得把写入当作使用本技能的前提。**
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
写入前按四步执行:
|
|
19
|
+
|
|
20
|
+
1. **展示**:把**目标文件路径**(如 Codex 的 `$CODEX_HOME/AGENTS.md`)、
|
|
21
|
+
准备写入的**完整文本**、以及写入后的效果(下个会话会自动注入这段说明)一并展示给用户;
|
|
22
|
+
2. **确认**:只有用户明确同意后才写入;**未获同意前不写任何文件**;
|
|
23
|
+
3. **回读校验**:写入后回读确认;目标文件中已有同段内容 → 跳过,不重复堆叠;
|
|
24
|
+
4. **拒绝不影响功能**:用户拒绝或文件不可写时,只说明「未写入全局记忆」,照常使用 CLI
|
|
25
|
+
(`--route` / `install` / `--inventory`),功能不受影响。
|
|
26
|
+
|
|
27
|
+
**可选写入文本(逐字,需用户确认后写入)**:
|
|
28
|
+
|
|
29
|
+
> **元阁编排**:单技能是零件,组合才是系统。接到需求先查「元阁编排策划」命中哪个组合
|
|
21
30
|
> (输出呈现标准 / 长生命周期 / 交付质量门 / 装前安全门 / 造技能发版 / 安全事件响应 / 入口安装),
|
|
22
|
-
>
|
|
31
|
+
> 由 AI 给出**建议**,**经用户确认后**再安装对应技能并调用。本技能不自动安装、不自动调用其他技能,
|
|
32
|
+
> 安装与调用决定权始终在用户。需要时可运行 `yotta-skills --reindex` 重扫本机技能注册表(本地扫描),
|
|
33
|
+
> `yotta-skills update --check` 做只读版本检查,或后台周检 `yotta-skills update --check --scheduled`
|
|
34
|
+
> (未到期不联网,到期单次检查并写缓存)。完整决策表见技能 `yotta-skills/references/orchestration.md`。
|
|
23
35
|
|
|
24
|
-
|
|
25
|
-
|
|
36
|
+
**写入位置**:客户端全局记忆文件(Codex = `$CODEX_HOME/AGENTS.md`,未设置时回退 `~/.codex/AGENTS.md` 的「通用方法论」节)。
|
|
37
|
+
**写入时机**:仅当用户明确要求「让元阁编排在每个会话自动可用」时,按上面四步执行;否则只提供文本供用户自行粘贴。
|
|
26
38
|
|
|
27
39
|
---
|
|
28
40
|
|
|
@@ -31,7 +43,7 @@ metadata:
|
|
|
31
43
|
**元阁全家的总编排策划 + 编排路由 + 一键安装 + 技能盘点**,一句话四层:
|
|
32
44
|
|
|
33
45
|
- **路由层(该用哪几个)**:`--route "<需求摘要>"` / MCP `route_request` 查本地注册表与静态编排 playbook,输出候选组合、调用顺序、每个技能角色、置信度、依据、已装/缺失状态与安装命令;非元阁家族已装技能按 frontmatter description 机械匹配作并列候选(标注来源与未扫描状态,只读不自动调用);只建议安装,不自动安装。
|
|
34
|
-
- **策划层(怎么用)**:接到需求,先按「编排策划」定位命中哪个组合——哪些元技能搭配起来最强、适合什么场景、AI
|
|
46
|
+
- **策划层(怎么用)**:接到需求,先按「编排策划」定位命中哪个组合——哪些元技能搭配起来最强、适合什么场景、AI 该给出什么安装与调用建议(**安装与调用均由用户确认后执行**)。
|
|
35
47
|
- **安装层(怎么装)**:一条 `npx -y @yottameta/yotta-skills` 把组合/全家装进指定智能体或目录——`--list` 看清单、`install` 装、`update` 增量更新、`doctor` 只读自检、`rollback` 恢复快照、`--dry-run` 预览、`--pin` 锁版本。
|
|
36
48
|
- **盘点层(已装了什么)**:`--inventory` / `--reindex` 扫描本机各智能体技能目录,生成/更新本地注册表;装技能后自动 re-index,新装技能自动被发现——自包含扫描,不依赖任何元技能。
|
|
37
49
|
|
|
@@ -42,7 +54,7 @@ metadata:
|
|
|
42
54
|
|
|
43
55
|
## 编排策划(先看这个)
|
|
44
56
|
|
|
45
|
-
**单技能是零件,组合才是系统。**
|
|
57
|
+
**单技能是零件,组合才是系统。** 元阁的价值不只是「装齐全家」,更是告诉你**什么时候该用哪几个、为什么、怎么组合使用**。完整决策表见 `references/orchestration.md`。
|
|
46
58
|
|
|
47
59
|
### 组合矩阵(哪些和哪些,强在哪)
|
|
48
60
|
|
|
@@ -58,7 +70,7 @@ metadata:
|
|
|
58
70
|
|
|
59
71
|
### 场景 → 组合映射(接到需求查表)
|
|
60
72
|
|
|
61
|
-
| 用户场景 | 该组合 |
|
|
73
|
+
| 用户场景 | 该组合 | 建议动作(经用户确认后执行) |
|
|
62
74
|
|---|---|---|
|
|
63
75
|
| 「让 AI 长期帮我做项目 / 别忘了我 / 跨会话」 | ② 长生命周期 | 装 yotta-workflow yotta-memory yotta-learn yotta-logs;开工恢复上下文、状态就近存、会话结束留记录 |
|
|
64
76
|
| 「帮我写/润色,输出规范、别 AI 味」 | ① 输出呈现标准 | 装 yotta-present yotta-humanize;默认先判型渲染,检测 AI 味再改写 |
|
|
@@ -68,14 +80,17 @@ metadata:
|
|
|
68
80
|
| 「我怀疑日志/资产有问题」 | ⑥ 安全事件响应 | 装 yotta-logwatch yotta-intel yotta-triage yotta-secret yotta-chain yotta-recon;按需调用 |
|
|
69
81
|
| 「不知道怎么说 / 一堆技能该用哪个」 | ⑦ 入口+安装 | 装 yotta-prompt yotta-skills;元引澄清→串联→按组合装 |
|
|
70
82
|
|
|
71
|
-
### AI
|
|
83
|
+
### AI 建议安装与组合规则
|
|
72
84
|
|
|
73
85
|
1. **查表**:接到需求,先在「场景 → 组合映射」定位命中组合。
|
|
74
86
|
2. **查已装**:检查当前智能体技能目录是否存在对应 `<slug>/SKILL.md`;存在即已装,缺失即待装。
|
|
75
|
-
3.
|
|
76
|
-
`npx -y @yottameta/yotta-skills install <slug>... [--agent <name> | --dir <path>]`
|
|
77
|
-
|
|
78
|
-
|
|
87
|
+
3. **建议装**:只列组合所需技能(不装全家)与安装命令
|
|
88
|
+
`npx -y @yottameta/yotta-skills install <slug>... [--agent <name> | --dir <path>]`(默认 `--pin` 锁死清单精确版本),
|
|
89
|
+
**先给出清单与命令,等用户确认后再执行**;用户未确认 → 不安装。
|
|
90
|
+
4. **建议用**:说明命中组合的推荐动作(如输出按元呈判型渲染、开工恢复上下文 + 读状态文件),
|
|
91
|
+
**由用户确认后生效**。跨会话的默认行为需要写进客户端全局记忆,写入本身同样需要用户明确同意(见「使用须知」);
|
|
92
|
+
**不得**把「无需提醒」「默认全走」当作常驻授权。
|
|
93
|
+
5. **用户触发(高风险)**:命中「④ ⑥ ⑤」等高风险或目的不明时,AI 给出技能清单 + 执行方案,**先征询用户确认**再执行;拿不准就当未装,只给安装命令。
|
|
79
94
|
6. **判断标准**:技能目录有对应 `SKILL.md` 即视为已装;拿不准 → 视为未装并给提示。
|
|
80
95
|
|
|
81
96
|
---
|
|
@@ -142,7 +157,7 @@ npx -y @yottameta/yotta-skills --reindex
|
|
|
142
157
|
| `hook evaluate --host <name> --event <event> --manifest <file> --context <json>` | 评估 manifest hook 声明,输出 allow / block / warn / unverified,并写结构化证据 |
|
|
143
158
|
| `hook bind --host <name> --manifest <file>` | 幂等注册 hook 声明;`hook unbind <id>` 反注册 |
|
|
144
159
|
| `--inventory` | 盘点本机已装技能:扫描技能目录生成/更新注册表(自包含,不依赖元技能);`--json` 输出 JSON、`--project` 附扫项目级目录 |
|
|
145
|
-
| `--reindex` |
|
|
160
|
+
| `--reindex` | 重扫注册表:扫描技能目录并增量合并变化(install / update 完成后 CLI 自动重扫;也可在会话开工等时机手动运行);`--json` 输出 JSON、`--project` 附扫项目级目录;`--rescan` 同义 |
|
|
146
161
|
| `--route <需求摘要>` | 静态编排路由:输出组合、调用顺序、技能角色、置信度、依据、已装/缺失状态与安装建议;`--json` 输出 JSON、`--project` 附扫项目级目录 |
|
|
147
162
|
| `--no-reindex` | 安装 / 更新后不自动重扫注册表 |
|
|
148
163
|
| `--dry-run` | 预览将执行的安装 / 更新清单;不联网、不改动 |
|
|
@@ -275,10 +290,12 @@ npx -y @yottameta/yotta-skills --route "检查代码质量,别糊弄" --json
|
|
|
275
290
|
提供 `list_installed_skills`(盘点)/ `describe_skill`(单技能详情)/ `reindex`(强制重扫)/ `route_request`(静态编排路由)四个工具。
|
|
276
291
|
|
|
277
292
|
**按需加载,不走常驻**:本技能与 MCP 均为按需触发。默认以 CLI 为主
|
|
278
|
-
(`npx -y @yottameta/yotta-skills --inventory`);需要让 AI
|
|
293
|
+
(`npx -y @yottameta/yotta-skills --inventory`);需要让 AI 通过工具直接调用时,再按下面配置启用。
|
|
294
|
+
**写客户端配置前必须先获得用户明确同意**:先展示目标配置文件路径、将写入的完整配置与影响(客户端需重启 / 重载一次),
|
|
295
|
+
用户确认后才写入;用户拒绝 → 不写配置,保持 CLI 用法,功能不受影响。
|
|
279
296
|
|
|
280
297
|
1. **检查当前客户端的 `mcpServers`** 是否已有 `yotta-skills` 条目;已有 → 直接使用。
|
|
281
|
-
2. **没有 →
|
|
298
|
+
2. **没有 → 先征得用户同意,再写入**下面这一条 server 配置(用后可移除,不要求常驻):
|
|
282
299
|
```json
|
|
283
300
|
{
|
|
284
301
|
"mcpServers": {
|
|
@@ -292,13 +309,14 @@ npx -y @yottameta/yotta-skills --route "检查代码质量,别糊弄" --json
|
|
|
292
309
|
> `<技能目录>` = 本技能实际安装目录,**不要写死盘符路径**;Windows 用 `python`,Linux/macOS 用 `python3`。
|
|
293
310
|
3. **提醒用户**:改 `mcpServers` 后多数客户端需**重启 / 重载一次** MCP server 才生效;加载后应看到
|
|
294
311
|
`list_installed_skills` / `describe_skill` / `reindex` / `route_request` 四个工具。
|
|
295
|
-
4. **降级兜底(重要)**:若客户端未暴露 MCP 工具 / 无法改配置 / server 未加载,**自动降级 CLI**
|
|
312
|
+
4. **降级兜底(重要)**:若客户端未暴露 MCP 工具 / 用户拒绝改配置 / 无法改配置 / server 未加载,**自动降级 CLI**
|
|
296
313
|
(同一套扫描与路由核心、结果一致):`npx -y @yottameta/yotta-skills --inventory / --reindex / --route ...`。
|
|
297
314
|
|
|
298
315
|
## 版本策略
|
|
299
316
|
|
|
300
|
-
- 默认
|
|
301
|
-
|
|
317
|
+
- 默认 **`pin`**:`npm pack` 使用清单中的精确版本(如 `@yottameta/yotta-present@0.6.2`),结果完全可复现,
|
|
318
|
+
不会静默跟随 npm 上的浮动版本;
|
|
319
|
+
- `--range`(可选):按清单 `major.x` 取 npm 最新 patch(如 `0.x`),仅在用户明确要求跟随 patch 时使用;
|
|
302
320
|
- 是否「已是最新」由目标目录 `<slug>/SKILL.md` 的 frontmatter `version` 与清单比对,
|
|
303
321
|
一致即跳过(幂等)。
|
|
304
322
|
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* npx -y @yottameta/yotta-skills hook evaluate --event before_send --manifest <file> # 评估并留证
|
|
16
16
|
* npx -y @yottameta/yotta-skills --dry-run # 预览将安装清单(不联网、不改动)
|
|
17
17
|
*
|
|
18
|
-
*
|
|
18
|
+
* 版本策略:默认 `--pin` 锁死清单精确版本(可复现,不静默跟随浮动版本);`--range` 才跟随同 major 最新 patch。
|
|
19
19
|
* 依赖:Node.js 18+;npm(pack);系统 tar(解压);元信 scan 可选(装了 yotta-verify 自动启用)。
|
|
20
20
|
* 边界:只做「清单 + 下载 + 落位 + 汇总」;不内置任何技能本体;不 -g 污染。
|
|
21
21
|
*/
|
|
@@ -37,7 +37,7 @@ const hookAdapterLib = require('../lib/hook-adapter');
|
|
|
37
37
|
const { createInstaller, isSafeTarEntry } = require('../lib/install-pipeline');
|
|
38
38
|
|
|
39
39
|
const PKG_ROOT = path.join(__dirname, '..');
|
|
40
|
-
let VERSION = '0.19.
|
|
40
|
+
let VERSION = '0.19.2';
|
|
41
41
|
try { VERSION = require(path.join(PKG_ROOT, 'package.json')).version; } catch (_) { /* keep fallback */ }
|
|
42
42
|
|
|
43
43
|
function loadManifest() {
|
|
@@ -144,7 +144,7 @@ function resolveNpm(opts) {
|
|
|
144
144
|
|
|
145
145
|
function parseArgs(argv) {
|
|
146
146
|
const opts = {
|
|
147
|
-
list: false, dryRun: false, pin:
|
|
147
|
+
list: false, dryRun: false, pin: true, skipScan: false, force: false,
|
|
148
148
|
help: false, version: false, agent: null, dir: null, npm: null,
|
|
149
149
|
python: null, verify: null, command: null, skill: null, rest: [],
|
|
150
150
|
inventory: false, reindex: false, noReindex: false, json: false, project: false, route: null,
|
|
@@ -158,6 +158,7 @@ function parseArgs(argv) {
|
|
|
158
158
|
if (a === '--list' || a === '-l') opts.list = true;
|
|
159
159
|
else if (a === '--dry-run') opts.dryRun = true;
|
|
160
160
|
else if (a === '--pin') opts.pin = true;
|
|
161
|
+
else if (a === '--range') opts.pin = false;
|
|
161
162
|
else if (a === '--skip-scan') opts.skipScan = true;
|
|
162
163
|
else if (a === '--force') opts.force = true;
|
|
163
164
|
else if (a === '--help' || a === '-h') opts.help = true;
|
|
@@ -691,7 +692,7 @@ const installOne = createInstaller({
|
|
|
691
692
|
function runInstall(opts, dest) {
|
|
692
693
|
const skills = selectSkills(opts);
|
|
693
694
|
out('yotta-skills(元阁)v' + VERSION + ' —— 安装 ' + skills.length + ' 个技能 -> ' + dest);
|
|
694
|
-
out('版本策略: ' + (opts.pin ? 'pin
|
|
695
|
+
out('版本策略: ' + (opts.pin ? 'pin(锁死清单精确版本,默认)' : 'range(' + skillRange(skills[0]) + ',跟随最新 patch)'));
|
|
695
696
|
const results = [];
|
|
696
697
|
let failed = 0;
|
|
697
698
|
let exitCode = 0;
|
|
@@ -1049,7 +1050,7 @@ function runRollback(opts, dest) {
|
|
|
1049
1050
|
function printList(opts) {
|
|
1050
1051
|
const skills = opts.skills.length ? selectSkills(opts) : MANIFEST;
|
|
1051
1052
|
out('yotta-skills(元阁)v' + VERSION + ' —— 全家技能清单(' + skills.length + ' 个)');
|
|
1052
|
-
out('版本策略: ' + (opts.pin ? 'pin
|
|
1053
|
+
out('版本策略: ' + (opts.pin ? 'pin(精确锁定,默认)' : 'range(' + skillRange(skills[0]) + ' 起,跟随最新 patch)'));
|
|
1053
1054
|
out('');
|
|
1054
1055
|
for (const s of skills) {
|
|
1055
1056
|
out(' ' + s.slug.padEnd(22) + s.name.padEnd(5) + ' ' + specOf(s, opts.pin).padEnd(52) + ' ' + s.version + ' ' + s.desc);
|
|
@@ -1073,7 +1074,7 @@ function printHelp() {
|
|
|
1073
1074
|
out(' yotta-skills rollback --dir <path> 回滚最近一次技能安装或更新(--list 查看快照)');
|
|
1074
1075
|
out(' yotta-skills --dry-run 预览将安装清单(不联网、不改动)');
|
|
1075
1076
|
out(' yotta-skills --inventory 盘点本机已装技能(自研扫描,不依赖任何元技能)');
|
|
1076
|
-
out(' yotta-skills --reindex
|
|
1077
|
+
out(' yotta-skills --reindex 重扫注册表(手动触发;install / update 完成后 CLI 自动重扫)');
|
|
1077
1078
|
out(' yotta-skills --route "<需求摘要>" 给出场景组合、调用顺序、缺失技能安装建议');
|
|
1078
1079
|
out(' yotta-skills hook capabilities 查看宿主六事件能力矩阵');
|
|
1079
1080
|
out(' yotta-skills hook evaluate --event <event> --manifest <file> 评估 hook 声明并留证');
|
|
@@ -1083,7 +1084,8 @@ function printHelp() {
|
|
|
1083
1084
|
out('选项:');
|
|
1084
1085
|
out(' --agent <name> 智能体键名(--list 可查看;未知智能体请用 --dir)');
|
|
1085
1086
|
out(' --dir <path> 目标技能目录(技能会装到 <path>/<slug>)');
|
|
1086
|
-
out(' --pin
|
|
1087
|
+
out(' --pin 锁死清单精确版本(默认)');
|
|
1088
|
+
out(' --range 跟随同 major 最新 patch(非默认:显式指定后才浮动跟随)');
|
|
1087
1089
|
out(' --force 已是最新也重装');
|
|
1088
1090
|
out(' --skip-scan 跳过元信装前 scan(装了 yotta-verify 自动启用)');
|
|
1089
1091
|
out(' --npm <path> 指定 npm 可执行文件(默认 npm / npm.cmd)');
|
|
@@ -1146,7 +1148,7 @@ function runInventory(opts) {
|
|
|
1146
1148
|
}
|
|
1147
1149
|
}
|
|
1148
1150
|
|
|
1149
|
-
/** --reindex:重扫 +
|
|
1151
|
+
/** --reindex:重扫 + 增量合并,变化聚焦输出(手动触发 / 供钩子或脚本调用)。 */
|
|
1150
1152
|
function runReindex(opts) {
|
|
1151
1153
|
const scan = require('../lib/skills-scan');
|
|
1152
1154
|
const { result, registry, changes } = reindexRegistry(opts);
|
|
@@ -5,8 +5,9 @@
|
|
|
5
5
|
- **安装目标**:未指定目标怎么办 · 支持哪些智能体 · 装完为什么看不到
|
|
6
6
|
- **网络与源**:国内访问慢 · 镜像延迟 · 网络失败
|
|
7
7
|
- **更新**:`update --check` 退出码 · 后台周检缓存 · 自动更新边界 · 幂等
|
|
8
|
-
-
|
|
8
|
+
- **版本**:默认 `--pin` 与 `--range` · 清单漂移 · 单技能安装
|
|
9
9
|
- **安全**:装前扫描 · 目标目录校验 · 失败恢复
|
|
10
|
+
- **授权**:会不会自动装技能 / 自动写全局记忆 / 自动改 MCP 配置
|
|
10
11
|
|
|
11
12
|
---
|
|
12
13
|
|
|
@@ -58,9 +59,10 @@ YOTTA_SKILLS_NPM_FLAGS="--registry=https://registry.npmmirror.com" npx -y @yotta
|
|
|
58
59
|
|
|
59
60
|
不会。默认按清单版本判断,已一致的技能跳过;需要强制覆盖时加 `--force`。
|
|
60
61
|
|
|
61
|
-
## 7. `--pin`
|
|
62
|
+
## 7. `--pin` 和 `--range` 怎么选?
|
|
62
63
|
|
|
63
|
-
|
|
64
|
+
默认是 `--pin`:按清单精确版本安装,完全可复现、不会静默跟随浮动版本。
|
|
65
|
+
只有你明确想跟随同 major 的最新 patch 时才加 `--range`。
|
|
64
66
|
|
|
65
67
|
## 8. 为什么清单和文档版本会不一致?
|
|
66
68
|
|
|
@@ -105,3 +107,9 @@ npx -y @yottameta/yotta-skills install <slug> --dir /path/to/skills
|
|
|
105
107
|
## 13. `hook evaluate` 会真的拦截动作吗?
|
|
106
108
|
|
|
107
109
|
不一定。适配层先探测宿主能力:`native-block` 才能声明动作前阻断;`native-audit` 只能审计并触发一次纠偏,结果会标记 `explicit-unverified`;`wrapper-only` 仅在 wrapper 注册后保证;未知宿主全部按 `unsupported` 处理。当前 Codex 已实测能力见 `hook capabilities --host codex`。
|
|
110
|
+
|
|
111
|
+
## 14. 元阁会自动安装技能、写全局记忆或改 MCP 配置吗?
|
|
112
|
+
|
|
113
|
+
不会。元阁只给建议:`--route` 输出缺失技能与安装命令,安装动作由你执行或确认后才发生;
|
|
114
|
+
写客户端 `mcpServers` 配置、把编排护栏写进全局记忆(如 `AGENTS.md` / `CLAUDE.md`)都需要**事先明确同意**,
|
|
115
|
+
并会先展示目标文件与完整文本。你拒绝写入时,元阁不写任何文件,直接以 CLI 方式继续工作。
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
3. 系统 `tar -xzf` 解压到临时目录(产物应有 `SKILL.md`);
|
|
13
13
|
4. 读取包内 `skill-manifest.json`;没有 manifest 时使用 `skills.json` 的家族默认契约;
|
|
14
14
|
5. 校验 slug / package / version / 权限 / 生命周期脚本路径;
|
|
15
|
-
6.
|
|
15
|
+
6. 元信装前扫描:已有元信则直接扫描;没有则在本次已获用户确认的安装动作内自举元信自身,再扫描;
|
|
16
16
|
7. 通过后创建旧版本快照,把新版本复制到同盘暂存目录,再原子切换到目标目录;
|
|
17
17
|
8. 依次执行包内 setup、内置 doctor、包内自定义 doctor;任一步失败自动恢复旧版本;
|
|
18
18
|
9. 汇总报告:✔ 成功 / - 跳过(已是最新)/ ✘ 失败;
|
|
@@ -35,8 +35,8 @@
|
|
|
35
35
|
- 校验 `install.idempotent` 为 `true`;
|
|
36
36
|
- 校验 setup / doctor / rollback 路径为包内相对路径,不能包含绝对路径或 `..`。
|
|
37
37
|
|
|
38
|
-
没有 manifest 时使用家族默认契约:来源 `yottameta
|
|
39
|
-
|
|
38
|
+
没有 manifest 时使用家族默认契约:来源 `yottameta`、幂等安装、应用模式 `route`
|
|
39
|
+
(元阁只给路由建议,实际安装与调用由用户确认后执行),不声明 MCP、hook 或自定义生命周期脚本。
|
|
40
40
|
|
|
41
41
|
## 自定义生命周期脚本
|
|
42
42
|
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
|
|
53
53
|
- `install` / `update` 完成后,CLI 自动调用 `--reindex`(同一套 `lib/skills-scan.js` 扫描核心):
|
|
54
54
|
重扫技能根目录 → 增量合并进 `~/.yottaskills/registry.json`(新增 / 更新 / 消失)。
|
|
55
|
-
- `--no-reindex` 关闭自动重扫;`--reindex`
|
|
55
|
+
- `--no-reindex` 关闭自动重扫;`--reindex` 也可单独手动执行(例如会话开工时或新装技能后)。
|
|
56
56
|
- 与 `--inventory` 的区别:`--inventory` 侧重「盘点展示」(文本表格 / JSON 全量),
|
|
57
57
|
`--reindex` 侧重「变化合并」(增量、输出聚焦新增 / 更新 / 消失,适合钩子与脚本)。
|
|
58
58
|
|
|
@@ -64,8 +64,8 @@
|
|
|
64
64
|
|
|
65
65
|
## 版本策略
|
|
66
66
|
|
|
67
|
-
- 默认
|
|
68
|
-
- `--
|
|
67
|
+
- 默认 pin:spec = `<pkg>@<清单精确版本>`,完全可复现,不跟随浮动版本;
|
|
68
|
+
- `--range`(可选):spec = `<pkg>@<major>.x`(如 `0.x`),`npm pack` 取同 major 最新 patch。
|
|
69
69
|
|
|
70
70
|
## npm 解析(Windows)
|
|
71
71
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# 元阁编排策划(orchestration)
|
|
2
2
|
|
|
3
|
-
> 元阁(yotta-skills)的**编排层**:告诉 AI
|
|
4
|
-
> 本页是「每个场景 → 选哪几个技能 → 为什么 →
|
|
3
|
+
> 元阁(yotta-skills)的**编排层**:告诉 AI 智能体「什么时候该组合哪几个元技能、组合起来比单用强在哪、怎么建议用户安装并按组合契约使用」。
|
|
4
|
+
> 本页是「每个场景 → 选哪几个技能 → 为什么 → 怎么组合使用」的决策表。安装与调用都由用户确认后执行,本页只提供建议。
|
|
5
5
|
> 配套:全家清单见 `skill-list.md`;安装用法见 SKILL.md「快速使用」。
|
|
6
6
|
|
|
7
7
|
---
|
|
@@ -55,7 +55,7 @@ npx -y @yottameta/yotta-skills --route "帮我润色输出,要规范可复制
|
|
|
55
55
|
|
|
56
56
|
## 三、场景 → 组合映射(AI 接到需求时查表)
|
|
57
57
|
|
|
58
|
-
| 用户场景(触发词) | 该组合 |
|
|
58
|
+
| 用户场景(触发词) | 该组合 | 建议动作(经用户确认后执行) |
|
|
59
59
|
|---|---|---|
|
|
60
60
|
| 「让 AI 长期帮我做项目 / 别忘了我 / 跨会话」 | ② 长生命周期 | 装 yotta-workflow yotta-memory yotta-learn yotta-logs;开工恢复上下文、状态就近存、会话结束留记录 |
|
|
61
61
|
| 「帮我写/润色,让输出规范、别 AI 味」 | ① 输出呈现标准 | 装 yotta-present yotta-humanize;默认先判型渲染,检测 AI 味再改写 |
|
|
@@ -65,20 +65,24 @@ npx -y @yottameta/yotta-skills --route "帮我润色输出,要规范可复制
|
|
|
65
65
|
| 「我怀疑日志/资产有问题」 | ⑥ 安全事件响应 | 装 yotta-logwatch yotta-intel yotta-triage yotta-secret yotta-chain yotta-recon;按需调用 |
|
|
66
66
|
| 「不知道怎么说 / 一堆技能该用哪个」 | ⑦ 入口+安装 | 装 yotta-prompt yotta-skills;元引澄清→串联→元阁按组合装 |
|
|
67
67
|
|
|
68
|
-
>
|
|
68
|
+
> 组合不是死板套餐:命中「入口+安装」或「输出呈现标准」这类**常用组合**时,AI 应主动说明推荐理由与将要做什么,**由用户确认后执行**;命中安全/发版这类**高风险动作**时,AI 应先给出技能清单与执行方案,再由用户确认。
|
|
69
69
|
|
|
70
70
|
---
|
|
71
71
|
|
|
72
|
-
## 四、AI
|
|
72
|
+
## 四、AI 建议安装与组合规则(金标准)
|
|
73
73
|
|
|
74
74
|
1. **查表**:接到需求,先在「场景→组合映射」里定位命中组合。
|
|
75
75
|
2. **查已装**:检查当前智能体的技能目录是否存在对应 `<slug>/SKILL.md`;存在即已装,缺失即待装。
|
|
76
|
-
3.
|
|
76
|
+
3. **建议装**:缺失的技能给出清单与命令
|
|
77
77
|
`npx -y @yottameta/yotta-skills install <slug>... [--agent <name> | --dir <path>]`
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
78
|
+
(只装组合所需,不装全家,避免过度安装;默认 `--pin` 锁死清单精确版本),
|
|
79
|
+
**等用户确认后再执行**;用户未确认 → 不安装。
|
|
80
|
+
4. **建议用**:命中「输出呈现标准」「长生命周期」这类组合时,先说明推荐动作
|
|
81
|
+
(如输出按元呈判型渲染、开工恢复上下文 + 读状态文件)与影响范围,**由用户确认后生效**。
|
|
82
|
+
需要跨会话默认生效时,必须把默认行为写进客户端全局记忆,写入前单独征得用户明确同意;
|
|
83
|
+
**不得**以「默认契约」「无需提醒」为由跳过确认。
|
|
84
|
+
5. **用户触发(高风险)**:命中「安全 / 发版 / 造技能」这类**高风险或目的不明**时,AI 给出技能清单与执行方案,**先征询用户确认**再执行;拿不准就当未装,给出安装命令。
|
|
85
|
+
6. **边界**:不 `-g` 全局安装;不向未指定位置写文件(含客户端 `mcpServers` 配置与全局记忆文件);不静默写任何宿主配置;拿不准某技能是否已装 → 视为未装并给提示;网络不可用 → 明确报错,不伪造结果。
|
|
82
86
|
|
|
83
87
|
---
|
|
84
88
|
|
|
@@ -135,7 +135,7 @@ npx -y @yottameta/yotta-skills --reindex
|
|
|
135
135
|
|
|
136
136
|
- `install` / `update` 完成后会自动重扫注册表(`~/.yottaskills/registry.json`),新装 / 更新的
|
|
137
137
|
技能随即出现在 `--inventory` / `--reindex` 里;`--no-reindex` 可关闭自动重扫。
|
|
138
|
-
-
|
|
138
|
+
- 可在会话开工时手动跑一次 `--reindex`(快速增量,只合并变化),让后装的技能自动被看见。
|
|
139
139
|
- 更新检查不再作为会话开工默认动作:手动检查用 `update --check`;后台周检用
|
|
140
140
|
`update --check --scheduled`,未到期不联网,到期只检查一次并写
|
|
141
141
|
`~/.yottaskills/update-check.json`。
|
|
@@ -15,6 +15,7 @@ stdio MCP server(JSON-RPC 2.0,换行分隔),把元阁技能扫描核心
|
|
|
15
15
|
MCP 客户端配置:
|
|
16
16
|
{"mcpServers":{"yotta-skills":{"command":"python",
|
|
17
17
|
"args":["<绝对路径>/scripts/yotta-skills-mcp.py"]}}}
|
|
18
|
+
(写入客户端配置属于修改用户环境,必须先获得用户明确同意,并先展示目标文件与完整配置。)
|
|
18
19
|
"""
|
|
19
20
|
|
|
20
21
|
import json
|
|
@@ -24,7 +25,7 @@ import subprocess
|
|
|
24
25
|
import sys
|
|
25
26
|
from pathlib import Path
|
|
26
27
|
|
|
27
|
-
VERSION = "0.19.
|
|
28
|
+
VERSION = "0.19.2"
|
|
28
29
|
TOOL_NAME = "yotta-skills"
|
|
29
30
|
CN_NAME = "元阁"
|
|
30
31
|
MCP_PROTOCOL_MODERN = "2026-07-28"
|