paseo-agy-acp 2.2.1 → 2.3.1
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 +50 -0
- package/README.md +189 -517
- package/README.zh-CN.md +153 -472
- package/dist/ACP Connector/official-kernel/context.d.ts +1 -0
- package/dist/ACP Connector/official-kernel/context.js +7 -0
- package/dist/ACP Connector/official-kernel/context.js.map +1 -1
- package/dist/ACP Connector/official-kernel/login.d.ts +2 -1
- package/dist/ACP Connector/official-kernel/login.js +73 -3
- package/dist/ACP Connector/official-kernel/login.js.map +1 -1
- package/dist/ACP Connector/official-kernel/proxy.js +67 -1
- package/dist/ACP Connector/official-kernel/proxy.js.map +1 -1
- package/dist/ACP Connector/official-kernel/skill-commands.d.ts +12 -0
- package/dist/ACP Connector/official-kernel/skill-commands.js +219 -0
- package/dist/ACP Connector/official-kernel/skill-commands.js.map +1 -0
- package/package.json +1 -1
package/README.zh-CN.md
CHANGED
|
@@ -1,449 +1,144 @@
|
|
|
1
1
|
<div align="center">
|
|
2
2
|
|
|
3
|
-
#
|
|
3
|
+
# paseo-agy-acp
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
**Google 官方 Antigravity ACP 内核面向 Paseo 的可靠产品适配器**
|
|
6
6
|
|
|
7
7
|
[](./LICENSE)
|
|
8
|
-
[](./package.json)
|
|
9
9
|
[](https://www.npmjs.com/package/paseo-agy-acp)
|
|
10
|
-
[](
|
|
10
|
+
[](./package.json)
|
|
11
11
|
[](https://agentclientprotocol.com)
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
<div align="center">
|
|
16
|
-
|
|
17
|
-
[🇺🇸 English](./README.md) | [🇨🇳 中文](./README.zh-CN.md)
|
|
13
|
+
[English](./README.md) | [中文](./README.zh-CN.md) | [Changelog](./CHANGELOG.md)
|
|
18
14
|
|
|
19
15
|
</div>
|
|
20
16
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
`paseo-agy-acp` 是面向 Paseo 的 Google Antigravity ACP 产品。从 **2.1.0.0** 起,
|
|
24
|
-
它以薄层 NDJSON 代理运行 Google 官方 Antigravity ACP 内核(`agy_acp_server` /
|
|
25
|
-
Registry id `antigravity-acp`),再补上 Generic ACP 本身给不了的 Paseo 行为:
|
|
26
|
-
daemon 上下文、session 模式映射、MCP 改写、产品身份,以及账户级 Admission
|
|
27
|
-
队列——让 Paseo 主控可以一次委派多个 Antigravity agent,而不把启动打成风暴。
|
|
28
|
-
|
|
29
|
-
**2.2** 仍使用同一套官方 ACP 内核。它只增加一层明确的 **本机 opt-in**
|
|
30
|
-
兼容:有资格的 Claude 4.6 与 GPT-OSS 120B 可以在这条路径上跑完回合。
|
|
31
|
-
如果未 opt-in,官方路径默认只支持 Gemini 系模型。
|
|
32
|
-
|
|
33
|
-
**2.2.1** 与 2.2.0 是同一产品:GitHub tag 从此与 npm 对齐(`v2.2.1` =
|
|
34
|
-
`paseo-agy-acp@2.2.1`)。本文说明 `npx` 只拉起本代理。旧 GitHub tag
|
|
35
|
-
`v2.2.0.0` 仍是 2.2.0 那条线。
|
|
36
|
-
|
|
37
|
-
> **非 Paseo 官方支持。非 Google 官方支持。** 社区维护产品,使用风险自负。
|
|
38
|
-
|
|
39
|
-
## 30 秒摘要
|
|
17
|
+
<!-- readme:positioning -->
|
|
18
|
+
## 这个产品是什么
|
|
40
19
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
20
|
+
`paseo-agy-acp` 是 Paseo 与 Google 官方 Antigravity ACP 内核之间的产品适配层。
|
|
21
|
+
认证、模型、工具、MCP 和推理仍由官方内核负责;本适配器补齐 Paseo 多 agent
|
|
22
|
+
可靠运行所需要的上下文、协议兼容、并发治理、skill discovery 和失败语义。
|
|
44
23
|
|
|
45
|
-
|
|
46
|
-
-
|
|
47
|
-
- MCP `http` 到官方 `sse` 的改写
|
|
48
|
-
- 稳定产品身份
|
|
49
|
-
- 面向多 agent 委派的账户级 Admission 队列
|
|
50
|
-
- 本机 opt-in 后可跑 Claude 4.6 与 GPT-OSS 120B;未 opt-in 则只支持 Gemini 系
|
|
24
|
+
它不是第二个 Antigravity 实现,也不重新分发 Google 的专有内核。npm 包只包含
|
|
25
|
+
这个 Apache-2.0 代理;官方内核需要单独在本机安装和认证。
|
|
51
26
|
|
|
52
|
-
|
|
27
|
+
> 社区维护项目。非 Paseo 官方支持,非 Google 官方支持。
|
|
53
28
|
|
|
54
|
-
|
|
29
|
+
<!-- readme:value -->
|
|
30
|
+
## 为什么需要 paseo-agy-acp
|
|
55
31
|
|
|
56
|
-
|
|
57
|
-
- 你本机已经安装并登录 Google Antigravity
|
|
58
|
-
- 你想通过 Generic ACP 使用 Antigravity
|
|
59
|
-
- 你会一次委派多个 agent,希望启动突发被限速而不是同时砸到内核上
|
|
60
|
-
- 你想在官方 ACP 内核上通过 Paseo 使用 Claude 4.6 或 GPT-OSS 120B(本机 opt-in)
|
|
61
|
-
|
|
62
|
-
可能不适合你,如果:
|
|
63
|
-
|
|
64
|
-
- 你不使用 Paseo
|
|
65
|
-
- 你想要一个独立的 Antigravity 替代品
|
|
66
|
-
- 你期待这个包重新分发 Google 的专有内核
|
|
67
|
-
|
|
68
|
-
## 快速开始
|
|
69
|
-
|
|
70
|
-
前提:**Paseo**、**Node.js >= 22**,以及本机已安装的官方 Antigravity ACP 内核
|
|
71
|
-
(本包装 **不会** 安装 Google 的 `.par`)。`--login` 完成官方 OAuth
|
|
72
|
-
(`authenticate` / `oauth-personal`)。把 `PASEO_AGY_ACP_OFFICIAL_BIN` 指到你的
|
|
73
|
-
内核 wrapper 或 `.par`(除非已在维护者主机默认 pin 路径,否则必填)。
|
|
74
|
-
|
|
75
|
-
npm 包 `paseo-agy-acp@2.2.1` 是 **代理**。`npx` 只拉起这个代理,**不能**代替
|
|
76
|
-
Antigravity 或 Paseo。
|
|
77
|
-
|
|
78
|
-
```bash
|
|
79
|
-
export PASEO_AGY_ACP_OFFICIAL_BIN="/absolute/path/to/agy_acp_server.par-or-wrapper"
|
|
80
|
-
npx -y paseo-agy-acp@2.2.1 --login
|
|
32
|
+
ACP 提供协议,但一条可用于生产的 Paseo provider 仍需要协议之外的产品行为:
|
|
81
33
|
|
|
82
|
-
|
|
83
|
-
install -d -m 700 "$AGY_ACP_STATE_DIR"
|
|
84
|
-
npx -y --package=paseo-agy-acp@2.2.1 agy-acp-prepare-state "$AGY_ACP_STATE_DIR"
|
|
85
|
-
export AGY_ACP_ADMISSION_ENABLED=true
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
再把 Paseo Generic ACP 的 `command` 指到 npx(见
|
|
89
|
-
[Paseo Provider 配置](#paseo-provider-配置))。下面这一行 **不是** 独立聊天程序,
|
|
90
|
-
而是 Paseo spawn 的 stdio ACP 服务:
|
|
91
|
-
|
|
92
|
-
```bash
|
|
93
|
-
npx -y paseo-agy-acp@2.2.1
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
Claude / GPT-OSS 见 [§1](#1-官方-agy-acp-内核能力) 和
|
|
97
|
-
[runbook](docs/operations/official-kernel-compat-runbook.md)。源码 checkout
|
|
98
|
-
(`git clone` + `npm ci` + `npm run build`)见 [安装](#安装)。
|
|
99
|
-
|
|
100
|
-
## 关于
|
|
101
|
-
|
|
102
|
-
本仓库是 **产品适配器**,不是第二个 Antigravity。模型工作由内核完成;本仓库
|
|
103
|
-
补上 Generic ACP 桥本身不提供的 Paseo 侧行为。
|
|
104
|
-
|
|
105
|
-
| 亮点 | 为什么重要 |
|
|
106
|
-
|---|---|
|
|
107
|
-
| **官方 ACP 内核** | 原生 ACP / NDJSON。未 opt-in 时官方路径只支持 Gemini;本机 opt-in 后,有资格的 Claude 4.6 与 GPT-OSS 120B 可以跑完回合。 |
|
|
108
|
-
| **Paseo 侧胶水** | daemon `appendSystemPrompt`、Paseo 已在用的 mode id、以及 MCP `http` server,都会改写成官方内核认识的形态,Generic ACP agent 不用再写一层适配。仍须安装 Paseo、官方内核,并把 `command` 指到本代理。 |
|
|
109
|
-
| **突发委派更稳健** | 账户级持久 Admission 队列给 `session/prompt` 限速,Paseo 主控可以一次派出很多 Antigravity agent,不会让每个 turn 同时砸到内核上。 |
|
|
110
|
-
| **生产实测默认值** | 默认 **8 个共享席位 / 8 路同时启动 / 2 秒间隔**,来自真实 Paseo 派发(含 10 agent 突发)和隔离压测。整数 **≥ 1** 可以继续试更高并发;本仓库 **不编** 一个产品上限。 |
|
|
111
|
-
| **失败即关闭** | 非法环境变量、policy 分叉、无法证明的写入一律 fail closed。排队超时、取消、内核错误仍然能区分。 |
|
|
112
|
-
| **空白回合守卫** | 官方 `end_turn` 且没有任何可见助手/工具输出时,改成 JSON-RPC 错误,避免 Paseo 记成静默成功。 |
|
|
113
|
-
| **许可证分层清楚** | 本仓库保持 **Apache-2.0**。官方内核是专有软件:只 **spawn** 你本机已安装的二进制;npm **不** 附带约 1.5GiB 的 `.par`。 |
|
|
114
|
-
|
|
115
|
-
```text
|
|
116
|
-
Paseo Generic ACP (NDJSON)
|
|
117
|
-
→ paseo-agy-acp 产品代理
|
|
118
|
-
身份 · daemon 上下文 · 模式映射 · MCP 改写 · Admission 围栏
|
|
119
|
-
→ 官方 agy_acp_server (NDJSON)
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
| 层 | 许可证 | 我们怎么做 |
|
|
34
|
+
| 需求 | 直接连接 Generic ACP | 使用 `paseo-agy-acp` |
|
|
123
35
|
|---|---|---|
|
|
124
|
-
|
|
|
125
|
-
|
|
|
126
|
-
|
|
|
36
|
+
| 官方执行链 | 可以启动 ACP server | OAuth、模型、工具、MCP 和推理继续留在 Google 官方内核 |
|
|
37
|
+
| Paseo 上下文 | 没有产品级保证 | 将 Paseo daemon 与 workspace/agent context 注入官方 prompt |
|
|
38
|
+
| Modes 与 MCP | 客户端和内核数据形态可能不同 | 映射 Paseo modes,并把 MCP `http` 声明改写为官方 `sse` 形态 |
|
|
39
|
+
| 多 agent 突发 | 多个 prompt 可能同时打入内核 | 使用跨 connector 共享的账户级持久 Admission 队列 |
|
|
40
|
+
| Slash command discovery | 官方命令更新不包含本地 skills | 加入可由用户调用的 Gemini、Agents、Codex、配置和 workspace skills |
|
|
41
|
+
| 空白回合 | 无输出的 `end_turn` 可能看起来成功 | 返回明确 JSON-RPC 错误,避免记录静默成功 |
|
|
42
|
+
| 额外授权模型 | 官方 ACP 默认走 Gemini 系路径 | 为有资格的 Claude 4.6 与 GPT-OSS 120B 提供显式本机兼容 runbook |
|
|
43
|
+
| 产品身份 | 跟随底层 server | 向 Paseo 暴露稳定的 `agy-acp` / `paseo-agy-acp` 身份 |
|
|
127
44
|
|
|
128
|
-
|
|
45
|
+
### 多 agent 稳定性
|
|
129
46
|
|
|
130
|
-
|
|
47
|
+
Paseo 主控可以一次委派多个 Antigravity agent。Admission 允许主控保留这种批量
|
|
48
|
+
派发能力,同时让超额 turn 排队,而不是一起写入 `agy_acp_server`。使用同一状态
|
|
49
|
+
目录的所有 connector 共享账户席位,回合完成、失败或取消后释放。
|
|
131
50
|
|
|
132
|
-
|
|
133
|
-
|
|
51
|
+
实测默认策略是 **8 个 active turns / 8 路同时启动 / 最少 2 秒启动间隔**。
|
|
52
|
+
这些是可调整的运行默认值,不是对 Google 产品上限的声明。启用后的非法配置会
|
|
53
|
+
fail closed。
|
|
134
54
|
|
|
135
|
-
|
|
136
|
-
|---|---|
|
|
137
|
-
| 协议 | 原生 **ACP v1 / NDJSON** |
|
|
138
|
-
| 鉴权 | `authenticate`,`methodId=oauth-personal`(内核内 OAuth) |
|
|
139
|
-
| 会话生命周期 | `initialize`、`session/new`、`session/prompt`、`session/cancel`、`session/set_mode`、`session/set_config_option` |
|
|
140
|
-
| 流式输出 | `session/update`:助手文本、思考、工具调用 / 工具更新 |
|
|
141
|
-
| 在线 session 模式 | `default`、`auto_edit`、`yolo`(官方 **没有** plan 模式) |
|
|
142
|
-
| 工具 | 文件编辑、shell/终端等,以 Google 实现为准 |
|
|
143
|
-
| MCP | 官方 MCP 客户端;在 `session/new` 上声明 server |
|
|
144
|
-
| 模型 | 未 opt-in:只支持 Gemini 系。本机 opt-in:有资格的 Claude 4.6 与 GPT-OSS 120B([§2](#2-我们为-paseo-做了哪些适配))。 |
|
|
145
|
-
| 回合结束 | 官方 `end_turn` / stop reason |
|
|
55
|
+
### Skill discovery
|
|
146
56
|
|
|
147
|
-
|
|
57
|
+
适配器将原生 ACP 命令与配置目录及默认 Gemini、Agents、Codex、workspace roots
|
|
58
|
+
中的 `SKILL.md` 元数据合并。同名时原生命令优先,workspace skills 优先于全局
|
|
59
|
+
skills,`user-invocable: false` 不会出现在 slash command 提示中。Discovery 按
|
|
60
|
+
session cwd 隔离,并发 workspace 不会互相泄漏命令元数据。
|
|
148
61
|
|
|
149
|
-
|
|
150
|
-
有资格的账号已经能看到 Claude 4.6 与 GPT-OSS 120B;在这条 ACP 路径上,请求
|
|
151
|
-
仍按 Gemini 对齐(JSON Schema、工具 ID、GPT generation config),所以它们
|
|
152
|
-
不是默认可工作集合。
|
|
62
|
+
### 模型边界
|
|
153
63
|
|
|
154
|
-
|
|
155
|
-
|
|
64
|
+
未修改的官方 ACP 路径默认以 Gemini 系模型为工作集合。已获得 Claude 4.6 或
|
|
65
|
+
GPT-OSS 120B 资格的账号,可以按
|
|
66
|
+
[官方内核兼容 runbook](docs/operations/official-kernel-compat-runbook.md)
|
|
67
|
+
显式启用本机兼容生命周期。推理仍由同一套官方内核和 Google backend 负责;本仓库
|
|
68
|
+
不打包也不替换它们。
|
|
156
69
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
---
|
|
161
|
-
|
|
162
|
-
## 2. 我们为 Paseo 做了哪些适配
|
|
163
|
-
|
|
164
|
-
下面这些才是本仓库存在的理由:**Paseo 侧**加在官方内核之上的适配。
|
|
165
|
-
|
|
166
|
-
| # | 适配 | 做什么 |
|
|
167
|
-
|---|---|---|
|
|
168
|
-
| 1 | 产品身份 | `initialize` 的 `agentInfo` 叠加为 `agy-acp` / `paseo-agy-acp`,Paseo 看到的是稳定产品名。 |
|
|
169
|
-
| 2 | Daemon 上下文桥 | 设置了 `PASEO_AGENT_ID` 时,把 Paseo daemon 的 `appendSystemPrompt` 注入官方 `session/prompt`,工作区/agent 上下文才能到达 Antigravity。 |
|
|
170
|
-
| 3 | Session 模式映射 | 把 Paseo / 旧 id 映射到官方在线模式:`accept-edits` → `auto_edit`,`dangerously-skip-permissions` → `yolo`,`plan` → `default`。 |
|
|
171
|
-
| 4 | MCP `http` → `sse` | Paseo 常给出 `type: "http"` 加 header 对象;官方内核要 `sse` 和 `{name,value}` 数组。代理在 `session/new` 上改写。 |
|
|
172
|
-
| 5 | Admission 围栏 | 启用 Admission 时,官方 `session/prompt` **写入前**先占账户级持久席位,回合结束/失败/取消再释放。 |
|
|
173
|
-
| 6 | 空白回合守卫 | 官方 `end_turn` 且 **没有任何** 可见助手/工具输出时,改成 JSON-RPC 错误(`-32000`),避免 Paseo 当成空成功回合。 |
|
|
174
|
-
| 7 | 隔离 Admission 账本 | 官方内核队列状态在 `$AGY_ACP_STATE_DIR/official-kernel`,不与历史账本混用。 |
|
|
175
|
-
| 8 | 单一内核 | `PASEO_AGY_ACP_KERNEL=legacy` 和 `--legacy-kernel` 直接失败。官方内核是唯一 ACP 执行路径。 |
|
|
176
|
-
| 9 | 本机模型兼容(opt-in) | 同一套官方内核:本机解开 + 请求转换,让有资格的 Claude 4.6 与 GPT-OSS 120B 跑完回合。未 opt-in 则关闭。 |
|
|
177
|
-
|
|
178
|
-
`PASEO_HOME` 可选;未设置或为空时回退到 `~/.paseo`。Paseo 通常会给 ACP
|
|
179
|
-
provider 进程提供 `PASEO_AGENT_ID`(以及 `PASEO_AGENT_CWD`)。
|
|
180
|
-
|
|
181
|
-
### 本机 opt-in:Claude 4.6 与 GPT-OSS 120B
|
|
182
|
-
|
|
183
|
-
**2.2 仍使用同一套官方 ACP 内核。** 它只增加这一层。如果未 opt-in,
|
|
184
|
-
官方路径默认只支持 Gemini 系模型。
|
|
185
|
-
|
|
186
|
-
opt-in 是 **本机、显式** 的:
|
|
187
|
-
|
|
188
|
-
1. 对本机已安装的官方 RC01 构件做 pin(hash 校验;不匹配则 fail closed)。
|
|
189
|
-
2. **只在本机**解开。npm 和 git **不**分发 Google 的 `.par` 或 runfiles。
|
|
190
|
-
3. 加载 `paseo_model_compat.py`:只保留同时出现在 live CCPA 目录 **和** 本地
|
|
191
|
-
profile 里的模型;转换工具 JSON Schema(`$schema`、`parameters`)、配对
|
|
192
|
-
工具 ID、处理 GPT-OSS generation config。Gemini 与未知 id 走 identity,
|
|
193
|
-
不加变换。
|
|
194
|
-
4. `prepare` → `verify` → lifecycle `activate`,再把
|
|
195
|
-
`PASEO_AGY_ACP_OFFICIAL_BIN` 指到 **stable** wrapper
|
|
196
|
-
(`agy-acp-kernel-compat-active` / `status.stableWrapperPath`)。不要把
|
|
197
|
-
生产指到 per-release 冒烟 wrapper。
|
|
198
|
-
|
|
199
|
-
命令:`agy-acp-prepare-official-kernel-compat`(或
|
|
200
|
-
`node ./scripts/prepare-official-kernel-compat.mjs`)。完整参数、JSON 字段和
|
|
201
|
-
回滚见 [runbook](docs/operations/official-kernel-compat-runbook.md)。
|
|
202
|
-
|
|
203
|
-
维护者主机在具备 raw CCPA 资格时核验过:`claude-sonnet-4-6`、
|
|
204
|
-
`claude-opus-4-6-thinking`、`gpt-oss-120b-medium` —— 文本、顺序工具、warm
|
|
205
|
-
resume。你的账号仍须在 raw CCPA 目录里拥有这些 id。
|
|
206
|
-
|
|
207
|
-
请在自己的环境测试 Claude 与 GPT-OSS(单个 agent 和一次开多个)。模型缺失、
|
|
208
|
-
回合失败或工具异常,请 [开 Issue](https://github.com/tiezbro/paseo-agy-acp/issues)。
|
|
209
|
-
我们会按反馈做优化和修复。
|
|
210
|
-
|
|
211
|
-
---
|
|
212
|
-
|
|
213
|
-
## 3. 为什么需要 Admission 队列
|
|
214
|
-
|
|
215
|
-
### 背景
|
|
216
|
-
|
|
217
|
-
Paseo 是 **主控**。它会 **一次委派很多个 Antigravity agent**。这种突发下,
|
|
218
|
-
高并发曾经把回合挂死:助手气泡一直空着、进程卡住,或 ACP **Internal Error
|
|
219
|
-
`-32603`**。当时的 **3+1**(3 个共享席位、1 路同时启动、启动间隔 2 秒)是给
|
|
220
|
-
那种故障 **止血**用的,不是测出来的官方 ACP 上限。
|
|
221
|
-
|
|
222
|
-
换成官方内核后,生产环境实测默认 **8 个共享席位 / 8 路同时启动 / 2 秒间隔**,
|
|
223
|
-
包括一次 10 个 Antigravity agent 的派发,没有复现旧的挂死。隔离环境
|
|
224
|
-
`127.0.0.1:6768` 上 6 路 yolo 压测同样没有复现。官方 ACP **仍未**被证明无限
|
|
225
|
-
并发。**8 是实测默认值,不是已经公布的产品上限。**
|
|
226
|
-
|
|
227
|
-
### 原理
|
|
70
|
+
<!-- readme:architecture -->
|
|
71
|
+
## 架构与职责
|
|
228
72
|
|
|
229
73
|
```text
|
|
230
|
-
Paseo
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
共享 active 席位(默认 8)
|
|
237
|
-
限速同时启动(默认 8,间隔 ≥ 2s)
|
|
238
|
-
|
|
|
239
|
-
官方 session/prompt 写入
|
|
240
|
-
|
|
|
241
|
-
回合结束 / 失败 / 取消后释放席位
|
|
74
|
+
Paseo / Generic ACP client
|
|
75
|
+
-> paseo-agy-acp 产品适配器
|
|
76
|
+
身份 | daemon context | mode map | MCP rewrite
|
|
77
|
+
skill hints | blank-turn guard | 可选 Admission fence
|
|
78
|
+
-> 官方 agy_acp_server(ACP v1 over NDJSON)
|
|
79
|
+
OAuth | 模型 | 工具 | MCP | 推理
|
|
242
80
|
```
|
|
243
81
|
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
### 优势
|
|
250
|
-
|
|
251
|
-
队列不是为了把 Paseo 永久锁在 8 个 agent。它是为了让 **Paseo 主控委派
|
|
252
|
-
Antigravity 更稳健**:
|
|
253
|
-
|
|
254
|
-
- 主控仍然可以一次派出一批;
|
|
255
|
-
- 超出席位的工作排队,而不是把官方内核打满;
|
|
256
|
-
- 席位是账户级的,跨进程、跨重启仍然一致;
|
|
257
|
-
- 排队超时 / 取消 / 内核错误仍然能和崩溃区分开;
|
|
258
|
-
- 可以把席位/启动整数调到 **≥ 1** 去试更高并发,测到结果欢迎反馈。
|
|
259
|
-
|
|
260
|
-
所以换成官方内核之后,Admission 仍然留在产品里。
|
|
261
|
-
|
|
262
|
-
---
|
|
263
|
-
|
|
264
|
-
## Admission Controller v2
|
|
265
|
-
|
|
266
|
-
Admission 是上面这套队列的落地实现:持久席位、启动限速、故障恢复、typed
|
|
267
|
-
terminal。通过环境变量 **显式启用**(`AGY_ACP_ADMISSION_ENABLED=true`,加上
|
|
268
|
-
绝对路径 `AGY_ACP_STATE_DIR` 和合法 `PASEO_AGENT_ID`)。只要 Paseo 会委派
|
|
269
|
-
不止一个 Antigravity agent,就建议打开。
|
|
270
|
-
|
|
271
|
-
### 启用 Admission
|
|
272
|
-
|
|
273
|
-
每个 Antigravity 账号准备一个 owner-only 状态目录,并跑随包发布的预检:
|
|
274
|
-
|
|
275
|
-
```bash
|
|
276
|
-
export AGY_ACP_STATE_DIR="$HOME/.local/state/paseo-agy-acp/account-name"
|
|
277
|
-
install -d -m 700 "$AGY_ACP_STATE_DIR"
|
|
278
|
-
agy-acp-prepare-state "$AGY_ACP_STATE_DIR"
|
|
279
|
-
export AGY_ACP_ADMISSION_ENABLED=true
|
|
280
|
-
```
|
|
281
|
-
|
|
282
|
-
预检会以 `0700` 创建缺失目录,并核验类型、owner 和精确权限。已经存在的宽权限
|
|
283
|
-
目录会被 **拒绝**,不会静默改权。确认路径和归属后执行
|
|
284
|
-
`chmod 700 -- "$AGY_ACP_STATE_DIR"`,再重新跑预检。Admission key 与 SQLite
|
|
285
|
-
文件以 `0600` 创建。
|
|
286
|
-
|
|
287
|
-
官方内核队列写在 `$AGY_ACP_STATE_DIR/official-kernel` 下,不会和历史账本混用。
|
|
288
|
-
|
|
289
|
-
### 默认与保守 policy
|
|
290
|
-
|
|
291
|
-
| 规则 | 默认 | 覆盖 |
|
|
292
|
-
|---|---:|---|
|
|
293
|
-
| 共享 active 席位 | **8**(实测) | `AGY_ACP_ADMISSION_MAX_ACTIVE_TURNS`,整数 **≥ 1** |
|
|
294
|
-
| 同时启动路数 | **8**(实测) | `AGY_ACP_ADMISSION_MAX_CONCURRENT_STARTS`,整数 **≥ 1** |
|
|
295
|
-
| 最小启动间隔 | **2000 ms** | `AGY_ACP_ADMISSION_MIN_START_INTERVAL_MS`,整数 **≥ 2000** |
|
|
296
|
-
| 最长排队时间 | 30 分钟 | `AGY_ACP_ADMISSION_QUEUE_TIMEOUT_MS`,整数 `1`–`1800000` |
|
|
297
|
-
| 容量 cooldown | 30 秒 | `AGY_ACP_ADMISSION_CAPACITY_COOLDOWN_MS`,整数 **≥ 30000** |
|
|
298
|
-
|
|
299
|
-
使用同一状态目录的所有本地 connector、session 和模型共享这些账号席位。队列按
|
|
300
|
-
oldest-eligible 调度并带 agent fairness。可信的 provider 容量故障只暂停受影响
|
|
301
|
-
的 provider/model。排队超时会在同一事务中取消请求并删除加密 prompt。
|
|
302
|
-
|
|
303
|
-
覆盖值失败即关闭:非整数、`< 1`、启动间隔低于 2000 ms 都不会启动。本仓库
|
|
304
|
-
**不公布**产品上限;把整数调大去试,测到结果欢迎反馈。
|
|
305
|
-
|
|
306
|
-
更紧的历史 3+1(可选,**不是**推荐默认):
|
|
307
|
-
|
|
308
|
-
```bash
|
|
309
|
-
AGY_ACP_ADMISSION_MAX_ACTIVE_TURNS=3
|
|
310
|
-
AGY_ACP_ADMISSION_MAX_CONCURRENT_STARTS=1
|
|
311
|
-
```
|
|
312
|
-
|
|
313
|
-
soft drain 可以降低席位,而不杀死进行中的工作、不丢弃排队请求。
|
|
314
|
-
|
|
315
|
-
### 持久化、dispatch 与恢复
|
|
316
|
-
|
|
317
|
-
本地实现使用 `shared-admission-queue` **schema v3**。持久 policy
|
|
318
|
-
(`policy_state` / `policy_fingerprint`)、queued owner、带 suspect metadata 的
|
|
319
|
-
lease(给 runtime reaper 用)以及 `schema_migrations` 都在同一份 SQLite 账本里。
|
|
320
|
-
额外的 delivery-authority 表仍然 fail closed。
|
|
321
|
-
|
|
322
|
-
每个启用 Admission 的 runtime opener 都会在 startup recovery 前 claim 或核验
|
|
323
|
-
这份持久 policy。第二个 connector 对同一目录使用 **不同** policy 时直接失败
|
|
324
|
-
关闭,不会形成只存在于进程内的 policy 分叉。
|
|
325
|
-
|
|
326
|
-
空闲 session 不占席位,也不保留常驻 turn 进程。获得席位的 turn 走一次 fenced
|
|
327
|
-
的 `session/prompt` 写入;无法证明的写入进入 `dispatch_ambiguous` 或
|
|
328
|
-
`recovery_required`,绝不静默重放。Heartbeat、owner 身份和 runtime reaper 只
|
|
329
|
-
在 owner 被证实退出时回收容量。关闭 session 会取消尚未开始的排队请求;已经
|
|
330
|
-
运行的 turn 走 connector 取消路径(`session/cancel`)。
|
|
331
|
-
|
|
332
|
-
Admission **不会**再做第二套 live 输出、outbox、ACK、terminal replay 或手工
|
|
333
|
-
requeue API。官方 session 历史仍由 ACP Connector / 内核负责。
|
|
334
|
-
|
|
335
|
-
### 设计 authority 与实现边界
|
|
336
|
-
|
|
337
|
-
当前 authority 是 confirmed Scheme 与已接受的 Stage 2 artifacts(见下方
|
|
338
|
-
[权威文档](#权威文档v2000-closeout))。旧 Admission design 文件只作为
|
|
339
|
-
historical input。
|
|
340
|
-
|
|
341
|
-
仓库严格只有两个源码功能区:
|
|
342
|
-
|
|
343
|
-
```text
|
|
344
|
-
paseo-agy-acp/
|
|
345
|
-
|-- ACP Connector/ ACP NDJSON 代理、官方内核 spawn、Paseo 上下文
|
|
346
|
-
`-- Admission Controller/ 持久席位、队列、策略、启动间隔、恢复
|
|
347
|
-
```
|
|
348
|
-
|
|
349
|
-
`ACP Connector/` 负责协议、身份、模式/MCP 改写、内核 spawn,以及围在
|
|
350
|
-
`session/prompt` 上的 Admission。`Admission Controller/` 只负责共享席位池、
|
|
351
|
-
持久队列、策略账本、lease、reaper 和 capacity cooldown。package 入口仍在
|
|
352
|
-
`ACP Connector/` 内。
|
|
82
|
+
| 层 | 职责 | 许可证边界 |
|
|
83
|
+
|---|---|---|
|
|
84
|
+
| Paseo | Agent 生命周期、workspace、委派和 provider 配置 | Paseo 项目 |
|
|
85
|
+
| `paseo-agy-acp` | Paseo 专用 ACP 适配与 Admission | Apache-2.0;发布到 npm |
|
|
86
|
+
| 官方 `agy_acp_server` | 认证、模型目录、工具、MCP 和推理 | Google 专有软件;只在本机安装 |
|
|
353
87
|
|
|
354
|
-
|
|
88
|
+
每个 connector 进程运行一个官方内核子进程。Admission 是可选项,但当一个
|
|
89
|
+
Antigravity 账号服务多个并发 Paseo agent 时建议启用。
|
|
355
90
|
|
|
91
|
+
<!-- readme:requirements -->
|
|
356
92
|
## 环境要求
|
|
357
93
|
|
|
358
|
-
-
|
|
359
|
-
-
|
|
360
|
-
|
|
361
|
-
|
|
94
|
+
- 支持 Generic ACP provider 的 **Paseo**
|
|
95
|
+
- **Node.js 22 或更新版本**
|
|
96
|
+
- 本机已安装的官方 Antigravity ACP kernel wrapper 或 `.par`
|
|
97
|
+
- 可以完成官方 `oauth-personal` 的 Antigravity 账号
|
|
98
|
+
- 启用 Admission 时,系统需支持 Linux 文件 owner 与 mode
|
|
362
99
|
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
100
|
+
除非官方内核已经位于维护者主机默认 pin 路径,否则必须设置
|
|
101
|
+
`PASEO_AGY_ACP_OFFICIAL_BIN`。若它直接指向 `.par`,适配器会从该文件所在目录
|
|
102
|
+
启动并提供所需 uid。
|
|
366
103
|
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
## 安装
|
|
104
|
+
<!-- readme:quickstart -->
|
|
105
|
+
## 快速开始
|
|
371
106
|
|
|
372
|
-
|
|
373
|
-
请用 npm,不要默认 `git clone`。
|
|
107
|
+
### 1. 指定官方内核并完成认证
|
|
374
108
|
|
|
375
109
|
```bash
|
|
376
|
-
|
|
377
|
-
npx -y paseo-agy-acp@2.
|
|
110
|
+
export PASEO_AGY_ACP_OFFICIAL_BIN="/absolute/path/to/agy-acp-server-wrapper-or.par"
|
|
111
|
+
npx -y paseo-agy-acp@2.3.1 --login
|
|
378
112
|
```
|
|
379
113
|
|
|
380
|
-
|
|
381
|
-
`agy-acp-prepare-official-kernel-compat`。第一次 `npx` 可能要编译
|
|
382
|
-
`better-sqlite3`(本机需要 C++ 工具链)。
|
|
383
|
-
|
|
384
|
-
源码 checkout(开发用):
|
|
385
|
-
|
|
386
|
-
```bash
|
|
387
|
-
git clone https://github.com/tiezbro/paseo-agy-acp.git
|
|
388
|
-
cd paseo-agy-acp
|
|
389
|
-
npm ci
|
|
390
|
-
npm run build
|
|
391
|
-
npm test
|
|
392
|
-
```
|
|
114
|
+
OAuth 由官方内核完成。Token 保留在内核自己的状态中,本适配器不会打印。
|
|
393
115
|
|
|
394
|
-
|
|
395
|
-
# ACP initialize 冒烟(需要官方二进制)
|
|
396
|
-
printf '%s\n' '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":1}}' \
|
|
397
|
-
| npx -y paseo-agy-acp@2.2.1
|
|
398
|
-
```
|
|
116
|
+
### 2. 准备 Admission 状态
|
|
399
117
|
|
|
400
|
-
|
|
118
|
+
单 agent 可以不启用 Admission;多 agent 委派建议启用。
|
|
401
119
|
|
|
402
120
|
```bash
|
|
403
|
-
|
|
121
|
+
export AGY_ACP_STATE_DIR="$HOME/.local/state/paseo-agy-acp/account-name"
|
|
122
|
+
install -d -m 700 "$AGY_ACP_STATE_DIR"
|
|
123
|
+
npx -y --package=paseo-agy-acp@2.3.1 \
|
|
124
|
+
agy-acp-prepare-state "$AGY_ACP_STATE_DIR"
|
|
404
125
|
```
|
|
405
126
|
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
| 变量 | 作用 |
|
|
409
|
-
|---|---|
|
|
410
|
-
| `PASEO_AGY_ACP_OFFICIAL_BIN` | 官方内核 wrapper 或 `.par` 路径 |
|
|
411
|
-
| `PASEO_AGENT_ID` | 启用 daemon 上下文 + Admission agent 绑定 |
|
|
412
|
-
| `PASEO_HOME` | 可选 Paseo home;缺省 `~/.paseo` |
|
|
413
|
-
| `AGY_ACP_ADMISSION_ENABLED` | `true` / `1` 时把 prompt 围进 Admission |
|
|
414
|
-
| `AGY_ACP_STATE_DIR` | Admission 状态目录(官方运行时用下面的 `official-kernel/`) |
|
|
415
|
-
| `AGY_ACP_ADMISSION_MAX_ACTIVE_TURNS` | 共享 active 席位。整数 **≥ 1**。默认 **8**(实测)。 |
|
|
416
|
-
| `AGY_ACP_ADMISSION_MAX_CONCURRENT_STARTS` | 同时启动路数。整数 **≥ 1**。默认 **8**(实测)。 |
|
|
417
|
-
| `AGY_ACP_ADMISSION_MIN_START_INTERVAL_MS` | 最小启动间隔。默认 **2000**;低于 2000 失败关闭。 |
|
|
418
|
-
| `AGY_ACP_ADMISSION_QUEUE_TIMEOUT_MS` | 最长排队。默认 30 分钟;上限 1800000。 |
|
|
419
|
-
| `AGY_ACP_ADMISSION_CAPACITY_COOLDOWN_MS` | 可信容量故障后的 provider/model cooldown。默认 30000;最小 30000。 |
|
|
420
|
-
|
|
421
|
-
`PASEO_AGY_ACP_KERNEL=legacy` 和 `--legacy-kernel` 失败关闭。
|
|
422
|
-
|
|
423
|
-
## 架构
|
|
127
|
+
每个 Antigravity 账号使用一个 owner-only 状态目录。预检会创建或验证目录,并拒绝
|
|
128
|
+
已经存在的宽权限路径。
|
|
424
129
|
|
|
425
|
-
|
|
426
|
-
Paseo / Generic ACP 客户端
|
|
427
|
-
└─ paseo-agy-acp (agy-acp)
|
|
428
|
-
├─ 产品代理:身份、daemon 上下文、模式映射、MCP 改写
|
|
429
|
-
├─ session/prompt 上的 Admission 围栏(可选,建议打开)
|
|
430
|
-
└─ 官方 agy_acp_server (NDJSON)
|
|
431
|
-
└─ Antigravity 账号、工具、MCP、模型
|
|
432
|
-
```
|
|
130
|
+
### 3. 配置 Paseo provider
|
|
433
131
|
|
|
434
|
-
|
|
435
|
-
**账户级**席位。
|
|
436
|
-
|
|
437
|
-
## Paseo Provider 配置
|
|
132
|
+
在 `$PASEO_HOME/config.json` 或 `~/.paseo/config.json` 中增加或更新 provider:
|
|
438
133
|
|
|
439
134
|
```json
|
|
440
135
|
{
|
|
441
136
|
"providers": {
|
|
442
137
|
"antigravity": {
|
|
443
138
|
"type": "acp",
|
|
444
|
-
"command": ["npx", "-y", "paseo-agy-acp@2.
|
|
139
|
+
"command": ["npx", "-y", "paseo-agy-acp@2.3.1"],
|
|
445
140
|
"env": {
|
|
446
|
-
"PASEO_AGY_ACP_OFFICIAL_BIN": "/
|
|
141
|
+
"PASEO_AGY_ACP_OFFICIAL_BIN": "/absolute/path/to/agy-acp-server-wrapper-or.par",
|
|
447
142
|
"AGY_ACP_ADMISSION_ENABLED": "true",
|
|
448
143
|
"AGY_ACP_STATE_DIR": "/home/YOU/.local/state/paseo-agy-acp/account-name"
|
|
449
144
|
}
|
|
@@ -452,109 +147,95 @@ Paseo / Generic ACP 客户端
|
|
|
452
147
|
}
|
|
453
148
|
```
|
|
454
149
|
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
150
|
+
Paseo 会向 provider 进程提供 `PASEO_AGENT_ID` 和 `PASEO_AGENT_CWD`。只有在明确
|
|
151
|
+
需要不受 Admission 约束的单 agent 运行时,才省略两个 Admission 变量。
|
|
152
|
+
|
|
153
|
+
### 4. 重启并验证
|
|
459
154
|
|
|
460
|
-
|
|
155
|
+
重启 Paseo daemon,创建 provider 为 `antigravity` 的 agent,选择受支持模式并
|
|
156
|
+
发送一个简单 prompt。`npx` 启动的是 Paseo 使用的 stdio ACP server,不是独立
|
|
157
|
+
聊天程序。
|
|
461
158
|
|
|
462
|
-
|
|
159
|
+
<!-- readme:configuration -->
|
|
160
|
+
## 配置
|
|
463
161
|
|
|
464
|
-
|
|
162
|
+
### 必要环境变量
|
|
465
163
|
|
|
466
|
-
|
|
467
|
-
|
|
164
|
+
| 变量 | 作用 |
|
|
165
|
+
|---|---|
|
|
166
|
+
| `PASEO_AGY_ACP_OFFICIAL_BIN` | 官方 kernel wrapper 或 `.par` 的绝对路径 |
|
|
167
|
+
| `PASEO_HOME` | 可选 Paseo home;默认 `~/.paseo` |
|
|
168
|
+
| `AGY_ACP_ADMISSION_ENABLED` | `true` / `1` 启用 prompt fence |
|
|
169
|
+
| `AGY_ACP_STATE_DIR` | 一个账号共享的 owner-only 绝对状态目录 |
|
|
468
170
|
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
3. Add or update providers.antigravity:
|
|
472
|
-
- type: "acp"
|
|
473
|
-
- command: ["npx", "-y", "paseo-agy-acp@2.2.1"] (spawns the proxy, not the Google kernel)
|
|
474
|
-
- env.PASEO_AGY_ACP_OFFICIAL_BIN: local official kernel wrapper (agy-acp-server-canary or agy_acp_server.par)
|
|
475
|
-
- env.AGY_ACP_ADMISSION_ENABLED: "true"
|
|
476
|
-
- env.AGY_ACP_STATE_DIR: absolute owner-only directory (mode 0700)
|
|
477
|
-
4. Prepare Admission state: npx -y --package=paseo-agy-acp@2.2.1 agy-acp-prepare-state "$AGY_ACP_STATE_DIR"
|
|
478
|
-
5. Login once: npx -y paseo-agy-acp@2.2.1 --login
|
|
479
|
-
6. Restart the Paseo daemon.
|
|
480
|
-
7. Verify: create a test agent with provider "antigravity", send a simple prompt.
|
|
481
|
-
~~~
|
|
171
|
+
高级席位、启动限速、排队超时、cooldown、权限、恢复和 policy 变更流程见
|
|
172
|
+
[Admission 运维](docs/operations/admission.md)。
|
|
482
173
|
|
|
483
|
-
|
|
174
|
+
### Mode 映射
|
|
484
175
|
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
176
|
+
| Paseo 或旧 id | 官方在线 mode |
|
|
177
|
+
|---|---|
|
|
178
|
+
| `default` | `default` |
|
|
179
|
+
| `accept-edits` | `auto_edit` |
|
|
180
|
+
| `dangerously-skip-permissions` | `yolo` |
|
|
181
|
+
| `plan` | `default`(官方内核没有 plan mode) |
|
|
489
182
|
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
```
|
|
183
|
+
`PASEO_AGY_ACP_KERNEL=legacy` 和 `--legacy-kernel` 会 fail closed。官方内核是唯一
|
|
184
|
+
执行路径。
|
|
493
185
|
|
|
494
|
-
|
|
495
|
-
server、模式 `dangerously-skip-permissions` → 官方 `yolo`、小席位下的 Admission
|
|
496
|
-
排队、空白回合拒绝。
|
|
186
|
+
### Skill roots
|
|
497
187
|
|
|
498
|
-
|
|
499
|
-
|
|
188
|
+
Discovery 从 workspace `.agents/skills.json` 或 `skills.json`,以及全局
|
|
189
|
+
`~/.gemini/config/skills.json` 读取配置目录。默认 roots 覆盖 workspace
|
|
190
|
+
Agents/Codex 目录和全局 Gemini/Agents/Codex 目录。每个 skill 目录需要包含带
|
|
191
|
+
可用 name 与 description frontmatter 的 `SKILL.md`。
|
|
500
192
|
|
|
501
|
-
|
|
193
|
+
<!-- readme:operations -->
|
|
194
|
+
## 运维与故障排查
|
|
502
195
|
|
|
503
|
-
-
|
|
504
|
-
|
|
505
|
-
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
-
|
|
509
|
-
|
|
510
|
-
-
|
|
511
|
-
- 生图和线上 503 文案由官方内核负责。本适配器 **不声称** 已在此重新验证这些能力。
|
|
512
|
-
- 当 `PASEO_AGENT_ID` 指向正在运行的 Paseo agent 时,裸 prompt 测试可能看到
|
|
513
|
-
被前置的 daemon 上下文:
|
|
196
|
+
- 官方内核必须已在本机安装;`npx` 只安装代理。
|
|
197
|
+
- npm 首次运行可能编译 `better-sqlite3`,需要本机 C++ 工具链。
|
|
198
|
+
- 修改 provider command、环境变量或内核路径后要重启 Paseo。
|
|
199
|
+
- 已启用 Admission 但 identity 缺失、状态权限不安全或 policy 非法时,系统拒绝启动,
|
|
200
|
+
不会静默变成 unfenced 运行。
|
|
201
|
+
- 工具质量、生图、backend 配额与 provider 错误文案仍由官方内核和 Google backend
|
|
202
|
+
负责。
|
|
203
|
+
- 可复现升级或回滚应在 provider command 中固定三段 npm 版本,然后重启 Paseo。
|
|
514
204
|
|
|
515
|
-
|
|
516
|
-
env -u PASEO_AGENT_ID -u PASEO_HOME npm test
|
|
517
|
-
```
|
|
205
|
+
当前运维入口:
|
|
518
206
|
|
|
519
|
-
|
|
207
|
+
- [Admission 运维](docs/operations/admission.md)
|
|
208
|
+
- [Claude / GPT-OSS 本机兼容](docs/operations/official-kernel-compat-runbook.md)
|
|
209
|
+
- [npm Trusted Publishing](docs/operations/npm-publishing.md)
|
|
210
|
+
- [Changelog](CHANGELOG.md)
|
|
211
|
+
- [GitHub Releases](https://github.com/tiezbro/paseo-agy-acp/releases)
|
|
212
|
+
- [Issue tracker](https://github.com/tiezbro/paseo-agy-acp/issues)
|
|
520
213
|
|
|
521
|
-
|
|
522
|
-
|
|
214
|
+
详细实现与研究记录保留在 `docs/design/`、`docs/evidence/` 和 `docs/research/`;它们
|
|
215
|
+
不是发布历史或安装说明。
|
|
523
216
|
|
|
524
|
-
|
|
217
|
+
<!-- readme:development -->
|
|
218
|
+
## 开发
|
|
525
219
|
|
|
526
220
|
```bash
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
git checkout <rev> && npm ci && npm run build && npm test
|
|
221
|
+
git clone https://github.com/tiezbro/paseo-agy-acp.git
|
|
222
|
+
cd paseo-agy-acp
|
|
223
|
+
npm ci
|
|
224
|
+
npm run validate
|
|
532
225
|
```
|
|
533
226
|
|
|
534
|
-
|
|
535
|
-
时,如果持久 fingerprint 会把新 policy 失败关闭,请换一个 **全新** 的
|
|
536
|
-
`AGY_ACP_STATE_DIR`。
|
|
537
|
-
|
|
538
|
-
## 权威文档(v2.0.0.0 closeout)
|
|
227
|
+
官方内核 smoke 还需要 `PASEO_AGY_ACP_OFFICIAL_BIN`:
|
|
539
228
|
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
- [ACP source map](docs/design/v2.0.0.0-stage2-acp-source-map.md)
|
|
544
|
-
- [Admission source map](docs/design/v2.0.0.0-stage2-admission-source-map.md)
|
|
545
|
-
- [Architecture](docs/design/v2.0.0.0-stage2-architecture.md)
|
|
546
|
-
- [Domain model](docs/design/v2.0.0.0-stage2-domain-model.md)
|
|
547
|
-
- [Test contracts](docs/design/v2.0.0.0-stage2-test-contracts.md)
|
|
548
|
-
- [Specification](docs/design/v2.0.0.0-stage2-spec.md)
|
|
549
|
-
|
|
550
|
-
→ [本地技术说明](./docs/PASEO_LOCAL_CHANGES.md)
|
|
551
|
-
|
|
552
|
-
## 免责声明
|
|
229
|
+
```bash
|
|
230
|
+
node scripts/official-kernel-smoke.mjs
|
|
231
|
+
```
|
|
553
232
|
|
|
554
|
-
|
|
555
|
-
|
|
233
|
+
<!-- readme:license -->
|
|
234
|
+
## 许可证与免责声明
|
|
556
235
|
|
|
557
|
-
|
|
558
|
-
|
|
236
|
+
适配器源码使用 [Apache-2.0](LICENSE)。官方 Antigravity 内核不包含在本项目中,
|
|
237
|
+
并继续受 [Google Antigravity 条款](https://antigravity.google/terms) 约束。本社区
|
|
238
|
+
项目只 spawn 你在本机安装的内核,不重新实现、不重新授权、不重新分发该软件。
|
|
559
239
|
|
|
560
|
-
|
|
240
|
+
第三方使用可能带来账号或服务风险。应使用经过授权的账号与官方凭据。本软件按现状
|
|
241
|
+
提供,不作任何担保。
|