refactor: move runtime state under project data directory
Some checks failed
CI / lint-and-compile (push) Has been cancelled
CI / lint-and-compile (pull_request) Has been cancelled

This commit is contained in:
root
2026-04-17 15:57:51 +08:00
parent e41ee8bcc8
commit c1e261aa14
7 changed files with 21 additions and 9 deletions

View File

@@ -6,7 +6,7 @@ PORT=8317
API_KEYS=sk-your-api-key
# 容器内 Lingma 二进制路径
LINGMA_BIN=/app/bin/Lingma
LINGMA_BIN=/app/data/bin/Lingma
# Lingma 获取方式marketplace 或 vsix
LINGMA_SOURCE_TYPE=marketplace
# Marketplace 发布者
@@ -20,7 +20,7 @@ LINGMA_BOOTSTRAP_ALWAYS=true
# 强制刷新true 时忽略本地缓存)
LINGMA_FORCE_REFRESH=false
# Lingma 工作目录(登录/会话数据)
LINGMA_WORK_DIR=/root/.lingma/vscode/sharedClientCache
LINGMA_WORK_DIR=/app/data/.lingma/vscode/sharedClientCache
# Lingma WebSocket 端口
LINGMA_SOCKET_PORT=36510
# Lingma 启动等待秒数

4
.gitignore vendored
View File

@@ -3,3 +3,7 @@ __pycache__/
*.pyc
bin/
runtime-bin/
data/
!data/
data/*
!data/.gitkeep

View File

@@ -10,13 +10,14 @@
## 1. 准备目录
```bash
mkdir -p runtime-bin
mkdir -p data
```
说明:
- 启动时会自动获取最新插件并提取 `Lingma``runtime-bin`
- 启动时会自动获取最新插件并提取 `Lingma``data/bin`
- 默认通过 VSCode Marketplace 查询最新版本,再下载对应 VSIX。
- 登录态与运行数据统一写入 `data/.lingma`
## 2. 配置环境变量
@@ -71,6 +72,8 @@ PORT=8317
API_KEYS=sk-your-api-key
LINGMA_USERNAME=your-username
LINGMA_PASSWORD=your-password
LINGMA_BIN=/app/data/bin/Lingma
LINGMA_WORK_DIR=/app/data/.lingma/vscode/sharedClientCache
LINGMA_SOURCE_TYPE=marketplace
LINGMA_MARKETPLACE_PUBLISHER=Alibaba-Cloud
LINGMA_MARKETPLACE_EXTENSION=tongyi-lingma
@@ -78,6 +81,12 @@ LINGMA_VSIX_URL=https://tongyi-code.oss-cn-hangzhou.aliyuncs.com/vscode/tongyi-l
DEDICATED_DOMAIN_URL=
```
### 数据目录说明
- 本项目所有持久化数据都在 `./data`
- `data/bin/Lingma`:自动提取的 Lingma 二进制
- `data/.lingma/...`Lingma 登录态、缓存、日志
## 3. Docker 运行
```bash

View File

@@ -87,7 +87,7 @@ def _query_marketplace_latest_vsix(publisher: str, extension: str) -> tuple[str,
def bootstrap_from_vsix() -> None:
lingma_bin = Path(os.getenv("LINGMA_BIN", "/app/bin/Lingma"))
lingma_bin = Path(os.getenv("LINGMA_BIN", "/app/data/bin/Lingma"))
source_type = os.getenv("LINGMA_SOURCE_TYPE", "marketplace").strip().lower()
vsix_url = os.getenv(
"LINGMA_VSIX_URL",

View File

@@ -31,13 +31,13 @@ def load_settings() -> Settings:
api_keys = [k.strip() for k in keys_raw.split(",") if k.strip()]
work_dir = os.getenv(
"LINGMA_WORK_DIR",
str(Path.home() / ".lingma" / "vscode" / "sharedClientCache"),
"/app/data/.lingma/vscode/sharedClientCache",
)
return Settings(
host=os.getenv("HOST", "0.0.0.0"),
port=int(os.getenv("PORT", "8317")),
api_keys=api_keys,
lingma_bin=os.getenv("LINGMA_BIN", "/app/bin/Lingma"),
lingma_bin=os.getenv("LINGMA_BIN", "/app/data/bin/Lingma"),
lingma_work_dir=work_dir,
lingma_socket_port=int(os.getenv("LINGMA_SOCKET_PORT", "36510")),
lingma_startup_timeout=int(os.getenv("LINGMA_STARTUP_TIMEOUT", "40")),

0
data/.gitkeep Normal file
View File

View File

@@ -8,6 +8,5 @@ services:
ports:
- "${PORT:-8317}:${PORT:-8317}"
volumes:
- ./runtime-bin:/app/bin
- /root/.lingma:/root/.lingma
- ./data:/app/data
restart: unless-stopped