remote-claude 0.2.4 → 0.2.5
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/.env.example +4 -0
- package/package.json +1 -1
- package/server/server.py +19 -6
package/.env.example
CHANGED
package/package.json
CHANGED
package/server/server.py
CHANGED
|
@@ -35,9 +35,16 @@ from utils.protocol import (
|
|
|
35
35
|
)
|
|
36
36
|
from utils.session import (
|
|
37
37
|
get_socket_path, get_pid_file, ensure_socket_dir,
|
|
38
|
-
generate_client_id, cleanup_session, _safe_filename
|
|
38
|
+
generate_client_id, cleanup_session, _safe_filename, get_env_file
|
|
39
39
|
)
|
|
40
40
|
|
|
41
|
+
# 加载用户 .env 配置(支持 CLAUDE_COMMAND 等)
|
|
42
|
+
try:
|
|
43
|
+
from dotenv import load_dotenv
|
|
44
|
+
load_dotenv(get_env_file())
|
|
45
|
+
except Exception:
|
|
46
|
+
pass
|
|
47
|
+
|
|
41
48
|
try:
|
|
42
49
|
from stats import track as _track_stats
|
|
43
50
|
except Exception:
|
|
@@ -533,9 +540,11 @@ class ProxyServer:
|
|
|
533
540
|
"""Proxy Server"""
|
|
534
541
|
|
|
535
542
|
def __init__(self, session_name: str, claude_args: list = None,
|
|
543
|
+
claude_cmd: str = "claude",
|
|
536
544
|
debug_screen: bool = False, debug_verbose: bool = False):
|
|
537
545
|
self.session_name = session_name
|
|
538
546
|
self.claude_args = claude_args or []
|
|
547
|
+
self.claude_cmd = claude_cmd
|
|
539
548
|
self.debug_screen = debug_screen
|
|
540
549
|
self.debug_verbose = debug_verbose
|
|
541
550
|
self.socket_path = get_socket_path(session_name)
|
|
@@ -638,7 +647,9 @@ class ProxyServer:
|
|
|
638
647
|
# 清除 tmux 标识变量(PTY 数据不经过 tmux,不应让 Claude CLI 误判终端环境)
|
|
639
648
|
child_env.pop('TMUX', None)
|
|
640
649
|
child_env.pop('TMUX_PANE', None)
|
|
641
|
-
|
|
650
|
+
import shlex as _shlex
|
|
651
|
+
_cmd_parts = _shlex.split(self.claude_cmd)
|
|
652
|
+
os.execvpe(_cmd_parts[0], _cmd_parts + self.claude_args, child_env)
|
|
642
653
|
os._exit(1) # execvpe 失败时兜底退出
|
|
643
654
|
else:
|
|
644
655
|
# 父进程
|
|
@@ -801,10 +812,11 @@ class ProxyServer:
|
|
|
801
812
|
|
|
802
813
|
|
|
803
814
|
def run_server(session_name: str, claude_args: list = None,
|
|
815
|
+
claude_cmd: str = "claude",
|
|
804
816
|
debug_screen: bool = False, debug_verbose: bool = False):
|
|
805
817
|
"""运行服务器"""
|
|
806
|
-
server = ProxyServer(session_name, claude_args,
|
|
807
|
-
debug_verbose=debug_verbose)
|
|
818
|
+
server = ProxyServer(session_name, claude_args, claude_cmd=claude_cmd,
|
|
819
|
+
debug_screen=debug_screen, debug_verbose=debug_verbose)
|
|
808
820
|
|
|
809
821
|
# 信号处理
|
|
810
822
|
def signal_handler(signum, frame):
|
|
@@ -832,5 +844,6 @@ if __name__ == "__main__":
|
|
|
832
844
|
help="debug 日志输出完整诊断信息(indicator、repr 等)")
|
|
833
845
|
args = parser.parse_args()
|
|
834
846
|
|
|
835
|
-
|
|
836
|
-
|
|
847
|
+
claude_cmd = os.environ.get("CLAUDE_COMMAND", "claude")
|
|
848
|
+
run_server(args.session_name, args.claude_args, claude_cmd=claude_cmd,
|
|
849
|
+
debug_screen=args.debug_screen, debug_verbose=args.debug_verbose)
|