aptly 0.1.1 → 0.1.3
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/README.en.md +6 -4
- package/README.ja.md +6 -4
- package/README.md +6 -4
- package/README.zh-CN.md +6 -4
- package/dist/bin/aptly.js +72 -16
- package/dist/src/core.d.ts +1 -0
- package/dist/src/core.js +15 -9
- package/dist/src/credential-setup.d.ts +4 -0
- package/dist/src/credential-setup.js +67 -34
- package/dist/src/ledger-lock.d.ts +8 -0
- package/dist/src/ledger-lock.js +153 -0
- package/dist/src/provider.js +7 -1
- package/dist/src/setup.d.ts +9 -0
- package/dist/src/setup.js +139 -15
- package/dist/src/update-notifier.d.ts +14 -0
- package/dist/src/update-notifier.js +179 -0
- package/dist/src/update.d.ts +13 -0
- package/dist/src/update.js +68 -0
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/docs/guide/en.md +92 -5
- package/docs/guide/ja.md +92 -5
- package/docs/guide/ko.md +92 -5
- package/docs/guide/zh-CN.md +92 -5
- package/package.json +2 -2
package/docs/guide/zh-CN.md
CHANGED
|
@@ -4,24 +4,61 @@
|
|
|
4
4
|
|
|
5
5
|
[返回 README](../../README.zh-CN.md)
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
韩语文档是正本。本指南介绍 Aptly 的常规安装与使用方法。可以安装软件包,并不表示所有账户都能访问相关模型。子代理的实际执行、审批、沙箱与 MCP 权限仍由 Claude Code 或 Codex 负责。
|
|
8
8
|
|
|
9
9
|
## 安装
|
|
10
10
|
|
|
11
|
-
需要 Node.js 24 或更高版本,以及 Claude Code 或 Codex
|
|
11
|
+
需要 Node.js 24 或更高版本,以及 Claude Code 或 Codex。请使用以下命令全局安装 npm 上的最新稳定版本:
|
|
12
|
+
|
|
13
|
+
**将现有持久化账本升级到 0.1.2 或更高版本前**,请停止所有可能访问该账本的宿主、MCP 服务器、独立 CLI 和旧版进程。新的持久锁不能与旧版写入进程并用。全新安装无需隔离旧锁。如果仍有旧版空锁,请遵循[账本迁移步骤](#进程中断与账本锁定),仅在离线状态下隔离已确认的旧锁,并保留 JSON 账本、`unknown` 记录、成本和已完成缓存。
|
|
12
14
|
|
|
13
15
|
```sh
|
|
14
|
-
npm install -g aptly@
|
|
16
|
+
npm install -g aptly@latest --allow-scripts=aptly
|
|
15
17
|
aptly setup --client all --mode defaults
|
|
16
18
|
aptly --version
|
|
17
19
|
```
|
|
18
20
|
|
|
19
|
-
|
|
21
|
+
请运行 `aptly --version` 确认已安装的版本。切换 Node.js 环境后可能需要重新安装。
|
|
20
22
|
|
|
21
23
|
`postinstall` 会在当前用户现有的宿主配置目录中注册 MCP 和 `PreToolUse` Hook。如果使用 `CODEX_HOME` 或 `CLAUDE_CONFIG_DIR`,请向安装进程传递相同的环境。自动注册会跳过尚不存在的宿主目录;显式运行 `setup` 可以创建这些目录。若只需注册某个宿主,请使用 `--client codex` 或 `--client claude`。
|
|
22
24
|
|
|
23
25
|
新注册项会指定 `ROUTER_PROVIDER=decisions`、Hook 的 `defaults` 策略,以及各宿主独立的私有账本。其他现有配置与 Hook,以及 Aptly 原有的命令、环境、分类方式和账本路径都会保留。现有 fixture 配置不会自动切换为付费模式。
|
|
24
26
|
|
|
27
|
+
### npm 安装脚本许可
|
|
28
|
+
|
|
29
|
+
上面的安装命令通过 `--allow-scripts=aptly` 显式允许本次安装运行 Aptly 的 `postinstall`。已在 npm 11.19.1 中确认支持,不会修改用户级 npm 许可配置。请参阅 [npm 官方说明](https://docs.npmjs.com/cli/v11/commands/npm-rebuild/#allow-scripts)。
|
|
30
|
+
|
|
31
|
+
`npm warn install-scripts ... not yet covered by allowScripts` 表示许可策略尚未记录此项。在 npm 11.19.1 中,仅凭此警告不能判断脚本被阻止。实际行为取决于 npm 版本、严格策略和 `ignore-scripts`;安装成功也不等于 MCP 或 Hook 注册成功。npm 可能隐藏 postinstall 输出。
|
|
32
|
+
|
|
33
|
+
如果 npm 不支持此选项,或希望手动配置而非自动注册,请运行:
|
|
34
|
+
|
|
35
|
+
```sh
|
|
36
|
+
npm install -g aptly@latest --ignore-scripts
|
|
37
|
+
aptly setup --client all --mode defaults
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
无论安装脚本是否运行,都可以显式执行 `setup`。它会保留已有启动路径;旧路径错误请按下文恢复步骤处理。密钥配置、MCP 重启和 Codex `/hooks` 信任审核仍需单独完成。
|
|
41
|
+
|
|
42
|
+
### 软件包更新
|
|
43
|
+
|
|
44
|
+
`aptly update` 需要 **Aptly 0.1.3 或更高版本**。仅支持已验证的全局 npm 安装,将 `aptly@latest` 安装到与当前运行软件包一致且已验证的 prefix。局部安装、源码检出和无法验证的路径会被拒绝。 如果 npm 的有效配置为 `dry-run=true`,命令会在开始安装前返回 `update_dry_run_enabled` 并拒绝更新。无法验证配置时返回 `update_configuration_unverified`。不会将试运行报告为更新成功。
|
|
45
|
+
|
|
46
|
+
更新前,请按上文账本迁移步骤停止其他使用账本的宿主、MCP 和 CLI 进程。该命令跳过安装脚本,更新后请显式配置并重启宿主:
|
|
47
|
+
|
|
48
|
+
```sh
|
|
49
|
+
aptly update
|
|
50
|
+
aptly setup --client all --mode defaults
|
|
51
|
+
aptly --version
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
不会自动迁移现有 MCP 启动路径或用户包装程序。如仍有旧路径,请按下文启动路径恢复步骤处理。密钥配置和 Codex `/hooks` 信任审核仍是单独步骤。如遇 npm 认证、网络或权限错误,请使用手动安装说明。不会自动安装更新。
|
|
55
|
+
|
|
56
|
+
### 新版本通知
|
|
57
|
+
|
|
58
|
+
**Aptly 0.1.3 或更高版本**会在交互式普通 CLI 命令中检查最新稳定版本,并在有新版时通过 stderr 提示 `aptly update`。 三个标准流必须都是终端;MCP 服务、自动 setup、推荐或分类路径、管道和 CI 均跳过检查。JSON stdout 和 MCP、Hook 响应保持不变。
|
|
59
|
+
|
|
60
|
+
仅向公开 npm 注册表请求 Aptly 版本元数据,不发送密钥、任务摘要或宿主配置。网络及响应读取限制为 800ms 和 16KiB,结果缓存于 `~/.cache/aptly/update-check.json`,有效期为 24 小时,失败后等待一小时。网络或缓存错误不会使原命令失败。在 CLI 环境中设置 `APTLY_NO_UPDATE_NOTIFIER=1` 可关闭检查;此变量不属于 `aptly set env` 支持的键。通知不会安装更新。
|
|
61
|
+
|
|
25
62
|
### 使用 CLI 设置
|
|
26
63
|
|
|
27
64
|
`set` 命令需要 0.1.1 或更高版本。命令不会自动切换现有启动路径。API 密钥设置仅允许当前软件包的标准 Node/服务器注册,并要求确认运行时支持系统凭据引用。自定义包装程序、旧版本及其他安装位置会以 `credential_launcher_unverified` 被拒绝;请先明确切换注册项或完成升级,再重新执行。
|
|
@@ -56,6 +93,34 @@ API 密钥通过 macOS Keychain、已安装的 Linux `secret-tool` 或 Windows C
|
|
|
56
93
|
|
|
57
94
|
修改后请重启 MCP,并通过 `get_routing_capabilities` 查看 `provider`、候选和 `credential_status`。`os_store` 仅表示读到了密钥,不代表 API 已通过认证。默认设置和公开变量设置仍会保留自定义包装程序。API 密钥设置不会修改未经确认的启动路径所对应的宿主设置;如果已尝试保存,则会在可能时恢复该宿主的旧密钥。不要假定新密钥会通过现有包装程序自动生效。命令不会绕过 Codex 的 `/hooks` 信任批准或宿主权限。
|
|
58
95
|
|
|
96
|
+
### 恢复不兼容的启动路径
|
|
97
|
+
|
|
98
|
+
以下选项需要 Aptly 0.1.2 或更高版本,npm 0.1.1 不包含这些选项。如需从源码测试,请运行 `npm ci --ignore-scripts` 和 `npm run build`,然后将下文的 `aptly` 替换为 `node bin/aptly.ts`。
|
|
99
|
+
|
|
100
|
+
密钥设置会在输入和保存前诊断所选宿主。任一宿主失败时,不提示输入,也不修改任何宿主。`--check` 不访问密钥或凭据存储。`credential_node_mismatch`、`credential_server_mismatch` 和 `credential_runtime_unsupported` 分别表示 Node 路径、服务器路径及 OS 存储支持不兼容。
|
|
101
|
+
|
|
102
|
+
如果只有 Claude 失败,按以下顺序诊断,仅在返回 `launcher_migration_available` 时考虑迁移:
|
|
103
|
+
|
|
104
|
+
```sh
|
|
105
|
+
aptly set env OPENAI_API_KEY --client claude --check
|
|
106
|
+
aptly setup --client claude --migrate-launcher --dry-run
|
|
107
|
+
aptly setup --client claude --migrate-launcher
|
|
108
|
+
aptly set env OPENAI_API_KEY --client claude
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
`--dry-run` 不修改文件。迁移仅将与所有权记录一致的 Aptly 标准注册的 Node 和服务器路径更新到当前构建,保留环境设置、Hook、策略及其他宿主,不访问凭据,也不执行旧启动程序。自定义包装程序、缺少所有权记录或已修改的注册会被拒绝。请在本地检查此类注册,使用包装程序的安全环境传递方式,或切换到另行审核的标准注册。不要编辑或删除所有权记录以绕过验证。
|
|
112
|
+
|
|
113
|
+
如果 `launcher_migration_not_owned` 对应的是保留的注册(`mcp_created: false`),**Aptly 0.1.3 或更高版本**提供显式选项 `--include-existing`。请安装 0.1.3 或更高版本,然后运行:
|
|
114
|
+
|
|
115
|
+
```sh
|
|
116
|
+
aptly setup --client claude --migrate-launcher --include-existing --dry-run
|
|
117
|
+
aptly setup --client claude --migrate-launcher --include-existing
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
请先在本地检查注册。必须已有有效的 Aptly 所有权记录,且受管理的环境变量、Hook 和策略与记录一致。仅接受绝对 Node 路径和单个标准服务器路径;包装程序或缺少记录的注册仍会被拒绝。此选项不会将整个 MCP 注册改为 Aptly 所有,后续移除仍会保留迁移后的启动路径和原有用户设置。仅可用于显式指定的单个宿主迁移,不适用于自动安装。
|
|
121
|
+
|
|
122
|
+
已成功的 Codex 无需重新设置。仅指定失败的宿主重试,然后重启 MCP。Codex 仍需通过 `/hooks` 审核信任。诊断后的配置变更会以 `concurrent_configuration_change` 中止。恢复时若发现其他密钥或无法读取当前值,不会覆盖存储,而是返回 `credential_rollback_failed`。文件与 OS 存储之间不是原子事务,请避免同时运行配置操作。
|
|
123
|
+
|
|
59
124
|
### 密钥与重启
|
|
60
125
|
|
|
61
126
|
通过安全环境或凭据启动程序将分类用的 `OPENAI_API_KEY` 传递给 MCP 进程。它与宿主订阅登录无关。不要将密钥值写入命令参数、请求、配置文件、源码、日志或临时文件。
|
|
@@ -129,7 +194,7 @@ APTLY_CODEX_MODELS = '["gpt-6-luna","gpt-6.1-terra","gpt-6.1-sol"]'
|
|
|
129
194
|
### 跳过与移除
|
|
130
195
|
|
|
131
196
|
```sh
|
|
132
|
-
APTLY_SKIP_SETUP=1 npm install -g aptly@
|
|
197
|
+
APTLY_SKIP_SETUP=1 npm install -g aptly@latest
|
|
133
198
|
aptly setup --client codex --mode defaults
|
|
134
199
|
aptly remove --client all
|
|
135
200
|
```
|
|
@@ -156,6 +221,20 @@ aptly remove --client all
|
|
|
156
221
|
| `get_routing_precedence` | 解释调用的保留依据与未确认的配置来源 |
|
|
157
222
|
| `route_spawn_hook` | 根据已安装的策略选择目标调用的默认值,或仅传递推荐 |
|
|
158
223
|
|
|
224
|
+
### 对外传输与关闭自动共享
|
|
225
|
+
|
|
226
|
+
自动分类的 `summary` 是由有效任务标签与正文**截取后的首段拼接成的摘录**,并不是重新进行语义摘要或匿名化。其 UTF-8 大小不超过 `min(4000, max_summary_bytes)`;这不是整个 HTTP 请求的大小限制。Codex 的 opaque 消息回退仅使用足够具体的 `task_name`,不会解码或传输该正文。标签也可能包含敏感信息。
|
|
227
|
+
|
|
228
|
+
Decisions 会收到 `client`、`task.summary`、`task.operation`、`task.context_sufficient`,以及候选配置 ID、模型与 effort 说明、已配置的模型特性。分类 API 密钥通过 `Authorization` 请求头发送,请求 ID 通过 `X-Client-Request-Id` 发送。自动路径使用哈希 ID,直接推荐的 ID 由调用方提供。请勿在 ID 或候选说明中放入秘密信息。
|
|
229
|
+
|
|
230
|
+
如需关闭自动共享,请在 `APTLY_HOOK_POLICY_PATH` 指向的现有私有策略文件中,**仅将 `enabled` 改为 `false`**,保留其他字段和所有权记录。之后的自动 Hook 调用会在分类或创建调用绑定文件之前保留原始调用。这无法撤销已开始的传输,也无法收回服务器已收到的信息。修改生成的策略后,安装、配置或移除命令的所有权检查可能报告冲突;这些命令不会覆盖已关闭的策略。请勿修改所有权记录来绕过检查。
|
|
231
|
+
|
|
232
|
+
`mode: advisory` 仍会传输分类数据,不是隐私共享的关闭方式。删除 `APTLY_HOOK_POLICY_PATH` 可能启用既有 strict 路径,请勿以此代替关闭共享。`enabled: false` 不会阻止显式发起的 `recommend_agent` 或 `aptly recommend` 请求。
|
|
233
|
+
|
|
234
|
+
如需自行控制共享摘要,请先关闭自动共享,再为直接推荐编写必要的信息。Aptly 不会自动获取摘要中 URL 的文档,也不会附加提到的源文件。已知密钥和 Bearer 模式检查不能完整检测所有秘密,也不能保证文本适合对外传输。
|
|
235
|
+
|
|
236
|
+
账本与 Hook 绑定保存请求元数据、哈希和缓存结果,不保存任务摘录。Aptly 诊断也不包含任务原文。但本地 Hook 的 `updatedInput` 会保留原任务,以便宿主继续执行。宿主自身的会话和日志保留不受 Aptly 控制。
|
|
237
|
+
|
|
159
238
|
## 直接推荐
|
|
160
239
|
|
|
161
240
|
`recommend_agent` MCP 与 CLI 的 `recommend` 接收任务摘要并推荐执行配置,不会直接创建子代理。请将以下 JSON 作为 MCP 工具参数传递,或保存为文件并通过 CLI 的标准输入提供。
|
|
@@ -254,6 +333,14 @@ export APTLY_MODEL_INFO_PATH=/absolute/private-aptly-state/model-info.json
|
|
|
254
333
|
|
|
255
334
|
测量路径为**显式 MCP 推荐 → 将推荐配置作为参数传递给宿主原生调用**。这不是对自动 Hook 的 URL 收集或传递功能的验证。基准组复用了紧接在此前的实测数据,每个条件的样本为 3 次。已确认各次执行读取了完整文档,并检查了原文引用的一致性和输出格式。这些检查不能证明结果质量相同或差异具有统计显著性,也不能保证其他任务会降低成本。
|
|
256
335
|
|
|
336
|
+
### 进程中断与账本锁定
|
|
337
|
+
|
|
338
|
+
此锁定方案需要 Aptly `0.1.2` 或更高版本,npm `0.1.1` 不包含。JSON 账本保留原有的请求 ID、`unknown` 记录、已完成缓存、调用次数和预留成本。只有持久化账本使用 Node.js 24 内置的 SQLite。相邻的 `ledger.json.lock` 在正常退出后仍会保留;仅凭文件存在,不能判断锁仍被占用。新方案在进程退出时释放 OS 锁,后续请求可继续使用同一账本,但不会重试原有的结果不明 ID,也不会退回预留成本。
|
|
339
|
+
|
|
340
|
+
请将账本和锁放在支持硬链接的本地文件系统私有目录中,并为每个账本使用同一个规范路径。网络共享、云同步目录和路径别名不在支持范围内。不要删除或替换新锁文件及 SQLite journal,也不要在使用期间用其他数据库工具打开它们。仅凭文件年龄或 PID,无法确认所有者已退出。
|
|
341
|
+
|
|
342
|
+
旧版空 `.lock` 文件无法证明所有者是否仍存活,因此不会自动初始化或删除。请先停止所有相关宿主、MCP 进程及访问账本的进程,包括旧版本,并升级所有写入进程。只有确认该文件属于旧锁定方案后,才可将其单独隔离,再使用相同的 JSON 账本路径重新启动。请勿重置或删除账本、`unknown` 记录、成本或已完成结果。若无法确认所有者或格式,请保持阻止访问并调查原因。
|
|
343
|
+
|
|
257
344
|
## 诊断与开发
|
|
258
345
|
|
|
259
346
|
```sh
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "aptly",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"engines": {
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"smol-toml": "1.9.1",
|
|
23
23
|
"zod": "4.6.7"
|
|
24
24
|
},
|
|
25
|
-
"description": "Model and reasoning recommendations for subagents.",
|
|
25
|
+
"description": "Model and reasoning recommendations for subagents, powered by the OpenAI Decisions API.",
|
|
26
26
|
"license": "MIT",
|
|
27
27
|
"bin": {
|
|
28
28
|
"aptly": "dist/bin/aptly.js"
|