config

package
v0.21.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 26, 2026 License: MIT Imports: 8 Imported by: 0

Documentation

Overview

Package config 提供 Worker Node 的配置加载(worker.yml + 环境变量覆盖)。

配置真正落盘到 worker.yml 而非堆砌 JIANMANAGER_* 环境变量(FR-080,见 ADR-020); 所有项有合理默认,零配置即可启动开发环境。环境变量以 JIANMANAGER_ 前缀按路径覆盖 (如 Control Plane gRPC 地址 → JIANMANAGER_CONTROL_PLANE_GRPC),与 Control Plane 配置惯例一致。

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func FindConfigFile

func FindConfigFile(name string, dirs ...string) string

FindConfigFile 在给定目录中按 .yml 优先、.yaml 兼容回退的顺序查找 <name>.<ext> 配置文件(FR-224)。 返回首个存在的文件路径;都不存在时返回空串(交回 viper 的名字搜索 + 默认值,零配置仍可启动)。

导出以供 worker 入口的「未配置自检」复用(FR-222,见 ADR-051):自检需判断工作目录是否已有 worker.yml/.yaml 配置文件。

func WorkerConfigExists

func WorkerConfigExists() bool

WorkerConfigExists 报告工作目录、可执行文件所在目录或 configs/ 下是否存在 worker 配置文件 (.yml 优先、.yaml 回退)。供 worker 入口未配置自检使用(FR-222,见 ADR-051)。 纳入「exe 旁」搜索(FIX-3):Windows 服务/从别处启动时 cwd 可能非安装目录,配置随二进制仍可被发现。

Types

type ArtifactCacheConfig

type ArtifactCacheConfig struct {
	// MaxBytes 缓存容量上限(字节,0=不限)。存入新项后若超限按 lastUsedAt 升序 LRU 淘汰。
	// 可经 CP 端点 PUT /nodes/:id/artifact-cache/cap 运行时下发覆盖。
	MaxBytes int64 `mapstructure:"max_bytes"`
}

ArtifactCacheConfig 节点本地制品缓存配置(FR-178)。

type Config

type Config struct {
	Name         string   `mapstructure:"name"`
	ControlPlane string   `mapstructure:"control_plane"`
	NodeSecret   string   `mapstructure:"node_secret"`
	WS           WSConfig `mapstructure:"ws"`
	// DataDir 是项目自包含数据根(默认 ./data,可经 JIANMANAGER_DATA_DIR 覆盖)。
	// JDK、服务器工作目录等运行态数据统一收口到此根。参见 ADR-010。
	DataDir string `mapstructure:"data_dir"`
	// ServersDir 兼容旧配置:显式指定时覆盖数据根派生的 var/servers。
	// 留空则由数据根派生为 <DataDir>/var/servers。
	ServersDir string `mapstructure:"servers_dir"`
	// Host 注册上报给 CP 的本机地址;留空则自动探测出口 IP(供 CP 反向连接)。
	Host string `mapstructure:"host"`
	// JWTSecret 历史兼容字段;WS 令牌密钥只接受 CP 注册/心跳下发值。
	JWTSecret string `mapstructure:"jwt_secret"`
	// EnrollToken 一次性 enrollment token 明文(FR-080,见 ADR-020)。
	// 仅经环境变量/命令行传入、绝不写入 worker.yml(一次性凭据不留盘);
	// 首次注册(无本地身份文件)时携带,注册成功后即作废。
	EnrollToken string           `mapstructure:"enroll_token"`
	Log         LogConfig        `mapstructure:"log"`
	Decompiler  DecompilerConfig `mapstructure:"decompiler"`
	// Search 全文搜索索引配置(FR-074,见 ADR-017)。
	Search SearchConfig `mapstructure:"search"`
	// ArtifactCache 节点本地制品缓存配置(FR-178):按 sha256 缓存下载过的核心 jar,建实例命中即秒拷。
	ArtifactCache ArtifactCacheConfig `mapstructure:"artifact_cache"`
	// Proxy 本节点出站代理配置(FR-174,见 ADR-037):所有出站下载(自更新/JDK/CFR)
	// 经此代理。url 留空=直连(沿用环境变量代理)。各 Worker 在不同机器各配各的。
	Proxy     httpclient.Config `mapstructure:"proxy"`
	Heartbeat time.Duration     `mapstructure:"-"`
	// MemoryGuard 启动内存闸(FR-317):可用内存不足以再塞下待启实例时拒绝启动,
	// 防止把节点内存跑满至失去响应。零值即启用 + 默认保留水位 max(512MB, 总内存 10%)。
	MemoryGuard MemoryGuardConfig `mapstructure:"memory_guard"`
}

Config Worker Node 配置。

func Load

func Load(path string) (*Config, error)

Load 从配置文件和环境变量加载 Worker 配置(FR-080,见 ADR-020)。

path 为空时在工作目录与 configs/ 下查找 worker.yml(均可选),找不到回退 worker.yaml(FR-224 兼容)。 所有项有合理默认,零配置即可启动;JIANMANAGER_ 前缀环境变量按路径覆盖配置文件值。 enrollment token 经 JIANMANAGER_ENROLL_TOKEN 注入、不从 yaml 读取(一次性凭据不留盘)。

type DecompilerConfig

