mirror of
https://github.com/hansjone/oclaw.git
synced 2026-10-11 21:55:49 +08:00
重构主控编排与运行时预热链路,统一工作区提示词/专家调度协议并补齐 wiki 记忆注入与写回闭环。
同时收敛启动与运维脚本默认行为(含 wiki worker)、更新 Admin 可观测性与相关测试,降低首轮时延并提高运行稳定性。 Made-with: Cursor
This commit is contained in:
parent
4a23b715a2
commit
dbbe3add6a
14438 changed files with 2693620 additions and 2546 deletions
205
openclaw/scripts/lib/live-docker-auth.sh
Normal file
205
openclaw/scripts/lib/live-docker-auth.sh
Normal file
|
|
@ -0,0 +1,205 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
OPENCLAW_DOCKER_LIVE_AUTH_ALL=(.gemini .minimax)
|
||||
OPENCLAW_DOCKER_LIVE_AUTH_FILES_ALL=(
|
||||
.codex/auth.json
|
||||
.codex/config.toml
|
||||
.claude.json
|
||||
.claude/.credentials.json
|
||||
.claude/settings.json
|
||||
.claude/settings.local.json
|
||||
.gemini/settings.json
|
||||
)
|
||||
|
||||
openclaw_live_trim() {
|
||||
local value="${1:-}"
|
||||
value="${value#"${value%%[![:space:]]*}"}"
|
||||
value="${value%"${value##*[![:space:]]}"}"
|
||||
printf '%s' "$value"
|
||||
}
|
||||
|
||||
openclaw_live_validate_relative_home_path() {
|
||||
local value
|
||||
value="$(openclaw_live_trim "${1:-}")"
|
||||
[[ -n "$value" ]] || {
|
||||
echo "ERROR: empty auth path." >&2
|
||||
return 1
|
||||
}
|
||||
case "$value" in
|
||||
/* | *..* | *\\* | *:*)
|
||||
echo "ERROR: invalid auth path '$value'." >&2
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
printf '%s' "$value"
|
||||
}
|
||||
|
||||
openclaw_live_normalize_auth_dir() {
|
||||
local value
|
||||
value="$(openclaw_live_trim "${1:-}")"
|
||||
[[ -n "$value" ]] || return 1
|
||||
if [[ "$value" != .* ]]; then
|
||||
value=".$value"
|
||||
fi
|
||||
value="$(openclaw_live_validate_relative_home_path "$value")" || return 1
|
||||
printf '%s' "$value"
|
||||
}
|
||||
|
||||
openclaw_live_should_include_auth_dir_for_provider() {
|
||||
local provider
|
||||
provider="$(openclaw_live_trim "${1:-}")"
|
||||
case "$provider" in
|
||||
gemini | gemini-cli | google-gemini-cli)
|
||||
printf '%s\n' ".gemini"
|
||||
;;
|
||||
minimax | minimax-portal)
|
||||
printf '%s\n' ".minimax"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
openclaw_live_should_include_auth_file_for_provider() {
|
||||
local provider
|
||||
provider="$(openclaw_live_trim "${1:-}")"
|
||||
case "$provider" in
|
||||
codex-cli | openai-codex)
|
||||
printf '%s\n' ".codex/auth.json"
|
||||
printf '%s\n' ".codex/config.toml"
|
||||
;;
|
||||
anthropic | claude-cli)
|
||||
printf '%s\n' ".claude.json"
|
||||
printf '%s\n' ".claude/.credentials.json"
|
||||
printf '%s\n' ".claude/settings.json"
|
||||
printf '%s\n' ".claude/settings.local.json"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
openclaw_live_collect_auth_dirs_from_csv() {
|
||||
local raw="${1:-}"
|
||||
local token normalized
|
||||
[[ -n "$(openclaw_live_trim "$raw")" ]] || return 0
|
||||
IFS=',' read -r -a tokens <<<"$raw"
|
||||
for token in "${tokens[@]}"; do
|
||||
while IFS= read -r normalized; do
|
||||
printf '%s\n' "$normalized"
|
||||
done < <(openclaw_live_should_include_auth_dir_for_provider "$token")
|
||||
done | awk 'NF && !seen[$0]++'
|
||||
}
|
||||
|
||||
openclaw_live_collect_auth_dirs_from_override() {
|
||||
local raw token normalized
|
||||
raw="$(openclaw_live_trim "${OPENCLAW_DOCKER_AUTH_DIRS:-}")"
|
||||
[[ -n "$raw" ]] || return 1
|
||||
case "$raw" in
|
||||
all)
|
||||
printf '%s\n' "${OPENCLAW_DOCKER_LIVE_AUTH_ALL[@]}"
|
||||
return 0
|
||||
;;
|
||||
none)
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
IFS=',' read -r -a tokens <<<"$raw"
|
||||
for token in "${tokens[@]}"; do
|
||||
normalized="$(openclaw_live_normalize_auth_dir "$token")" || continue
|
||||
printf '%s\n' "$normalized"
|
||||
done | awk '!seen[$0]++'
|
||||
return 0
|
||||
}
|
||||
|
||||
openclaw_live_collect_auth_dirs() {
|
||||
if openclaw_live_collect_auth_dirs_from_override; then
|
||||
return 0
|
||||
fi
|
||||
printf '%s\n' "${OPENCLAW_DOCKER_LIVE_AUTH_ALL[@]}"
|
||||
}
|
||||
|
||||
openclaw_live_collect_auth_files_from_csv() {
|
||||
local raw="${1:-}"
|
||||
local token normalized
|
||||
[[ -n "$(openclaw_live_trim "$raw")" ]] || return 0
|
||||
IFS=',' read -r -a tokens <<<"$raw"
|
||||
for token in "${tokens[@]}"; do
|
||||
while IFS= read -r normalized; do
|
||||
printf '%s\n' "$normalized"
|
||||
done < <(openclaw_live_should_include_auth_file_for_provider "$token")
|
||||
done | awk 'NF && !seen[$0]++'
|
||||
}
|
||||
|
||||
openclaw_live_collect_auth_files_from_override() {
|
||||
local raw
|
||||
raw="$(openclaw_live_trim "${OPENCLAW_DOCKER_AUTH_DIRS:-}")"
|
||||
[[ -n "$raw" ]] || return 1
|
||||
case "$raw" in
|
||||
all)
|
||||
printf '%s\n' "${OPENCLAW_DOCKER_LIVE_AUTH_FILES_ALL[@]}"
|
||||
return 0
|
||||
;;
|
||||
none)
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
return 0
|
||||
}
|
||||
|
||||
openclaw_live_collect_auth_files() {
|
||||
if openclaw_live_collect_auth_files_from_override; then
|
||||
return 0
|
||||
fi
|
||||
printf '%s\n' "${OPENCLAW_DOCKER_LIVE_AUTH_FILES_ALL[@]}"
|
||||
}
|
||||
|
||||
openclaw_live_join_csv() {
|
||||
local first=1 value
|
||||
for value in "$@"; do
|
||||
[[ -n "$value" ]] || continue
|
||||
if (( first )); then
|
||||
printf '%s' "$value"
|
||||
first=0
|
||||
else
|
||||
printf ',%s' "$value"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
openclaw_live_stage_auth_into_home() {
|
||||
local dest_home="${1:?destination home directory required}"
|
||||
shift
|
||||
|
||||
local mode="dirs"
|
||||
local relative_path source_path dest_path
|
||||
|
||||
mkdir -p "$dest_home"
|
||||
chmod u+rwx "$dest_home" || true
|
||||
|
||||
while (($# > 0)); do
|
||||
case "$1" in
|
||||
--files)
|
||||
mode="files"
|
||||
shift
|
||||
continue
|
||||
;;
|
||||
esac
|
||||
|
||||
relative_path="$(openclaw_live_validate_relative_home_path "$1")" || return 1
|
||||
source_path="$HOME/$relative_path"
|
||||
dest_path="$dest_home/$relative_path"
|
||||
|
||||
if [[ "$mode" == "dirs" ]]; then
|
||||
if [[ -d "$source_path" ]]; then
|
||||
mkdir -p "$dest_path"
|
||||
cp -R "$source_path"/. "$dest_path"
|
||||
chmod -R u+rwX "$dest_path" || true
|
||||
fi
|
||||
else
|
||||
if [[ -f "$source_path" ]]; then
|
||||
mkdir -p "$(dirname "$dest_path")"
|
||||
cp "$source_path" "$dest_path"
|
||||
chmod u+rw "$dest_path" || true
|
||||
fi
|
||||
fi
|
||||
|
||||
shift
|
||||
done
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue