cmd/sss-agent:Agent 入口(cobra,含 Windows 服务支持);cmd/sss-dashboard:Dashboard 入口(serve、reset-password、version)。internal/proto:Agent 与 Dashboard 的 WebSocket 消息协议;internal/logx:slog 日志初始化;internal/cliutil:SSS_*环境变量映射到命令行参数。internal/agent:Agent 配置与连接上报,internal/agent/collect为系统指标采集(gopsutil)。internal/dashboard:api(gin 路由、浏览器与 Agent WebSocket)、store(SQLite 与迁移)、hub(实时状态与在线判定)、history(降采样)、traffic(月流量)、auth(JWT 与登录限流)、web(通过 embed 嵌入前端产物internal/dashboard/web/dist)。web/:前端(React 19 + TypeScript + Vite + Tailwind v4 + shadcn/ui),构建产物输出到internal/dashboard/web/dist;src/features按页面划分,src/components/ui为 shadcn 组件,e2e/为 Playwright 用例。scripts/install-agent.sh、scripts/install-agent.ps1:Agent 一键安装脚本(附带测试脚本)。deployments/:Dockerfile、docker compose 与 Caddy 示例;configs/sss-agent.yaml.example:Agent 配置模板;docs/:快速开始、部署、配置、API 四篇文档。
make build:构建前端并编译bin/sss-agent、bin/sss-dashboard。make check:go vet、golangci-lint、go test与前端检查(等于make vet lint test test-web)。make test-web:在web/下执行pnpm typecheck && pnpm lint && pnpm test && pnpm test:scripts。make e2e:构建前端后运行 Playwright 端到端测试。make dev-web:启动 Vite 开发服务器,/api(含 WebSocket)代理到SSS_DASHBOARD_TARGET或http://127.0.0.1:8900;配合make run-dashboard使用。- 其他命令见
make help。Windows 没有 make 时:cd web && pnpm build,go build ./cmd/sss-agent,go build ./cmd/sss-dashboard。
- Go:
gofmt格式化,golangci-lint(v2)必须零告警;日志统一使用标准库log/slog;错误显式处理并用%w包装。 - 前端:TypeScript strict,ESLint 零错误;文件名(含组件)一律 kebab-case,如
server-card.tsx;界面文案放在src/i18n的 zh-CN / en-US 中。 - 代码注释、日志与文档使用简体中文。
- Go:
*_test.go,优先表驱动测试;API 测试使用 httptest + 临时 SQLite。 - 前端:Vitest + Testing Library,测试文件与源码同目录
*.test.ts(x);端到端测试使用 Playwright(web/e2e),会编译并启动真实的 Dashboard 与 Agent。 - 安装脚本:
scripts/install-agent.test.sh、scripts/install-agent.test.ps1。
- 遵循 Conventional Commits,描述使用中文,如
feat(agent): 支持按前缀过滤网卡、fix(web): 修复离线卡片的时间显示。 - 提交前确保
make check通过;修改参数、接口或部署方式时同步更新docs/与示例配置。
- 勿提交真实密钥:根目录
sss-agent.yaml、data/仅用于本地调试。复制模板使用:- Linux/macOS:
cp configs/sss-agent.yaml.example sss-agent.yaml - Windows:
Copy-Item configs\sss-agent.yaml.example sss-agent.yaml
- Linux/macOS:
- 数据库
data/sss.db明文保存服务器密钥,部署时注意数据目录权限;导出文件同样包含密钥。