type DecompilerConfig struct {
	// CFRPath 显式 CFR 反编译器 jar 路径(最高优先级,可空)。
	// 运维离线放置时直接指定;空则回退内嵌/数据根缓存/按需下载。
	CFRPath string `mapstructure:"cfr_path"`
	// AllowDownload 是否允许从 Maven Central 按需下载 CFR jar(sha256 pin 校验后落数据根缓存)。
	// 默认开启;离线环境可关并用 CFRPath/内嵌。
	AllowDownload bool `mapstructure:"allow_download"`
}

DecompilerConfig 反编译能力配置(FR-075,见 ADR-018)。

type LogConfig

type LogConfig struct {
	Level  string `mapstructure:"level"`
	Format string `mapstructure:"format"`
}

LogConfig 日志配置。

type MemoryGuardConfig

type MemoryGuardConfig struct {
	// ReserveMB 保留水位(MB);0 = 默认策略 max(512MB, 总内存 10%)。
	ReserveMB int64 `mapstructure:"reserve_mb"`
	// Disabled 显式关闭守卫(应急逃生口,如误判阻塞关键启动时)。
	Disabled bool `mapstructure:"disabled"`
}

MemoryGuardConfig 启动内存闸配置(FR-317)。

type SearchConfig

type SearchConfig struct {
	// Ignore 追加到内置默认忽略集的 glob 规则(相对实例工作目录,/ 分隔)。
	// 形如 logs/(目录前缀)、*.bak(basename glob)、vendor(路径段)。默认集已覆盖常见
	// 日志/缓存/二进制/归档/MC 世界数据,零配置即可用;此处仅做加性补充。
	Ignore []string `mapstructure:"ignore"`
}

SearchConfig 全文搜索索引配置(FR-074,见 ADR-017)。

type WSConfig

type WSConfig struct {
	Port int `mapstructure:"port"`
}

WSConfig WebSocket 服务器配置。

Directories

Path Synopsis
Package artifactcache 提供 Worker 节点本地的内容寻址制品缓存(FR-178)。
Package artifactcache 提供 Worker 节点本地的内容寻址制品缓存(FR-178)。
Package botdist 实现 bot-worker dist 的自愈下发(FR-308,见 ADR-072): Worker 启动后经既有 CP gRPC 通道拉取内嵌归档,物化到 <dataroot>/opt/bot-worker/。
Package botdist 实现 bot-worker dist 的自愈下发(FR-308,见 ADR-072): Worker 启动后经既有 CP gRPC 通道拉取内嵌归档,物化到 <dataroot>/opt/bot-worker/。
Package crashreport 组装并上报实例崩溃快照(FR-313): 进程非正常退出时把退出码/信号/时长 + 终端环形缓冲的尾部输出, 经与注册/心跳同信道的 gRPC ReportCrashSnapshot 上报 CP 持久化。
Package crashreport 组装并上报实例崩溃快照(FR-313): 进程非正常退出时把退出码/信号/时长 + 终端环形缓冲的尾部输出, 经与注册/心跳同信道的 gRPC ReportCrashSnapshot 上报 CP 持久化。
Package decompiler 提供 Worker 侧反编译能力:解析/缓存 CFR 反编译器 jar, 并经实例/系统 JDK 受控调起 CFR 把 class/jar 反编译为 Java 源码。
Package decompiler 提供 Worker 侧反编译能力:解析/缓存 CFR 反编译器 jar, 并经实例/系统 JDK 受控调起 CFR 把 class/jar 反编译为 Java 源码。
Package embed 内嵌 Worker 侧可选构建产物(CFR 反编译器 jar 等)。
Package embed 内嵌 Worker 侧可选构建产物(CFR 反编译器 jar 等)。
Package jdk 提供节点本地 JDK 探测、下载安装、删除与注册表管理。
Package jdk 提供节点本地 JDK 探测、下载安装、删除与注册表管理。
Package pkgmgr 管理节点包管理器偏好(npm/pnpm/yarn,经 corepack 激活)与多 registry 配置(FR-306)。
Package pkgmgr 管理节点包管理器偏好(npm/pnpm/yarn,经 corepack 激活)与多 registry 配置(FR-306)。
Package runtime 提供节点本地非 JDK 运行时(首批 Node.js)的下载安装与托管删除(FR-299)。
Package runtime 提供节点本地非 JDK 运行时(首批 Node.js)的下载安装与托管删除(FR-299)。
Package runtimescan 扫描节点常见安装路径发现运行时候选(FR-298 节点运行时库)。
Package runtimescan 扫描节点常见安装路径发现运行时候选(FR-298 节点运行时库)。
Package search 实现 Worker 本地持久全文索引(FR-074,见 ADR-017)。
Package search 实现 Worker 本地持久全文索引(FR-074,见 ADR-017)。
Package setup 实现 Worker「免配置自启 setup」(FR-222,见 ADR-051)。
Package setup 实现 Worker「免配置自启 setup」(FR-222,见 ADR-051)。
Package storage 提供备份远程存储后端的传输抽象(FR-057)。
Package storage 提供备份远程存储后端的传输抽象(FR-057)。
Package taskreg 提供 Worker 侧「运行中长任务内存登记表」(FR-183,见 ADR-040)。
Package taskreg 提供 Worker 侧「运行中长任务内存登记表」(FR-183,见 ADR-040)。
Package tunnel 维护 Worker→CP 的常驻 gRPC 反向隧道(FR-281,见 ADR-066)。
Package tunnel 维护 Worker→CP 的常驻 gRPC 反向隧道(FR-281,见 ADR-066)。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL