Sync
This commit is contained in:
266
4 - Resources/Everything Claude Code 完整指南.md
Normal file
266
4 - Resources/Everything Claude Code 完整指南.md
Normal file
@@ -0,0 +1,266 @@
|
||||
---
|
||||
created: "2026-03-08 21:30"
|
||||
type: resource
|
||||
tags: [claude-code, AI-tools, development-workflow, reference]
|
||||
source: "https://github.com/affaan-m/everything-claude-code"
|
||||
---
|
||||
|
||||
# Everything Claude Code 完整指南
|
||||
|
||||
生产级 Claude Code 插件系统,包含 65+ skills、16 agents、40+ commands、hooks 和 rules。v1.8.0,经过 10+ 个月的高强度日常使用演化。
|
||||
|
||||
## 项目架构
|
||||
|
||||
```
|
||||
everything-claude-code/
|
||||
├── agents/ (16个) - 专用子代理
|
||||
├── skills/ (65个) - 工作流定义和领域知识
|
||||
├── commands/ (40个) - slash 命令
|
||||
├── hooks/ - 基于事件的自动化
|
||||
├── rules/ - 始终遵循的规则(按语言分层)
|
||||
├── scripts/ - 跨平台 Node.js 工具脚本
|
||||
├── mcp-configs/- MCP 服务器配置模板
|
||||
└── contexts/ - 动态注入的上下文文件
|
||||
```
|
||||
|
||||
## 安装
|
||||
|
||||
```bash
|
||||
# 插件安装
|
||||
/plugin marketplace add affaan-m/everything-claude-code
|
||||
/plugin install everything-claude-code@everything-claude-code
|
||||
|
||||
# Rules 手动安装(插件无法分发规则)
|
||||
git clone https://github.com/affaan-m/everything-claude-code.git
|
||||
cd everything-claude-code
|
||||
./install.sh python typescript # 按需选语言
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 全部 65 Skills
|
||||
|
||||
### 核心基础设施 (9)
|
||||
|
||||
| Skill | 用途 |
|
||||
|-------|------|
|
||||
| `agent-harness-construction` | 设计 AI agent 动作空间、工具定义和观测格式 |
|
||||
| `agentic-engineering` | eval-first 执行、任务分解、成本感知路由 |
|
||||
| `ai-first-engineering` | AI 优先工程运营模式 |
|
||||
| `continuous-agent-loop` | 持续自主 agent 循环,含质量门控和恢复 |
|
||||
| `enterprise-agent-ops` | 长期运行 agent 运维:可观测性、安全边界 |
|
||||
| `strategic-compact` | 逻辑断点手动压缩上下文 |
|
||||
| `eval-harness` | 评估驱动开发(EDD),pass@k 和 pass^k |
|
||||
| `verification-loop` | 综合验证:构建、lint、测试、安全扫描 |
|
||||
| `configure-ecc` | 交互式安装向导 |
|
||||
|
||||
### 开发工作流 (7)
|
||||
|
||||
| Skill | 用途 |
|
||||
|-------|------|
|
||||
| `autonomous-loops` | 顺序管道到 RFC 驱动多 agent DAG |
|
||||
| `continuous-learning` | 从 session 自动提取可复用模式 |
|
||||
| `continuous-learning-v2` | instinct 学习系统,带置信度评分 |
|
||||
| `ralphinho-rfc-pipeline` | RFC 驱动多 agent DAG 执行 |
|
||||
| `nanoclaw-repl` | 零依赖 session 感知 REPL |
|
||||
| `tdd-workflow` | Red-Green-Refactor,80%+ 覆盖率 |
|
||||
| `search-first` | 先搜索现有工具/库再编码 |
|
||||
|
||||
### 前端 (4)
|
||||
|
||||
| Skill | 用途 |
|
||||
|-------|------|
|
||||
| `frontend-patterns` | React/Next.js 模式、状态管理 |
|
||||
| `frontend-slides` | 动画 HTML 演示文稿 |
|
||||
| `swiftui-patterns` | SwiftUI 架构、@Observable |
|
||||
| `liquid-glass-design` | iOS 26 Liquid Glass 设计系统 |
|
||||
|
||||
### 后端 & API (5)
|
||||
|
||||
| Skill | 用途 |
|
||||
|-------|------|
|
||||
| `backend-patterns` | Node.js/Express/Next.js 服务端架构 |
|
||||
| `api-design` | REST API 设计模式 |
|
||||
| `cost-aware-llm-pipeline` | LLM API 成本优化和模型路由 |
|
||||
| `content-hash-cache-pattern` | SHA-256 内容哈希缓存 |
|
||||
| `iterative-retrieval` | 渐进式上下文检索 |
|
||||
|
||||
### 数据库 (3)
|
||||
|
||||
| Skill | 用途 |
|
||||
|-------|------|
|
||||
| `postgres-patterns` | PostgreSQL 查询优化、索引、Schema |
|
||||
| `clickhouse-io` | ClickHouse 分析数据库 |
|
||||
| `database-migrations` | Schema 变更、零停机部署 |
|
||||
|
||||
### Python + Django (6)
|
||||
|
||||
| Skill | 用途 |
|
||||
|-------|------|
|
||||
| `python-patterns` | PEP 8、类型提示、Pythonic 惯用法 |
|
||||
| `python-testing` | pytest、TDD、fixtures、mock |
|
||||
| `django-patterns` | Django/DRF 架构、ORM |
|
||||
| `django-tdd` | pytest-django、factory_boy |
|
||||
| `django-security` | 认证、CSRF、SQL 注入防护 |
|
||||
| `django-verification` | Django 验证循环 |
|
||||
|
||||
### Java/Spring Boot (6)
|
||||
|
||||
| Skill | 用途 |
|
||||
|-------|------|
|
||||
| `java-coding-standards` | 命名、不可变性、Optional、Stream |
|
||||
| `jpa-patterns` | 实体设计、关联、查询优化 |
|
||||
| `springboot-patterns` | Spring Boot 架构、REST API |
|
||||
| `springboot-tdd` | JUnit 5、Mockito、Testcontainers |
|
||||
| `springboot-security` | Spring Security 加固 |
|
||||
| `springboot-verification` | 构建、静态分析、覆盖率 |
|
||||
|
||||
### Go (2)
|
||||
|
||||
| Skill | 用途 |
|
||||
|-------|------|
|
||||
| `golang-patterns` | 惯用 Go 模式、并发 |
|
||||
| `golang-testing` | 表驱动测试、benchmark、fuzz |
|
||||
|
||||
### C++ (2)
|
||||
|
||||
| Skill | 用途 |
|
||||
|-------|------|
|
||||
| `cpp-coding-standards` | C++ Core Guidelines |
|
||||
| `cpp-testing` | GoogleTest + CMake/CTest |
|
||||
|
||||
### Swift (3)
|
||||
|
||||
| Skill | 用途 |
|
||||
|-------|------|
|
||||
| `swift-concurrency-6-2` | Swift 6.2 单线程默认 + @concurrent |
|
||||
| `swift-actor-persistence` | Actor 线程安全持久化 |
|
||||
| `swift-protocol-di-testing` | 协议注入测试模式 |
|
||||
|
||||
### 测试 & 质量 (3)
|
||||
|
||||
| Skill | 用途 |
|
||||
|-------|------|
|
||||
| `e2e-testing` | Playwright E2E、Page Object Model |
|
||||
| `plankton-code-quality` | 写时质量门控 |
|
||||
| `skill-stocktake` | Skill 质量审计 |
|
||||
|
||||
### 部署 (3)
|
||||
|
||||
| Skill | 用途 |
|
||||
|-------|------|
|
||||
| `deployment-patterns` | CI/CD、回滚、生产就绪检查 |
|
||||
| `docker-patterns` | Docker Compose、容器安全 |
|
||||
| `foundation-models-on-device` | Apple FoundationModels 端侧 LLM |
|
||||
|
||||
### 安全 & 代码规范 (5)
|
||||
|
||||
| Skill | 用途 |
|
||||
|-------|------|
|
||||
| `security-review` | 认证、输入、secrets 安全检查表 |
|
||||
| `security-scan` | AgentShield 102 条规则扫描 |
|
||||
| `coding-standards` | TypeScript/JS/React/Node.js 规范 |
|
||||
| `regex-vs-llm-structured-text` | 正则 vs LLM 解析选择框架 |
|
||||
| `project-guidelines-example` | 项目 skill 模板 |
|
||||
|
||||
### 内容 & 商业 (5)
|
||||
|
||||
| Skill | 用途 |
|
||||
|-------|------|
|
||||
| `article-writing` | 长文写作 |
|
||||
| `content-engine` | 多平台内容系统 |
|
||||
| `market-research` | 竞争分析、行业情报 |
|
||||
| `investor-materials` | 融资材料 |
|
||||
| `investor-outreach` | 投资者沟通邮件 |
|
||||
|
||||
### 特殊用途 (2)
|
||||
|
||||
| Skill | 用途 |
|
||||
|-------|------|
|
||||
| `visa-doc-translate` | 签证文档双语翻译 PDF |
|
||||
| `nutrient-document-processing` | Nutrient DWS API 文档处理 |
|
||||
|
||||
---
|
||||
|
||||
## 16 Agents
|
||||
|
||||
| Agent | 职责 |
|
||||
|-------|------|
|
||||
| `planner` | 功能实现规划 |
|
||||
| `architect` | 系统设计决策 |
|
||||
| `tdd-guide` | 测试驱动开发 |
|
||||
| `code-reviewer` | 代码质量审查 |
|
||||
| `security-reviewer` | 安全漏洞分析 |
|
||||
| `build-error-resolver` | 编译/运行时错误修复 |
|
||||
| `e2e-runner` | Playwright E2E 测试 |
|
||||
| `refactor-cleaner` | 死代码清理 |
|
||||
| `doc-updater` | 文档更新 |
|
||||
| `go-reviewer` | Go 代码审查 |
|
||||
| `go-build-resolver` | Go 构建错误修复 |
|
||||
| `python-reviewer` | Python 代码审查 |
|
||||
| `database-reviewer` | PostgreSQL 审查 |
|
||||
| `chief-of-staff` | 多渠道通信管理 |
|
||||
| `harness-optimizer` | Agent 框架优化 |
|
||||
| `loop-operator` | 循环任务运维 |
|
||||
|
||||
---
|
||||
|
||||
## 常用 Commands
|
||||
|
||||
### 开发核心
|
||||
`/plan` `/tdd` `/e2e` `/code-review` `/build-fix` `/verify` `/test-coverage` `/refactor-clean`
|
||||
|
||||
### 多 Agent 编排
|
||||
`/multi-plan` `/multi-execute` `/multi-frontend` `/multi-backend` `/orchestrate`
|
||||
|
||||
### 学习演化
|
||||
`/learn` `/learn-eval` `/evolve` `/instinct-status` `/instinct-export` `/instinct-import`
|
||||
|
||||
### v1.8.0 新增
|
||||
`/loop-start` `/loop-status` `/model-route` `/quality-gate` `/harness-audit` `/promote`
|
||||
|
||||
---
|
||||
|
||||
## Hooks 系统
|
||||
|
||||
### PreToolUse
|
||||
- tmux 自动启动和提醒
|
||||
- git push 前 review 提醒
|
||||
- 文档文件警告
|
||||
- 逻辑断点压缩建议
|
||||
- 持续学习观察(异步)
|
||||
|
||||
### PostToolUse
|
||||
- PR 创建日志
|
||||
- 质量门控检查
|
||||
- 自动格式化 (Prettier/Biome)
|
||||
- TypeScript 类型检查
|
||||
- console.log 警告
|
||||
|
||||
### Stop
|
||||
- console.log 最终检查
|
||||
- Session 状态持久化
|
||||
- 模式提取评估
|
||||
- Token 成本追踪
|
||||
|
||||
### 控制
|
||||
```bash
|
||||
ECC_HOOK_PROFILE=standard # minimal/standard/strict
|
||||
ECC_DISABLED_HOOKS="pre:bash:tmux-reminder,post:edit:typecheck"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Related
|
||||
|
||||
- [[Everything Claude Code 用法速查]]
|
||||
- [[Claude Code Memory 日常最佳实践]]
|
||||
- [[Everything Claude Code 最佳实践]]
|
||||
- [[Everything Claude Code Agent 编排模式]]
|
||||
- [[Everything Claude Code Token 优化]]
|
||||
|
||||
## Source
|
||||
|
||||
- [GitHub Repo](https://github.com/affaan-m/everything-claude-code)
|
||||
- [Shortform Guide](https://github.com/affaan-m/everything-claude-code/blob/main/the-shortform-guide.md)
|
||||
- [Longform Guide](https://github.com/affaan-m/everything-claude-code/blob/main/the-longform-guide.md)
|
||||
182
4 - Resources/Everything Claude Code 用法速查.md
Normal file
182
4 - Resources/Everything Claude Code 用法速查.md
Normal file
@@ -0,0 +1,182 @@
|
||||
---
|
||||
created: "2026-03-08 22:10"
|
||||
type: resource
|
||||
tags: [claude-code, AI-tools, development-workflow, cheatsheet]
|
||||
source: "https://github.com/affaan-m/everything-claude-code"
|
||||
---
|
||||
|
||||
# Everything Claude Code 用法速查
|
||||
|
||||
按使用场景分类的快速参考手册。组件完整列表见 [[Everything Claude Code 完整指南]]。
|
||||
|
||||
---
|
||||
|
||||
## 一、按开发阶段分类
|
||||
|
||||
### 1. 规划阶段
|
||||
|
||||
| 场景 | 用什么 | 怎么用 |
|
||||
|------|--------|--------|
|
||||
| 复杂功能设计 | `/plan` 命令 → planner agent | 输入需求,生成分阶段实施计划,等用户确认后再动手 |
|
||||
| 系统架构决策 | architect agent | 自动启用,做 trade-off 分析、模式推荐、可扩展性评审 |
|
||||
| 多模型并行规划 | `/multi-plan` | Claude + Codex + Gemini 并行出方案,对比择优 |
|
||||
| 研究优先 | search-first skill | 先搜 GitHub/npm/PyPI 找现有实现,再决定是否自己写 |
|
||||
|
||||
### 2. 编码阶段
|
||||
|
||||
| 场景 | 用什么 | 怎么用 |
|
||||
|------|--------|--------|
|
||||
| 新功能开发 | `/tdd` 命令 → tdd-guide agent | 强制 RED→GREEN→REFACTOR 流程,先写测试再实现,验证 80%+ 覆盖率 |
|
||||
| 修 Bug | tdd-guide agent(自动启用) | 先写复现测试,再修复,确保不回归 |
|
||||
| 构建失败 | `/build-fix` → build-error-resolver agent | 最小改动修复编译/类型错误,不动架构 |
|
||||
| Go 构建报错 | `/go-build` | 专门处理 go build、go vet、linter 问题 |
|
||||
|
||||
### 3. 质量保障阶段
|
||||
|
||||
| 场景 | 用什么 | 怎么用 |
|
||||
|------|--------|--------|
|
||||
| 代码审查 | `/code-review` → code-reviewer agent | 写完代码后必须用,检查安全性、质量、可维护性 |
|
||||
| 安全审查 | security-reviewer agent(自动启用) | 涉及用户输入/认证/API/敏感数据时自动触发,检测 OWASP Top 10 |
|
||||
| E2E 测试 | `/e2e` → e2e-runner agent | 生成 Playwright 测试,截图/录屏/trace,自动隔离 flaky 测试 |
|
||||
| 死代码清理 | `/refactor-clean` → refactor-cleaner agent | 用 knip/depcheck 扫描未使用代码并安全删除 |
|
||||
| 快速质量门禁 | `/quality-gate` | 提交前快速检查,轻量级 |
|
||||
|
||||
### 4. 语言专用审查
|
||||
|
||||
| 语言 | 命令 | 检查内容 |
|
||||
|------|------|----------|
|
||||
| Python | `/python-review` | PEP 8、类型提示、安全、ruff/mypy/pylint |
|
||||
| Go | `/go-review` | 惯用 Go 模式、并发安全、error handling、staticcheck |
|
||||
| Go 测试 | `/go-test` | 表驱动测试、覆盖率分析 |
|
||||
| TypeScript | 自动 hook | 保存后自动 Prettier 格式化 + TypeScript 类型检查 |
|
||||
| SQL/数据库 | database-reviewer agent | 查询优化、RLS 安全、连接池、Supabase 最佳实践 |
|
||||
|
||||
---
|
||||
|
||||
## 二、按自动化机制分类(Hooks)
|
||||
|
||||
| 时机 | Hook | 效果 |
|
||||
|------|------|------|
|
||||
| 执行 Bash 前 | auto-tmux-dev | 自动在 tmux 中启动 dev server |
|
||||
| 执行 Bash 前 | tmux-reminder | 长时间命令提醒用 tmux |
|
||||
| 执行 Bash 前 | git-push-reminder | git push 前提醒 review |
|
||||
| 写文件前 | doc-file-warning | 阻止创建非标准文档文件 |
|
||||
| 编辑后 | prettier-format | 自动格式化 JS/TS 文件 |
|
||||
| 编辑后 | typecheck | .ts/.tsx 文件编辑后自动类型检查 |
|
||||
| 编辑后 | console-log-warning | 警告残留的 console.log |
|
||||
| 编辑后 | quality-gate | 编辑后快速质量检查 |
|
||||
| 会话开始 | session-start | 加载上次上下文、检测包管理器 |
|
||||
| 会话结束 | session-end | 持久化会话状态 |
|
||||
| 会话结束 | evaluate-session | 提取可复用模式(持续学习) |
|
||||
|
||||
控制方式:
|
||||
- `ECC_HOOK_PROFILE=minimal|standard|strict` — 按级别启用
|
||||
- `ECC_DISABLED_HOOKS=hook1,hook2` — 禁用特定 hook
|
||||
|
||||
---
|
||||
|
||||
## 三、按高级场景分类
|
||||
|
||||
### 1. 多模型协作
|
||||
|
||||
| 命令 | 用途 |
|
||||
| ----------------- | ----------------------------------- |
|
||||
| `/multi-plan` | Claude + Codex + Gemini 并行规划 |
|
||||
| `/multi-execute` | 跨多个模型后端并行执行 |
|
||||
| `/multi-frontend` | 多前端框架并行开发(React/Vue/Svelte/Angular) |
|
||||
| `/multi-backend` | 多后端栈并行开发(Node/Python/Go/Java) |
|
||||
| `/multi-workflow` | 复杂多服务编排 |
|
||||
|
||||
### 2. 自主循环
|
||||
|
||||
| 命令 | 用途 |
|
||||
|------|------|
|
||||
| `/loop-start` | 启动自主循环:sequential / continuous-pr / rfc-dag / infinite |
|
||||
| `/loop-status` | 监控循环进度、检测卡住 |
|
||||
| `/harness-audit` | 评估 harness 配置:工具覆盖、上下文效率、质量门禁、成本 |
|
||||
|
||||
### 3. 持续学习
|
||||
|
||||
| 命令 | 用途 |
|
||||
|------|------|
|
||||
| `/learn` | 从当前会话提取可复用模式,保存为 skill |
|
||||
| `/learn-eval` | 从 eval 会话中提取模式 |
|
||||
| `/skill-create` | 分析 git 历史自动生成 SKILL.md |
|
||||
| `/instinct-status` | 查看所有已学习的 instinct 及置信度 |
|
||||
| `/instinct-export` | 导出 instinct 给队友共享 |
|
||||
| `/instinct-import` | 导入其他项目的 instinct |
|
||||
|
||||
### 4. 模型路由
|
||||
|
||||
| 模型 | 适合场景 |
|
||||
|------|----------|
|
||||
| Haiku 4.5 | 轻量 agent、pair programming、高频调用(省 3x 成本) |
|
||||
| Sonnet 4.6 | 主力开发、编排多 agent、复杂编码 |
|
||||
| Opus 4.6 | 架构决策、深度推理、研究分析 |
|
||||
|
||||
用 `/model-route` 自动路由到合适模型。
|
||||
|
||||
---
|
||||
|
||||
## 四、安装方式
|
||||
|
||||
```bash
|
||||
# 安装通用 + 语言规则到 ~/.claude/rules/
|
||||
./install.sh typescript python golang swift
|
||||
|
||||
# 安装到 Cursor
|
||||
./install.sh --target cursor typescript
|
||||
|
||||
# 安装到 Antigravity
|
||||
./install.sh --target antigravity golang
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 五、MCP 外部集成(建议不超过 10 个)
|
||||
|
||||
| 服务 | 用途 | 需要 Key |
|
||||
|------|------|----------|
|
||||
| github | PR/Issue/Repo 操作 | GITHUB_PERSONAL_ACCESS_TOKEN |
|
||||
| supabase | 数据库操作 | project-ref |
|
||||
| vercel | 部署管理 | - |
|
||||
| firecrawl | 网页抓取 | FIRECRAWL_API_KEY |
|
||||
| exa-web-search | 研究搜索 | EXA_API_KEY |
|
||||
| clickhouse | 分析查询 | - |
|
||||
| context7 | 实时文档查询 | - |
|
||||
| sequential-thinking | 链式推理 | - |
|
||||
|
||||
---
|
||||
|
||||
## 六、一句话速查表
|
||||
|
||||
| 我想... | 用 |
|
||||
|---------|-----|
|
||||
| 规划一个大功能 | `/plan` |
|
||||
| 写功能并保证测试覆盖 | `/tdd` |
|
||||
| 审查刚写的代码 | `/code-review` |
|
||||
| 修编译错误 | `/build-fix` |
|
||||
| 跑端到端测试 | `/e2e` |
|
||||
| 清理死代码 | `/refactor-clean` |
|
||||
| 更新文档 | `/update-docs` |
|
||||
| 审查 Python 代码 | `/python-review` |
|
||||
| 审查 Go 代码 | `/go-review` |
|
||||
| 多模型并行出方案 | `/multi-plan` |
|
||||
| 启动自主循环 | `/loop-start` |
|
||||
| 评估 harness 质量 | `/harness-audit` |
|
||||
| 从会话中学习模式 | `/learn` |
|
||||
|
||||
---
|
||||
|
||||
## Related
|
||||
|
||||
- [[Everything Claude Code 完整指南]]
|
||||
- [[Everything Claude Code 多服务编排详解]]
|
||||
- [[Claude Code Memory 日常最佳实践]]
|
||||
- [[Everything Claude Code 最佳实践]]
|
||||
- [[Everything Claude Code Agent 编排模式]]
|
||||
- [[Everything Claude Code Token 优化]]
|
||||
|
||||
## Source
|
||||
|
||||
- [GitHub Repo](https://github.com/affaan-m/everything-claude-code)
|
||||
326
4 - Resources/HomeLab Infrastructure.md
Normal file
326
4 - Resources/HomeLab Infrastructure.md
Normal file
@@ -0,0 +1,326 @@
|
||||
---
|
||||
created: "2026-03-10"
|
||||
type: resource
|
||||
tags: [infrastructure, homelab, kubernetes, ci-cd, gitops]
|
||||
source: "HomeLab 部署实践"
|
||||
---
|
||||
|
||||
# HomeLab 基础设施文档
|
||||
|
||||
## 网络拓扑概览
|
||||
|
||||
```
|
||||
[NAS (192.168.68.x)] ── Gitea (Docker), AdGuard Home (DNS)
|
||||
|
|
||||
[192.168.68.x 内网]
|
||||
|
|
||||
[K8s Cluster]
|
||||
├── k8s-cp1 (Control Plane) ── 192.168.68.11
|
||||
├── k8s-w1 (Worker) ── 192.168.68.21
|
||||
└── k8s-w2 (Worker) ── 192.168.68.22
|
||||
├── Docker Registry ── NodePort 30500
|
||||
├── Drone CI ── NodePort 30344 (webhook), Ingress drone.k8s.home
|
||||
├── ArgoCD ── Ingress argocd.k8s.home
|
||||
├── ingress-nginx ── LoadBalancer 192.168.68.240
|
||||
└── 应用 (invest-api 等)
|
||||
```
|
||||
|
||||
## DNS (AdGuard Home)
|
||||
|
||||
DNS 服务器: `192.168.68.63`
|
||||
|
||||
### DNS 重写规则
|
||||
|
||||
| 域名 | IP | 说明 |
|
||||
|------|-----|------|
|
||||
| `invest-api.k8s.home` | 192.168.68.240 | OpenBB 投资分析 API |
|
||||
| `drone.k8s.home` | 192.168.68.240 | Drone CI |
|
||||
| `argocd.k8s.home` | 192.168.68.240 | ArgoCD |
|
||||
|
||||
注意: 所有 `*.k8s.home` 域名都应指向 ingress-nginx 的 LoadBalancer IP `192.168.68.240`(由 MetalLB 分配),而不是节点 IP。
|
||||
|
||||
## 已部署应用
|
||||
|
||||
| 应用 | URL | 命名空间 | 说明 |
|
||||
|------|-----|----------|------|
|
||||
| OpenBB Invest API | `https://invest-api.k8s.home` | invest-api | 投资分析 REST API(50 端点)|
|
||||
| Drone CI | `https://drone.k8s.home` | drone | CI/CD |
|
||||
| ArgoCD | `https://argocd.k8s.home` | argocd | GitOps 部署 |
|
||||
| Swagger UI | `https://invest-api.k8s.home/docs` | invest-api | API 文档 |
|
||||
|
||||
## Kubernetes 集群
|
||||
|
||||
### 节点信息
|
||||
|
||||
| 节点 | 角色 | IP | 说明 |
|
||||
|------|------|----|------|
|
||||
| k8s-cp1 | Control Plane | 192.168.68.11 | API Server, etcd, scheduler |
|
||||
| k8s-w1 | Worker | 192.168.68.21 | 应用负载 |
|
||||
| k8s-w2 | Worker | 192.168.68.22 | 应用负载 |
|
||||
|
||||
### 集群组件
|
||||
|
||||
| 组件 | 版本/说明 |
|
||||
|------|----------|
|
||||
| Kubernetes | v1.35.0 |
|
||||
| 容器运行时 | containerd 1.7.28 |
|
||||
| CNI | 默认 |
|
||||
| 负载均衡 | MetalLB (分配 IP: 192.168.68.240) |
|
||||
| Ingress | ingress-nginx (External IP: 192.168.68.240) |
|
||||
| 存储 | Proxmox CSI |
|
||||
| 证书管理 | cert-manager |
|
||||
|
||||
### kubeconfig
|
||||
|
||||
- API Server: `https://192.168.68.11:6443`
|
||||
- 认证方式: 证书认证 (admin 用户)
|
||||
- 本地配置: `C:\Users\yaoji\.kube\config`
|
||||
- 获取方式: 从 Control Plane `/etc/kubernetes/admin.conf` 拷贝
|
||||
|
||||
### 已部署命名空间
|
||||
|
||||
| 命名空间 | 用途 |
|
||||
|----------|------|
|
||||
| argocd | ArgoCD GitOps |
|
||||
| drone | Drone CI/CD |
|
||||
| registry | Docker Registry |
|
||||
| ingress-nginx | Ingress 控制器 |
|
||||
| cert-manager | TLS 证书管理 |
|
||||
| metallb-system | 负载均衡 |
|
||||
| csi-proxmox / proxmox-csi | 存储 |
|
||||
| invest-api | OpenBB 投资分析 API |
|
||||
|
||||
---
|
||||
|
||||
## Git 服务 (Gitea)
|
||||
|
||||
| 项目 | 值 |
|
||||
|------|-----|
|
||||
| 部署位置 | NAS Docker |
|
||||
| URL | `https://git.colacoder.com` |
|
||||
| SSH | `ssh://git@git.colacoder.com:2200/` |
|
||||
| 管理员用户 | kai |
|
||||
| 邮箱 | wangyaojia@gmail.com |
|
||||
|
||||
### Gitea 配置注意事项
|
||||
|
||||
`app.ini` 中需要的配置:
|
||||
|
||||
```ini
|
||||
[webhook]
|
||||
ALLOWED_HOST_LIST = private
|
||||
SKIP_TLS_VERIFY = true
|
||||
```
|
||||
|
||||
- `ALLOWED_HOST_LIST = private` — 允许 webhook 发送到内网地址
|
||||
- `SKIP_TLS_VERIFY = true` — 允许连接自签名证书的服务
|
||||
- 修改后需要重启 Gitea 容器
|
||||
|
||||
### 仓库列表
|
||||
|
||||
| 仓库 | 用途 |
|
||||
|------|------|
|
||||
| kai/openbb-invest-api | OpenBB 投资分析 API |
|
||||
|
||||
---
|
||||
|
||||
## CI/CD (Drone CI)
|
||||
|
||||
### 部署信息
|
||||
|
||||
| 项目 | 值 |
|
||||
|------|-----|
|
||||
| 命名空间 | drone |
|
||||
| 版本 | 2.12.1 |
|
||||
| Ingress | `https://drone.k8s.home` |
|
||||
| Runner 类型 | Kubernetes Runner |
|
||||
| Runner 容量 | 4 并发 |
|
||||
|
||||
### 访问方式
|
||||
|
||||
| 方式 | 地址 |
|
||||
|------|------|
|
||||
| Web UI | `https://drone.k8s.home` |
|
||||
| Webhook (给 Gitea 用) | `http://192.168.68.21:30344/hook` |
|
||||
| API | `http://192.168.68.21:30344/api/` |
|
||||
| API Token | `c7hDypuu5p41r5k6svR0x6QomInqrE6f` |
|
||||
|
||||
### Drone Server 配置 (ConfigMap: drone)
|
||||
|
||||
| 键 | 值 |
|
||||
|-----|-------|
|
||||
| DRONE_GITEA_SERVER | `https://git.colacoder.com/` |
|
||||
| DRONE_GITEA_CLIENT_ID | `c95249a5-9cad-4813-89b4-3f4f9f7d3cee` |
|
||||
| DRONE_SERVER_HOST | drone.k8s.home |
|
||||
| DRONE_SERVER_PROTO | https |
|
||||
| DRONE_USER_CREATE | username:kai,admin:true |
|
||||
|
||||
### Drone Runner 配置 (ConfigMap: drone-runner-drone-runner-kube)
|
||||
|
||||
| 键 | 值 |
|
||||
|-----|-------|
|
||||
| DRONE_RPC_HOST | drone.drone.svc.cluster.local:8080 |
|
||||
| DRONE_RPC_PROTO | http |
|
||||
| DRONE_NAMESPACE_DEFAULT | drone |
|
||||
| DRONE_RUNNER_CAPACITY | 4 |
|
||||
|
||||
### RBAC
|
||||
|
||||
Runner ServiceAccount (`drone:drone-runner-drone-runner-kube`) 需要在 `drone` namespace 有以下权限:
|
||||
- secrets: create, delete
|
||||
- pods, pods/log: get, create, delete, list, watch, update
|
||||
|
||||
Helm 安装时 RBAC 错误地创建在 `default` namespace,需要手动在 `drone` namespace 创建 Role 和 RoleBinding。
|
||||
|
||||
### Gitea Webhook 配置
|
||||
|
||||
| 项目 | 值 |
|
||||
|------|-----|
|
||||
| Target URL | `http://192.168.68.21:30344/hook` |
|
||||
| Content Type | application/json |
|
||||
| Secret | `KE0HQksXhJ53ojiLwgAIp0JC4QCl1NsE` |
|
||||
| Events | Push |
|
||||
|
||||
注意: Drone 无法自动在 Gitea 创建 webhook(OAuth 权限问题),需要手动创建。
|
||||
|
||||
### Pipeline 模板 (.drone.yml)
|
||||
|
||||
使用 kaniko 构建(Kubernetes Runner 不支持 privileged 模式的 `plugins/docker`):
|
||||
|
||||
```yaml
|
||||
kind: pipeline
|
||||
type: kubernetes
|
||||
name: build-and-push
|
||||
|
||||
trigger:
|
||||
branch: [main, develop]
|
||||
event: [push, custom]
|
||||
|
||||
steps:
|
||||
- name: build-and-push
|
||||
image: gcr.io/kaniko-project/executor:debug
|
||||
commands:
|
||||
- >
|
||||
/kaniko/executor
|
||||
--context=/drone/src
|
||||
--dockerfile=Dockerfile
|
||||
--destination=192.168.68.11:30500/IMAGE_NAME:${DRONE_COMMIT_SHA:0:8}
|
||||
--destination=192.168.68.11:30500/IMAGE_NAME:latest
|
||||
--insecure
|
||||
--skip-tls-verify
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Docker Registry
|
||||
|
||||
| 项目 | 值 |
|
||||
|------|-----|
|
||||
| 命名空间 | registry |
|
||||
| 镜像 | registry:2 |
|
||||
| Service | NodePort 30500 |
|
||||
| 存储 | PVC 10Gi |
|
||||
| 访问地址 | `http://192.168.68.11:30500` |
|
||||
| 基础设施仓库 | `C:\Users\yaoji\git\ColaCoder\k8s-infra\registry\` |
|
||||
|
||||
### Registry API
|
||||
|
||||
```bash
|
||||
# 查看所有镜像
|
||||
curl http://192.168.68.11:30500/v2/_catalog
|
||||
|
||||
# 查看镜像 tags
|
||||
curl http://192.168.68.11:30500/v2/IMAGE_NAME/tags/list
|
||||
```
|
||||
|
||||
### Worker 节点 containerd 配置
|
||||
|
||||
两个 Worker 节点 `/etc/containerd/config.toml` 中添加:
|
||||
|
||||
```toml
|
||||
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."192.168.68.11:30500"]
|
||||
endpoint = ["http://192.168.68.11:30500"]
|
||||
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."registry.registry.svc.cluster.local:5000"]
|
||||
endpoint = ["http://registry.registry.svc.cluster.local:5000"]
|
||||
```
|
||||
|
||||
修改后需要 `sudo systemctl restart containerd`。Control Plane 不需要配置。
|
||||
|
||||
### 本地 Docker Desktop 配置
|
||||
|
||||
`C:\Users\yaoji\.docker\daemon.json`:
|
||||
|
||||
```json
|
||||
{
|
||||
"insecure-registries": ["192.168.68.11:30500"]
|
||||
}
|
||||
```
|
||||
|
||||
修改后需要重启 Docker Desktop。
|
||||
|
||||
---
|
||||
|
||||
## ArgoCD
|
||||
|
||||
| 项目 | 值 |
|
||||
|------|-----|
|
||||
| 命名空间 | argocd |
|
||||
| 同步策略 | 自动 (prune + selfHeal) |
|
||||
| CreateNamespace | true |
|
||||
|
||||
### 已注册应用
|
||||
|
||||
| 应用 | 源仓库 | 路径 | 分支 | 目标命名空间 |
|
||||
|------|--------|------|------|-------------|
|
||||
| invest-api | `https://git.colacoder.com/kai/openbb-invest-api.git` | k8s/base | main | invest-api |
|
||||
|
||||
---
|
||||
|
||||
## 完整部署流程 (GitOps)
|
||||
|
||||
```
|
||||
开发者 git push
|
||||
↓
|
||||
Gitea 接收代码
|
||||
↓ (webhook)
|
||||
Drone CI 触发构建
|
||||
↓ (kaniko)
|
||||
Docker 镜像推送到 Registry (192.168.68.11:30500)
|
||||
↓
|
||||
ArgoCD 检测 k8s manifest 变化
|
||||
↓ (自动同步)
|
||||
K8s 拉取镜像并部署
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 踩坑记录
|
||||
|
||||
### Gitea Webhook
|
||||
|
||||
1. **webhook 被拒**: Gitea 默认不允许发送 webhook 到内网地址,需要 `ALLOWED_HOST_LIST = private`
|
||||
2. **TLS 验证失败**: 内网自签名证书需要 `SKIP_TLS_VERIFY = true`
|
||||
3. **403 Forbidden**: Drone OAuth2 应用丢失需要重新创建;webhook 手动创建时需要填写正确的 secret
|
||||
|
||||
### Drone CI
|
||||
|
||||
1. **Runner 无法连接 Server**: Service 端口 8080 但 Runner 连的默认 80,需要在 `DRONE_RPC_HOST` 加 `:8080`
|
||||
2. **手动触发无反应**: `.drone.yml` trigger event 需要包含 `custom`
|
||||
3. **RBAC 权限不足**: Helm 把 Role 创建在 `default` namespace,需要手动在 `drone` namespace 创建
|
||||
4. **不能用 plugins/docker**: Kubernetes Runner 不支持 privileged 模式,改用 kaniko
|
||||
|
||||
### Docker 镜像
|
||||
|
||||
1. **OpenBB 需要 home 目录**: `nobody` 用户没有 home,需要创建 `appuser` 并预建 `.openbb_platform` 目录
|
||||
2. **OpenBB 需要写入 site-packages**: 启动时写 `.build.lock`,需要 `chown -R appuser:appuser /usr/local/lib/python3.12/site-packages/openbb`
|
||||
|
||||
### DNS / Ingress
|
||||
|
||||
1. **Ingress IP 不是节点 IP**: `*.k8s.home` 域名必须指向 MetalLB 分配的 LoadBalancer IP (`192.168.68.240`),不是节点 IP (`192.168.68.22`)
|
||||
|
||||
---
|
||||
|
||||
## Related
|
||||
|
||||
- [[OpenBB Invest API - K8s Infrastructure]]
|
||||
- [[OpenBB Invest API]]
|
||||
140
4 - Resources/OpenBB Invest API - K8s Infrastructure.md
Normal file
140
4 - Resources/OpenBB Invest API - K8s Infrastructure.md
Normal file
@@ -0,0 +1,140 @@
|
||||
---
|
||||
created: "2026-03-09"
|
||||
type: resource
|
||||
tags: [kubernetes, infrastructure, devops, drone-ci, argocd, docker-registry]
|
||||
source: "openbb-invest-api 项目部署实践"
|
||||
---
|
||||
|
||||
# OpenBB Invest API - K8s 基础设施
|
||||
|
||||
## 概述
|
||||
|
||||
OpenBB Invest API 的完整 Kubernetes 部署架构,包含集群信息、CI/CD 流水线和 GitOps 配置。
|
||||
|
||||
## 集群
|
||||
|
||||
| 节点 | 角色 | IP |
|
||||
|------|------|----|
|
||||
| k8s-cp1 | control-plane | 192.168.68.11 |
|
||||
| k8s-w1 | worker | 192.168.68.21 |
|
||||
| k8s-w2 | worker | 192.168.68.22 |
|
||||
|
||||
- Kubernetes v1.35.0
|
||||
- 容器运行时: containerd 1.7.28
|
||||
- 负载均衡: MetalLB
|
||||
- Ingress: ingress-nginx
|
||||
- 存储: Proxmox CSI
|
||||
- 证书管理: cert-manager
|
||||
|
||||
## kubeconfig
|
||||
|
||||
- 位置: `C:\Users\yaoji\.kube\config`
|
||||
- 认证: 证书认证 (admin 用户)
|
||||
- API server: `https://192.168.68.11:6443`
|
||||
|
||||
## Docker Registry
|
||||
|
||||
- 命名空间: `registry`
|
||||
- 镜像: `registry:2`
|
||||
- 服务: NodePort 30500
|
||||
- 持久卷: 10Gi
|
||||
- 访问地址: `http://192.168.68.11:30500`
|
||||
- 基础设施仓库: `C:\Users\yaoji\git\ColaCoder\k8s-infra\registry\`
|
||||
|
||||
### Worker 节点 containerd 配置
|
||||
|
||||
两个 worker 节点的 `/etc/containerd/config.toml`:
|
||||
|
||||
```toml
|
||||
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."192.168.68.11:30500"]
|
||||
endpoint = ["http://192.168.68.11:30500"]
|
||||
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."registry.registry.svc.cluster.local:5000"]
|
||||
endpoint = ["http://registry.registry.svc.cluster.local:5000"]
|
||||
```
|
||||
|
||||
Control plane 不需要配置(有 taint,pod 不会调度到上面)。
|
||||
|
||||
## Drone CI
|
||||
|
||||
- 命名空间: `drone`
|
||||
- Server: 容器端口 80,Service 端口 8080
|
||||
- Runner: Kubernetes runner(容量 4)
|
||||
- Ingress: `drone.k8s.home`
|
||||
|
||||
### Runner ConfigMap
|
||||
|
||||
| 键 | 值 |
|
||||
|-----|-------|
|
||||
| DRONE_RPC_HOST | drone.drone.svc.cluster.local:8080 |
|
||||
| DRONE_RPC_PROTO | http |
|
||||
| DRONE_NAMESPACE_DEFAULT | drone |
|
||||
|
||||
### 流水线 (.drone.yml)
|
||||
|
||||
使用 kaniko 构建(k8s runner 不支持 privileged 模式):
|
||||
|
||||
```yaml
|
||||
kind: pipeline
|
||||
type: kubernetes
|
||||
name: build-and-push
|
||||
trigger:
|
||||
branch: [main, develop]
|
||||
event: [push, custom]
|
||||
steps:
|
||||
- name: build-and-push
|
||||
image: gcr.io/kaniko-project/executor:debug
|
||||
commands:
|
||||
- /kaniko/executor
|
||||
--context=/drone/src
|
||||
--dockerfile=Dockerfile
|
||||
--destination=192.168.68.11:30500/invest-api:${DRONE_COMMIT_SHA:0:8}
|
||||
--destination=192.168.68.11:30500/invest-api:latest
|
||||
--insecure --skip-tls-verify
|
||||
```
|
||||
|
||||
## ArgoCD
|
||||
|
||||
- 命名空间: `argocd`
|
||||
- Application: `invest-api`
|
||||
- 源仓库: `https://git.colacoder.com/kai/openbb-invest-api.git`,路径 `k8s/base`
|
||||
- 目标分支: `main`,命名空间 `invest-api`
|
||||
- 同步策略: 自动(prune + selfHeal + CreateNamespace)
|
||||
|
||||
## Gitea
|
||||
|
||||
- URL: `https://git.colacoder.com`
|
||||
- 仓库: `kai/openbb-invest-api`
|
||||
- SSH: `ssh://git@git.colacoder.com:2200/kai/openbb-invest-api.git`
|
||||
|
||||
## 部署流程
|
||||
|
||||
1. `git push` 到 Gitea(main/develop 分支)
|
||||
2. Gitea webhook 触发 Drone CI
|
||||
3. Drone/kaniko 构建 Docker 镜像并推送到 `192.168.68.11:30500`
|
||||
4. ArgoCD 检测 `k8s/base/` 中的 manifest 变化并自动同步
|
||||
5. k8s 从 registry 拉取镜像并部署
|
||||
|
||||
## invest-api K8s Manifests (k8s/base/)
|
||||
|
||||
- 命名空间: `invest-api`
|
||||
- Deployment: 镜像 `192.168.68.11:30500/invest-api:latest`,100m-500m CPU,256Mi-512Mi 内存,健康检查 `/health:8000`
|
||||
- Service: ClusterIP 端口 8000
|
||||
- Secret: `invest-api-secrets`(可选,用于 API 密钥)
|
||||
|
||||
## 本地 Docker Desktop
|
||||
|
||||
`C:\Users\yaoji\.docker\daemon.json`:
|
||||
|
||||
```json
|
||||
{"insecure-registries": ["192.168.68.11:30500"]}
|
||||
```
|
||||
|
||||
## 踩坑记录
|
||||
|
||||
- **Drone Runner RPC 连接超时**: Runner 默认连接端口 80,但 Service 暴露的是 8080。通过 patch configmap 添加 `:8080` 修复。
|
||||
- **Drone 手动触发无反应**: UI 手动触发发送的 event 是 `custom`,需要在 `.drone.yml` trigger 中添加 `custom` event。
|
||||
- **kubeconfig 传输损坏**: 通过聊天传输 RSA 私钥会被截断/损坏,需要通过 SSH 直接传输文件。
|
||||
|
||||
## Related
|
||||
|
||||
- [[OpenBB Invest API]]
|
||||
111
4 - Resources/OpenClaw-Skill-Reference.md
Normal file
111
4 - Resources/OpenClaw-Skill-Reference.md
Normal file
@@ -0,0 +1,111 @@
|
||||
---
|
||||
created: "2026-03-10"
|
||||
type: resource
|
||||
tags: [openclaw, ai-gateway, claude-code, skill]
|
||||
source: "https://docs.openclaw.ai/"
|
||||
---
|
||||
|
||||
# OpenClaw Skill 参考
|
||||
|
||||
## 概述
|
||||
|
||||
OpenClaw 是一个自托管的 AI 网关,将聊天应用(WhatsApp、Telegram、Discord、Slack、Signal、iMessage 等 20+ 渠道)连接到 AI 编码代理。基于 Node.js 22+,使用 WebSocket 控制平面。
|
||||
|
||||
- 配置文件: `~/.openclaw/openclaw.json`(JSON5 格式,热重载)
|
||||
- 默认端口: `18789`
|
||||
- 本地仓库: `C:\Users\yaoji\git\OpenSource\openclaw`
|
||||
- 文档: https://docs.openclaw.ai/
|
||||
- Claude Code Skill 位置: `~/.claude/skills/openclaw/SKILL.md`
|
||||
|
||||
## Skill 覆盖内容
|
||||
|
||||
### 核心操作
|
||||
|
||||
| 模块 | 功能 | 关键命令 |
|
||||
|------|------|----------|
|
||||
| Gateway | 启动/停止/重启/状态/服务安装 | `openclaw gateway run/start/stop/restart/status` |
|
||||
| 配置 | JSON5 配置读写/验证/向导 | `openclaw config get/set/unset/validate` |
|
||||
| Agent | 多 agent 隔离/路由绑定/身份 | `openclaw agents add/bind/unbind/list` |
|
||||
| Session | 会话列表/清理/作用域管理 | `openclaw sessions/cleanup` |
|
||||
|
||||
### 通讯渠道
|
||||
|
||||
| 模块 | 功能 | 关键命令 |
|
||||
|------|------|----------|
|
||||
| Channel | 添加/登录/状态/能力探测 | `openclaw channels add/login/status/capabilities` |
|
||||
| Message | 发送/回复/投票/反应/广播/线程 | `openclaw message send/poll/react/broadcast` |
|
||||
|
||||
### 扩展能力
|
||||
|
||||
| 模块 | 功能 | 关键命令 |
|
||||
|------|------|----------|
|
||||
| Skills | 列出/检查 agent 技能 | `openclaw skills list/info/check` |
|
||||
| Plugins | 安装/启用/更新/卸载 | `openclaw plugins install/enable/update` |
|
||||
| Hooks(内部) | 事件驱动自动化 | `openclaw hooks list/enable/disable` |
|
||||
| Webhooks(外部) | HTTP 触发 agent | `POST /hooks/wake`, `POST /hooks/agent` |
|
||||
| Cron | 定时任务 | `openclaw cron add/edit` |
|
||||
|
||||
### API 与集成
|
||||
|
||||
- **OpenAI 兼容 API**: `POST /v1/chat/completions`(需开启)
|
||||
- **RPC 调用**: `openclaw gateway call <method>`
|
||||
- **25+ 模型提供商**: Anthropic、OpenAI、Ollama、OpenRouter、Bedrock 等
|
||||
|
||||
## 关键配置结构
|
||||
|
||||
```
|
||||
openclaw.json
|
||||
├── identity # 名称/主题/表情
|
||||
├── agents # agent 列表/默认值/workspace/model/skills
|
||||
├── channels # 各渠道配置(whatsapp/telegram/discord/slack...)
|
||||
├── session # 作用域/重置/维护
|
||||
├── skills # 技能条目/加载/安装
|
||||
├── plugins # 插件条目/允许/拒绝
|
||||
├── tools # web/browser/canvas/media
|
||||
├── gateway # 端口/绑定/认证/HTTP端点
|
||||
├── hooks # webhook + 内部钩子
|
||||
├── cron # 定时任务
|
||||
├── acp # Agent Control Protocol
|
||||
├── logging # 日志级别/脱敏
|
||||
└── env # 环境变量
|
||||
```
|
||||
|
||||
## Bootstrap 文件
|
||||
|
||||
放在 agent workspace 根目录:
|
||||
|
||||
- `AGENTS.md` - 操作指令 + 记忆
|
||||
- `SOUL.md` - 人格/边界/语气
|
||||
- `TOOLS.md` - 用户工具说明
|
||||
- `BOOTSTRAP.md` - 一次性引导(运行后删除)
|
||||
- `IDENTITY.md` - agent 名称/风格
|
||||
- `USER.md` - 用户画像
|
||||
|
||||
## SKILL.md 格式(创建自定义技能)
|
||||
|
||||
```markdown
|
||||
---
|
||||
name: my-skill
|
||||
description: 技能描述
|
||||
requires:
|
||||
bins: [node]
|
||||
env: [API_KEY]
|
||||
install:
|
||||
- kind: node
|
||||
package: my-package
|
||||
---
|
||||
# 技能说明和工具定义
|
||||
```
|
||||
|
||||
## 常见工作流
|
||||
|
||||
1. **初始化**: `npm install -g openclaw@latest && openclaw onboard --install-daemon`
|
||||
2. **添加渠道**: `openclaw channels add --channel telegram --token TOKEN`
|
||||
3. **多 agent**: `openclaw agents add work --workspace ~/.openclaw/workspace-work`
|
||||
4. **API 触发**: `curl -X POST http://127.0.0.1:18789/hooks/agent -H 'Authorization: Bearer TOKEN' -d '{"message":"..."}'`
|
||||
5. **诊断**: `openclaw doctor --fix && openclaw status --deep`
|
||||
|
||||
## Related
|
||||
|
||||
- [[Claude Code 配置]]
|
||||
- [[AI 工具链]]
|
||||
403
4 - Resources/OpenVAS Usage Guide.md
Normal file
403
4 - Resources/OpenVAS Usage Guide.md
Normal file
@@ -0,0 +1,403 @@
|
||||
---
|
||||
created: "2026-03-08"
|
||||
type: resource
|
||||
tags:
|
||||
- security
|
||||
- openvas
|
||||
- vulnerability-scanning
|
||||
- homelab
|
||||
---
|
||||
|
||||
# OpenVAS Usage Guide
|
||||
|
||||
Greenbone OpenVAS 漏洞扫描平台使用指南。基于 Greenbone Community Edition,部署在 [[PVE Security Scanner]] 上。
|
||||
|
||||
## Access
|
||||
|
||||
| Item | Value |
|
||||
|------|-------|
|
||||
| URL | `https://192.168.68.84` |
|
||||
| Backup URL | `https://192.168.68.84:9392` |
|
||||
| Username | `admin` |
|
||||
| Certificate | Self-signed (浏览器需接受警告) |
|
||||
|
||||
## Core Concepts
|
||||
|
||||
| Concept | Description |
|
||||
|---------|-------------|
|
||||
| **Target** | 扫描目标,可以是单个 IP、IP 范围、子网 (CIDR) |
|
||||
| **Port List** | 要扫描的端口集合 (默认提供 All TCP, Top 100, Top 1000 等) |
|
||||
| **Scan Config** | 扫描策略,控制检测深度和范围 |
|
||||
| **Task** | 将 Target + Scan Config 组合成一个可执行的扫描任务 |
|
||||
| **Report** | 扫描结果报告,包含发现的漏洞和风险评级 |
|
||||
| **Schedule** | 定时执行扫描任务 |
|
||||
| **Alert** | 扫描完成后的通知动作 (邮件、HTTP 回调等) |
|
||||
| **NVT** | Network Vulnerability Test,单个漏洞检测脚本 |
|
||||
| **CVE** | 公共漏洞编号,OpenVAS 关联 CVE 数据库 |
|
||||
| **CVSS** | 漏洞评分标准 (0-10),用于风险评级 |
|
||||
|
||||
## Scan Configs (扫描策略)
|
||||
|
||||
| Config | Speed | Depth | Use Case |
|
||||
|--------|-------|-------|----------|
|
||||
| **Discovery** | Fast | Low | 仅发现主机和服务,不做漏洞检测 |
|
||||
| **Host Discovery** | Very Fast | Minimal | 只检测主机是否存活 |
|
||||
| **System Discovery** | Fast | Low | 发现操作系统和服务版本 |
|
||||
| **Base** | Medium | Medium | 基础漏洞扫描,不含危险测试 |
|
||||
| **Full and fast** | Medium | High | 完整扫描,跳过慢速 NVT (推荐日常使用) |
|
||||
| **Full and deep** | Slow | Very High | 深度扫描,包含所有 NVT |
|
||||
| **Full and deep ultimate** | Very Slow | Maximum | 包含可能导致服务中断的测试 (慎用) |
|
||||
|
||||
## Quick Start: First Scan
|
||||
|
||||
### Step 1: Create Target
|
||||
|
||||
1. Menu: **Configuration** -> **Targets**
|
||||
2. Click **New Target** (左上角星号图标)
|
||||
3. Fill in:
|
||||
- **Name**: `Internal Network` (或具体名称)
|
||||
- **Hosts**: `192.168.68.0/24` (或单个 IP)
|
||||
- **Port List**: 选择 `All TCP and Nmap top 100 UDP`
|
||||
4. Click **Save**
|
||||
|
||||
### Step 2: Create Task
|
||||
|
||||
1. Menu: **Scans** -> **Tasks**
|
||||
2. Click **New Task** (左上角星号图标)
|
||||
3. Fill in:
|
||||
- **Name**: `Internal Network Scan`
|
||||
- **Scan Targets**: 选择刚创建的 Target
|
||||
- **Scanner**: `OpenVAS Default`
|
||||
- **Scan Config**: 选择策略 (建议首次用 `Full and fast`)
|
||||
4. Click **Save**
|
||||
|
||||
### Step 3: Run Scan
|
||||
|
||||
1. 在 Task 列表中找到刚创建的任务
|
||||
2. 点击绿色 **Start** 按钮 (播放图标)
|
||||
3. Status 会从 `New` -> `Requested` -> `Running` -> `Done`
|
||||
4. 扫描时间取决于目标数量和策略:
|
||||
- 单台主机 Full and fast: 10-30 分钟
|
||||
- /24 子网 Full and fast: 2-8 小时
|
||||
|
||||
### Step 4: View Report
|
||||
|
||||
1. Task 完成后,点击 **Last Report** 日期链接
|
||||
2. 报告页面展示所有发现的漏洞
|
||||
3. 按 Severity 排序查看高危漏洞
|
||||
|
||||
## Report Reading
|
||||
|
||||
### Severity Levels
|
||||
|
||||
| Level | CVSS | Color | Action |
|
||||
|-------|------|-------|--------|
|
||||
| **Critical** | 9.0-10.0 | Purple | 立即修复 |
|
||||
| **High** | 7.0-8.9 | Red | 尽快修复 |
|
||||
| **Medium** | 4.0-6.9 | Orange | 计划修复 |
|
||||
| **Low** | 0.1-3.9 | Blue | 评估后决定 |
|
||||
| **Log** | N/A | Grey | 信息收集,无需操作 |
|
||||
|
||||
### Report Sections
|
||||
|
||||
- **Results**: 所有发现的漏洞列表
|
||||
- **Hosts**: 按主机分组的结果
|
||||
- **Operating Systems**: 检测到的操作系统
|
||||
- **Applications**: 检测到的应用程序
|
||||
- **TLS Certificates**: SSL/TLS 证书信息
|
||||
- **Error Messages**: 扫描过程中的错误
|
||||
|
||||
### Export Report
|
||||
|
||||
1. 打开 Report
|
||||
2. 左上角下拉选择格式:
|
||||
- **PDF** - 适合分享和存档
|
||||
- **CSV** - 适合数据分析
|
||||
- **XML** - 适合导入其他工具
|
||||
- **TXT** - 纯文本摘要
|
||||
3. Click download icon
|
||||
|
||||
## Common Scan Scenarios
|
||||
|
||||
### Scenario 1: Scan Single Server
|
||||
|
||||
**Target**: `192.168.68.31` (PostgreSQL server)
|
||||
**Config**: `Full and fast`
|
||||
**Port List**: `All TCP and Nmap top 100 UDP`
|
||||
|
||||
重点关注:
|
||||
- PostgreSQL 版本漏洞
|
||||
- SSH 配置问题
|
||||
- 系统补丁缺失
|
||||
|
||||
### Scenario 2: Scan Entire Network
|
||||
|
||||
**Target**: `192.168.68.0/24`
|
||||
**Config**: `Full and fast`
|
||||
**Port List**: `All TCP and Nmap top 100 UDP`
|
||||
|
||||
首次扫描建议在非工作时间进行,扫描会产生较大网络流量。
|
||||
|
||||
### Scenario 3: Web Application Scan
|
||||
|
||||
**Target**: Web 服务器 IP
|
||||
**Config**: `Full and deep`
|
||||
**Port List**: `All TCP`
|
||||
|
||||
重点关注:
|
||||
- HTTP 相关漏洞 (XSS, SQL injection, CSRF)
|
||||
- TLS 配置 (弱加密、过期证书)
|
||||
- Web 服务器版本泄露
|
||||
|
||||
### Scenario 4: Compliance Check
|
||||
|
||||
**Target**: 所有关键服务器
|
||||
**Config**: `Full and fast`
|
||||
|
||||
对照报告检查:
|
||||
- 是否有默认密码
|
||||
- 是否有未打补丁的服务
|
||||
- 是否有不安全的协议 (telnet, FTP, SSLv3)
|
||||
|
||||
## Scheduled Scans
|
||||
|
||||
### Create Schedule
|
||||
|
||||
1. Menu: **Configuration** -> **Schedules**
|
||||
2. Click **New Schedule**
|
||||
3. Fill in:
|
||||
- **Name**: `Weekly Internal Scan`
|
||||
- **First Run**: 选择开始时间 (建议非工作时间,如周日凌晨 2:00)
|
||||
- **Period**: `1 week`
|
||||
- **Duration**: 留空 (无时间限制)
|
||||
4. Click **Save**
|
||||
|
||||
### Assign Schedule to Task
|
||||
|
||||
1. Edit existing Task
|
||||
2. **Schedule** 字段选择刚创建的 Schedule
|
||||
3. Save
|
||||
|
||||
Task 会按计划自动执行,报告自动生成。
|
||||
|
||||
## Alerts (通知)
|
||||
|
||||
### Email Alert
|
||||
|
||||
1. Menu: **Configuration** -> **Alerts**
|
||||
2. Click **New Alert**
|
||||
3. Fill in:
|
||||
- **Name**: `High Severity Email`
|
||||
- **Event**: `Task run status changed` -> `Done`
|
||||
- **Condition**: `Severity at least` -> `7.0` (High)
|
||||
- **Method**: `Email`
|
||||
- **To Address**: 你的邮箱
|
||||
- **From Address**: `scanner@localhost`
|
||||
4. Click **Save**
|
||||
5. 在 Task 中关联此 Alert
|
||||
|
||||
Note: 需要配置 VM 的 SMTP 发送邮件。
|
||||
|
||||
## Credential Scans (认证扫描)
|
||||
|
||||
认证扫描可以检测更多漏洞(如本地提权、软件版本),因为扫描器可以登录目标系统。
|
||||
|
||||
### Create SSH Credential
|
||||
|
||||
1. Menu: **Configuration** -> **Credentials**
|
||||
2. Click **New Credential**
|
||||
3. Fill in:
|
||||
- **Name**: `Linux SSH Scan`
|
||||
- **Type**: `Username + SSH Key` 或 `Username + Password`
|
||||
- **Username**: 目标系统的用户名
|
||||
- **Password/Key**: 对应的认证信息
|
||||
- **Auto Generate**: No
|
||||
4. Click **Save**
|
||||
|
||||
### Use in Target
|
||||
|
||||
1. Edit Target
|
||||
2. **SSH Credential** 字段选择创建的 Credential
|
||||
3. Save
|
||||
|
||||
认证扫描会发现更多漏洞(如未打补丁的本地包、内核漏洞)。
|
||||
|
||||
## Performance Tips
|
||||
|
||||
| Tip | Effect |
|
||||
|-----|--------|
|
||||
| 缩小端口范围 | 减少扫描时间 |
|
||||
| 用 `Full and fast` 而非 `Full and deep` | 快 2-5x,覆盖 90% 漏洞 |
|
||||
| 分段扫描大网络 | 避免超时和资源耗尽 |
|
||||
| 避免工作时间扫描 | 减少对生产环境影响 |
|
||||
| 定期更新 Feed | 保持漏洞库最新 |
|
||||
|
||||
## Maintenance
|
||||
|
||||
### Update Vulnerability Feed
|
||||
|
||||
Feed 自动通过 Docker 容器更新。手动触发:
|
||||
|
||||
```bash
|
||||
ssh kai@192.168.68.84
|
||||
cd /opt/greenbone
|
||||
sudo docker compose pull
|
||||
sudo docker compose up -d
|
||||
```
|
||||
|
||||
### Check Feed Status
|
||||
|
||||
Web UI: **Administration** -> **Feed Status**
|
||||
|
||||
| Feed | Description |
|
||||
|------|-------------|
|
||||
| NVT | 漏洞检测脚本 (最重要) |
|
||||
| SCAP | CVE/CPE 数据 |
|
||||
| CERT | 安全公告 |
|
||||
| GVMD_DATA | 扫描策略和端口列表 |
|
||||
|
||||
所有 Feed 应显示 `Current`。如果显示 `Update in progress`,等待同步完成。
|
||||
|
||||
### Backup
|
||||
|
||||
```bash
|
||||
# 备份所有 Docker volumes
|
||||
ssh kai@192.168.68.84
|
||||
cd /opt/greenbone
|
||||
sudo docker compose down
|
||||
sudo tar czf /tmp/greenbone-backup-$(date +%Y%m%d).tar.gz \
|
||||
/var/lib/docker/volumes/greenbone-community-edition_*
|
||||
sudo docker compose up -d
|
||||
```
|
||||
|
||||
### Reset Admin Password
|
||||
|
||||
```bash
|
||||
ssh kai@192.168.68.84
|
||||
cd /opt/greenbone
|
||||
sudo docker compose exec -u gvmd gvmd gvmd --user=admin --new-password=<NEW_PASSWORD>
|
||||
```
|
||||
|
||||
## Report Workflow (报告使用流程)
|
||||
|
||||
### Priority Matrix
|
||||
|
||||
| Priority | CVSS | Example | Timeline | Action |
|
||||
|----------|------|---------|----------|--------|
|
||||
| **Critical** | 9.0-10.0 | 远程代码执行、默认密码、未授权访问 | 24h 内 | 立即修复 |
|
||||
| **High** | 7.0-8.9 | 本地提权、敏感信息泄露、SQL 注入 | 1 周内 | 尽快修复 |
|
||||
| **Medium** | 4.0-6.9 | 弱加密、软件版本过旧、TLS 配置不当 | 1 月内 | 排期修复 |
|
||||
| **Low** | 0.1-3.9 | 信息收集、Banner 暴露、非敏感信息泄露 | 按需 | 评估后决定 |
|
||||
|
||||
### Step-by-Step Workflow
|
||||
|
||||
**Step 1: Export Report**
|
||||
- 打开 Report -> 左上角选择格式
|
||||
- 导出 **PDF** (存档分享) + **CSV** (数据分析)
|
||||
- 建议按日期归档: `scans/2026-03-09-full-network.pdf`
|
||||
|
||||
**Step 2: Triage by Host**
|
||||
- 点 **Hosts** 标签,按漏洞数量排序
|
||||
- 识别问题最多的主机,优先处理
|
||||
|
||||
**Step 3: Analyze Vulnerabilities**
|
||||
- 点进具体漏洞,关注以下字段:
|
||||
- **Summary**: 漏洞描述(是什么)
|
||||
- **Impact**: 被利用后的影响(为什么要修)
|
||||
- **Solution**: 修复建议(怎么修)-- 最有价值的部分
|
||||
- **CVE Reference**: 关联的 CVE 编号(可查详细信息)
|
||||
- **Affected Software/OS**: 受影响的软件版本
|
||||
|
||||
**Step 4: Create Remediation Plan**
|
||||
- 按优先级为每个 Critical/High 漏洞创建修复任务
|
||||
- 记录:主机 IP、漏洞名称、CVE、修复方案、负责人
|
||||
- Medium 漏洞汇总为批量修复任务(如统一升级某软件)
|
||||
|
||||
**Step 5: Fix and Rescan**
|
||||
- 修复完成后,对同一 Target 重新扫描
|
||||
- 对比两次 Report,确认漏洞已消除
|
||||
- Web UI: **Scans** -> **Reports** 可以看历史趋势
|
||||
|
||||
### Recurring Scan Process
|
||||
|
||||
建议建立周期性扫描流程:
|
||||
|
||||
```
|
||||
周日凌晨 2:00 自动全网扫描 (OpenVAS Schedule)
|
||||
|
|
||||
周一上午 查看报告,按优先级分类
|
||||
|
|
||||
周一-周五 修复 Critical 和 High 漏洞
|
||||
|
|
||||
下周日 自动复扫,对比改善情况
|
||||
|
|
||||
每月最后一周 导出月度报告,归档存储
|
||||
```
|
||||
|
||||
Setup: **Configuration** -> **Schedules** -> 创建 Weekly Schedule (Sunday 02:00)
|
||||
|
||||
### Report Comparison (趋势分析)
|
||||
|
||||
跟踪安全改善情况:
|
||||
|
||||
| Metric | How to Track |
|
||||
|--------|-------------|
|
||||
| Critical/High 漏洞数量变化 | 每周报告对比 |
|
||||
| 平均修复时间 | 记录发现日期和修复日期 |
|
||||
| 新增 vs 已修复 | 对比相邻两次扫描 |
|
||||
| 最高风险主机 | 按 Host 的 Severity Score 排序 |
|
||||
|
||||
### Common Findings and Fixes
|
||||
|
||||
| Finding | Typical Fix |
|
||||
|---------|------------|
|
||||
| SSH weak algorithms | 更新 `/etc/ssh/sshd_config` 加密套件 |
|
||||
| SSL/TLS outdated | 升级到 TLS 1.2+,禁用弱密码套件 |
|
||||
| Default credentials | 修改默认密码,禁用默认账户 |
|
||||
| Missing patches | `apt upgrade` / 系统补丁更新 |
|
||||
| Open unnecessary ports | 关闭不需要的服务,配置防火墙 |
|
||||
| HTTP without HTTPS | 配置 TLS 证书,强制 HTTPS 重定向 |
|
||||
| SMBv1 enabled | 禁用 SMBv1,启用 SMBv2/v3 |
|
||||
| SNMP public community | 修改 community string 或禁用 SNMP |
|
||||
|
||||
## CLI Access (gvm-tools)
|
||||
|
||||
除了 Web UI,也可以通过命令行操作:
|
||||
|
||||
```bash
|
||||
ssh kai@192.168.68.84
|
||||
cd /opt/greenbone
|
||||
|
||||
# 进入 gvm-tools 容器
|
||||
sudo docker compose exec gvm-tools bash
|
||||
|
||||
# 列出所有 task
|
||||
gvm-cli --gmp-username admin --gmp-password <PASSWORD> \
|
||||
socket --socketpath /run/gvmd/gvmd.sock \
|
||||
--xml '<get_tasks/>'
|
||||
|
||||
# 列出所有 target
|
||||
gvm-cli --gmp-username admin --gmp-password <PASSWORD> \
|
||||
socket --socketpath /run/gvmd/gvmd.sock \
|
||||
--xml '<get_targets/>'
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
| Problem | Solution |
|
||||
|---------|----------|
|
||||
| Web UI 打不开 | `sudo docker compose ps` 检查容器状态 |
|
||||
| 登录失败 | Reset admin password (见上方) |
|
||||
| Feed 一直 updating | 首次同步需 30-60 分钟,耐心等待 |
|
||||
| 扫描卡在 Requested | 检查 ospd-openvas 容器日志: `sudo docker compose logs ospd-openvas` |
|
||||
| 扫描结果为空 | 确认 Feed 已同步完成;检查目标网络是否可达 |
|
||||
| 只扫到本机 | ospd-openvas 需要 `network_mode: host` 才能到达局域网 |
|
||||
| Feed is syncing | 漏洞库同步中,等几分钟到半小时,Feed Status 全部 Current 后再扫 |
|
||||
| 扫描速度很慢 | 减少目标范围;使用 `Full and fast` 策略 |
|
||||
| 容器反复重启 | `sudo docker compose logs <service>` 查看错误 |
|
||||
| 磁盘空间不足 | `df -h` 检查;清理旧报告和 Docker 无用镜像 `sudo docker system prune` |
|
||||
|
||||
## Related
|
||||
|
||||
- [[PVE Security Scanner]] - 部署文档和安全架构
|
||||
- [[Security Best Practices]]
|
||||
Reference in New Issue
Block a user