@vasm/cli 0.5.0 → 0.6.0
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/CHANGELOG.md +7 -0
- package/README.md +171 -27
- package/dist/index.js +207 -414
- package/package.json +12 -44
- package/LICENSE +0 -21
package/CHANGELOG.md
ADDED
package/README.md
CHANGED
|
@@ -1,39 +1,183 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @vasm/cli
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
`@vasm/cli` 发布 `vasmc` 命令,是 VASMC 的 AI-facing 编译入口。它将 `.vasm.md` 源文件编译为纯净 Markdown 产物,并在 `build` 时生成 `.vasmc/build-instructions.md`,让当前 AI 继续处理语义任务。
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
<a name="cli"></a>
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
## 🛠️ @vasm/cli:AI 编译与工作单
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
`@vasm/cli` 提供 `vasmc` 命令,是 VASMC 的 AI-facing 编译入口。它只做确定性工作:依赖同步、AST 组装、语言块过滤、产物写入,以及生成给当前 AI 使用的后续工作单。
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
* **确定性构建**: SHA-256 锁文件 (`vasmc-lock.yaml`) 确保构建可复现。
|
|
13
|
-
* **交叉编译**: AST 级语言块过滤 (`<!-- lang:xx -->`) 生成各语种产物;未覆盖语种可自动唤起 LLM 交叉编译回译。
|
|
14
|
-
* **双模式引入**:
|
|
15
|
-
* `@import:link` — 别名重写为本地相对路径(保留超链接结构)。
|
|
16
|
-
* `@import:inline` — 内联展开远程内容(组装大型 Prompt 上下文)。
|
|
11
|
+
### 安装
|
|
17
12
|
|
|
18
|
-
|
|
13
|
+
```bash
|
|
14
|
+
npm install -g @vasm/cli
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
### 1. 初始化项目
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
vasmc init
|
|
21
|
+
```
|
|
19
22
|
|
|
20
|
-
|
|
21
|
-
|------|------|------|
|
|
22
|
-
| `vasmc build` | 确定性工具 | 纯编译器 — AST 组装 + 交叉编译 |
|
|
23
|
-
| `vasmc agent` | Agent 工具 | 零 LLM 编译 + 生成 AI 编辑器编排指令 |
|
|
24
|
-
| `vasmc lint` | LLM 增强工具 | 对编译产物进行语义冲突检测 |
|
|
25
|
-
| `vasmc diff` | LLM 增强工具 | 版本间语义差异分析 |
|
|
26
|
-
| `vasmc graph` | 确定性工具 | ASCII 依赖图谱可视化 |
|
|
27
|
-
| `vasmc seal` | 确定性工具 | 为普通 Markdown 注入 Frontmatter |
|
|
28
|
-
| `vasmc sync` | 确定性工具 | 安装并锁定所有依赖 |
|
|
23
|
+
在工程根目录建立一个 `vasmc.yaml` 来声明依赖:
|
|
29
24
|
|
|
30
|
-
|
|
25
|
+
```yaml
|
|
26
|
+
dependencies:
|
|
27
|
+
company-rules: "https://example.com/guidelines.md"
|
|
28
|
+
coder-skill:
|
|
29
|
+
url: "https://example.com/coder-skill.md"
|
|
30
|
+
dest: "./skills/coder.md"
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
也可以直接使用命令行注册依赖:
|
|
31
34
|
|
|
32
35
|
```bash
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
36
|
+
vasmc add https://example.com/coder-skill.md --alias coder-skill --dest ./skills/coder.md
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### 2. 同步与锁定
|
|
40
|
+
|
|
41
|
+
将 `.vasmc/` 加入 `.gitignore`。这是 VASMC 的内部缓存目录。`vasmc-lock.yaml` 应提交到版本控制,它确保构建输入确定。
|
|
42
|
+
|
|
43
|
+
```gitignore
|
|
44
|
+
.vasmc/
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
安装所有缺失依赖并生成或更新锁文件:
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
vasmc sync
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
需要强制刷新时:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
vasmc update <alias>
|
|
57
|
+
vasmc update
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### 3. AI 编译
|
|
61
|
+
|
|
62
|
+
一对一编译并生成工作单:
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
vasmc build main.vasm.md -o ./dist
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
工作区编译并生成工作单:
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
vasmc build
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
`vasmc build` 是 AI 侧唯一编译入口。它会执行确定性的 AST 组装、语言块过滤和产物写入;如果目标语言缺失,它不会调用外部模型自动补全,而是在 `.vasmc/build-instructions.md` 中生成后续工作单,让当前 AI 接管 Verify、Translate、Diff、Policy Review、Policy Gate、Project Review 和 Tree-Shake 等语义任务。
|
|
75
|
+
|
|
76
|
+
### 4. 工作单
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
cat .vasmc/build-instructions.md
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
每次执行 `vasmc build` 后,AI 编辑器都应立即读取 `.vasmc/build-instructions.md`,并按其中列出的 Action Items 顺序执行。`.vasmc/build-report.yaml` 会记录本次构建涉及的入口、产物、manifest 摘要、依赖、`policy.status` 和 policy diagnostics,供 AI 做上下文与权限边界审查。若启用 `ai.projectReview`,`.vasmc/project-review-context.yaml` 会列出可供 AI 做项目感知建议的文件索引。
|
|
83
|
+
|
|
84
|
+
### 5. 其他确定性命令
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
vasmc graph main.vasm.md
|
|
88
|
+
vasmc seal my-prompt.md --alias my-custom-name
|
|
89
|
+
vasmc seal "prompts/**/*.md" --format prompt
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
`seal` 会为普通 Markdown 注入 VASM Frontmatter,并将文件重命名为 `.vasm.md`。对于 README、HELP、DESIGN 等人类文档,请显式使用 `--format doc`;对于 System Prompt、Skill 等 AI 消费文件,请使用 `--format prompt`。
|
|
93
|
+
|
|
94
|
+
***
|
|
95
|
+
|
|
96
|
+
<a name="workspace"></a>
|
|
97
|
+
|
|
98
|
+
### 🗂️ 工作区批量编译
|
|
99
|
+
|
|
100
|
+
```yaml
|
|
101
|
+
includes:
|
|
102
|
+
- "src/**/*.vasm.md"
|
|
103
|
+
|
|
104
|
+
output:
|
|
105
|
+
dir: "./dist"
|
|
106
|
+
|
|
107
|
+
baseDir: "./src"
|
|
108
|
+
|
|
109
|
+
compile:
|
|
110
|
+
doc:
|
|
111
|
+
targetLangs: ["zh-CN"]
|
|
112
|
+
prompt:
|
|
113
|
+
targetLangs: ["zh-CN"]
|
|
114
|
+
|
|
115
|
+
routing:
|
|
116
|
+
- match: "src/agents/*.vasm.md"
|
|
117
|
+
dest: "./dist/agents/"
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
也支持 CLI 临时覆盖:
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
vasmc build --out-dir ./doc --base-dir ./src
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
<a name="cli-ai-build"></a>
|
|
127
|
+
|
|
128
|
+
## 🤖 AI Build 工作流
|
|
129
|
+
|
|
130
|
+
大模型辅助编程时代,VASMC 只负责确定性组装;语义校验、翻译、Diff 和裁剪应由当前 AI 接管。作为统管全局的 AI 助手,你应该使用 AI 侧 build 驱动编译:
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
vasmc build [file]
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
> **AI 编辑器始终使用 `vasmc build`。**\
|
|
137
|
+
> 在 `@vasm/cli` 中,`build` 会同时产出确定性 Markdown 和 `.vasmc/build-instructions.md` 后续工作单。
|
|
138
|
+
|
|
139
|
+
在该模式下,VASMC 执行 AST 静态组装,并在项目隐藏目录输出指令清单和结构化报告:
|
|
140
|
+
|
|
141
|
+
**`.vasmc/build-instructions.md`**
|
|
142
|
+
|
|
143
|
+
**`.vasmc/build-report.yaml`**
|
|
144
|
+
|
|
145
|
+
**`.vasmc/project-review-context.yaml`**(仅在 `ai.projectReview` 开启时生成)
|
|
146
|
+
|
|
147
|
+
### AI 助手操作规程
|
|
148
|
+
|
|
149
|
+
每当你执行了 `vasmc build` 命令后,**立即读取 `.vasmc/build-instructions.md`**,并按其中列出的 Action Items 顺序执行以下任务(具体步骤由编译器按需生成):
|
|
150
|
+
|
|
151
|
+
1. **Semantic Verify**:读取 Minimal-Token Variant,检查语义冲突、人格分裂、逻辑冗余和系统破坏风险四类问题。
|
|
152
|
+
2. **Translation**(按需):若 instructions 中包含此步骤,将已校验的核心文件翻译到指定的其他语种,**严格保留** Markdown AST 结构。
|
|
153
|
+
3. **Semantic Diff**(按需):若 instructions 中包含此步骤,读取指定的历史备份文件,向用户说明本次编译在底层结构上影响了什么。
|
|
154
|
+
4. **Policy Review**(按需):若 instructions 中包含此步骤,读取 `.vasmc/build-report.yaml`,检查 skill manifest 的 scope、capabilities、activation、trust,以及 activation intent 是否存在冲突、重叠或 priority 抢占风险。
|
|
155
|
+
5. **Policy Gate**(按需):若 instructions 中包含此步骤,说明确定性 policy 已发现阻断风险;在 `security.mode: enforce` 下,VASMC 不会更新该 skill 的正式输出。
|
|
156
|
+
6. **Project Review**(按需):若 instructions 中包含此步骤,读取 `.vasmc/project-review-context.yaml` 和 `.vasmc/build-report.yaml`,结合项目文件给出源文件级建议或 patch 建议,不能直接编辑生成物。
|
|
157
|
+
7. **Tree-Shake(条件性)**:**仅在**用户明确表达了优化 Prompt 的意图时,才执行裁剪分析。
|
|
158
|
+
|
|
159
|
+
你是统筹全局的智能主体,而 VASMC 是你最可靠的确权肌肉。
|
|
160
|
+
|
|
161
|
+
### Policy 状态
|
|
162
|
+
|
|
163
|
+
`.vasmc/build-report.yaml` 中每个 entry 都包含 `policy.status`:
|
|
164
|
+
|
|
165
|
+
* `pass`:无确定性风险信号。
|
|
166
|
+
* `review`:允许输出,但 AI 必须审查 report 中的 diagnostics。
|
|
167
|
+
* `blocked`:存在可确定的阻断风险,例如依赖 capability 越权或 lockfile hash 失配。默认 `review` 模式只报告;`enforce` 模式会阻止 unsafe skill 输出被更新。
|
|
168
|
+
|
|
169
|
+
### Project Review
|
|
170
|
+
|
|
171
|
+
项目可以在 `vasmc-build.yaml` 中开启项目感知审查:
|
|
172
|
+
|
|
173
|
+
```yaml
|
|
174
|
+
ai:
|
|
175
|
+
projectReview:
|
|
176
|
+
mode: suggest
|
|
177
|
+
include:
|
|
178
|
+
- "README.md"
|
|
179
|
+
- "docs/**/*.md"
|
|
180
|
+
- "package.json"
|
|
37
181
|
```
|
|
38
182
|
|
|
39
|
-
|
|
183
|
+
这是 AI pass,不是编译器自动重写。VASMC 只生成上下文索引和工作单;当前 AI 根据索引读取项目文件,检查 skill/prompt 是否缺少项目实际命令、目录、术语、约束,或是否有过宽 activation、可收窄 capability、重复 fragment 等问题。
|