abelworkflow 0.9.2 → 1.0.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/README.md +54 -182
- package/bin/abelworkflow.mjs +5 -3
- package/extensions/pi-gpt-responses-compat/index.ts +1 -1
- package/lib/cli/args.mjs +76 -0
- package/lib/cli/main.mjs +385 -0
- package/lib/cli/prompts.mjs +106 -0
- package/lib/config/dotenv.mjs +102 -0
- package/lib/config/jsonc.mjs +80 -0
- package/lib/config/store.mjs +310 -0
- package/lib/config/toml.mjs +638 -0
- package/lib/installer/assets.mjs +324 -0
- package/lib/installer/install.mjs +153 -0
- package/lib/installer/links.mjs +427 -0
- package/lib/installer/state.mjs +163 -0
- package/lib/paths.mjs +99 -0
- package/lib/providers/claude.mjs +197 -0
- package/lib/providers/codex.mjs +433 -0
- package/lib/providers/pi.mjs +577 -0
- package/lib/providers/skills.mjs +105 -0
- package/lib/templates/codex/agents/default.toml +7 -0
- package/lib/templates/codex/agents/explorer.toml +7 -0
- package/lib/templates/codex/agents/planner.toml +7 -0
- package/lib/templates/codex/agents/reviewer.toml +7 -0
- package/lib/templates/codex/agents/worker.toml +7 -0
- package/lib/templates/codex/config-base.toml +11 -3
- package/lib/templates/workflow/AGENTS.md +50 -0
- package/lib/templates/workflow/commands/abel-design.md +175 -0
- package/{commands → lib/templates/workflow/commands}/abel-diagnose.md +5 -5
- package/lib/templates/workflow/commands/abel-implement.md +170 -0
- package/{commands → lib/templates/workflow/commands}/abel-init.md +3 -5
- package/{.gitignore → lib/templates/workflow/gitignore.template} +0 -2
- package/lib/tools/cli-installer.mjs +277 -0
- package/package.json +37 -10
- package/skills/context7-auto-research/SKILL.md +5 -5
- package/skills/context7-auto-research/{context7-api.js → context7-api.cjs} +5 -8
- package/skills/dev-browser/SKILL.md +53 -33
- package/skills/dev-browser/dist/scripts/start.d.ts +2 -0
- package/skills/dev-browser/dist/scripts/start.d.ts.map +1 -0
- package/skills/dev-browser/dist/scripts/start.js +118 -0
- package/skills/dev-browser/dist/scripts/start.js.map +1 -0
- package/skills/dev-browser/dist/src/client.d.ts +93 -0
- package/skills/dev-browser/dist/src/client.d.ts.map +1 -0
- package/skills/dev-browser/dist/src/client.js +310 -0
- package/skills/dev-browser/dist/src/client.js.map +1 -0
- package/skills/dev-browser/dist/src/entrypoint.d.ts +29 -0
- package/skills/dev-browser/dist/src/entrypoint.d.ts.map +1 -0
- package/skills/dev-browser/dist/src/entrypoint.js +106 -0
- package/skills/dev-browser/dist/src/entrypoint.js.map +1 -0
- package/skills/dev-browser/dist/src/index.d.ts +4 -0
- package/skills/dev-browser/dist/src/index.d.ts.map +1 -0
- package/skills/dev-browser/dist/src/index.js +2 -0
- package/skills/dev-browser/dist/src/index.js.map +1 -0
- package/skills/dev-browser/dist/src/page-api.d.ts +25 -0
- package/skills/dev-browser/dist/src/page-api.d.ts.map +1 -0
- package/skills/dev-browser/dist/src/page-api.js +104 -0
- package/skills/dev-browser/dist/src/page-api.js.map +1 -0
- package/skills/dev-browser/dist/src/relay.d.ts +27 -0
- package/skills/dev-browser/dist/src/relay.d.ts.map +1 -0
- package/skills/dev-browser/dist/src/relay.js +521 -0
- package/skills/dev-browser/dist/src/relay.js.map +1 -0
- package/skills/dev-browser/dist/src/runtime.d.ts +45 -0
- package/skills/dev-browser/dist/src/runtime.d.ts.map +1 -0
- package/skills/dev-browser/dist/src/runtime.js +54 -0
- package/skills/dev-browser/dist/src/runtime.js.map +1 -0
- package/skills/dev-browser/dist/src/snapshot/browser-script.d.ts +23 -0
- package/skills/dev-browser/dist/src/snapshot/browser-script.d.ts.map +1 -0
- package/skills/dev-browser/{src/snapshot/browser-script.ts → dist/src/snapshot/browser-script.js} +21 -30
- package/skills/dev-browser/dist/src/snapshot/browser-script.js.map +1 -0
- package/skills/dev-browser/dist/src/snapshot/index.d.ts +14 -0
- package/skills/dev-browser/dist/src/snapshot/index.d.ts.map +1 -0
- package/skills/dev-browser/{src/snapshot/index.ts → dist/src/snapshot/index.js} +2 -2
- package/skills/dev-browser/dist/src/snapshot/index.js.map +1 -0
- package/skills/dev-browser/dist/src/snapshot/inject.d.ts +13 -0
- package/skills/dev-browser/dist/src/snapshot/inject.d.ts.map +1 -0
- package/skills/dev-browser/{src/snapshot/inject.ts → dist/src/snapshot/inject.js} +2 -2
- package/skills/dev-browser/dist/src/snapshot/inject.js.map +1 -0
- package/skills/dev-browser/dist/src/standalone.d.ts +32 -0
- package/skills/dev-browser/dist/src/standalone.d.ts.map +1 -0
- package/skills/dev-browser/dist/src/standalone.js +174 -0
- package/skills/dev-browser/dist/src/standalone.js.map +1 -0
- package/skills/dev-browser/dist/src/startup.d.ts +55 -0
- package/skills/dev-browser/dist/src/startup.d.ts.map +1 -0
- package/skills/dev-browser/dist/src/startup.js +81 -0
- package/skills/dev-browser/dist/src/startup.js.map +1 -0
- package/skills/dev-browser/dist/src/target-registry.d.ts +29 -0
- package/skills/dev-browser/dist/src/target-registry.d.ts.map +1 -0
- package/skills/dev-browser/dist/src/target-registry.js +135 -0
- package/skills/dev-browser/dist/src/target-registry.js.map +1 -0
- package/skills/dev-browser/dist/src/types.d.ts +27 -0
- package/skills/dev-browser/dist/src/types.d.ts.map +1 -0
- package/skills/dev-browser/dist/src/types.js +2 -0
- package/skills/dev-browser/dist/src/types.js.map +1 -0
- package/skills/dev-browser/package-lock.json +67 -1510
- package/skills/dev-browser/package.json +18 -14
- package/skills/dev-browser/references/scraping.md +94 -105
- package/skills/grok-search/.env.example +3 -3
- package/skills/grok-search/SKILL.md +1 -1
- package/skills/grok-search/defaults.json +3 -0
- package/skills/grok-search/gitignore.template +4 -0
- package/skills/grok-search/scripts/_dotenv.py +5 -1
- package/skills/grok-search/scripts/groksearch_cli.py +15 -33
- package/skills/prompt-enhancer/SKILL.md +2 -27
- package/skills/prompt-enhancer/TEMPLATE.md +0 -4
- package/.skill-lock.json +0 -29
- package/AGENTS.md +0 -45
- package/commands/abel-implement.md +0 -157
- package/commands/abel-plan.md +0 -88
- package/commands/abel-research.md +0 -126
- package/lib/cli/logic.mjs +0 -213
- package/lib/cli.mjs +0 -3016
- package/skills/confidence-check/SKILL.md +0 -34
- package/skills/confidence-check/confidence.ts +0 -276
- package/skills/dev-browser/bun.lock +0 -460
- package/skills/dev-browser/scripts/start.ts +0 -280
- package/skills/dev-browser/src/client.ts +0 -474
- package/skills/dev-browser/src/entrypoint.ts +0 -157
- package/skills/dev-browser/src/index.ts +0 -289
- package/skills/dev-browser/src/relay.ts +0 -731
- package/skills/dev-browser/src/runtime.test.ts +0 -60
- package/skills/dev-browser/src/runtime.ts +0 -171
- package/skills/dev-browser/src/startup.test.ts +0 -95
- package/skills/dev-browser/src/startup.ts +0 -153
- package/skills/dev-browser/src/types.ts +0 -35
- package/skills/dev-browser/tsconfig.json +0 -36
- package/skills/dev-browser/vitest.config.ts +0 -12
- package/skills/prompt-enhancer/.env.example +0 -12
- package/skills/prompt-enhancer/ADVANCED.md +0 -103
- package/skills/prompt-enhancer/requirements.txt +0 -2
- package/skills/prompt-enhancer/scripts/_dotenv.py +0 -28
- package/skills/prompt-enhancer/scripts/enhance.py +0 -191
- package/skills/prompt-enhancer/scripts/prompt_enhancer_entry.py +0 -253
- package/skills/sequential-think/SKILL.md +0 -198
- package/skills/sequential-think/scripts/.env.example +0 -5
- package/skills/sequential-think/scripts/sequential_think_cli.py +0 -253
package/README.md
CHANGED
|
@@ -1,224 +1,96 @@
|
|
|
1
1
|
# AbelWorkflow
|
|
2
2
|
|
|
3
|
-
Codex、
|
|
3
|
+
AbelWorkflow 为 Codex、Claude Code 和 Pi 部署统一的 Skills、工作流命令、Agent 配置与扩展。
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## 环境要求
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
│ ├── time/ # 时间与时区工具
|
|
11
|
-
│ ├── grok-search/ # 增强型网页搜索
|
|
12
|
-
│ ├── sequential-think/ # 多步推理引擎
|
|
13
|
-
│ ├── dev-browser/ # 浏览器自动化
|
|
14
|
-
│ ├── context7-auto-research/ # 自动文档检索
|
|
15
|
-
│ ├── confidence-check/ # 实施前信心评估
|
|
16
|
-
│ ├── git-commit/ # Git 提交助手
|
|
17
|
-
│ └── prompt-enhancer/ # 提示词优化器
|
|
18
|
-
├── commands/ # 命令目录
|
|
19
|
-
│ └── oc/ # 工作流命令
|
|
20
|
-
├── extensions/ # Pi 扩展
|
|
21
|
-
├── AGENTS.md # Agent 全局系统 prompts
|
|
22
|
-
└── README.md
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
## 技能概览
|
|
26
|
-
|
|
27
|
-
| 技能 | 描述 |
|
|
28
|
-
|------|------|
|
|
29
|
-
| **time** | 时间和时区工具,获取当前时间及时区转换 |
|
|
30
|
-
| **grok-search** | 通过 Grok API 增强网页搜索与实时内容检索 |
|
|
31
|
-
| **sequential-think** | 多步推理引擎,支持假设检验与分支的复杂分析 |
|
|
32
|
-
| **dev-browser** | 浏览器自动化,支持导航、表单填写、截图与数据提取 |
|
|
33
|
-
| **context7-auto-research** | 自动从 Context7 获取最新库/框架文档 |
|
|
34
|
-
| **confidence-check** | 实施前置信度评估(≥90%),含架构合规与根因识别 |
|
|
35
|
-
| **git-commit** | Conventional Commits 规范提交,智能暂存与消息生成 |
|
|
36
|
-
| **prompt-enhancer** | CoT 推理优化 AI 编码提示词,模糊请求转结构化指令 |
|
|
7
|
+
- Node.js 22 或更高版本
|
|
8
|
+
- npm 10 或兼容版本
|
|
9
|
+
- Linux、macOS 或原生 Windows
|
|
37
10
|
|
|
38
|
-
##
|
|
11
|
+
## 正式工作流命令
|
|
39
12
|
|
|
40
|
-
| 命令 |
|
|
41
|
-
|
|
42
|
-
|
|
|
43
|
-
|
|
|
44
|
-
|
|
|
45
|
-
|
|
|
46
|
-
| **/oc:diagnose** | 系统化根因分析与批量修复报告 |
|
|
13
|
+
| 命令 | 用途 |
|
|
14
|
+
| --- | --- |
|
|
15
|
+
| `/abel-init` | 初始化 OpenSpec 环境并验证工具链 |
|
|
16
|
+
| `/abel-design` | 通过双闸门澄清生成可实施、可验证规格 |
|
|
17
|
+
| `/abel-implement` | 按强制 TDD 实施已批准变更 |
|
|
18
|
+
| `/abel-diagnose` | 进行根因分析、回归测试和批量修复 |
|
|
47
19
|
|
|
48
|
-
|
|
20
|
+
工作流:
|
|
49
21
|
|
|
22
|
+
```text
|
|
23
|
+
/abel-init → /abel-design → /abel-implement(TDD)
|
|
24
|
+
↘ /abel-diagnose (bug fix)
|
|
50
25
|
```
|
|
51
|
-
/oc:init → /oc:research → /oc:plan → /oc:implementation(TDD)
|
|
52
|
-
↘ /oc:diagnose (bug fix)
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
## 配置说明
|
|
56
26
|
|
|
57
|
-
|
|
58
|
-
- Linux/macOS: `~/.agents/`
|
|
59
|
-
- Windows: `%USERPROFILE%\.agents\`(PowerShell: `$HOME\.agents`)
|
|
60
|
-
- **AGENTS.md**: Agent 全局系统 prompts 配置
|
|
27
|
+
OpenSpec 命令保持独立:`/opsx:propose`、`/opsx:explore`、`/opsx:apply`、`/opsx:update`、`/opsx:sync`、`/opsx:archive`、`openspec view`、`openspec status`。
|
|
61
28
|
|
|
62
29
|
## 安装与更新
|
|
63
30
|
|
|
64
|
-
###
|
|
31
|
+
### npx
|
|
65
32
|
|
|
66
33
|
```bash
|
|
67
|
-
# 交互式初始化菜单
|
|
68
34
|
npx abelworkflow
|
|
69
|
-
|
|
70
|
-
# 直接执行工作流同步/重链
|
|
71
35
|
npx abelworkflow install
|
|
72
|
-
|
|
73
|
-
# 更新到最新发布版本
|
|
74
36
|
npx abelworkflow@latest
|
|
75
37
|
```
|
|
76
38
|
|
|
77
|
-
|
|
78
|
-
> - npm 发布包名必须使用小写,所以实际可执行命令是 `npx abelworkflow`。
|
|
79
|
-
> - 交互式模式下,默认会打开初始化菜单,支持:
|
|
80
|
-
> - 同步 `~/.agents` 并自动重建 `~/.claude` / `~/.codex` / `~/.pi/agent` 链接
|
|
81
|
-
> - 交互式填写 `grok-search`、`context7-auto-research`、`prompt-enhancer` 的 `.env`
|
|
82
|
-
> - 一键安装或更新 `Claude Code`、`Codex`、`Pi`
|
|
83
|
-
> - 配置 `Claude Code` 的第三方 API 到 `~/.claude/settings.json`
|
|
84
|
-
> - 配置 `Codex` 的第三方 API 到 `~/.codex/config.toml` 和 `~/.codex/auth.json`
|
|
85
|
-
> - 配置 `Pi` 的自定义 API 到 `~/.pi/agent/models.json` 和 `~/.pi/agent/auth.json` 中的 `gpt` provider,并设置 `~/.pi/agent/settings.json` 默认模型,同时携带 Pi 扩展
|
|
86
|
-
> - 非交互场景请显式使用 `npx abelworkflow install`,不再保留旧的默认自动同步逻辑。
|
|
87
|
-
|
|
88
|
-
### 交互式初始化能力
|
|
89
|
-
|
|
90
|
-
`npx abelworkflow` 现在默认提供一个类似 `npx zcf` 的菜单,常见入口包括:
|
|
91
|
-
|
|
92
|
-
```bash
|
|
93
|
-
npx abelworkflow
|
|
94
|
-
npx abelworkflow init
|
|
95
|
-
npx abelworkflow install
|
|
96
|
-
npx abelworkflow --help
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
其中完整初始化会按需引导你完成:
|
|
100
|
-
|
|
101
|
-
1. 安装 AbelWorkflow 到 `~/.agents`
|
|
102
|
-
2. 自动链接到 `~/.claude/`、`~/.codex/` 和 `~/.pi/agent/`
|
|
103
|
-
3. 可选安装 `Claude Code` CLI
|
|
104
|
-
4. 可选配置 `Claude Code` 第三方 API
|
|
105
|
-
5. 可选安装 `Codex` CLI
|
|
106
|
-
6. 可选配置 `Codex` 第三方 API
|
|
107
|
-
7. 可选安装 `Pi` CLI
|
|
108
|
-
8. 可选配置 Pi `gpt` provider 自定义 API,并链接 Pi 扩展
|
|
109
|
-
9. 可选填写三个技能的环境变量
|
|
110
|
-
|
|
111
|
-
### 自签名 HTTPS 中转
|
|
112
|
-
|
|
113
|
-
默认不会关闭 TLS 证书校验。自签名中转应优先取得其 CA PEM,并在启动客户端前设置:
|
|
114
|
-
|
|
115
|
-
```bash
|
|
116
|
-
export NODE_EXTRA_CA_CERTS=/absolute/path/relay-ca.pem
|
|
117
|
-
export CODEX_CA_CERTIFICATE=/absolute/path/relay-ca.pem
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
- `NODE_EXTRA_CA_CERTS` 供 Claude Code 和 Pi 使用,必须在启动进程前设置。
|
|
121
|
-
- `CODEX_CA_CERTIFICATE` 供 Codex 原生客户端使用;也可使用 `SSL_CERT_FILE`。
|
|
122
|
-
- Claude Code 的配置向导提供显式“不安全 TLS”选项,但它会影响该 Claude Code 进程内的全部 HTTPS 请求。
|
|
123
|
-
- Pi 的配置向导可仅为配置的 `gpt` 请求启用不安全 TLS;扩展会移除内部标记,不影响其他请求。
|
|
124
|
-
- Codex 没有已验证的跳过证书校验配置。无法提供可信 PEM 时,只能使用中转明确提供的 `http://` 地址或受控的本地反向代理。
|
|
125
|
-
|
|
126
|
-
证书过期或主机名不匹配时应重新签发证书,不能用附加 CA 安全修复。不要在 shell 配置中全局设置 `NODE_TLS_REJECT_UNAUTHORIZED=0`。
|
|
127
|
-
|
|
128
|
-
### 技能环境写入位置
|
|
129
|
-
|
|
130
|
-
交互式配置会把技能密钥写到 `~/.agents` 下对应 skill 目录的 `.env` 中:
|
|
131
|
-
|
|
132
|
-
| 技能 | 写入位置 | 主要字段 |
|
|
133
|
-
|---|---|---|
|
|
134
|
-
| `grok-search` | `~/.agents/skills/grok-search/.env` | `GROK_API_URL` `GROK_API_KEY` `GROK_MODEL` |
|
|
135
|
-
| `context7-auto-research` | `~/.agents/skills/context7-auto-research/.env` | `CONTEXT7_API_KEY` |
|
|
136
|
-
| `prompt-enhancer` | `~/.agents/skills/prompt-enhancer/.env` | `PE_API_URL` `PE_API_KEY` `PE_MODEL` |
|
|
137
|
-
|
|
138
|
-
### 方法二:源码克隆安装
|
|
139
|
-
|
|
140
|
-
如需自定义修改或贡献代码,可手动克隆后直接运行本地 CLI:
|
|
141
|
-
|
|
142
|
-
#### 1. 克隆仓库
|
|
143
|
-
|
|
144
|
-
**Linux/macOS(bash/zsh)**
|
|
145
|
-
|
|
146
|
-
```bash
|
|
147
|
-
# 首次安装
|
|
148
|
-
git clone https://github.com/abelxiaoxing/AbelWorkflow ~/.agents
|
|
149
|
-
|
|
150
|
-
# 更新
|
|
151
|
-
git -C ~/.agents pull
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
**Windows(PowerShell)**
|
|
155
|
-
|
|
156
|
-
```powershell
|
|
157
|
-
# 首次安装
|
|
158
|
-
git clone https://github.com/abelxiaoxing/AbelWorkflow "$HOME\.agents"
|
|
159
|
-
|
|
160
|
-
# 更新
|
|
161
|
-
git -C "$HOME\.agents" pull
|
|
162
|
-
```
|
|
39
|
+
无 TTY 的环境必须显式运行 `npx abelworkflow install`。安装器将工作流部署到 `~/.agents`,并维护 Claude、Codex 与 Pi 的链接。
|
|
163
40
|
|
|
164
|
-
|
|
41
|
+
### 源码安装
|
|
165
42
|
|
|
166
|
-
|
|
43
|
+
源码目录和部署目录必须分离,不能相同或互相嵌套。推荐流程:
|
|
167
44
|
|
|
168
45
|
```bash
|
|
169
|
-
|
|
170
|
-
|
|
46
|
+
git clone https://github.com/abelxiaoxing/AbelWorkflow ~/src/AbelWorkflow
|
|
47
|
+
cd ~/src/AbelWorkflow
|
|
48
|
+
npm ci
|
|
49
|
+
npm ci --prefix skills/dev-browser
|
|
50
|
+
npm run build
|
|
51
|
+
node bin/abelworkflow.mjs install --agents-dir ~/.agents
|
|
171
52
|
```
|
|
172
53
|
|
|
173
|
-
|
|
54
|
+
Windows PowerShell 可将源码克隆到 `$HOME\src\AbelWorkflow`,然后运行相同的 npm 命令,并使用:
|
|
174
55
|
|
|
175
56
|
```powershell
|
|
176
|
-
|
|
177
|
-
node .\bin\abelworkflow.mjs
|
|
57
|
+
node .\bin\abelworkflow.mjs install --agents-dir "$HOME\.agents"
|
|
178
58
|
```
|
|
179
59
|
|
|
180
|
-
|
|
60
|
+
不要把源码仓库直接克隆到 `~/.agents`。已有这种布局时,先按 [1.0 迁移指南](https://github.com/abelxiaoxing/AbelWorkflow/blob/master/docs/migration-1.0.md) 人工建立独立源码目录;安装器不会猜测性移动或删除用户数据。
|
|
181
61
|
|
|
182
|
-
|
|
62
|
+
## 配置行为
|
|
183
63
|
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
64
|
+
- Claude 配置默认写入 `bypassPermissions` 全权限模式(YOLO),第三方 API 仅使用 API Key 认证,不添加任何 MCP 权限。已有 permissions、deny、hooks 和 timeout 保持不变。
|
|
65
|
+
- Codex 只更新 AbelWorkflow 管理的认证字段,保留未知字段、其他 Provider 和用户 token。
|
|
66
|
+
- Pi 0.80.0 及以上版本按无会话启动时实际选中的当前有效 Provider 配置 API,并将其 API Key 保存在 `~/.pi/agent/auth.json`;`models.json` 只保留模型定义。旧 models-only key 会按先写 auth、后删除旧 key 的顺序迁移。
|
|
67
|
+
- Grok 默认模型统一为 `grok-4.20-non-reasoning`。
|
|
68
|
+
- Context7 使用显式 CommonJS 入口 `context7-api.cjs`。
|
|
69
|
+
- dev-browser 发布运行时使用 Node ESM 编译产物,入口为 `node dist/scripts/start.js`,不依赖 Bun 或运行时 `npx tsx`。
|
|
70
|
+
- skill 密钥写入 `~/.agents/skills/<skill>/.env`;这些文件属于私密配置。
|
|
188
71
|
|
|
189
|
-
|
|
72
|
+
`.skill-lock.json` 完全属于用户:安装器不读取、不修改、不备份、不删除,也不会把它放入发布包。
|
|
190
73
|
|
|
191
|
-
|
|
192
|
-
Set-Location "$HOME\.agents"
|
|
193
|
-
node .\bin\abelworkflow.mjs install
|
|
194
|
-
```
|
|
74
|
+
## 部署映射
|
|
195
75
|
|
|
196
|
-
|
|
76
|
+
| 托管内容 | Claude Code | Codex | Pi |
|
|
77
|
+
| --- | --- | --- | --- |
|
|
78
|
+
| 工作流 AGENTS 模板 | `~/.claude/CLAUDE.md` | `~/.codex/AGENTS.md` | `~/.pi/agent/AGENTS.md` |
|
|
79
|
+
| `skills/<skill>/` | `~/.claude/skills/<skill>/` | `~/.codex/skills/<skill>/` | `~/.pi/agent/skills/<skill>/` |
|
|
80
|
+
| `abel-*.md` 命令 | `~/.claude/commands/` | `~/.codex/prompts/` | `~/.pi/agent/prompts/` |
|
|
81
|
+
| `extensions/*` | — | — | `~/.pi/agent/extensions/` |
|
|
197
82
|
|
|
198
|
-
|
|
199
|
-
|---|---|---|---|---|
|
|
200
|
-
| `AGENTS.md` | `~/.claude/CLAUDE.md` | `~/.codex/AGENTS.md` | `~/.pi/agent/AGENTS.md` | 全局系统提示词/规则 |
|
|
201
|
-
| `skills/<skill>/` | `~/.claude/skills/<skill>/` | `~/.codex/skills/<skill>/` | `~/.pi/agent/skills/<skill>/` | Skills(每个目录一个技能) |
|
|
202
|
-
| `commands/abel-*.md` | `~/.claude/commands/abel-*.md` | `~/.codex/prompts/abel-*.md` | `~/.pi/agent/prompts/abel-*.md` | 扁平化部署,避免命名冲突 |
|
|
203
|
-
| `extensions/*` | - | - | `~/.pi/agent/extensions/*` | Pi 扩展文件或目录 |
|
|
83
|
+
## 自签名 HTTPS 中转
|
|
204
84
|
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
**Linux/macOS(bash/zsh)**
|
|
85
|
+
优先取得中转的 CA PEM,并在启动客户端前配置:
|
|
208
86
|
|
|
209
87
|
```bash
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
cat "$HOME/.claude/settings.json" | head
|
|
213
|
-
cat "$HOME/.codex/config.toml" | head
|
|
88
|
+
export NODE_EXTRA_CA_CERTS=/absolute/path/relay-ca.pem
|
|
89
|
+
export CODEX_CA_CERTIFICATE=/absolute/path/relay-ca.pem
|
|
214
90
|
```
|
|
215
91
|
|
|
216
|
-
|
|
92
|
+
不要全局设置 `NODE_TLS_REJECT_UNAUTHORIZED=0`。证书过期或主机名不匹配时应重新签发证书。
|
|
217
93
|
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
Get-ChildItem "$HOME\.codex\prompts\abel-*.md"
|
|
222
|
-
Get-Content "$HOME\.claude\settings.json" -TotalCount 10
|
|
223
|
-
Get-Content "$HOME\.codex\config.toml" -TotalCount 10
|
|
224
|
-
```
|
|
94
|
+
## 升级
|
|
95
|
+
|
|
96
|
+
从 0.x 升级前请阅读 [AbelWorkflow 1.0 迁移指南](https://github.com/abelxiaoxing/AbelWorkflow/blob/master/docs/migration-1.0.md)。指南涵盖源码/部署目录拆分、metadata v2、Provider 配置、用户状态、dev-browser 和回滚。
|
package/bin/abelworkflow.mjs
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { main } from "../lib/cli.mjs";
|
|
2
|
+
import { main } from "../lib/cli/main.mjs";
|
|
3
3
|
|
|
4
|
-
main().
|
|
4
|
+
main(process.argv.slice(2)).then((code) => {
|
|
5
|
+
process.exitCode = code;
|
|
6
|
+
}).catch((error) => {
|
|
5
7
|
console.error(error instanceof Error ? error.message : String(error));
|
|
6
|
-
process.
|
|
8
|
+
process.exitCode = 1;
|
|
7
9
|
});
|
|
@@ -21,7 +21,7 @@ export default function (pi: ExtensionAPI) {
|
|
|
21
21
|
pi.on("before_provider_request", (event, ctx) => {
|
|
22
22
|
const payload = event.payload as any;
|
|
23
23
|
if (!payload || typeof payload !== "object" || Array.isArray(payload)) return;
|
|
24
|
-
if (ctx.model?.
|
|
24
|
+
if (ctx.model?.api !== "openai-responses") return;
|
|
25
25
|
if (!("input" in payload)) return;
|
|
26
26
|
|
|
27
27
|
const input = Array.isArray(payload.input) ? payload.input : [];
|
package/lib/cli/args.mjs
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
function parseArgs(argv, { defaultAgentsDir, resolvePath, env = process.env }) {
|
|
2
|
+
const options = {
|
|
3
|
+
agentsDir: defaultAgentsDir,
|
|
4
|
+
force: false,
|
|
5
|
+
relinkOnly: false,
|
|
6
|
+
nonInteractive: false,
|
|
7
|
+
command: "menu"
|
|
8
|
+
};
|
|
9
|
+
const positional = [];
|
|
10
|
+
let helpRequested = false;
|
|
11
|
+
|
|
12
|
+
for (let i = 0; i < argv.length; i += 1) {
|
|
13
|
+
const arg = argv[i];
|
|
14
|
+
if (arg === "--force" || arg === "-f") {
|
|
15
|
+
options.force = true;
|
|
16
|
+
continue;
|
|
17
|
+
}
|
|
18
|
+
if (arg === "--link-only") {
|
|
19
|
+
options.relinkOnly = true;
|
|
20
|
+
continue;
|
|
21
|
+
}
|
|
22
|
+
if (arg === "--agents-dir") {
|
|
23
|
+
const value = argv[i + 1];
|
|
24
|
+
if (!value) {
|
|
25
|
+
throw new Error("--agents-dir requires a path");
|
|
26
|
+
}
|
|
27
|
+
options.agentsDir = resolvePath(value);
|
|
28
|
+
i += 1;
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
if (arg === "--non-interactive") {
|
|
32
|
+
options.nonInteractive = true;
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
if (arg === "--help" || arg === "-h" || arg === "help") {
|
|
36
|
+
helpRequested = true;
|
|
37
|
+
options.command = "help";
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
if (arg.startsWith("-")) {
|
|
41
|
+
throw new Error(`Unknown argument: ${arg}`);
|
|
42
|
+
}
|
|
43
|
+
positional.push(arg);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
if (positional.length > 1) {
|
|
47
|
+
throw new Error(`Unknown argument: ${positional.slice(1).join(" ")}`);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
if (positional[0]) {
|
|
51
|
+
if (["menu", "init"].includes(positional[0])) {
|
|
52
|
+
if (!helpRequested) options.command = "menu";
|
|
53
|
+
} else if (["install", "sync"].includes(positional[0])) {
|
|
54
|
+
if (!helpRequested) options.command = "install";
|
|
55
|
+
} else {
|
|
56
|
+
throw new Error(`Unknown command: ${positional[0]}`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
if (options.command !== "install" && (options.force || options.relinkOnly || options.agentsDir !== defaultAgentsDir)) {
|
|
61
|
+
throw new Error("`--force`、`--link-only`、`--agents-dir` 仅能与 `install` 命令一起使用");
|
|
62
|
+
}
|
|
63
|
+
if (!options.nonInteractive && env.CI) options.nonInteractive = true;
|
|
64
|
+
return options;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
function assertInteractiveMenuSupported({ command, inputIsTTY, outputIsTTY, nonInteractive }) {
|
|
68
|
+
if (command === "menu" && nonInteractive) {
|
|
69
|
+
throw new Error("非交互模式已启用;请显式使用 `npx abelworkflow install` 进行安装");
|
|
70
|
+
}
|
|
71
|
+
if (command === "menu" && (!inputIsTTY || !outputIsTTY)) {
|
|
72
|
+
throw new Error("交互式菜单需要 TTY 终端;非交互场景请显式使用 `npx abelworkflow install`");
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export { assertInteractiveMenuSupported, parseArgs };
|