@oneciel-ai/claude-any 0.1.44 → 0.1.46
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 +14 -1
- package/claude_any.py +134 -33
- package/docs/README.ja.md +13 -1
- package/docs/README.ko.md +13 -1
- package/docs/README.zh.md +13 -1
- package/docs/manual.md +11 -3
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -48,7 +48,7 @@ arguments through unchanged.
|
|
|
48
48
|
|
|
49
49
|
Credits: One Ciel LLC
|
|
50
50
|
|
|
51
|
-
Current version: `0.1.
|
|
51
|
+
Current version: `0.1.46`
|
|
52
52
|
|
|
53
53
|
## Why This Exists
|
|
54
54
|
|
|
@@ -381,6 +381,19 @@ steps under that larger model's supervision.
|
|
|
381
381
|
|
|
382
382
|
## Changelog
|
|
383
383
|
|
|
384
|
+
### 0.1.46
|
|
385
|
+
|
|
386
|
+
- **Cleaner stream options**: the LLM options menu now hides `Stream word
|
|
387
|
+
chunking` whenever `Stream` is off, since chunking only applies to streamed
|
|
388
|
+
responses.
|
|
389
|
+
|
|
390
|
+
### 0.1.45
|
|
391
|
+
|
|
392
|
+
- **Interactive npm self-update check**: npm-installed `claude-any` now checks
|
|
393
|
+
the npm registry before launch. If a newer version exists, it asks whether to
|
|
394
|
+
run `npm update -g @oneciel-ai/claude-any`, then restarts into the updated
|
|
395
|
+
version. Non-interactive/headless runs are not interrupted.
|
|
396
|
+
|
|
384
397
|
### 0.1.44
|
|
385
398
|
|
|
386
399
|
- **Statusline split**: turning Rate Limit status off now hides only RPM,
|
package/claude_any.py
CHANGED
|
@@ -85,7 +85,7 @@ PROVIDER_LABELS = {
|
|
|
85
85
|
"self-hosted-nim": "Self Hosted NIM",
|
|
86
86
|
}
|
|
87
87
|
APP_NAME = "Claude Any"
|
|
88
|
-
VERSION = "0.1.
|
|
88
|
+
VERSION = "0.1.46"
|
|
89
89
|
CREDITS = "Credits: One Ciel LLC"
|
|
90
90
|
|
|
91
91
|
LOG_LEVELS = {"SILENT": 0, "ERROR": 1, "WARN": 2, "INFO": 3, "DEBUG": 4, "TRACE": 5}
|
|
@@ -6595,12 +6595,13 @@ def llm_option_panel_rows(provider: str, pcfg: dict[str, Any], lang: str | None
|
|
|
6595
6595
|
add("Top P", "top_p", opts.get("top_p", "default"))
|
|
6596
6596
|
add("Top K", "top_k", opts.get("top_k", "default"))
|
|
6597
6597
|
add("Think", "think", bool(pcfg.get("think", False)))
|
|
6598
|
-
add("Keep alive", "keep_alive", pcfg.get("keep_alive", "default"))
|
|
6599
|
-
add("Timeout ms", "request_timeout_ms", pcfg.get("request_timeout_ms", "default"))
|
|
6600
|
-
add("Stream", "stream_enabled", "on" if bool(pcfg.get("stream_enabled", True)) else "off")
|
|
6601
|
-
|
|
6602
|
-
|
|
6603
|
-
add("Rate limit
|
|
6598
|
+
add("Keep alive", "keep_alive", pcfg.get("keep_alive", "default"))
|
|
6599
|
+
add("Timeout ms", "request_timeout_ms", pcfg.get("request_timeout_ms", "default"))
|
|
6600
|
+
add("Stream", "stream_enabled", "on" if bool(pcfg.get("stream_enabled", True)) else "off")
|
|
6601
|
+
if bool(pcfg.get("stream_enabled", True)):
|
|
6602
|
+
add("Stream word chunking", "stream_word_chunking", "on" if bool(pcfg.get("stream_word_chunking", False)) else "off")
|
|
6603
|
+
add("Rate limit RPM", "rate_limit_rpm", pcfg.get("rate_limit_rpm", 40))
|
|
6604
|
+
add("Rate limit status", "rate_limit_status", "on" if bool(pcfg.get("rate_limit_status", True)) else "off")
|
|
6604
6605
|
else:
|
|
6605
6606
|
if provider in ("vllm", "nvidia-hosted", "self-hosted-nim"):
|
|
6606
6607
|
add("Context window", "context_window", pcfg.get("context_window", "default"))
|
|
@@ -6613,10 +6614,11 @@ def llm_option_panel_rows(provider: str, pcfg: dict[str, Any], lang: str | None
|
|
|
6613
6614
|
add("Temperature", "temperature", pcfg.get("temperature", "default"))
|
|
6614
6615
|
add("Top P", "top_p", pcfg.get("top_p", "default"))
|
|
6615
6616
|
add("Top K", "top_k", pcfg.get("top_k", "default"))
|
|
6616
|
-
if provider in ("vllm", "self-hosted-nim"):
|
|
6617
|
-
add("Native compatibility", "native_compat", bool(pcfg.get("native_compat", True)))
|
|
6618
|
-
add("Stream", "stream_enabled", "on" if bool(pcfg.get("stream_enabled", True)) else "off")
|
|
6619
|
-
|
|
6617
|
+
if provider in ("vllm", "self-hosted-nim"):
|
|
6618
|
+
add("Native compatibility", "native_compat", bool(pcfg.get("native_compat", True)))
|
|
6619
|
+
add("Stream", "stream_enabled", "on" if bool(pcfg.get("stream_enabled", True)) else "off")
|
|
6620
|
+
if bool(pcfg.get("stream_enabled", True)):
|
|
6621
|
+
add("Stream word chunking", "stream_word_chunking", "on" if bool(pcfg.get("stream_word_chunking", False)) else "off")
|
|
6620
6622
|
elif provider == "anthropic":
|
|
6621
6623
|
add("Timeout ms", "request_timeout_ms", pcfg.get("request_timeout_ms", "Claude Code default"))
|
|
6622
6624
|
|
|
@@ -8727,9 +8729,9 @@ def write_duckduckgo_mcp_config(cfg: dict[str, Any]) -> Path:
|
|
|
8727
8729
|
return path
|
|
8728
8730
|
|
|
8729
8731
|
|
|
8730
|
-
def run_claude_update_check(claude: str, enabled: bool = True) -> None:
|
|
8731
|
-
if not enabled:
|
|
8732
|
-
return
|
|
8732
|
+
def run_claude_update_check(claude: str, enabled: bool = True) -> None:
|
|
8733
|
+
if not enabled:
|
|
8734
|
+
return
|
|
8733
8735
|
if os.environ.get("CLAUDE_ANY_SKIP_CLAUDE_UPDATE") == "1":
|
|
8734
8736
|
return
|
|
8735
8737
|
print("Checking Claude Code update before launch...", flush=True)
|
|
@@ -8754,10 +8756,96 @@ def run_claude_update_check(claude: str, enabled: bool = True) -> None:
|
|
|
8754
8756
|
out = (p.stdout or "").strip()
|
|
8755
8757
|
if out:
|
|
8756
8758
|
print(out, flush=True)
|
|
8757
|
-
if p.returncode != 0:
|
|
8758
|
-
print(f"Claude Code update check exited with {p.returncode}; continuing.", flush=True)
|
|
8759
|
-
|
|
8760
|
-
|
|
8759
|
+
if p.returncode != 0:
|
|
8760
|
+
print(f"Claude Code update check exited with {p.returncode}; continuing.", flush=True)
|
|
8761
|
+
|
|
8762
|
+
|
|
8763
|
+
def parse_version_tuple(value: str) -> tuple[int, ...]:
|
|
8764
|
+
parts: list[int] = []
|
|
8765
|
+
for item in re.split(r"[^0-9]+", value.strip()):
|
|
8766
|
+
if item:
|
|
8767
|
+
parts.append(int(item))
|
|
8768
|
+
return tuple(parts)
|
|
8769
|
+
|
|
8770
|
+
|
|
8771
|
+
def version_newer(latest: str, current: str) -> bool:
|
|
8772
|
+
left = list(parse_version_tuple(latest))
|
|
8773
|
+
right = list(parse_version_tuple(current))
|
|
8774
|
+
size = max(len(left), len(right), 1)
|
|
8775
|
+
left.extend([0] * (size - len(left)))
|
|
8776
|
+
right.extend([0] * (size - len(right)))
|
|
8777
|
+
return tuple(left) > tuple(right)
|
|
8778
|
+
|
|
8779
|
+
|
|
8780
|
+
def running_from_npm_package() -> bool:
|
|
8781
|
+
if os.environ.get("CLAUDE_ANY_NPM_MODE") is not None:
|
|
8782
|
+
return True
|
|
8783
|
+
path = str(Path(__file__).resolve()).replace("\\", "/")
|
|
8784
|
+
return "/node_modules/@oneciel-ai/claude-any/" in path
|
|
8785
|
+
|
|
8786
|
+
|
|
8787
|
+
def run_claude_any_update_check(enabled: bool = True) -> bool:
|
|
8788
|
+
if not enabled:
|
|
8789
|
+
return False
|
|
8790
|
+
if os.environ.get("CLAUDE_ANY_SKIP_SELF_UPDATE") == "1":
|
|
8791
|
+
return False
|
|
8792
|
+
if env_bool(os.environ.get("CLAUDE_ANY_SELF_UPDATE_CHECK")) is False:
|
|
8793
|
+
return False
|
|
8794
|
+
if not running_from_npm_package():
|
|
8795
|
+
return False
|
|
8796
|
+
if not (sys.stdin.isatty() and sys.stdout.isatty()):
|
|
8797
|
+
return False
|
|
8798
|
+
npm = find_executable("npm")
|
|
8799
|
+
if not npm:
|
|
8800
|
+
return False
|
|
8801
|
+
try:
|
|
8802
|
+
p = subprocess.run(
|
|
8803
|
+
[npm, "view", "@oneciel-ai/claude-any@latest", "version"],
|
|
8804
|
+
text=True,
|
|
8805
|
+
stdout=subprocess.PIPE,
|
|
8806
|
+
stderr=subprocess.DEVNULL,
|
|
8807
|
+
timeout=8,
|
|
8808
|
+
)
|
|
8809
|
+
except Exception:
|
|
8810
|
+
return False
|
|
8811
|
+
if p.returncode != 0:
|
|
8812
|
+
return False
|
|
8813
|
+
latest = (p.stdout or "").strip().splitlines()[-1].strip() if (p.stdout or "").strip() else ""
|
|
8814
|
+
if not latest or not version_newer(latest, VERSION):
|
|
8815
|
+
return False
|
|
8816
|
+
print(f"Claude Any update available: {VERSION} -> {latest}", flush=True)
|
|
8817
|
+
answer = input("Update now with npm? [y/N] ").strip().lower()
|
|
8818
|
+
if answer not in ("y", "yes"):
|
|
8819
|
+
return False
|
|
8820
|
+
try:
|
|
8821
|
+
update = subprocess.run(
|
|
8822
|
+
[npm, "update", "-g", "@oneciel-ai/claude-any"],
|
|
8823
|
+
text=True,
|
|
8824
|
+
stdout=subprocess.PIPE,
|
|
8825
|
+
stderr=subprocess.STDOUT,
|
|
8826
|
+
timeout=300,
|
|
8827
|
+
)
|
|
8828
|
+
except subprocess.TimeoutExpired:
|
|
8829
|
+
print("Claude Any update timed out; continuing with current version.", flush=True)
|
|
8830
|
+
return False
|
|
8831
|
+
except Exception as exc:
|
|
8832
|
+
print(f"Claude Any update failed ({type(exc).__name__}); continuing.", flush=True)
|
|
8833
|
+
return False
|
|
8834
|
+
out = (update.stdout or "").strip()
|
|
8835
|
+
if out:
|
|
8836
|
+
print(out, flush=True)
|
|
8837
|
+
if update.returncode != 0:
|
|
8838
|
+
print(f"Claude Any update exited with {update.returncode}; continuing with current version.", flush=True)
|
|
8839
|
+
return False
|
|
8840
|
+
print("Claude Any updated. Restarting with the new version...", flush=True)
|
|
8841
|
+
os.environ["CLAUDE_ANY_SKIP_SELF_UPDATE"] = "1"
|
|
8842
|
+
try:
|
|
8843
|
+
os.execv(sys.executable, [sys.executable, *sys.argv])
|
|
8844
|
+
except Exception as exc:
|
|
8845
|
+
print(f"Restart failed ({type(exc).__name__}); continuing with the current process.", flush=True)
|
|
8846
|
+
return True
|
|
8847
|
+
|
|
8848
|
+
|
|
8761
8849
|
def launch_claude(
|
|
8762
8850
|
passthrough: list[str],
|
|
8763
8851
|
skip_menu: bool = False,
|
|
@@ -8765,7 +8853,9 @@ def launch_claude(
|
|
|
8765
8853
|
web_search_override: bool | None = None,
|
|
8766
8854
|
disable_skills_override: bool | None = None,
|
|
8767
8855
|
update_check: bool = True,
|
|
8856
|
+
self_update_check: bool = True,
|
|
8768
8857
|
) -> int:
|
|
8858
|
+
run_claude_any_update_check(enabled=self_update_check)
|
|
8769
8859
|
rc = run_prelaunch_menu(passthrough, skip_menu=skip_menu, force_menu=force_menu)
|
|
8770
8860
|
if rc == 10:
|
|
8771
8861
|
return 0
|
|
@@ -8895,10 +8985,12 @@ Headless setup flags, namespaced to avoid Claude CLI collisions:
|
|
|
8895
8985
|
claude-any --ca-no-web-search Disable DuckDuckGo MCP for this launch
|
|
8896
8986
|
claude-any --ca-web-fetch Enable fetch MCP
|
|
8897
8987
|
claude-any --ca-no-web-fetch Disable fetch MCP
|
|
8898
|
-
claude-any --ca-disable-skills Disable Claude Code skills for this launch
|
|
8899
|
-
claude-any --ca-enable-skills Keep Claude Code skills enabled for this launch
|
|
8900
|
-
claude-any --ca-no-update-check
|
|
8901
|
-
|
|
8988
|
+
claude-any --ca-disable-skills Disable Claude Code skills for this launch
|
|
8989
|
+
claude-any --ca-enable-skills Keep Claude Code skills enabled for this launch
|
|
8990
|
+
claude-any --ca-no-self-update-check
|
|
8991
|
+
Skip Claude Any npm self-update check
|
|
8992
|
+
claude-any --ca-no-update-check Skip Claude Code update check for this launch
|
|
8993
|
+
claude-any --ca-stop Stop router/proxy
|
|
8902
8994
|
claude-any -- Pass all following args directly to Claude Code
|
|
8903
8995
|
|
|
8904
8996
|
Provider names: anthropic, ollama, ollama-cloud, vllm, nvidia-hosted, self-hosted-nim
|
|
@@ -8930,12 +9022,13 @@ def pop_headless_env_file_args(argv: list[str]) -> list[str]:
|
|
|
8930
9022
|
return cleaned
|
|
8931
9023
|
|
|
8932
9024
|
|
|
8933
|
-
def apply_headless_env_config() -> tuple[bool, bool | None, bool | None, bool | None, bool]:
|
|
9025
|
+
def apply_headless_env_config() -> tuple[bool, bool | None, bool | None, bool | None, bool | None, bool]:
|
|
8934
9026
|
skip_menu = os.environ.get("CLAUDE_ANY_SKIP_MENU") == "1"
|
|
8935
9027
|
force_menu = bool(env_bool(os.environ.get("CLAUDE_ANY_FORCE_MENU"), False))
|
|
8936
9028
|
web_search_override = env_bool(os.environ.get("CLAUDE_ANY_WEB_SEARCH"))
|
|
8937
9029
|
disable_skills_override = env_bool(os.environ.get("CLAUDE_ANY_DISABLE_SKILLS"))
|
|
8938
9030
|
update_check_override = env_bool(os.environ.get("CLAUDE_ANY_UPDATE_CHECK"))
|
|
9031
|
+
self_update_check_override = env_bool(os.environ.get("CLAUDE_ANY_SELF_UPDATE_CHECK"))
|
|
8939
9032
|
language = os.environ.get("CLAUDE_ANY_LANGUAGE", "").strip()
|
|
8940
9033
|
if language:
|
|
8941
9034
|
cmd_language(argparse.Namespace(value=language))
|
|
@@ -8999,7 +9092,7 @@ def apply_headless_env_config() -> tuple[bool, bool | None, bool | None, bool |
|
|
|
8999
9092
|
if ollama_values:
|
|
9000
9093
|
cmd_ollama_options(argparse.Namespace(values=ollama_values))
|
|
9001
9094
|
skip_menu = True
|
|
9002
|
-
return skip_menu, web_search_override, disable_skills_override, update_check_override, force_menu
|
|
9095
|
+
return skip_menu, web_search_override, disable_skills_override, update_check_override, self_update_check_override, force_menu
|
|
9003
9096
|
|
|
9004
9097
|
|
|
9005
9098
|
def run_cli(argv: list[str]) -> int:
|
|
@@ -9093,10 +9186,13 @@ def run_cli(argv: list[str]) -> int:
|
|
|
9093
9186
|
return 0
|
|
9094
9187
|
|
|
9095
9188
|
passthrough: list[str] = []
|
|
9096
|
-
skip_menu, web_search_override, disable_skills_override, update_check_override, force_menu = apply_headless_env_config()
|
|
9189
|
+
skip_menu, web_search_override, disable_skills_override, update_check_override, self_update_check_override, force_menu = apply_headless_env_config()
|
|
9097
9190
|
update_check = True
|
|
9098
9191
|
if update_check_override is not None:
|
|
9099
9192
|
update_check = update_check_override
|
|
9193
|
+
self_update_check = True
|
|
9194
|
+
if self_update_check_override is not None:
|
|
9195
|
+
self_update_check = self_update_check_override
|
|
9100
9196
|
i = 0
|
|
9101
9197
|
while i < len(argv):
|
|
9102
9198
|
arg = argv[i]
|
|
@@ -9353,10 +9449,14 @@ def run_cli(argv: list[str]) -> int:
|
|
|
9353
9449
|
disable_skills_override = False
|
|
9354
9450
|
skip_menu = True
|
|
9355
9451
|
i += 1
|
|
9356
|
-
elif arg == "--ca-no-update-check":
|
|
9357
|
-
update_check = False
|
|
9358
|
-
skip_menu = True
|
|
9359
|
-
i += 1
|
|
9452
|
+
elif arg == "--ca-no-update-check":
|
|
9453
|
+
update_check = False
|
|
9454
|
+
skip_menu = True
|
|
9455
|
+
i += 1
|
|
9456
|
+
elif arg == "--ca-no-self-update-check":
|
|
9457
|
+
self_update_check = False
|
|
9458
|
+
skip_menu = True
|
|
9459
|
+
i += 1
|
|
9360
9460
|
elif arg == "--ca-status":
|
|
9361
9461
|
cmd_status(argparse.Namespace())
|
|
9362
9462
|
return 0
|
|
@@ -9373,10 +9473,11 @@ def run_cli(argv: list[str]) -> int:
|
|
|
9373
9473
|
passthrough,
|
|
9374
9474
|
skip_menu=skip_menu,
|
|
9375
9475
|
force_menu=force_menu,
|
|
9376
|
-
web_search_override=web_search_override,
|
|
9377
|
-
disable_skills_override=disable_skills_override,
|
|
9378
|
-
update_check=update_check,
|
|
9379
|
-
|
|
9476
|
+
web_search_override=web_search_override,
|
|
9477
|
+
disable_skills_override=disable_skills_override,
|
|
9478
|
+
update_check=update_check,
|
|
9479
|
+
self_update_check=self_update_check,
|
|
9480
|
+
)
|
|
9380
9481
|
|
|
9381
9482
|
|
|
9382
9483
|
def cmd_cli(args: argparse.Namespace) -> None:
|
package/docs/README.ja.md
CHANGED
|
@@ -47,7 +47,7 @@ vLLM、NVIDIA hosted、self-hosted NIM を選択し、通常の Claude Code 引
|
|
|
47
47
|
|
|
48
48
|
Credits: One Ciel LLC
|
|
49
49
|
|
|
50
|
-
現在のバージョン: `0.1.
|
|
50
|
+
現在のバージョン: `0.1.46`
|
|
51
51
|
|
|
52
52
|
## 作られた理由
|
|
53
53
|
|
|
@@ -351,6 +351,18 @@ Windows/Linux 管理、クリーンアップスクリプト、定期的なセキ
|
|
|
351
351
|
|
|
352
352
|
## 変更履歴
|
|
353
353
|
|
|
354
|
+
### 0.1.46
|
|
355
|
+
|
|
356
|
+
- **Stream options の整理**: `Stream` が off の場合、`Stream word chunking` を
|
|
357
|
+
LLM options menu から非表示にします。chunking は stream 応答にだけ意味があります。
|
|
358
|
+
|
|
359
|
+
### 0.1.45
|
|
360
|
+
|
|
361
|
+
- **対話型 npm self-update check**: npm でインストールされた `claude-any` は起動前に
|
|
362
|
+
npm registry の最新バージョンを確認します。新しいバージョンがあれば
|
|
363
|
+
`npm update -g @oneciel-ai/claude-any` を実行するか確認し、更新後に新しい
|
|
364
|
+
バージョンで再起動します。non-interactive/headless 実行は止めません。
|
|
365
|
+
|
|
354
366
|
### 0.1.44
|
|
355
367
|
|
|
356
368
|
- **Statusline split**: Rate Limit status を off にした場合、RPM、server-limit、
|
package/docs/README.ko.md
CHANGED
|
@@ -47,7 +47,7 @@ NVIDIA hosted, self-hosted NIM을 선택하고, Claude Code의 일반 인자는
|
|
|
47
47
|
|
|
48
48
|
Credits: One Ciel LLC
|
|
49
49
|
|
|
50
|
-
현재 버전: `0.1.
|
|
50
|
+
현재 버전: `0.1.46`
|
|
51
51
|
|
|
52
52
|
## 왜 만들었나
|
|
53
53
|
|
|
@@ -351,6 +351,18 @@ Windows 이벤트 로그 리뷰, 바이러스/랜섬웨어 침입 시도 정리,
|
|
|
351
351
|
|
|
352
352
|
## 변경 이력
|
|
353
353
|
|
|
354
|
+
### 0.1.46
|
|
355
|
+
|
|
356
|
+
- **Stream 옵션 정리**: `Stream`이 off일 때는 `Stream word chunking` 항목을
|
|
357
|
+
LLM 옵션 메뉴에서 숨깁니다. chunking은 스트리밍 응답에만 의미가 있습니다.
|
|
358
|
+
|
|
359
|
+
### 0.1.45
|
|
360
|
+
|
|
361
|
+
- **대화형 npm self-update check**: npm으로 설치된 `claude-any`는 실행 전 npm
|
|
362
|
+
registry의 최신 버전을 확인합니다. 새 버전이 있으면 `npm update -g
|
|
363
|
+
@oneciel-ai/claude-any` 실행 여부를 묻고, 업데이트 후 새 버전으로 재시작합니다.
|
|
364
|
+
non-interactive/headless 실행은 중단하지 않습니다.
|
|
365
|
+
|
|
354
366
|
### 0.1.44
|
|
355
367
|
|
|
356
368
|
- **Statusline 분리**: Rate Limit status를 off로 바꾸면 RPM, server-limit,
|
package/docs/README.zh.md
CHANGED
|
@@ -47,7 +47,7 @@ NIM,并把普通 Claude Code 参数原样传递。
|
|
|
47
47
|
|
|
48
48
|
Credits: One Ciel LLC
|
|
49
49
|
|
|
50
|
-
当前版本: `0.1.
|
|
50
|
+
当前版本: `0.1.46`
|
|
51
51
|
|
|
52
52
|
## 为什么存在
|
|
53
53
|
|
|
@@ -337,6 +337,18 @@ Hermes 格式模型或部分较旧的 Qwen tool template。
|
|
|
337
337
|
|
|
338
338
|
## 更新日志
|
|
339
339
|
|
|
340
|
+
### 0.1.46
|
|
341
|
+
|
|
342
|
+
- **Stream options 更清晰**:当 `Stream` 关闭时,LLM options menu 会隐藏
|
|
343
|
+
`Stream word chunking`。chunking 只对流式响应有意义。
|
|
344
|
+
|
|
345
|
+
### 0.1.45
|
|
346
|
+
|
|
347
|
+
- **交互式 npm self-update check**:通过 npm 安装的 `claude-any` 会在启动前检查
|
|
348
|
+
npm registry 的最新版本。如果有新版本,会询问是否运行 `npm update -g
|
|
349
|
+
@oneciel-ai/claude-any`,更新后重新启动到新版本。non-interactive/headless
|
|
350
|
+
运行不会被打断。
|
|
351
|
+
|
|
340
352
|
### 0.1.44
|
|
341
353
|
|
|
342
354
|
- **Statusline split**:关闭 Rate Limit status 后只隐藏 RPM、server-limit 和
|
package/docs/manual.md
CHANGED
|
@@ -10,7 +10,7 @@ Code starts, while passing normal Claude Code arguments through unchanged.
|
|
|
10
10
|
|
|
11
11
|
Credits: One Ciel LLC
|
|
12
12
|
|
|
13
|
-
Current version: `0.1.
|
|
13
|
+
Current version: `0.1.46`
|
|
14
14
|
|
|
15
15
|
## Install
|
|
16
16
|
|
|
@@ -376,6 +376,7 @@ export CLAUDE_ANY_STREAM_WORD_CHUNKING=off
|
|
|
376
376
|
export CLAUDE_ANY_WEB_SEARCH=on
|
|
377
377
|
export CLAUDE_ANY_WEB_FETCH=on
|
|
378
378
|
export CLAUDE_ANY_DISABLE_SKILLS=off
|
|
379
|
+
export CLAUDE_ANY_SELF_UPDATE_CHECK=off
|
|
379
380
|
export CLAUDE_ANY_UPDATE_CHECK=off
|
|
380
381
|
claude-any -p "Reply with OK only." --output-format text
|
|
381
382
|
```
|
|
@@ -400,6 +401,7 @@ CLAUDE_ANY_STREAM_WORD_CHUNKING=off
|
|
|
400
401
|
CLAUDE_ANY_WEB_SEARCH=on
|
|
401
402
|
CLAUDE_ANY_WEB_FETCH=on
|
|
402
403
|
CLAUDE_ANY_DISABLE_SKILLS=off
|
|
404
|
+
CLAUDE_ANY_SELF_UPDATE_CHECK=off
|
|
403
405
|
CLAUDE_ANY_UPDATE_CHECK=off
|
|
404
406
|
```
|
|
405
407
|
|
|
@@ -472,6 +474,7 @@ Common Claude Any setup flags:
|
|
|
472
474
|
| `--ca-web-search` / `--ca-no-web-search` | Force-enable or disable web-search MCP for this launch. |
|
|
473
475
|
| `--ca-web-fetch` / `--ca-no-web-fetch` | Enable or disable fetch MCP for web page content. |
|
|
474
476
|
| `--ca-disable-skills` / `--ca-enable-skills` | Control Claude Code skills for this launch. |
|
|
477
|
+
| `--ca-no-self-update-check` | Skip the Claude Any npm self-update check. |
|
|
475
478
|
| `--ca-no-update-check` | Skip the Claude Code update check. |
|
|
476
479
|
| `--ca-status` | Print status and exit. |
|
|
477
480
|
| `--ca-stop` | Stop managed router services and exit. |
|
|
@@ -482,8 +485,13 @@ Notes for automation:
|
|
|
482
485
|
- `--ca-api-key` and `--ca-set-api-key` are available for direct key passing,
|
|
483
486
|
but prefer the environment-variable forms in shared scripts and terminals.
|
|
484
487
|
- `claude-any stop` is safe to run before scripted tests to remove stale
|
|
485
|
-
router/proxy processes.
|
|
486
|
-
-
|
|
488
|
+
router/proxy processes.
|
|
489
|
+
- npm-installed interactive launches check the npm registry for a newer
|
|
490
|
+
Claude Any version and ask before running `npm update -g
|
|
491
|
+
@oneciel-ai/claude-any`. Headless/non-TTY launches are not interrupted; set
|
|
492
|
+
`CLAUDE_ANY_SELF_UPDATE_CHECK=off` or pass `--ca-no-self-update-check` to
|
|
493
|
+
disable it explicitly.
|
|
494
|
+
- Use `claude-any test 60 auto` for a quick readiness check and reserve
|
|
487
495
|
`claude-any test 180 full` for deeper provider validation.
|
|
488
496
|
- Headless flags persist in `~/.config/claude-any/config.json`, so the next
|
|
489
497
|
interactive launch starts from the same provider/model settings.
|
package/package.json
CHANGED