proxyctl 0.1.4__tar.gz → 0.3.0__tar.gz
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.
- {proxyctl-0.1.4 → proxyctl-0.3.0}/PKG-INFO +23 -1
- {proxyctl-0.1.4 → proxyctl-0.3.0}/README.md +22 -0
- proxyctl-0.3.0/man/proxyctl.1 +269 -0
- {proxyctl-0.1.4 → proxyctl-0.3.0}/pyproject.toml +4 -2
- {proxyctl-0.1.4 → proxyctl-0.3.0}/src/proxyctl/__init__.py +1 -1
- proxyctl-0.3.0/src/proxyctl/_io.py +425 -0
- {proxyctl-0.1.4 → proxyctl-0.3.0}/src/proxyctl/audit.py +79 -2
- {proxyctl-0.1.4 → proxyctl-0.3.0}/src/proxyctl/check.py +215 -32
- {proxyctl-0.1.4 → proxyctl-0.3.0}/src/proxyctl/cli.py +1001 -189
- proxyctl-0.3.0/src/proxyctl/completion.py +223 -0
- proxyctl-0.3.0/src/proxyctl/explain.py +1346 -0
- {proxyctl-0.1.4 → proxyctl-0.3.0}/src/proxyctl/status.py +69 -20
- {proxyctl-0.1.4 → proxyctl-0.3.0}/src/proxyctl/trace.py +52 -12
- {proxyctl-0.1.4 → proxyctl-0.3.0}/.gitignore +0 -0
- {proxyctl-0.1.4 → proxyctl-0.3.0}/LICENSE +0 -0
- {proxyctl-0.1.4 → proxyctl-0.3.0}/src/proxyctl/builtin_plugins/__init__.py +0 -0
- {proxyctl-0.1.4 → proxyctl-0.3.0}/src/proxyctl/builtin_plugins/connectivity_basic.py +0 -0
- {proxyctl-0.1.4 → proxyctl-0.3.0}/src/proxyctl/builtin_plugins/corp_network.py +0 -0
- {proxyctl-0.1.4 → proxyctl-0.3.0}/src/proxyctl/core/__init__.py +0 -0
- {proxyctl-0.1.4 → proxyctl-0.3.0}/src/proxyctl/core/plugin.py +0 -0
- {proxyctl-0.1.4 → proxyctl-0.3.0}/src/proxyctl/engine/__init__.py +0 -0
- {proxyctl-0.1.4 → proxyctl-0.3.0}/src/proxyctl/engine/base.py +0 -0
- {proxyctl-0.1.4 → proxyctl-0.3.0}/src/proxyctl/engine/mihomo.py +0 -0
- {proxyctl-0.1.4 → proxyctl-0.3.0}/src/proxyctl/engine/singbox.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: proxyctl
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3.0
|
|
4
4
|
Summary: Proxy configuration lifecycle management for macOS and Linux
|
|
5
5
|
Project-URL: Homepage, https://github.com/crhan/proxyctl
|
|
6
6
|
Project-URL: Issues, https://github.com/crhan/proxyctl/issues
|
|
@@ -46,6 +46,28 @@ proxyctl 是一套 macOS 代理管理工具,核心价值在于提供**配置
|
|
|
46
46
|
|
|
47
47
|
它不告诉你"用什么配置",而是帮你"管好配置"。
|
|
48
48
|
|
|
49
|
+
## For AI Agents
|
|
50
|
+
|
|
51
|
+
proxyctl 把 agent 友好度做成一等公民。完整接入协议见
|
|
52
|
+
[AGENTS.md](AGENTS.md)(仓库视角)与 `proxyctl agent-guide`(运行时视角)。
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
proxyctl agent-guide # Agent 入门 markdown(动态注入路径/端口)
|
|
56
|
+
proxyctl --version --json # schema_version + supported_features 探测
|
|
57
|
+
proxyctl commands --json # 全部命令元数据(机读)
|
|
58
|
+
proxyctl commands --schema # 上面 JSON 的 JSON Schema
|
|
59
|
+
proxyctl explain # "我想改 X 去哪?" 速查
|
|
60
|
+
proxyctl doctor --json # 5 项健康打分
|
|
61
|
+
PROXYCTL_AGENT=1 proxyctl <cmd> # 一键 --json + 关色 + 非交互
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
- envelope schema v2:`schema_version / cmd / ok / data / error / code / hints[] / warnings[] / doc / meta{{ts,elapsed_ms,proxyctl_version,request_id}}`
|
|
65
|
+
- 退出码分语义:`0 OK / 2 USAGE / 3 NOT_FOUND / 4 PERMISSION / 5 ENGINE_DOWN / 6 CONFIG_ERR / 7 NETWORK_ERR / 8 LOCKED / 9 TIMEOUT / 10 DEPENDENCY_MISSING`
|
|
66
|
+
- 写命令支持 `--dry-run` 输出结构化 plan;`audit/check` 支持 `--plain` TSV
|
|
67
|
+
- `proxyctl help <cmd>` 与 `<cmd> --help` 同源;错误带可执行 hints + explain topic
|
|
68
|
+
- 非 TTY 自动关色;不读 stdin / 不 prompt;写操作 fcntl.flock 互斥
|
|
69
|
+
- 从 0.2.x 升级见 [MIGRATION-0.3.md](MIGRATION-0.3.md)
|
|
70
|
+
|
|
49
71
|
## 核心功能
|
|
50
72
|
|
|
51
73
|
### 状态面板
|
|
@@ -17,6 +17,28 @@ proxyctl 是一套 macOS 代理管理工具,核心价值在于提供**配置
|
|
|
17
17
|
|
|
18
18
|
它不告诉你"用什么配置",而是帮你"管好配置"。
|
|
19
19
|
|
|
20
|
+
## For AI Agents
|
|
21
|
+
|
|
22
|
+
proxyctl 把 agent 友好度做成一等公民。完整接入协议见
|
|
23
|
+
[AGENTS.md](AGENTS.md)(仓库视角)与 `proxyctl agent-guide`(运行时视角)。
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
proxyctl agent-guide # Agent 入门 markdown(动态注入路径/端口)
|
|
27
|
+
proxyctl --version --json # schema_version + supported_features 探测
|
|
28
|
+
proxyctl commands --json # 全部命令元数据(机读)
|
|
29
|
+
proxyctl commands --schema # 上面 JSON 的 JSON Schema
|
|
30
|
+
proxyctl explain # "我想改 X 去哪?" 速查
|
|
31
|
+
proxyctl doctor --json # 5 项健康打分
|
|
32
|
+
PROXYCTL_AGENT=1 proxyctl <cmd> # 一键 --json + 关色 + 非交互
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
- envelope schema v2:`schema_version / cmd / ok / data / error / code / hints[] / warnings[] / doc / meta{{ts,elapsed_ms,proxyctl_version,request_id}}`
|
|
36
|
+
- 退出码分语义:`0 OK / 2 USAGE / 3 NOT_FOUND / 4 PERMISSION / 5 ENGINE_DOWN / 6 CONFIG_ERR / 7 NETWORK_ERR / 8 LOCKED / 9 TIMEOUT / 10 DEPENDENCY_MISSING`
|
|
37
|
+
- 写命令支持 `--dry-run` 输出结构化 plan;`audit/check` 支持 `--plain` TSV
|
|
38
|
+
- `proxyctl help <cmd>` 与 `<cmd> --help` 同源;错误带可执行 hints + explain topic
|
|
39
|
+
- 非 TTY 自动关色;不读 stdin / 不 prompt;写操作 fcntl.flock 互斥
|
|
40
|
+
- 从 0.2.x 升级见 [MIGRATION-0.3.md](MIGRATION-0.3.md)
|
|
41
|
+
|
|
20
42
|
## 核心功能
|
|
21
43
|
|
|
22
44
|
### 状态面板
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
.TH PROXYCTL 1 "2026-05" "proxyctl 0.3.0" "User Commands"
|
|
2
|
+
.SH NAME
|
|
3
|
+
proxyctl \- Proxy configuration lifecycle management for macOS / Linux
|
|
4
|
+
.SH SYNOPSIS
|
|
5
|
+
.B proxyctl
|
|
6
|
+
[\fB--json\fR | \fB--plain\fR] [\fB--dry-run\fR] [\fB--no-color\fR] [\fB--quiet\fR]
|
|
7
|
+
\fICOMMAND\fR [\fIARGS...\fR]
|
|
8
|
+
.SH DESCRIPTION
|
|
9
|
+
.B proxyctl
|
|
10
|
+
是一套面向 macOS(含 Linux 部分支持)的代理引擎生命周期管理工具,
|
|
11
|
+
管 mihomo / sing-box 的启停、状态、健康检查、DNS 防护、配置切换。
|
|
12
|
+
.PP
|
|
13
|
+
它不负责安装代理引擎、不改具体规则、不改订阅——这些去 mihomo 自身的配置文件里改。
|
|
14
|
+
.PP
|
|
15
|
+
\fBAI Agent 友好(v0.3)\fR:
|
|
16
|
+
envelope schema v2(meta.ts/elapsed_ms/proxyctl_version/request_id);
|
|
17
|
+
所有写命令支持 \fB--dry-run\fR 输出结构化 plan;
|
|
18
|
+
audit / check 支持 \fB--plain\fR TSV 输出;
|
|
19
|
+
\fBPROXYCTL_AGENT=1\fR 一键开启 JSON + 关色 + 非交互;
|
|
20
|
+
错误信息一律带 \fIhints[]\fR + \fIdoc\fR(指向 explain topic);
|
|
21
|
+
退出码分语义;写操作 fcntl.flock 互斥锁。
|
|
22
|
+
详细接入协议见 \fBproxyctl agent-guide\fR 与仓库根 \fIAGENTS.md\fR。
|
|
23
|
+
.SH GLOBAL OPTIONS
|
|
24
|
+
.TP
|
|
25
|
+
.BR --json
|
|
26
|
+
读类命令输出 envelope JSON (schema v2)。\fBbench --json\fR / \fBlog --json\fR
|
|
27
|
+
是 NDJSON 流式(log 含首行 meta header)。与 \fB--plain\fR 互斥。
|
|
28
|
+
.TP
|
|
29
|
+
.BR --plain
|
|
30
|
+
\fBaudit\fR / \fBcheck\fR 输出 TSV(无 ANSI / 无 box / 无 emoji)。与 \fB--json\fR 互斥。
|
|
31
|
+
.TP
|
|
32
|
+
.BR --dry-run
|
|
33
|
+
写命令预演:输出 \fIdata.plan = [PlanStep, ...]\fR(不真正执行)。
|
|
34
|
+
PlanStep 字段:step / action / target / reversible / requires_sudo /
|
|
35
|
+
side_effects / summary。
|
|
36
|
+
适用:mode / engine / fix / audit apply / config set / daemon /
|
|
37
|
+
dns-lock / dns-unlock。
|
|
38
|
+
.TP
|
|
39
|
+
.BR --no-color
|
|
40
|
+
关闭 ANSI 颜色(默认按 isatty / NO_COLOR / TERM=dumb / PROXYCTL_NO_COLOR 自动判断)。
|
|
41
|
+
.TP
|
|
42
|
+
.BR --quiet ", " -q
|
|
43
|
+
抑制非必要输出。
|
|
44
|
+
.TP
|
|
45
|
+
.BR --help ", " -h
|
|
46
|
+
显示帮助。子命令也支持:\fBproxyctl <cmd> --help\fR 或 \fBproxyctl help <cmd>\fR。
|
|
47
|
+
.TP
|
|
48
|
+
.BR --version ", " -v
|
|
49
|
+
显示版本。\fB--version --json\fR 输出 envelope,含 \fIsupported_features\fR
|
|
50
|
+
能力清单(agent 用以探测)。
|
|
51
|
+
.PP
|
|
52
|
+
所有 flag \fB位置无关\fR——可出现在命令前/后/中。
|
|
53
|
+
.SH COMMANDS
|
|
54
|
+
.SS 自描述(Agent 入口)
|
|
55
|
+
.TP
|
|
56
|
+
.B proxyctl agent-guide
|
|
57
|
+
输出给 LLM 的运行时入门 markdown(能力地图 / 引导路径 / 决策树 / envelope 字段表 / 锁文件位置 / footgun)。
|
|
58
|
+
.TP
|
|
59
|
+
\fBproxyctl explain\fR [\fITOPIC\fR]
|
|
60
|
+
无参输出"想改 X 去哪?"速查表;带 topic 输出卡片。
|
|
61
|
+
topic:rules, nodes, config, dns, engine, ports, extra-daemons, env,
|
|
62
|
+
corp-dns, plugins, troubleshooting, exit-codes, agent, flags,
|
|
63
|
+
subscription, agent-protocol, locks。
|
|
64
|
+
.TP
|
|
65
|
+
.B proxyctl commands [--json] [--schema]
|
|
66
|
+
列出全部命令的元数据:side_effects (list[enum]) / conditional_side_effects /
|
|
67
|
+
supports_dry_run / needs_sudo / interactive / exit_codes / examples。
|
|
68
|
+
\fB--schema\fR 输出该 data 的 JSON Schema (Draft 2020-12)。
|
|
69
|
+
.TP
|
|
70
|
+
\fBproxyctl config\fR \fIpath\fR | \fIget\fR <key> | \fIset\fR <key> <value>
|
|
71
|
+
查询 / 修改 proxyctl 自身配置。支持 dot 路径(\fBcorp_dns.server\fR)。
|
|
72
|
+
\fBset\fR 是原子写 + .bak 备份 + YAML 校验 + 失败回滚;支持 \fB--dry-run\fR。
|
|
73
|
+
.TP
|
|
74
|
+
.B proxyctl doctor [--json]
|
|
75
|
+
极简 5 项健康打分:engine_up / port_listen / dns_ok / system_proxy_ok /
|
|
76
|
+
connectivity_ok。\fB--json\fR 额外含 informational 字段:
|
|
77
|
+
engine / mode / port / config_path / engine_config_path / lock_held / lock_path。
|
|
78
|
+
.TP
|
|
79
|
+
.B proxyctl help [\fICOMMAND\fR]
|
|
80
|
+
顶层帮助 / 单命令完整说明。等价 \fBproxyctl --help\fR / \fBproxyctl <cmd> --help\fR。
|
|
81
|
+
.TP
|
|
82
|
+
\fBproxyctl completion\fR \fIbash\fR | \fIzsh\fR | \fIfish\fR
|
|
83
|
+
生成 shell 补全脚本。
|
|
84
|
+
|
|
85
|
+
.SS 生命周期(写:sudo + process + system)
|
|
86
|
+
.TP
|
|
87
|
+
.B proxyctl start / stop / restart / restart-clean
|
|
88
|
+
启停代理引擎(写系统 DNS / 代理 / launchd)。restart-clean 额外清缓存。
|
|
89
|
+
.TP
|
|
90
|
+
.B proxyctl fix [--dry-run]
|
|
91
|
+
修复 DNS / 代理 / 热重载(system + cache)。
|
|
92
|
+
.TP
|
|
93
|
+
.B proxyctl recover
|
|
94
|
+
切网后软恢复:热重载 + 清 fakeip + 重测代理组(不重启进程)。
|
|
95
|
+
|
|
96
|
+
.SS 模式 / 引擎(写:sudo + config-write)
|
|
97
|
+
.TP
|
|
98
|
+
\fBproxyctl mode\fR [\fItun\fR|\fIproxy\fR] [\fB--dry-run\fR]
|
|
99
|
+
切换 tun / proxy 模式。无参输出当前 mode。
|
|
100
|
+
.TP
|
|
101
|
+
\fBproxyctl engine\fR [\fImihomo\fR|\fIsingbox\fR] [\fB--dry-run\fR]
|
|
102
|
+
切换代理引擎后端。无参输出当前。需 sudo + process restart。
|
|
103
|
+
|
|
104
|
+
.SS 诊断(只读 / network-io)
|
|
105
|
+
.TP
|
|
106
|
+
.B proxyctl status [--json]
|
|
107
|
+
系统状态面板(引擎 / 端口 / TUN / DNS / 代理 / 网络 / Tailscale)。
|
|
108
|
+
.TP
|
|
109
|
+
.B proxyctl check [--json|--plain]
|
|
110
|
+
4 阶段健康检查:basic / groups / connectivity / outbound-ip。
|
|
111
|
+
\fB--plain\fR 输出 TSV(stage / ok / detail)。
|
|
112
|
+
.TP
|
|
113
|
+
\fBproxyctl trace\fR \fIDOMAIN\fR [\fB--json\fR]
|
|
114
|
+
4 阶段域名链路诊断:DNS 解析 / 规则匹配预测 / 连通性 / 实际连接。
|
|
115
|
+
.TP
|
|
116
|
+
.B proxyctl audit [\fIDAYS\fR | apply [DAYS]] [--json|--plain] [--dry-run]
|
|
117
|
+
扫描日志找疑似应直连域名。\fBapply\fR 写 rules 段(建议先 \fB--dry-run\fR)。
|
|
118
|
+
\fB--plain\fR 输出 candidates TSV(host / count / ip / country)。
|
|
119
|
+
.TP
|
|
120
|
+
.B proxyctl bench [\fIGROUPS...\fR] [--json]
|
|
121
|
+
代理组测速。\fB--json\fR 为 NDJSON 流式(每节点一行)+ 末尾 summary envelope。
|
|
122
|
+
|
|
123
|
+
.SS Daemon / 看门狗(写:sudo + process)
|
|
124
|
+
.TP
|
|
125
|
+
\fBproxyctl daemon\fR [\fINAME\fR] [\fISUBCMD\fR] [\fB--dry-run\fR]
|
|
126
|
+
管理 \fIconfig.extra_daemons\fR 中声明的辅助 daemon。SUBCMD: start/stop/restart/status/log。
|
|
127
|
+
.TP
|
|
128
|
+
\fBproxyctl claude-proxy\fR [\fISUBCMD\fR]
|
|
129
|
+
\fBproxyctl daemon claude-proxy <subcmd>\fR 的别名。
|
|
130
|
+
.TP
|
|
131
|
+
.B proxyctl dns-lock [--reload] [--dry-run]
|
|
132
|
+
启动 DNS 看门狗 daemon(对抗 DHCP / VPN DNS 覆盖)。
|
|
133
|
+
.TP
|
|
134
|
+
.B proxyctl dns-unlock [--dry-run]
|
|
135
|
+
停止 DNS 看门狗。
|
|
136
|
+
|
|
137
|
+
.SS 工具
|
|
138
|
+
.TP
|
|
139
|
+
.B proxyctl env [--unset]
|
|
140
|
+
输出 / 清除 HTTP_PROXY / HTTPS_PROXY / NO_PROXY 环境变量(可 \fIeval\fR)。
|
|
141
|
+
.TP
|
|
142
|
+
.B proxyctl log [--tail \fIN\fR] [--no-follow] [--json]
|
|
143
|
+
查看后端日志。默认 \fItail -f\fR;\fB--json\fR 为 NDJSON(首行 meta header + 数据行)。
|
|
144
|
+
.TP
|
|
145
|
+
.B proxyctl plugins [--json]
|
|
146
|
+
显示已加载插件。
|
|
147
|
+
|
|
148
|
+
.SH JSON ENVELOPE (schema v2)
|
|
149
|
+
读类命令在 \fB--json\fR 模式下输出统一 envelope:
|
|
150
|
+
.PP
|
|
151
|
+
.nf
|
|
152
|
+
.RS 4
|
|
153
|
+
{
|
|
154
|
+
"schema_version": 2,
|
|
155
|
+
"cmd": "status",
|
|
156
|
+
"ok": true,
|
|
157
|
+
"data": { ... },
|
|
158
|
+
"error": null,
|
|
159
|
+
"code": 0,
|
|
160
|
+
"hints": [],
|
|
161
|
+
"warnings": [],
|
|
162
|
+
"doc": null,
|
|
163
|
+
"meta": {
|
|
164
|
+
"ts": "2026-05-17T08:00:00Z",
|
|
165
|
+
"elapsed_ms": 12,
|
|
166
|
+
"proxyctl_version": "0.3.0",
|
|
167
|
+
"request_id": "..."
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
.RE
|
|
171
|
+
.fi
|
|
172
|
+
.PP
|
|
173
|
+
失败时 \fIok: false\fR / \fIerror\fR / \fIcode\fR / \fIhints\fR 填充;
|
|
174
|
+
envelope 写 stdout,人类可读错误同时写 stderr。
|
|
175
|
+
\fBlog --json\fR 与 \fBbench --json\fR 是 NDJSON 流式。
|
|
176
|
+
.SH EXIT CODES
|
|
177
|
+
.TP
|
|
178
|
+
.B 0
|
|
179
|
+
成功
|
|
180
|
+
.TP
|
|
181
|
+
.B 1
|
|
182
|
+
通用失败(旧路径兼容)
|
|
183
|
+
.TP
|
|
184
|
+
.B 2
|
|
185
|
+
USAGE — 未识别命令 / 参数错;常伴有 did-you-mean
|
|
186
|
+
.TP
|
|
187
|
+
.B 3
|
|
188
|
+
NOT_FOUND — 资源不存在(daemon 未声明 / 配置文件缺失等)
|
|
189
|
+
.TP
|
|
190
|
+
.B 4
|
|
191
|
+
PERMISSION — sudo / 写文件失败
|
|
192
|
+
.TP
|
|
193
|
+
.B 5
|
|
194
|
+
ENGINE_DOWN — 引擎未运行
|
|
195
|
+
.TP
|
|
196
|
+
.B 6
|
|
197
|
+
CONFIG_ERR — 配置文件语法 / 字段错
|
|
198
|
+
.TP
|
|
199
|
+
.B 7
|
|
200
|
+
NETWORK_ERR — 上游 API / 网络错
|
|
201
|
+
.TP
|
|
202
|
+
.B 8
|
|
203
|
+
LOCKED — 并发锁未拿到(hints 含锁文件路径)
|
|
204
|
+
.TP
|
|
205
|
+
.B 9
|
|
206
|
+
TIMEOUT — 命令超时
|
|
207
|
+
.TP
|
|
208
|
+
.B 10
|
|
209
|
+
DEPENDENCY_MISSING — 依赖二进制 / 脚本缺失
|
|
210
|
+
.SH ENVIRONMENT
|
|
211
|
+
.TP
|
|
212
|
+
.B PROXYCTL_AGENT
|
|
213
|
+
设为 \fI1\fR / \fItrue\fR / \fIyes\fR 等价 \fB--json\fR + \fB--no-color\fR + 非交互承诺。
|
|
214
|
+
.TP
|
|
215
|
+
.B PROXYCTL_NO_COLOR
|
|
216
|
+
等价 \fB--no-color\fR。
|
|
217
|
+
.TP
|
|
218
|
+
.B PROXYCTL_DEBUG
|
|
219
|
+
打印插件加载 / hook 调用日志到 stderr。
|
|
220
|
+
.TP
|
|
221
|
+
.B NO_COLOR
|
|
222
|
+
遵循 https://no-color.org/。
|
|
223
|
+
.SH FILES
|
|
224
|
+
.TP
|
|
225
|
+
.I ~/.config/proxyctl/config.yaml
|
|
226
|
+
proxyctl 自身配置(API token / 端口 / 企业 DNS / extra_daemons / no_proxy_extra / plugins_disabled)。
|
|
227
|
+
.TP
|
|
228
|
+
.I ~/.config/mihomo/config.yaml
|
|
229
|
+
mihomo 引擎配置(rules / proxies / proxy-providers / dns / tun)。
|
|
230
|
+
.TP
|
|
231
|
+
.I ~/.config/proxyctl/.lock.{system,config,daemon}
|
|
232
|
+
写操作 fcntl.flock 锁文件。LOCKED(8) 错误时 hints 会列出具体路径。
|
|
233
|
+
.TP
|
|
234
|
+
.I ~/.config/proxyctl/plugins/*.py
|
|
235
|
+
用户插件目录。
|
|
236
|
+
.SH EXAMPLES
|
|
237
|
+
.PP
|
|
238
|
+
快速接入(agent):
|
|
239
|
+
.RS 4
|
|
240
|
+
.nf
|
|
241
|
+
proxyctl agent-guide
|
|
242
|
+
proxyctl --version --json | jq .data.supported_features
|
|
243
|
+
proxyctl commands --json | jq '.data.commands[] | select(.side_effects == [])'
|
|
244
|
+
proxyctl doctor --json
|
|
245
|
+
.fi
|
|
246
|
+
.RE
|
|
247
|
+
.PP
|
|
248
|
+
安全地试一个写命令:
|
|
249
|
+
.RS 4
|
|
250
|
+
.nf
|
|
251
|
+
proxyctl mode tun --dry-run --json | jq .data.plan
|
|
252
|
+
.fi
|
|
253
|
+
.RE
|
|
254
|
+
.PP
|
|
255
|
+
故障排查决策树:
|
|
256
|
+
.RS 4
|
|
257
|
+
.nf
|
|
258
|
+
proxyctl doctor --json # 1. 看 score 与各项布尔
|
|
259
|
+
proxyctl trace github.com --json
|
|
260
|
+
proxyctl fix # 自动修 DNS / 代理
|
|
261
|
+
.fi
|
|
262
|
+
.RE
|
|
263
|
+
.SH SEE ALSO
|
|
264
|
+
\fBmihomo\fR(1), \fBsing-box\fR(1).
|
|
265
|
+
.PP
|
|
266
|
+
项目地址 https://github.com/crhan/proxyctl
|
|
267
|
+
.PP
|
|
268
|
+
仓库视角的开发约定:AGENTS.md。
|
|
269
|
+
迁移指南(0.2.x → 0.3.0):MIGRATION-0.3.md。
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "proxyctl"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.3.0"
|
|
4
4
|
description = "Proxy configuration lifecycle management for macOS and Linux"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.10"
|
|
@@ -37,6 +37,7 @@ proxyctl = "proxyctl.cli:main"
|
|
|
37
37
|
dev = [
|
|
38
38
|
"pytest>=8.0",
|
|
39
39
|
"pytest-cov>=5.0",
|
|
40
|
+
"jsonschema>=4.0",
|
|
40
41
|
]
|
|
41
42
|
|
|
42
43
|
[build-system]
|
|
@@ -47,7 +48,8 @@ build-backend = "hatchling.build"
|
|
|
47
48
|
packages = ["src/proxyctl"]
|
|
48
49
|
|
|
49
50
|
[tool.hatch.build.targets.sdist]
|
|
50
|
-
include = ["src/proxyctl", "README.md", "LICENSE", "pyproject.toml"
|
|
51
|
+
include = ["src/proxyctl", "README.md", "LICENSE", "pyproject.toml",
|
|
52
|
+
"man/proxyctl.1"]
|
|
51
53
|
|
|
52
54
|
[tool.pytest.ini_options]
|
|
53
55
|
minversion = "8.0"
|