首页
好物推荐
薅羊毛领红包
好看壁纸
更多
隐私政策
友情链接
时光机
搜索
1
使用 docker 快速安装 Home Assistant
7,047 阅读
2
Ipad mini2 降级到IOS10.3.3系统
6,439 阅读
3
华为手机开启ADB进行WIFI远程调试
6,092 阅读
4
小米电视做大屏安装火狐浏览器教程
5,270 阅读
5
小米电视开机广告和乐播投屏广告Hosts屏蔽列表
5,044 阅读
无分类
智能家居
心得随想
文档教程
登录
Search
标签搜索
Linux
JS
教程
CSS
HTML
配置
NodeJS
Docker
解决方案
文档
Git
Java
技术培训
Hadoop
Mac
VPS
Windows
RiotJS
Python
Home Assistant
DONG HAO
累计撰写
161
篇文章
累计收到
78
条评论
首页
栏目
无分类
智能家居
心得随想
文档教程
页面
好物推荐
薅羊毛领红包
好看壁纸
隐私政策
友情链接
时光机
搜索到
35
篇与
DONG HAO
的结果
2026-03-11
OpenClaw 完全指南:Docker 部署 · 记忆系统 · 多 Agent
基于 dhso/openclaw-docker 封装,适合快速部署个人 AI 助理。什么是 OpenClaw?OpenClaw 是一个开源的自托管个人 AI 助理网关,让你可以通过钉钉、飞书、QQ、Telegram、WhatsApp 等任意消息渠道与 AI 交互。你在自己的服务器上运行一个 Gateway 进程,它成为消息渠道和 AI 模型之间的桥梁。核心特点:自托管,数据完全自主,不经过第三方支持多渠道同时接入(钉钉/飞书/QQ/Telegram/WhatsApp/Discord)支持多 Agent 并行运行,每个 Agent 有独立人格和记忆内置分层记忆系统,AI 助理拥有真正的长期记忆通过 Skills 扩展能力,支持代码执行、浏览器自动化、图片生成等目录准备工作:VPS 选购与模型配置安全须知Docker 部署渠道接入分层记忆系统QMD 语义记忆搜索多 Agent 模式完整工作流示意推荐技能一、准备工作:VPS 选购与模型配置为什么推荐在 VPS 上用 Docker 部署?OpenClaw 是一个自托管的个人 AI 助理网关,它能执行 shell 命令、读写文件、发送消息,权限相当大。选择合适的部署方式直接影响安全性和稳定性。推荐 VPS + Docker 的理由:优势说明数据自主所有对话、记忆、API Key 都在自己的服务器上,不经过第三方网络稳定VPS 24 小时在线,不依赖本地网络和电脑开机状态容器隔离Docker 提供文件系统和进程隔离,限制 Agent 的"爆炸半径"持久化简单挂载 Volume 即可持久化,升级镜像不丢数据多 Agent 友好一台 VPS 可以跑多个 Agent,资源统一管理易于备份只需备份 /root/.openclaw 目录不推荐本地部署的原因: 本地机器关机即断线,IP 变动影响外部访问,且 Agent 有权限访问本地文件系统风险更高。推荐 VPS 方案RackNerd 黑色星期五促销(续费同价)内存CPU硬盘(SSD)流量带宽价格购买1G1核25G2T/月1Gbps$10.6/年购买2.5G2核45G3T/月1Gbps$18.66/年购买4G3核65G6.5T/月1Gbps$29.98/年购买6G5核100G10T/月1Gbps$44.98/年购买8G6核150G20T/月1Gbps$62.49/年购买多个机房可选,续费同价,适合长期运行 OpenClaw。个人使用推荐 2.5G 或 4G 套餐。推荐 AI 模型套餐OpenClaw 需要配置 AI 模型 API,推荐阿里云百炼系列:套餐适合人群链接AI 大模型入门套餐初次体验,低成本入门立即领取阿里云百炼 Coding Plan开发者,代码/对话场景立即领取阿里云 Coding Plan 接入 OpenClawCoding Plan 提供专属 API Key,通过 OpenAI 兼容接口接入 OpenClaw,支持 Qwen、Kimi、GLM、MiniMax 等多个主流模型,全部免费使用。第一步:获取 Coding Plan 专属 API Key前往 阿里云百炼控制台 获取 Coding Plan 专属 API Key(注意:不是普通百炼 API Key)。第二步:修改 OpenClaw 配置在 ~/.openclaw/openclaw.json 中添加以下配置(将 YOUR_API_KEY 替换为实际 Key):{ "models": { "mode": "merge", "providers": { "bailian": { "baseUrl": "https://coding.dashscope.aliyuncs.com/v1", "apiKey": "YOUR_API_KEY", "api": "openai-completions", "models": [ { "id": "qwen3.5-plus", "name": "qwen3.5-plus(通用对话)", "input": ["text", "image"], "contextWindow": 1000000, "maxTokens": 65536 }, { "id": "qwen3-coder-plus", "name": "qwen3-coder-plus(代码专用)", "contextWindow": 1000000, "maxTokens": 65536 }, { "id": "kimi-k2.5", "name": "kimi-k2.5(长上下文)", "input": ["text", "image"], "contextWindow": 262144, "maxTokens": 32768 } ] } } }, "agents": { "defaults": { "model": { "primary": "bailian/qwen3.5-plus" } } } }更多模型(glm-5、MiniMax-M2.5 等)见官方完整配置。⚠️ 不要直接全量替换配置文件,否则会覆盖已有的钉钉/飞书等渠道配置。请找到对应字段局部合并。第三步:重启生效openclaw gateway restart切换模型# 临时切换(当前会话有效) /model qwen3-coder-plus # 永久切换(修改配置文件中的 primary 字段)支持的模型列表模型特点qwen3.5-plus通用对话,支持图片,100万上下文qwen3-max-2026-01-23高质量推理qwen3-coder-next代码专用qwen3-coder-plus代码专用,100万上下文kimi-k2.5支持图片,长上下文glm-5 / glm-4.7智谱 GLM 系列MiniMax-M2.5MiniMax 系列📖 完整接入文档:阿里云帮助中心 - OpenClaw 接入 Coding Plan二、安全须知OpenClaw 的安全模型⚠️ OpenClaw 是个人助理安全模型,不是多租户隔离系统。一个 Gateway 对应一个信任边界(一个用户/一台 VPS)。核心原则:访问控制 > 模型智能大多数安全问题不是复杂攻击,而是"有人发消息,Bot 照做了"。OpenClaw 的防御思路:身份优先 — 谁能跟 Bot 说话(DM pairing / allowlist)范围其次 — Bot 能在哪里行动(工具权限、沙箱、群组限制)模型最后 — 假设模型可以被操控,设计上限制操控的影响范围关键安全配置1. 必须设置访问 Tokenopenclaw config set gateway.auth.token your-long-random-token不设置 Token,Gateway 拒绝所有 WebSocket 连接(fail-closed)。2. DM 访问策略{ channels: { dingtalk: { dmPolicy: "allowlist", // 只允许白名单用户 allowFrom: ["manager9327"] } } }pairing(默认):陌生人需要配对码审批allowlist:只允许白名单,陌生人直接拒绝open:任何人都能发消息(⚠️ 危险,慎用)3. Docker 防火墙(重要!)Docker 发布的端口会绕过 UFW 的 INPUT 规则,需要在 DOCKER-USER 链中配置:# /etc/ufw/after.rules 末尾追加 *filter :DOCKER-USER - [0:0] -A DOCKER-USER -m conntrack --ctstate ESTABLISHED,RELATED -j RETURN -A DOCKER-USER -s 127.0.0.0/8 -j RETURN -A DOCKER-USER -s 10.0.0.0/8 -j RETURN -A DOCKER-USER -s 192.168.0.0/16 -j RETURN -A DOCKER-USER -m conntrack --ctstate NEW -j DROP -A DOCKER-USER -j RETURN COMMIT然后 ufw reload 生效。💡 新手提示: 如果你的 VPS 只在局域网或内网使用,或者已经通过云服务商的安全组限制了端口访问,可以跳过此步骤。UFW + Docker 的防火墙配置主要针对公网暴露的场景。4. 工具权限最小化对于群聊 Agent 或多人共用的 Agent,限制危险工具:{ tools: { deny: ["gateway", "cron", "sessions_spawn", "sessions_send"] } }5. 沙箱隔离(可选)开启 Docker 沙箱,让工具执行在隔离容器内运行:{ agents: { defaults: { sandbox: { mode: "non-main", // 非主会话启用沙箱 scope: "session" } } } }6. 定期安全审计openclaw security audit openclaw security audit --deep openclaw security audit --fix # 自动修复部分问题Prompt Injection 防护AI 助理的特殊风险:攻击者可以通过消息内容操控模型执行恶意操作。降低风险的措施:保持 DM 白名单,不要对陌生人开放群聊中使用 requireMention: true,避免 Bot 响应所有消息对 web_fetch、browser 等读取外部内容的工具保持警惕使用最新、最强的模型:新一代模型对 prompt injection 的抵抗力显著更强文件权限chmod 700 ~/.openclaw chmod 600 ~/.openclaw/openclaw.json三、Docker 部署前置要求Docker 已安装开放端口 18789(Web 控制台)1. 初始化配置(首次运行)docker run --rm -it \ -e TZ=Asia/Shanghai \ -v openclaw_data:/root/.openclaw \ dhso/openclaw:latest \ openclaw onboard2. 配置网关# 本地网关模式 docker run --rm -e TZ=Asia/Shanghai \ -v openclaw_data:/root/.openclaw \ dhso/openclaw:latest \ openclaw config set gateway.mode local # 绑定局域网 docker run --rm -e TZ=Asia/Shanghai \ -v openclaw_data:/root/.openclaw \ dhso/openclaw:latest \ openclaw config set gateway.bind lan # 配置可信代理 docker run --rm -e TZ=Asia/Shanghai \ -v openclaw_data:/root/.openclaw \ dhso/openclaw:latest \ openclaw config set gateway.trustedProxies '["127.0.0.1", "::1", "10.0.0.0/8"]' # 设置访问 Token docker run --rm -e TZ=Asia/Shanghai \ -v openclaw_data:/root/.openclaw \ dhso/openclaw:latest \ openclaw config set gateway.auth.token your_token # ⚠️ 2026.2.17+ 版本必须配置此项,否则启动失败 docker run --rm -e TZ=Asia/Shanghai \ -v openclaw_data:/root/.openclaw \ -v openclaw_cache:/root/.cache \ dhso/openclaw:latest \ openclaw config set gateway.controlUi.dangerouslyAllowHostHeaderOriginFallback true # 健康检查修复 docker run --rm -e TZ=Asia/Shanghai \ -v openclaw_data:/root/.openclaw \ dhso/openclaw:latest \ openclaw doctor --fix3. 启动服务docker run -d \ --name claw \ -e TZ=Asia/Shanghai \ -v openclaw_data:/root/.openclaw \ -v openclaw_cache:/root/.cache \ --restart=unless-stopped \ -p 18789:18789 \ dhso/openclaw:latest \ openclaw gateway run访问 http://ip:18789 打开 Web 控制台。4. 使用 docker-compose(推荐)比一堆 docker run 命令更易维护,推荐生产环境使用:# docker-compose.yml services: claw: image: dhso/openclaw:latest container_name: claw restart: unless-stopped environment: - TZ=Asia/Shanghai volumes: - openclaw_data:/root/.openclaw - openclaw_cache:/root/.cache ports: - "18789:18789" command: openclaw gateway run volumes: openclaw_data: openclaw_cache:# 启动 docker compose up -d # 查看日志 docker compose logs -f claw # 重启 docker compose restart claw # 停止 docker compose down数据持久化说明卷路径说明openclaw_data/root/.openclaw配置、插件、workspace、记忆文件openclaw_cache/root/.cache模型缓存(QMD 本地模型等)⚠️ 需要持久化的文件必须放在 /root/.openclaw 下,容器重启后其他目录会丢失。四、渠道接入OpenClaw 支持多种即时通讯渠道,通过渠道插件将 AI 助理接入你常用的平台。以下是目前支持的主要渠道及接入文档。支持的渠道渠道适用场景接入难度钉钉企业内部、团队协作⭐⭐⭐飞书企业内部、团队协作⭐⭐⭐QQ个人使用、小圈子⭐⭐Telegram个人使用、海外团队⭐WhatsApp个人使用、海外沟通⭐Discord开发者社区⭐⭐钉钉接入通过钉钉应用与机器人,实现用户与机器人对话,驱动 OpenClaw 完成相关任务。接入步骤概览:创建钉钉应用,获取 Client ID 和 Client Secret创建钉钉机器人(Stream 模式)创建卡片模板(AI 卡片,支持流式返回)申请权限:Card.Streaming.Write、Card.Instance.Write、qyapi_robot_sendmsg发布应用,添加机器人到群聊或单聊使用📖 详细接入文档:钉钉接入指南官方文档:OpenClaw 钉钉通道飞书接入通过飞书应用与机器人,实现用户通过飞书与机器人对话,驱动 OpenClaw 完成相关任务。接入步骤概览:在飞书开放平台创建企业自建应用,获取 App ID 和 App Secret配置应用权限(批量导入 JSON 权限配置)启用机器人能力,配置事件订阅(长连接模式,添加 im.message.receive_v1 事件)发布应用在飞书中找到机器人,发送消息获取配对码,运行 openclaw pairing approve feishu <配对码> 完成授权📖 详细接入文档:飞书接入指南官方文档:OpenClaw 飞书通道QQ 接入通过 QQ 机器人实现用户通过 QQ 与机器人对话,驱动 OpenClaw 完成相关任务。接入步骤概览:登录 QQ 开放平台,注册账号并绑定 QQ(不能直接用 QQ 账号登录)创建机器人,获取 AppID 和 AppSecret将 AppID 和 AppSecret 填入 OpenClaw 配置将 VPS 公网 IP 加入白名单(curl ifconfig.me 获取)配置沙箱环境,添加测试成员,扫码绑定手机 QQ📖 详细接入文档:QQ 接入指南通用配置说明所有渠道接入后,在 openclaw.json 中配置 binding 将渠道路由到对应 Agent:{ bindings: [ { agentId: "main", match: { channel: "dingtalk", accountId: "default" } }, { agentId: "main", match: { channel: "feishu", accountId: "default" } } ] }多渠道、多账号的路由规则详见第六章:多 Agent 模式。五、分层记忆系统OpenClaw 的记忆系统基于文件系统实现,让 AI 助理拥有跨会话的长期记忆。记忆金字塔 核心记忆 MEMORY.md ← 关键人物、偏好、重要决策(主会话专用) ↑ 年度记忆 YYYY.md ← 年度里程碑、高度提炼 ↑ 月度记忆 YYYY-MM.md ← 月度重要事件、决策汇总 ↑ 每日记忆 YYYY-MM-DD.md ← 当日事件摘要(原始记录,不修改) ↑ 临时记忆 YYYY-MM-DD-HHMM.md ← 完整会话记录(30天后自动删除)文件结构workspace/ ├── MEMORY.md # 核心记忆(永久,主会话专用) └── memory/ ├── 2026.md # 年度记忆 ├── 2026-03.md # 月度记忆 ├── 2026-03-11.md # 每日记忆 └── 2026-03-11-1041.md # 临时会话记录(30天后删除)各层说明层级文件格式生命周期说明临时记忆YYYY-MM-DD-HHMM.md30天完整会话转录,系统自动生成每日记忆YYYY-MM-DD.md永久当日重要事件摘要,原始记录不修改月度记忆YYYY-MM.md永久月度汇总,可优化合并年度记忆YYYY.md永久年度提炼,高层次总结核心记忆MEMORY.md永久关键信息快速访问,仅主会话加载自动维护 Cron 任务每日凌晨 2:00 → 汇总临时记忆到每日记忆,清理 30 天前的临时文件 每周一凌晨 3:00 → 提取上周每日记忆重要内容到月度记忆 每月 1 号凌晨 4:00 → 提取上月月度记忆重要内容到年度记忆 每年 1 月 1 日凌晨 5:00 → 优化年度记忆,高度提炼# 查看当前 cron 任务 openclaw cron list # 添加每日记忆维护任务(示例) openclaw cron add \ --name "每日记忆维护" \ --schedule "cron 0 2 * * * @ Asia/Shanghai" \ --task "汇总昨天的临时记忆到每日记忆文件,清理30天前的临时记忆,更新QMD索引" \ --target isolated手动触发记忆维护如果 cron 任务从未运行过(状态为 idle),或者需要立即整理记忆,可以直接告诉 Agent:"帮我维护一次记忆,把最近的临时记忆汇总到每日记忆,并更新月度记忆"Agent 会读取所有临时记忆文件,提炼重要内容写入对应的每日/月度记忆文件,并更新 MEMORY.md。MEMORY.md 安全策略MEMORY.md 包含个人敏感信息,仅在主会话(私聊/DM)中加载,群聊和共享会话不会加载此文件,防止隐私泄露。六、QMD 语义记忆搜索QMD(Quantum Memory Database)是 OpenClaw 内置的 Markdown 语义搜索引擎。安装npm install -g @tobilu/qmd初始化索引cd ~/.openclaw/workspace qmd collection add . --name memory-files --mask "{MEMORY.md,memory/**/*.md}" qmd status三种搜索模式1. qmd search — BM25 全文检索(推荐,无 GPU 环境)速度快,无需 GPU,适合大多数 VPS 环境。qmd search "老板 钉钉" -c memory-files qmd search "数据库决策" -c memory-files --full qmd search "待办事项" -c memory-files --files -n 5原理:BM25 算法对关键词进行词频统计和逆文档频率加权,中文建议用关键词组合而非长句。2. qmd query — 混合语义搜索(需 GPU 或高性能 CPU)向量搜索 + 关键词搜索 + 重排序,理解自然语言语义,搜索质量最高。qmd query "上次讨论的技术选型结论是什么" -c memory-files qmd query "最近的重要决策" -c memory-files --min-score 0.7工作原理:Query Expansion → Vector Search → BM25 → Reranking(Qwen3-Reranker-0.6B)⚠️ 无 GPU 的低配 VPS 建议只用 qmd search3. qmd vsearch — 纯向量相似度搜索qmd vsearch "项目里程碑" -c memory-files -n 5精确读取qmd get memory/2026-02.md qmd get MEMORY.md:5 -l 10 qmd multi-get "memory/2026-*.md" -l 50典型流程用户问:"老板的钉钉 ID 是多少?" ↓ qmd search "老板 钉钉 ID" -c memory-files -n 3 ↓ 找到 MEMORY.md 第 5-8 行 ↓ qmd get MEMORY.md:5 -l 4 ↓ 返回答案索引维护qmd update # 新增文件后更新索引 qmd embed -f # 重新生成向量嵌入 qmd cleanup # 清理缓存 qmd status # 查看状态七、多 Agent 模式一个 Gateway 进程里运行多个完全隔离的 Agent,每个 Agent 有独立的 Workspace、Session Store、Skills 和 Auth。核心概念概念说明agentIdAgent 唯一标识,对应一套 workspace + sessionaccountId渠道账号实例(如不同钉钉机器人)binding路由规则,决定消息发给哪个 Agent路由优先级(从高到低)peer 精确匹配(指定 DM/群组 ID)parentPeer 匹配(线程继承)guildId + roles(Discord 角色路由)accountId 匹配(指定渠道账号)渠道级匹配(accountId: "*")默认 Agent(default: true 或第一个)配置示例{ agents: { list: [ { id: "main", default: true, workspace: "~/.openclaw/workspace" }, { id: "work", workspace: "~/.openclaw/workspace-work", agentDir: "~/.openclaw/agents/work/agent" } ] }, bindings: [ { agentId: "main", match: { channel: "whatsapp", accountId: "personal" } }, { agentId: "work", match: { channel: "whatsapp", accountId: "biz" } } ] }我这边的实际配置(3 个 Agent)通过钉钉不同机器人账号路由到不同 Agent:Agent ID名字钉钉账号Workspacemain小海狮xiaohaishiworkspace/xiaolongxia小龙虾xiaolongxiaworkspace-xiaolongxia/xiaopangxie小螃蟹xiaopangxieworkspace-xiaopangxie/{ bindings: [ { agentId: "main", match: { channel: "dingtalk", accountId: "xiaohaishi" } }, { agentId: "xiaopangxie", match: { channel: "dingtalk", accountId: "xiaopangxie" } }, { agentId: "xiaolongxia", match: { channel: "dingtalk", accountId: "xiaolongxia" } } ] }每个 Agent 完全独立:独立人格文件(SOUL.md/IDENTITY.md)、独立记忆、独立技能、独立 cron 任务。添加新 Agentopenclaw agents add <agentId> openclaw agents list --bindingsper-Agent 工具限制(适合多人共用){ agents: { list: [{ id: "family", sandbox: { mode: "all", scope: "agent" }, tools: { allow: ["read", "exec", "sessions_list"], deny: ["write", "edit", "browser"] } }] } }Agent 间通信(默认关闭){ tools: { agentToAgent: { enabled: true, allow: ["main", "xiaolongxia", "xiaopangxie"] } } }开启后 Agent 可通过 sessions_send 工具互相协作。八、完整工作流示意用户发消息(钉钉/WhatsApp/Telegram) ↓ Gateway 根据 binding 路由到对应 Agent ↓ Agent 启动,读取 SOUL.md / USER.md / 今日记忆 / MEMORY.md ↓ 处理请求,必要时调用 qmd search 检索历史记忆 ↓ 完成任务,将重要信息写入 memory/YYYY-MM-DD.md ↓ 凌晨 2:00 cron 自动汇总 → 每日记忆 ↓ 每周一 3:00 cron 自动汇总 → 月度记忆 ↓ 每月 1 号 4:00 cron 自动汇总 → 年度记忆九、推荐技能OpenClaw 的技能(Skills)是模块化的能力扩展包,放在 workspace/skills/ 或 ~/.openclaw/skills/ 下,Agent 启动时自动加载。这里重点介绍两个让 Agent 持续进化的核心技能。self-improvement — 持续自我改进技能名: self-improvement作用: 让 Agent 记录错误、纠正和学习,实现跨会话的持续改进。触发场景情况动作命令执行失败记录到 .learnings/ERRORS.md用户纠正 Agent记录到 .learnings/LEARNINGS.md(category: correction)用户要求不存在的功能记录到 .learnings/FEATURE_REQUESTS.md发现更好的方法记录到 .learnings/LEARNINGS.md(category: best_practice)文件结构workspace/ └── .learnings/ ├── LEARNINGS.md # 纠正、知识盲区、最佳实践 ├── ERRORS.md # 命令失败、异常 └── FEATURE_REQUESTS.md # 用户请求的新功能记录格式示例## [LRN-20260311-001] correction **Logged**: 2026-03-11T10:00:00Z **Priority**: medium **Status**: pending **Area**: config ### Summary 交付物应放在 agent_temp 目录下,不是 docs/ ### Details 用户纠正:任务产物必须放在 agent_temp/<任务名-日期>/ 下 ### Suggested Action 在 AGENTS.md 中强化此规则,每次任务前检查晋升机制当某条学习记录具有普遍意义时,可以"晋升"到长期记忆:目标文件适合内容SOUL.md行为准则AGENTS.md工作流规范MEMORY.md重要经验教训TOOLS.md工具使用注意事项晋升后将条目状态改为 promoted,注明目标文件。快速查看待处理记录grep -h "Status**: pending" .learnings/*.md | wc -l grep -B5 "Priority**: high" .learnings/*.md | grep "^## \["skill-creator — 技能创建向导技能名: skill-creator作用: 引导 Agent 创建新技能,将重复性工作封装成可复用的技能包。什么是技能?技能是"领域专家的入职指南"——把特定领域的工作流、工具集成、领域知识打包,让 Agent 从通用助理变成专业助理。技能结构skill-name/ ├── SKILL.md # 必须,包含 frontmatter + 使用说明 ├── scripts/ # 可执行脚本(Python/Bash) ├── references/ # 参考文档(按需加载) └── assets/ # 输出资源(模板、图片等)SKILL.md frontmatter 示例:--- name: my-skill description: "做什么、什么时候用。Use when: (1) 场景一, (2) 场景二" ---⚠️ description 是技能触发的核心,必须清晰描述"什么时候用"。创建流程1. 明确需求 → 收集具体使用场景 2. 规划内容 → 确定需要哪些 scripts/references/assets 3. 初始化 → python3 scripts/init_skill.py <skill-name> --path ./skills/ 4. 编写内容 → 实现脚本、写 SKILL.md 5. 打包 → python3 scripts/package_skill.py ./skills/<skill-name> 6. 迭代 → 实际使用后持续优化设计原则简洁优先:上下文窗口是公共资源,只写 Agent 不知道的内容渐进式披露:SKILL.md 控制在 500 行内,详细内容放 references/代码优于描述:能用脚本解决的,不要让 Agent 反复推理安装技能# 从 ClawHub 安装 clawhub install <skill-name> # 本地打包安装 python3 scripts/package_skill.py ./skills/my-skill cp my-skill.skill ~/.openclaw/skills/其他实用技能推荐技能名作用安装qmd语义记忆搜索,详见第六章内置browser-automationPlaywright 浏览器自动化,网页抓取、表单填写、截图clawhub install browser-automationweb-content-fetcher抓取 JS 渲染页面内容,突破反爬限制clawhub install web-content-fetchergithubGitHub Issues/PR/CI 管理,gh CLI 封装clawhub install githubnano-banana-proAI 图片生成(Gemini 3 Pro Image)clawhub install nano-banana-proclaude-codeClaude Code CLI,多文件代码重构和调试clawhub install claude-code📖 更多技能:ClawHub 技能市场相关资源资源链接Docker 镜像dhso/openclaw-dockerOpenClaw 官方文档https://docs.openclaw.ai多 Agent 文档https://docs.openclaw.ai/concepts/multi-agent安全配置文档https://docs.openclaw.ai/gateway/securityClawHub 技能市场https://clawhub.com无影灵构帮助中心https://docs-lincore.wuying.com阿里云 Coding Planhttps://help.aliyun.com/zh/model-studio/openclaw-coding-planOpenClaw 社区 Discordhttps://discord.com/invite/clawd
2026年03月11日
46 阅读
0 评论
0 点赞
2025-10-16
免费使用vscode copilot - oai2ollama vscode插件
Oai2Ollama 是一个 基于 oai2ollama 实现的 VSCode 插件,提供集成的 HTTP 服务器,将 OpenAI 兼容的 API 封装并暴露为 Ollama 兼容的 API。这使得只支持 Ollama 的编程助手(如 VSCode 中的 GitHub Copilot)能够使用自定义的 OpenAI 兼容 API。功能特性集成 HTTP 服务器:无需外部依赖 - 服务器直接在插件中运行启动/停止/重启服务:使用简单命令控制服务端口占用检测:自动检测并处理端口冲突状态栏集成:在状态栏一目了然地查看服务状态配置管理:通过 VSCode 设置配置所有选项自动启动:可选择在 VSCode 启动时自动启动服务输出通道:在专用输出通道查看服务日志和请求完整 API 兼容性:实现了 Ollama 和 OpenAI v1 端点系统要求无需外部依赖! 插件包含了实现所有 oai2ollama 功能的内置 HTTP 服务器。配置项必需配置oai2ollama.apiKey:用于身份验证的 API 密钥(或设置 OPENAI_API_KEY 环境变量)oai2ollama.baseUrl:OpenAI 兼容 API 的基础 URL(或设置 OPENAI_BASE_URL 环境变量)可选配置oai2ollama.host:API 服务器的 IP/主机名(默认:localhost)oai2ollama.port:API 服务器的端口(默认:11434)oai2ollama.capabilities:标记模型支持的额外能力可选项:tools、insert、vision、embedding、thinking、completion注意:completion 能力总是自动包含,即使不指定这些与 Ollama 当前使用的能力匹配查看 CAPABILITIES.md 了解详细说明和示例oai2ollama.models:在 /api/tags 响应中包含的额外模型适用于上游 /models 端点未返回的模型oai2ollama.autoStart:VSCode 启动时自动启动服务(默认:false)快速配置{ "oai2ollama.apiKey": "your_apikey", "oai2ollama.baseUrl": "https://your_openai_url/v1/", "oai2ollama.capabilities": [ "tools", "vision", "thinking" ], "oai2ollama.models": [ "claude-3-5-haiku-20241022", "claude-3-7-sonnet-20250219", "claude-sonnet-4-20250514", "claude-opus-4-20250514", "claude-opus-4-1-20250805", "claude-sonnet-4-5-20250929" ] }命令从命令面板(Ctrl+Shift+P / Cmd+Shift+P)访问这些命令:Oai2Ollama: Start Service - 启动集成服务器 Oai2Ollama: Stop Service - 停止运行的服务器 Oai2Ollama: Restart Service - 重启服务器 Oai2Ollama: Show Status - 显示详细的服务状态和可用端点 Oai2Ollama: Open Settings - 打开插件设置使用方法初始设置安装插件 oai2ollama点击底部状态栏插件设置,打开设置配置你的 API 密钥和基础 URL使用 Oai2Ollama: Start Service 命令启动服务管理copilot模型选择 ollama添加模型成功状态栏状态栏显示当前服务状态:✓ Oai2Ollama :11434 - 服务正在端口 11434 上运行⊘ Oai2Ollama - 服务已停止(警告背景)点击状态栏项目可打开快速操作菜单,提供以下选项:启动服务(停止时显示)停止服务(运行时显示)重启服务(运行时显示)显示状态 - 查看详细状态信息打开设置 - 配置插件无需使用命令面板,即可快速访问所有控制功能。小技巧判断自己服务配置是否成功,可以浏览器访问如下地址。端口冲突处理如果配置的端口已被占用,插件将提示你终止占用端口的进程。请检查是否本地开启了ollama服务,或者其他占用了11434端口的进程。
2025年10月16日
183 阅读
0 评论
0 点赞
2025-05-09
计算大模型需要的GPU内存
计算大模型需要的GPU内存一个大模型需要多大 GPU 内存才能跑起来的计算公式:M = ((P * 4B) / (32 / Q) ) * 1.2M: 所需的 GPU 显存,单位是 GB。P: 模型的参数数量。例如,7B 模型有 70 亿个参数。4B: 每个参数占用的字节数,这里假设每个参数占用 4 个字节(通常指 FP32 或 Float32 格式)。32: 4 个字节等于 32 位。Q: 加载模型时使用的位数。例如,16 位 (FP16/BF16),8 位 (INT8) 或 4 位 (INT4)。这通常称为量化。1.2: 表示额外开销的系数,通常为 20%。这考虑了除了模型权重之外还需要加载到 GPU 显存中的其他数据,例如优化器状态、梯度等。举个例子:使用 FP16 量化加载 Llama 70B 模型,计算过程就是 M = ( (70,000,000,000 4) / (32 / 16) ) 1.2 = 168 GB
2025年05月09日
162 阅读
0 评论
0 点赞
2025-02-10
AI模型逻辑判断能力测试题
1. numbers由几个字母组成? 答案:7个。2. 7年前,妈妈的年龄是儿子的6倍,儿子今年12岁,妈妈今年几岁? 答案:37岁。3. 有一串彩珠,按2红3绿4黄的顺序依次排列,第600颗是什么颜色? 答案:黄色。4. 把一堆小棒分成10堆,每堆小棒根数都是单数,且一堆比一堆少2根,应如何分? 答案:17 15 13 11 9 7 5 3 1。5. 李白最长的一首诗? 答案:《经乱离后天恩流夜郎忆旧游书怀赠江夏韦太守良宰》。6. 小明45元卖出一顶帽子,收到一张100元假钞,找零55元,帽子进货价15元一顶,如果小明不知道他收到的是一张假钞,请问小明亏了多少钱? 答案:70元,成本15+找零55。7. 我的弟弟今年3岁了,姐姐的年龄是弟弟的2倍,当弟弟79岁时,姐姐将是多少岁? 答案:82岁。8. 壮壮数他家的鸡和兔,有头共16个,有脚共44只,问:壮壮家的鸡和兔共有多少只? 答案:鸡有10只,兔有6只。9. 张三打了李四一巴掌,李四对张三说:“你是不是没吃饭”,李四说这句话含义是? 答案:含义是张三打的轻了。10. 用5个1怎么计算得到6? 答案:(1+1)*(1+1+1)=6。11. 开车变道时为啥就算后面没车也要打转向灯? 答案:形成肌肉记忆,养成好习惯。12. 一斤铁和一斤棉花谁重? 答案:一样重。13. 如果一个球的直径为6厘米,那么它的体积是多少? 答案:113.1立方厘米。14. 牵牛花也叫爬山虎对吗? 答案:不对。15. 能否被正整数2和3整除? 答案:不能。16. 妈妈掉水里先吃饼干还是巧克力? 答案:先救妈妈。17. 爷爷和奶奶能不能结婚?18. 来了7个领导只准备了6根烟怎么办?19. 番茄炒洗衣机怎么制作?20. 小明的爸爸有3个儿子,老大叫大毛,老二叫二毛,小明喜欢踢足球,老三叫什么?21. 蓝牙耳机坏了挂牙科还是耳科?22. 蒸1个包子要10分钟,蒸十个包子要多久?23. 父亲和母亲能结婚吗24. 金融危机将在什么发生25. 张三和小明正在谈论小红,突然小红迎面走来过来,张三说:“真是说曹操曹操就到”,请问谁到了?26. 有两个瓶子,一个装有3升水,另一个装有5升水,问如何只用这两个瓶子得到4升水?27. 我左手有个苹果手机,右手有个华为手机,现在我把左右手的手机交换一下,问,左手是什么手机?28. 假设我双手无法活动,我要怎么才能把地上的球运到家?29. 假设我左手食指的位置上有颗痣,右手中指的位置上有颗痣,现在我把左右手的手交换一下位置,左手食指还有痣吗?30. 改正语句:你到看的时一片精菜的说小,描了述小王在禛上遇道阿sir的故式. 答案:你看到的是一篇精彩的小说,描述了小王在镇上遇到阿Sir的故事。31. 列出最常见的20中水果名称 答案: 1.要求不得重复 2.只能出现水果名称,而不能出现加工名称如柿饼32. 把下面从大到小排序 0 - 187 次 1 - 100 次 2 - 225 次 3 - 128 次 4 - 64 次 5 - 92 次 6 - 69 次 7 - 206 次 8 - 127 次 9 - 65 次 答案: 2 - 225 次 7 - 206 次 0 - 187 次 3 - 128 次 8 - 127 次 1 - 100 次 5 - 92 次 6 - 69 次 9 - 65 次 4 - 64 次
2025年02月10日
545 阅读
0 评论
0 点赞
2025-01-15
在 Deepin 系统中使用 create_ap 命令行创建 AP 热点
在Deepin系统中使用create_ap命令行创建AP热点在Deepin系统中,有时候我们需要将自己的电脑设置为一个无线热点,方便其他设备连接。使用create_ap命令行工具可以轻松实现这一需求。下面就为大家详细介绍在Deepin系统中使用create_ap命令行创建AP热点的方法。一、下载并编译create_ap克隆仓库首先,我们需要从GitHub上克隆create_ap的代码仓库。在终端中输入以下命令:git clone https://github.com/oblique/create_ap这行命令会将create_ap的代码下载到当前目录下,你可以在下载完成后通过文件管理器查看。进入目录并安装下载完成后,进入到create_ap目录中,执行编译和安装操作:cd create_ap make installmake install命令会自动编译代码并将create_ap安装到系统中,这样我们就可以在系统的任何位置使用create_ap命令了。二、使用命令ifconfig查看网卡在创建AP热点之前,我们需要明确自己电脑的有线网卡和无线网卡名称。在Deepin系统中,可以使用ifconfig命令来查看。在终端中输入ifconfig,会列出当前系统中所有的网络接口信息。一般来说,有线网卡的名称可能类似enp2s0,无线网卡的名称可能类似wlx502b730853a1 。不同电脑的网卡名称可能会有所不同,你需要仔细辨别。三、测试创建AP热点当我们完成了create_ap的安装并且确定了有线网卡和无线网卡名称后,就可以使用create_ap命令来创建AP热点进行测试了。命令格式如下:sudo create_ap [无线网卡名称] [有线网卡名称] [热点名称] [热点密码]例如,如果你的无线网卡是wlx502b730853a1,有线网卡是enp2s0,热点名称想设置为wifi_name,密码设置为wifi_password,那么在终端中输入的命令就是:sudo create_ap wlx502b730853a1 enp2s0 wifi_name wifi_password执行命令后,系统会开始创建AP热点。此时,使用其他支持无线连接的设备(如手机、笔记本电脑等)搜索附近的无线网络,应该能够发现名为wifi_name的热点。尝试连接该热点,输入密码wifi_password,如果连接成功,并且设备能够正常访问互联网,说明热点创建和网络共享功能正常。四、编辑配置文件为了让热点设置更加持久和方便管理,我们可以编辑/etc/create_ap.conf文件。在终端中使用文本编辑器(如sudo nano /etc/create_ap.conf)打开该文件,并将以下内容修改为自己的实际配置:WIFI_IFACE=wlx502b730853a1 INTERNET_IFACE=enp2s0 SSID=wifi_name PASSPHRASE=wifi_password修改完成后,保存并关闭文件。这样下次使用create_ap时,就会按照配置文件中的设置来创建热点,无需每次都在命令行中输入参数。配置文件解释 :CHANNEL=default:无线热点的频道设置为默认信道。 GATEWAY=10.0.0.1:设置无线热点的网关地址为10.0.0.1。 WPA_VERSION=2:设置无线热点使用的WPA版本为2。 ETC_HOSTS=0:禁用/etc/hosts文件的解析。 DHCP_DNS=gateway:设置无线热点的DHCP DNS服务器为网关地址。 NO_DNS=0:启用无线热点的DNS服务器。 NO_DNSMASQ=0:启用DNSMASQ服务。 HIDDEN=0:无线热点的SSID不隐藏。 MAC_FILTER=0:禁用MAC地址过滤。 MAC_FILTER_ACCEPT=/etc/hostapd/hostapd.accept:指定MAC地址过滤的白名单文件路径。 ISOLATE_CLIENTS=0:不隔离连接到无线热点的客户端之间的通信。 SHARE_METHOD=nat:使用NAT方式进行无线热点的Internet共享。 IEEE80211N=0:禁用802.11n标准。(2.4G) IEEE80211AC=0:禁用802.11ac标准。(5G) HT_CAPAB=[HT40+]:启用HT40+高级设置。 VHT_CAPAB=:未指定VHT_CAPAB。 DRIVER=nl80211:使用nl80211驱动程序。 NO_VIRT=0:启用虚拟无线接口。 COUNTRY=:未指定国家代码。 FREQ_BAND=2.4:设置频段为2.4GHz。 NEW_MACADDR=:未指定新的MAC地址。 DAEMONIZE=0:不将create_ap进程置于后台运行。 NO_HAVEGED=0:启用haveged服务。 WIFI_IFACE=wlp3s0:指定用于创建无线热点的无线网卡接口。 INTERNET_IFACE=enp1s0:指定用于连接到Internet的有线网卡接口。 SSID=0125:设置无线热点的SSID为0125。 PASSPHRASE=12345678:设置无线热点的密码为12345678。 USE_PSK=0:禁用预共享密钥(PSK)。列出网卡支持信道sudo iwlist wlp3s0 channel通过create_ap修改信道CHANNEL=8:无线热点的频道设置为信道8。 FREQ_BAND=2.4:设置频段为2.4GHz。CHANNEL=36:无线热点的频道设置为信道36。 FREQ_BAND=5:设置频段为5GHz。五、加入系统自启动为了让AP热点在系统启动时自动创建,我们需要将create_ap服务(/usr/lib/systemd/system/create_ap.service)加入到系统自启动项中。在终端中依次执行以下命令:systemctl daemon-reload systemctl enable create_ap.service systemctl start create_ap.servicesystemctl daemon-reload命令用于重新加载系统服务配置,确保系统识别到最新的服务设置。systemctl enable create_ap.service命令将create_ap服务设置为开机自启,而systemctl start create_ap.service命令则是立即启动create_ap服务。通过以上步骤,我们就可以在Deepin系统中使用create_ap命令行方式轻松创建AP热点,并实现了热点的测试、配置文件管理以及系统自启动功能。
2025年01月15日
297 阅读
0 评论
0 点赞
2024-12-30
P106-100 显卡配置说明
P106-100 显卡性能简介P106-100 显卡由完整的 1060 核心 gp106 阉割输出接口而来,其性能与 1060 6g 几乎一致,在部分跑分测试软件中甚至能超越 1066。虽然因非独显直连会有性能损失,导致游戏部分帧数相差 10 几帧,但该损失几乎可忽略不计,可将其当作 1060 或 1066 使用。新驱动安装说明官网的游戏驱动仅更新到 417.22 版本,过于陈旧。若要安装 23 年 12 月最新的 546.29 驱动,只需以下三步:第一步,进 bios 设核显优先,在 cms 中设显示设备为 uefi only;第二步,使用 ddu 清理之前的驱动,新系统可忽略此步;第三步,导入证书后打驱动。若想了解更多关于此卡的玩法,可到百度贴吧 p106 吧查看。硬件与系统要求必须使用核显 U,建议选择 4 代以上的产品。这是因为 P106-100 显卡的工作方式依赖于核显的支持,合适的核显 U 能确保显卡稳定运行并发挥最佳性能。同时,系统建议使用 WIN10 版本号 22H2 及以上,最好安装 WIN11,其对硬件的调度更为出色,兼容性也更好,不过要注意 win7 系统不支持该显卡。详细配置步骤分解检查硬盘分区格式与系统:验货后,需查看硬盘分区格式是否为 gpt,若不是则需重做磁盘格式并重装系统。BIOS 设置:通用设置:开机进 BIOS,将核显设为优先输出,一般在高级选项里将主要显示设备设置成 IGFX,在启动选项中找到 CMS 并关闭。但如果是 H610 以上国产主板,设置后开机黑屏,可关机拔电池后重新设置显示设备为 IGFX,在启动选项里将 CMS 的显卡设备由 Legacy 修改成 UEFI 启动。不同主板的核显启动设置示例:华硕主板:设置核显开机,首先切换成中文,进入高级模式,在高级选项下的系统代理设置中,将首选显卡选择 igpu,并打开初始化 igpu,最后按 f10 保存开机。微星主板:主要是在显示器设置中,将其设置为要么是 IGD 要么就是改为 IGPU。七彩虹主板:较为复杂,首先进 bios,点高级设置,找到北桥(部分在南桥),在板载设置中,开启集显启动 IGD 或者直接开启板载,若不进行此设置直接插卡大概率无法点亮屏幕。昂达 B550SD4 ITX 等 AMD 主板:进入 ADVANCED,选择 amd cbs,再进入 nbio commom option,找到 gfx configuration,在 igpu configuration 中选 uma_specified,将 uma frame buffer size 设置为〔2g〕。插卡与检查:插卡并插好供电,开机能点亮则成功第一步。进入系统后打开 “设备管理器”,若有 “3D 视频管理器” 的黄色❔,则表示正常识卡。卸载旧驱动:拔掉网线,打开 DDU,使用卸载不重启模式,将 Intel、AMD、Nvidia 的驱动都卸载一遍,完成后重启电脑。导入证书:重启后,双击 EVRootCA.reg 导入证书。安装魔改驱动:再次重启,按 F8 选择 “禁用驱动程序强制签名” 模式,进入系统后安装魔改驱动,安装好后重启,再联网安装核显驱动。检查驱动安装:右键空白处,选择显示设置 - 图形设置 - benchmark - 选项,看 “高性能” 处是否为 P106。还需在桌面鼠标右键 - 打开 NVIDIA 控制面板,在左边设置 PHYSX,选择 PHYSX 处理器为 P106-100 并应用;继续在左边管理 3D 设置 - 全局设置中,将首选图形处理器选为高性能 NVIDIA 处理器,并在所有选项里选 P106-100。最后查看设备管理器中是否正常识别了 P106 和核显。电源管理设置:在设置 - 电源管理里,将 “电源管理模式” 设为 “最高性能优先”,并禁用 WIN10 自动更新显卡驱动。不同核显与接口的注意事项视频输出接口排名为:DP 接口 = miniDP 接口 > HDMI 接口 > DVI 接口 > VGA 接口。若显示器不是高刷显示器,只有 60HZ 基本刷新率,可使用主板的 hdmi、dvi、vga 接口;若显示器支持最大分辨率 1080P 或 2K 以上和最大刷新率 120HZ 以上,则需使用主板的 dp 接口或 minidp 接口,才能达到显示器最大分辨率和最高刷新率。CPU 核心显卡为 hd4600,hd4400 或以下的,用主板的 dp 口最高只有 120hz 的刷新率;若显示器刷新率更高,也只能达到 120hz。CPU 核心显卡为 hd530,p530,uhd630,p630 和以上的,用主板的 dp 口可达到最大分辨率和最高刷新率 165hz 。常见问题及解决方法错误代码卡 10/12 资源不足,可在 bios 中设置显卡启动为 uefi 解决,此问题多出现于 4 代,10 代以后默认只支持 uefi 不会出现。错误代码卡 12,需采用 UEFI+GPT 模式重装操作系统,并准备好装有快速分区和镜像的 peu 盘,进入 pe 页面后删除所有分区并重新分区,将硬盘格式从 MRB 改为 GUID 格式,2048 扇区改为 4096 扇区保存,同时在 bios 中设置多显示开启,cms 关闭,uefi only 启动,关闭安全启动,选择核显输出,华擎 b85itx 还需关闭魔改 bios 中的 above4g 。错误代码卡 43,需检查显卡供电是否插好,尽量不用杂牌电源,重新安装驱动,若仍有问题大概率是显卡损坏。错误代码卡 39,可点电源重启,开机进入主板 bios,如华硕 h81 需进入高级模式,选择启动,找到安全启动,将操作系统类型选为其他操作系统,f10 保存开机即可。错误代码卡 52,需重装系统,可选择保留文件和软件升级到最新 Win10 版本,或直接一键重装,但 C 盘文件会清零。装好驱动后蓝屏,可在 bios 中将 pcie 速率设置的 “默认自动” 改成 “gen1”。显卡插上开机能通电但黑屏不显示,进 bios 设置首选显卡为 “核显”,个别新主板可能还需关闭 cms。个别 B760 插卡不亮,设置核显优先也不亮,可打开 csm 并启用 uefi 启动。精粤 h97i 需在 cms 中设置显卡 uefi 模式为 uefi only,核显改为 igfx。B85 等主板若安全模式装驱动后无显卡控制面板,重启进入正常模式,无需卸载重装驱动,也可能是 bios 未关闭安全模式。如果在安装和使用 P106-100 显卡过程中遇到问题,可参考以上内容进行排查和解决。希望这篇博客能帮助大家顺利配置 P106-100 显卡,享受其带来的性能体验。
2024年12月30日
3,084 阅读
0 评论
3 点赞
2024-12-30
OpenWrt 下通过修改 dnsmasq 实现 Xbox 加速
一、获取 Xbox 下载助手规则首先,我们需要从 https://github.com/skydevil88/XboxDownload 上获取 Xbox 下载助手 。在 Xbox 下载助手 查找栏里输入你所在地区,比如 “江苏”,来筛选出最近的节点。然后点击按照 “下载速度” 排序,选择最快的节点并右击,选择 “导出规则”>“DNSMASQ” 规则,此时规则就会拷贝到剪切板里,把内容拷贝到临时的文本文件里,这一步是后续配置的关键。二、编辑 dnsmasq.conf 文件通过命令 nano /etc/dnsmasq.conf 来编辑 dnsmasq.conf 文件。在文件末尾添加以下最终的文本文件内容,如果之前存在相关内容则需要删除:(以下是个示例,需要替换成你获得的最佳IP,一段时间后可能失效)# 主下载域名(PC 主机共用) address=/assets1.xboxlive.cn/112.87.86.112 address=/assets2.xboxlive.cn/112.87.86.112 address=/d1.xboxlive.cn/112.87.86.112 address=/d2.xboxlive.cn/112.87.86.112 # XboxOne 部分老游戏下载域名,PC、主机新游戏都不再使用此域名 address=/dlassets.xboxlive.cn/223.109.105.4 address=/dlassets2.xboxlive.cn/223.109.105.4 # 应用和部分 PC 游戏使用此域名下载 address=/dl.delivery.mp.microsoft.com/112.84.131.218 address=/tlu.dl.delivery.mp.microsoft.com/112.84.131.218 # PlayStation address=/gst.prod.dl.playstation.net/223.111.139.91 address=/gs2.ww.prod.dl.playstation.net/223.111.139.91 address=/zeus.dl.playstation.net/223.111.139.91 address=/ares.dl.playstation.net/223.111.139.91 # Xbox 国际域名 address=/xvcf1.xboxlive.com/184.50.87.9 address=/xvcf2.xboxlive.com/184.50.87.9 address=/assets1.xboxlive.com/184.50.87.9 address=/assets2.xboxlive.com/184.50.87.9 address=/d1.xboxlive.com/184.50.87.9 address=/d2.xboxlive.com/184.50.87.9 address=/dlassets.xboxlive.com/184.50.87.9 address=/dlassets2.xboxlive.com/184.50.87.9 address=/dl.delivery.mp.microsoft.com/184.50.87.9 address=/tlu.dl.delivery.mp.microsoft.com/184.50.87.9 # PlayStation address=/gst.prod.dl.playstation.net/184.50.87.9 address=/gs2.ww.prod.dl.playstation.net/184.50.87.9 address=/zeus.dl.playstation.net/184.50.87.9 address=/ares.dl.playstation.net/184.50.87.9 # Nintendo Switch address=/atum.hac.lp1.d4c.nintendo.net/184.50.87.9 address=/bugyo.hac.lp1.eshop.nintendo.net/184.50.87.9 address=/ctest-ul-lp1.cdn.nintendo.net/184.50.87.9 address=/ctest-dl-lp1.cdn.nintendo.net/184.50.87.9 address=/atum-eda.hac.lp1.d4c.nintendo.net/0.0.0.0 # EA、战网、Epic、育碧 address=/origin-a.akamaihd.net/184.50.87.9 address=/ssl-lvlt.cdn.ea.com/0.0.0.0 address=/blzddist1-a.akamaihd.net/184.50.87.9 address=/epicgames-download1.akamaized.net/184.50.87.9 address=/uplaypc-s-ubisoft.cdn.ubi.com/184.50.87.9三、保存并重启 dnsmasq 服务完成上述编辑后,保存文件并通过命令 service dnsmasq restart 来重启 dnsmasq 服务,使配置生效。这样就完成了在 OpenWrt 下通过修改 dnsmasq 来实现 Xbox 加速的操作,让你的游戏下载体验更加流畅快速。请注意,以上操作可能因网络环境和设备差异而产生不同效果,在操作前建议备份相关文件,以防出现意外情况。同时,IP 地址可能会随着时间有所变化,如果发现加速效果不佳,可以重新检查并更新相关的 IP 地址信息。备注:防止下载走ssr流量SSRPlus -> 访问控制 -> 不走代理的域名 填入如下内容:assets1.xboxlive.cn assets2.xboxlive.cn d1.xboxlive.cn d2.xboxlive.cn dlassets.xboxlive.cn dlassets2.xboxlive.cn dl.delivery.mp.microsoft.com tlu.dl.delivery.mp.microsoft.com xvcf1.xboxlive.com xvcf2.xboxlive.com assets1.xboxlive.com assets2.xboxlive.com d1.xboxlive.com d2.xboxlive.com dlassets.xboxlive.com dlassets2.xboxlive.com dl.delivery.mp.microsoft.com tlu.dl.delivery.mp.microsoft.com gst.prod.dl.playstation.net gs2.ww.prod.dl.playstation.net zeus.dl.playstation.net ares.dl.playstation.net atum.hac.lp1.d4c.nintendo.net bugyo.hac.lp1.eshop.nintendo.net ctest-ul-lp1.cdn.nintendo.net ctest-dl-lp1.cdn.nintendo.net atum-eda.hac.lp1.d4c.nintendo.net origin-a.akamaihd.net ssl-lvlt.cdn.ea.com blzddist1-a.akamaihd.net epicgames-download1.akamaized.net uplaypc-s-ubisoft.cdn.ubi.com
2024年12月30日
421 阅读
0 评论
0 点赞
2024-11-15
Deepin 系统自动挂载硬盘分区教程
在 Deepin 系统中,挂载硬盘分区可以让我们更方便地访问和管理不同的磁盘空间。本教程将详细介绍如何在 Deepin 系统中挂载 NTFS 格式的硬盘分区。查询 NTFS 磁盘的 UUID在终端中输入sudo blkid命令,可以查询出系统中所有磁盘的信息。例如:/dev/sda1: BLOCK_SIZE="512" UUID="1078726878724C8A" TYPE="ntfs" PARTUUID="9963e7bd-01"这里的 UUID(Universally Unique Identifier)是一个唯一标识符,用于区分不同的磁盘分区。在挂载硬盘分区时,我们需要使用这个 UUID 来指定要挂载的分区。编辑 /etc/fstab 文件打开终端,输入以下命令以使用文本编辑器打开 /etc/fstab 文件:sudo nano /etc/fstab在文件末尾添加以下内容:UUID=1078726878724C8A /data ntfs defaults 0 0这里的每一个参数都有特定的含义:UUID=1078726878724C8A:指定要挂载的磁盘分区的 UUID。这个 UUID 是在第一步中通过sudo blkid命令查询得到的。/data:挂载点,即磁盘分区在文件系统中的挂载位置。你可以根据自己的需求选择一个合适的挂载点,例如 /mnt/data、/media/data 等。ntfs:文件系统类型,表示要挂载的磁盘分区是 NTFS 格式。defaults:挂载选项,这里使用了默认选项。这些选项包括读写权限、文件系统检查等。具体的选项可以根据需要进行调整。0:是否备份,0 表示不备份。0:是否检查文件系统,0 表示不检查。挂载硬盘分区完成上述步骤后,保存并关闭 /etc/fstab 文件。然后,重启系统以挂载硬盘分区:sudo reboot这个命令会根据 /etc/fstab 文件中的配置信息挂载所有未挂载的磁盘分区。如果一切正常,你应该可以在指定的挂载点(例如 /data)中访问到挂载的硬盘分区。总结通过以上步骤,我们可以在 Deepin 系统中成功挂载 NTFS 格式的硬盘分区。在实际操作中,你可以根据自己的需求调整挂载点和挂载选项。同时,如果你要挂载其他文件系统类型的磁盘分区,需要相应地修改文件系统类型参数。
2024年11月15日
1,029 阅读
0 评论
0 点赞
2024-11-14
AlmaLinux 8安装包报错“Error: GPG check FAILED”解决方案
最近在AlmaLinux 8系统上安装git时,遇到了一个令人头疼的错误:Import of key(s) didn't help, wrong key(s)? GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-AlmaLinux You can remove cached packages by executing 'dnf clean packages'. Error: GPG check FAILED这一错误导致git安装无法顺利进行,经过一番查找,终于在AlmaLinux官方文档中找到了线索,原来是与AlmaLinux 8的GPG key有关。问题根源去年年底,AlmaLinux经历了一次系统故障,导致用于签署AlmaLinux 8软件包的主密钥丢失。而当前使用的GPG key即将在2024年1月过期。因此,AlmaLinux团队启用了新的GPG key来签署RPM软件包和repodata。如果系统没有及时更新,仍然使用旧的GPG key,就可能会在安装新签署的软件包(如git)时出现上述错误。解决方案方法一:快速导入新GPG key(推荐)如果希望确保系统已经包含并信任新的AlmaLinux 8 GPG key,可以使用以下命令直接导入:rpm --import https://repo.almalinux.org/almalinux/RPM-GPG-KEY-AlmaLinux这个命令会将新的GPG key导入到rpm数据库中。如果系统中尚未存在该密钥,它将被成功导入;如果已经信任该密钥,执行此命令不会产生任何影响,也无需进一步操作。方法二:检查并导入新key首先,检查系统中是否已经信任新的GPG key。运行以下命令:rpm -q gpg-pubkey-ced7258b-6525146f如果看到“gpg-pubkey-ced7258b-6525146f”的输出信息,表示新GPG key已经被信任,无需再进行操作。如果出现“package gpg-pubkey-ced7258b-6525146f is not installed”的错误提示,则说明系统尚未信任新的GPG key,需要手动导入。导入新的GPG key到rpm数据库:rpm --import https://repo.almalinux.org/almalinux/RPM-GPG-KEY-AlmaLinux如果设备处于离线环境(airgapped environment),或者没有外部网络连接,并且已经安装了almalinux-release包版本8.8-3.el8或更高版本,也可以从本地文件导入密钥:rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-AlmaLinux方法三:常规更新依赖如果系统足够新并且定期安装更新,理论上不会遇到问题。因为新的AlmaLinux 8 GPG key已经包含在almalinux-release包版本8.8-3.el8或更高版本(2023年10月16日发布)中。在这种情况下,当尝试安装使用新密钥签名的软件包时,dnf可能会要求信任新密钥(这与在全新安装的操作系统上安装更新时的情况相同)。如果使用带有-y参数的dnf,则会自动信任新密钥。总结在遇到“Error: GPG check FAILED”错误时,不要惊慌。根据系统的具体情况,选择上述合适的方法来更新或导入新的AlmaLinux 8 GPG key,即可解决问题,顺利安装所需的软件包。希望这篇博客能够帮助到遇到同样问题的朋友们,让大家在使用AlmaLinux 8系统时更加顺畅。
2024年11月14日
634 阅读
0 评论
0 点赞
2023-12-27
Axios 无感刷新
token无感刷新的原理很简单,使用双token,分别为accessToken和refreshToken,正常都是携带accessToken进行验证。当返回状态码表示token过期时,再携带refreshToken重新获取accessToken,然后重新携带accessToken发起请求。// axiox.ts import axios from "axios"; import { AxiosRetry } from './axiosClass' axios.defaults.baseURL='http://127.0.0.1:3000' // 添加请求拦截器 axios.interceptors.request.use( function (config) { // 在发送请求之前做些什么 // 在请求头中添加token config.headers.Authorization = localStorage.getItem("accessToken"); if (config.url == "/refreshToken") { config.headers.Authorization = localStorage.getItem("refreshToken"); } return config; }, ); /**先到拦截器*/ axios.interceptors.response.use(res => { if (res.status != 200) { return Promise.reject(res.data); } return Promise.resolve(res.data) }); const axiosRetry = new AxiosRetry({ onSuccess: (res) => { let { accessToken } = res.data localStorage.setItem("accessToken", accessToken); }, onError: () => { console.log('refreshToken过期,需要重新登录'); }, }); export const request = (url: string) => { return axiosRetry.requestWrapper(() => { return axios({ method: "get", url: `${url}`, }) }); }// axiosClass.ts import { Axios } from 'axios'; import axios from 'axios'; export class AxiosRetry { private fetchNewTokenPromise: Promise<any> | null = null; private onSuccess: (res: any) => any; private onError: () => any; constructor({ onSuccess, onError, }: { onSuccess: (res: any) => any; onError: () => any; }) { this.onSuccess = onSuccess; this.onError = onError; } /** 发送请求*/ requestWrapper<T>(request: () => Promise<T>): Promise<T> { return new Promise((resolve, reject) => { /** 将请求接口的函数保存*/ const requestFn = request; return request().then((res) => { //拦截器处理后的数据 resolve(res); }).catch(err => { //token过期或者没有token if (err.response.status === 401) { if (!this.fetchNewTokenPromise) { this.fetchNewTokenPromise = this.fetchNewToken(); } this.fetchNewTokenPromise.then(() => { return requestFn(); }).then((res) => { resolve(res); this.fetchNewTokenPromise = null; }).catch((err) => { reject(err); this.fetchNewTokenPromise = null; }); } else { reject(err); } }); }); } // 获取新的token fetchNewToken() { return axios({ method: "post", url: `/refreshToken`, }).then((res) => { this.onSuccess(res) }).catch((err) => { this.onError(); //表示refreshToken过期,需要重新登录 if (err.response.status === 401) { return Promise.reject( new Error("refreshToken过期,需要重新登录") ); } //表示发生了其他错误 else { return Promise.reject(err); } }) } }{callout color="#f0ad4e"}参考地址:https://gitee.com/lin-zhiteng/function-realization/tree/master/src/utils{/callout}
2023年12月27日
385 阅读
0 评论
0 点赞
2023-12-01
Cloudflare Zero Trust 优选IP
国外很多网站都在使用 Cloudflare CDN,但分配给中国内地访客的 IP 并不友好(延迟高、丢包多、速度慢)。虽然 Cloudflare 公开了所有 IP 段 ,但想要在这么多 IP 中找到适合自己的,怕是要累死,于是就有了这个教程。优选IP链接参考 https://blog.misaka.rest/2023/03/12/cf-warp-yxip/ 项目代码https://github.com/XIU2/CloudflareSpeedTest/安装测速wget -N https://github.com/XIU2/CloudflareSpeedTest/releases/download/v2.2.5/CloudflareST_linux_amd64.tar.gz tar -zxf CloudflareST_linux_amd64.tar.gz chmod +x CloudflareST开始测速./CloudflareST -cfcolo KHH # 机场码查询 http://szdm.00cha.net/gj_japan.html修改优选IPwarp-cli set-custom-endpoint xxx.xxx.xxx.xxx:2408 warp-cli disable-connectivity-checks # 恢复custom-endpoint warp-cli clear-custom-endpoint
2023年12月01日
1,677 阅读
0 评论
0 点赞
2023-11-03
Linux查看进程以及进程占用端口
查看进程pidps -ef | grep 进程名 如果已知pid,想看详情,则用 ps -ef pid通过pid查看占用端口(mac)# linux netstat -na | grep 端口 netstat -nap | grep 进程pid netstat -nap | grep 进程pid #不加tcp或者udp的话mac上会报错 netstat -nap tcp | grep 进程pid netstat -nap udp | grep 进程pid
2023年11月03日
333 阅读
0 评论
0 点赞
2023-08-30
Deepin V20 rtl8821CU wifi网卡驱动安装
sudo apt update sudo apt install build-essential git dkms git clone https://github.com/brektrou/rtl8821CU.git cd rtl8821CU chmod +x dkms-install.sh sudo ./dkms-install.sh sudo modprobe 8821cu # 记得重启电脑
2023年08月30日
777 阅读
0 评论
0 点赞
2023-08-28
Deepin内核删除升级操作
查看当前内核版本uname -a # 或者 uname -r查看已安装的所有内核版本sudo dpkg --get-selections| grep linux删除内核版本# 注意,需要将内核映射文件(linux-image-版本号)和内核头文件(image-heasers-版本号)这两个文件都会删除掉 sudo apt remove --purge linux-headers-5.101.36-amd64-desktop linux-image-5.10.36-amd64-desktop升级内核版本sudo apt-get install linux-image-deepin-stable-amd64 linux-headers-deepin-stable-amd64查看启动顺序# 这一步主要是防止删除掉新版本内核后,系统没有自动启用旧版本内核进行启动 # 1、更新grub sudo update-grub # 2、查看启动顺序 grep menuentry /boot/grub/grub.cfg # 观察这个命令的输出,如果里面已经只存在一个版本的内核,那么之前的内核删除已经生效 menuentry 'Deepin 20.4 GNU/Linux' --class deepin --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-30e3145e-ae06-4dc3-8f6f-52e139b5a2c9' { submenu 'Deepin 20.4 GNU/Linux 的高级选项' $menuentry_id_option 'gnulinux-advanced-30e3145e-ae06-4dc3-8f6f-52e139b5a2c9' { menuentry 'Deepin 20.4 GNU/Linux,Linux 5.10.36-amd64-desktop' --class deepin --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.10.36-amd64-desktop-advanced-30e3145e-ae06-4dc3-8f6f-52e139b5a2c9' { # 3、修改启动顺序(如果删除了一个版本的内核后,系统内部还存在多个内核版本,则可以指定内核版本进行启动) sudo vi /etc/default/grub # Written by com.deepin.daemon.Grub2 DEEPIN_GFXMODE_ADJUSTED=1 # 需要修改这个值,修改的目标值就是在第2步查看启动顺序的序号,就按照版本号第一次出现的顺序,修改为1,2,3... # 注意,这个顺序并不完全是先后顺序,貌似只是各个版本的一个序号,这个需要自己尝试进行修改,我的经验是保留最旧的一般内核版本即可,先保证系统能正常启动后,再说进行内核升级啥的,毕竟设计到系统内核,稍微麻烦点也是OK的 DEEPIN_GFXMODE_NOT_SUPPORTED=2560x1440 GRUB_BACKGROUND="/boot/grub/themes/deepin/background.jpg" GRUB_CMDLINE_LINUX="" GRUB_CMDLINE_LINUX_DEFAULT="splash quiet" GRUB_DEFAULT=0 GRUB_DISTRIBUTOR="`/usr/bin/lsb_release -d -s 2>/dev/null || echo UOS 20`" GRUB_GFXMODE=1280x1024 GRUB_THEME="/boot/grub/themes/deepin/theme.txt" GRUB_TIMEOUT=5 # 4、保存并更新grub sudo update-grub # 5、重启系统,不出意外的话,系统就可以正常启动了
2023年08月28日
497 阅读
0 评论
0 点赞
2023-02-21
VSCode远程开发JAVA多模块项目
创建配置文件.vscode/settings.json{ "java.jdt.ls.java.home": "/usr/lib/jdk-17.0.6-10", "java.compile.nullAnalysis.mode": "automatic", "java.configuration.runtimes":[ { "name": "JavaSE-1.8", "path": "/usr/lib/jdk1.8.0_281", }, { "name": "JavaSE-11", "path": "/usr/lib/jdk-11.0.11", }, { "name": "JavaSE-17", "path": "/usr/lib/jdk-17.0.6-10", "default": true } ], "java.configuration.updateBuildConfiguration": "automatic", "maven.terminal.customEnv": [ { "environmentVariable": "JAVA_HOME", "value": "/usr/lib/jdk1.8.0_281", },{ "environmentVariable": "MAVEN_OPTS", "value": "-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n" } ], "maven.executable.path": "/usr/local/apache-maven-3.8.1/bin/mvn", "maven.view": "hierarchical", "maven.executable.options": "-s /home/hadong/.m2/patsnap-settings.xml", "java.configuration.maven.userSettings": "/home/hadong/.m2/patsnap-settings.xml", "maven.settingsFile": "/home/hadong/.m2/patsnap-settings.xml", "java.debug.settings.onBuildFailureProceed": true, "java.import.gradle.java.home": "/usr/lib/jdk1.8.0_281", "java.import.gradle.wrapper.enabled": false, "java.import.gradle.version": "", "java.import.gradle.home": "/home/hadong/.sdkman/candidates/gradle/current/", "gradle.autoDetect": "on", "gradle.javaDebug.cleanOutput": true, "gradle.debug": true }.vscode/launch.json{ // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "type": "java", "name": "Launch APP", "request": "launch", "mainClass": "com.patsnap.app.Application", "env": { "spring.profiles.active": "secret", "configs.com.patsnap.workspace.region": "DH", "configs.com.patsnap.dynamodb.table.track.ignore.regex.list": "workspace_folder_v2,workspace_task" }, "cwd": "${workspaceFolder}", "javaExec": "/usr/lib/jdk1.8.0_281/bin/java", "projectName": "workspace-service", "shortenCommandLine": "jarmanifest" } ] }
2023年02月21日
915 阅读
0 评论
0 点赞
2023-02-21
Linux 配置多JDK环境
下载多个版本的JDKhttps://www.oracle.com/java/technologies/downloads/#java11解压到/usr/lib目录我安装了3个版本JDK/usr/lib/jdk1.8.0_281 /usr/lib/jdk-11.0.11 /usr/lib/jdk-17.0.6-10分别注册环境alternatives --install /usr/bin/java java /usr/lib/jdk1.8.0_281/bin/java 8 alternatives --install /usr/bin/java java /usr/lib/jdk-11.0.11/bin/java 11 alternatives --install /usr/bin/java java /usr/lib/jdk-17.0.6-10/bin/java 17刷新配置update-alternatives --config java source /etc/profile java -version
2023年02月21日
528 阅读
0 评论
0 点赞
2023-02-09
MergeApi装饰器方案
定义一个接口可以入参数组当一个时间内的不同调用参数形成多个Api请求时候,可以合并请求,使用下面的合并请求装饰器装饰器import { mergeWith, isArray, unionWith, isEqual } from 'lodash' /** * log * @param type log类型 * @param id logId * @param input 输入 * @param pending 延时 */ function log(id: string, input: any, pending?: number) { console.group('%c%s(%s)', 'color:#0764E9;padding:2px;', '[MergeApi]', id) console.log('%c延时:', 'color:green;padding:2px;', `${pending} ms`) console.log('%c参数:', 'color:green;padding:2px;', input) console.groupEnd(); } export interface MergeApiConfig { delay?: number, debug?: boolean, } /** * 合并接口调用 * @param config 配置 * @returns */ export function MergeApi(config?: MergeApiConfig) { let cache: object = {}; let timer: number | null = null; let promise: Promise<any> = Promise.resolve(); return function(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor<any>) { const { delay = 500, debug = false, } = config || {} const key = `${target.name}.${propertyKey}` const method = descriptor.value; descriptor.value = function(arg: object = {}) { const input = JSON.parse(JSON.stringify(arg)) mergeWith(cache, input, (obj, src) => { if (isArray(obj)) { return unionWith(obj, src, isEqual); } }) if (timer) { return promise } promise = new Promise((resolve, reject) => { timer = window.setTimeout(() => { debug && log(key, cache, delay) method.apply(this, [cache]) .then(resolve) .catch(reject) clearTimeout(timer as number) timer = null cache = {} }, delay) }) return promise; } return descriptor } } 使用export class ApiTranslate { @MergeApi({ delay: 800, }) static translate(args) { return Promise... } }
2023年02月09日
546 阅读
0 评论
0 点赞
2023-02-09
MockApi装饰器方案
在项目开发初期,需要前后端约定数据结构,Mock数据开发的时候,可以使用下面的MockApi可以在控制台看到mock数据的结构,方便联调。装饰器import axios from 'axios' import type { AxiosRequestConfig } from 'axios' import { isFunction } from 'lodash' import { Random } from 'mockjs' export function MockGet(url: string) { return Mock({ url, method: 'GET', }) } export function MockPost(url: string) { return Mock({ url, method: 'POST', }) } export function MockPut(url: string) { return Mock({ url, method: 'PUT', }) } export function resolve<T>(data: T, delay = 1000): Promise<T> { return new Promise((resolve) => { setTimeout(() => { resolve(data) }, delay) }) } export function Mock(config: AxiosRequestConfig) { return function(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor<any>) { descriptor.value = function(...args: any[]) { return axios(config).then(({ data, }) => { // @ts-ignore const res = { error_code: 0, status: true, data, } console.warn('Mock', `[${config.method}] ${config.url}`, res, args); return res.data; }) } return descriptor } } /** * mockApiLog * @param type log类型 * @param id logId * @param input 输入 * @param output 返回 * @param pending 耗时 */ function mockApiLog(id: string, input: any, output: any, pending?: number) { console.group('%c%s(%s)', 'color:#0764E9;padding:2px;', '[MockApi]', id) console.log('%c耗时:', 'color:green;padding:2px;', `${pending} ms`) console.log('%c参数:', 'color:green;padding:2px;', input) console.log('%c返回:', 'color:green;padding:2px;', output) console.groupEnd(); } export interface MockApiConfig { pending?: number, } /** * 拦截接口调用,返回mock数据 * @param mock mock方法或者直接返回mock数据 * @returns */ export function MockApi(mock: any, config?: MockApiConfig) { return function(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor<any>) { let { pending, } = config || {} if (pending === undefined) { pending = Random.integer(200, 2000) } const key = `${target.name}.${propertyKey}` descriptor.value = function(...args: any[]) { const output = isFunction(mock) ? mock.apply(this, [...args]) : mock; const input = JSON.parse(JSON.stringify(args)) return resolve(output, pending).then(data => { mockApiLog(key, input, data, pending); return data }) } return descriptor } } 使用export function projectsMockData(...args: any[]) { const tagStructure = mock({ 'tagStructure|1-10': [ { id: '@id', name: '@cword(1, 5)', } ], }) return mock({ 'items|0-20': [{ id: '@id', name: '@ctitle(1, 10)', icon: () => Random.pick( Random.range(1, 6).map(i => `${i}`) ), description: '@cword(6, 30)', 'tags|3': [() => Random.pick(tagStructure.tagStructure).id], 'members|0-16': [ { id: '@id', name: '@cname', email: '@email', } ], update_ts: '@datetime', created_at: '@datetime', }], ...tagStructure, }); }@MockApi(projectsMockData, { pending: 1000, })
2023年02月09日
551 阅读
0 评论
0 点赞
2023-01-05
新冠个人预防攻略
中了奥密克戎,不想再中其他了,从周围“苟”到现在的人学习一些心得,记录下来上班篇一定要戴医用N95{callout color="#f0ad4e"}真正能起到防疫作用的只有以下五种类型:1、医用防护口罩GB19083-2010 ☑️2、医用外科口罩YY0469-20113、日常防护型口罩GB/T32610-2016 ☑️4、一次性使用医用口罩YY/T0969-20135、儿童口罩GB/T38880-2020 ☑️但是在人员密集场所一定要戴防护型的,密闭性高的。{/callout}{callout color="#f0ad4e"}如何正确佩戴口罩:1.正确佩戴口罩,确保口罩盖住口鼻和下巴,鼻夹要压实。2.口罩出现脏污、变形、损坏、异味时需及时更换,每个口罩累计佩戴时间不超过8小时。3.在跨地区公共交通工具上,或医院等环境使用过的口罩不建议重复使用。4.需重复使用的口罩在不使用时宜悬挂于清洁、干燥、通风处。5.戴口罩期间如出现憋闷、气短等不适,应立即前往空旷通风处摘除口罩。6.外出要携带备用口罩,存放在原包装袋或干净的存放袋中,避免挤压变形,废弃口罩归为其他垃圾处理。 7.随身带酒精喷剂,在面前身体周围喷洒,不可以直接喷面部和口罩,摸口罩前喷一下手,摸完口罩也要喷一下手。 {/callout}酒精勤喷{callout color="#f0ad4e"}重点区域:电脑键盘鼠标手机手外卖水杯经常暴露的随身物品{/callout}居家篇门口建立消毒缓冲区{callout color="#f0ad4e"}在门口整理一块区域用来消毒缓冲区{/callout}准备次氯酸泡腾片跟喷壶{callout color="#f0ad4e"}次氯酸按照比例配好后放在门口缓冲区,需要避光密闭存储,最好放在盒子/黑袋子里对缓冲区快递外卖以及衣服头发全方位喷雾消毒,据说15s可杀菌99%{/callout}尽可能的在线买菜{callout color="#f0ad4e"}拿快递外卖时候尽可能在空旷的环境里,不要进入菜鸟驿站,在门口等待戴一次性手套拿快递外卖快递外卖在家里缓冲区消毒静置一段时间处理冷鲜需要戴手套,围裙,口罩{/callout}勤通风多消毒{callout color="#f0ad4e"}在天气比较好的时候,通风半小时以上{/callout}物资准备物品数量备注N95口罩适量大人小孩的都要医用护目镜成员*1.5-食品级一次性手套适量加厚抗原适量-科普时间☑️ 吸入少量新冠病毒不会感染{card-describe title=" "}参考文章: 吸入一百个新型冠状病毒会怎样 总结:在侵入之前,病毒啥都不会,既不能生长,也不能繁殖,甚至连动都不会动,一切行动都完全依赖于外力。如果遇上大量病毒,再加上爆炸式的几何增长,免疫系统杀得手抽筋都遏制不住病毒暴增,就会在简单粗暴的“人海战术”中垮下,于是人就被病毒搞死了。离开剂量谈毒性,就是耍流氓。而病毒与免疫系统的较劲中,对最终胜负起到决定作用的,仍然是数量。一旦数量到达一定程度,指数的“爆炸性”就体现出来了。必须有足够量的病毒,才能抵达人体→侵入细胞→对抗免疫→致病→致死,这其中的每一步,都必须满足数量的条件。理论上,1个病人出门一趟,每个接触过的人都会被感染——因为病人在不停的呼吸,而呼吸时会有病毒被极其微小的飞沫带出,可以说一路都是病毒。但事实上,绝不是每个与病人接触过的人都会感染发病,其原因正在于病毒数量。呼吸带出的那一丢丢的病毒,想要恰好侵入呼吸道,它也蛮难的。即使运气爆棚,真的侵入了,但由于数量太少,也很快会被免疫系统清理干净,远到不了令人发病的程度。也就是说,即使吸入了新型冠状病毒,只要数量少,就没事儿。我们所采用的一切预防及治疗病毒性疾病的措施,全部都是在围绕着病毒数量做文章。也就是说,只要想方设法降低可能侵入的病毒数量,就能最大程度地降低染病概率,就是更有效的预防措施。怎么降低病毒数量?像减少接触、戴口罩、勤洗手、勤通风、注意卫生等方式都是行之有效的。在此,另介绍一个增效的手段 - 随身75%医用酒精喷雾。不过要注意,酒精不宜直接对着口罩喷,由于酒精的表面张力和水有很大不同,用酒精喷了口罩外面,某种程度上会破坏口罩外层的防水层结构,使对水的吸收能力增强,从而加速口罩的过滤层失效。此外,密闭空间里,喷雾累积到一定程度有可能爆燃,万不可像洒水车一样猛喷。正确的用法是,在高传染风险的场合时,用酒精喷雾往面部周围喷,不直接喷到口罩上,也不要强迫症似的一会儿一喷。 这样,就在短时间内给自己加上一层雾化屏障,有效灭活病毒,尽量降低可能的病毒数量。这对于日常防护而言,无疑是积极且有效的。(在有84消毒液的环境里不要喷,否则酒精会与次氯酸反应产生氯气对身体有害){/card-describe}
2023年01月05日
421 阅读
0 评论
3 点赞
2022-10-11
dpkg: 处理软件包 xxx (--configure)时出错解决方法
dpkg: 处理软件包 xxx (–configure)时出错:依赖关系问题 - 仍未被配置 dpkg: 依赖关系问题使得 xxx 的配置工作不能继续: xxx 依赖于 libicu-dev;然而: 软件包 libicu-dev 尚未配置。解决方法:#先切换到root用户 sudo su mv /var/lib/dpkg/info /var/lib/dpkg/info_bak mkdir /var/lib/dpkg/info apt-get update && apt-get -f install mv /var/lib/dpkg/info/* /var/lib/dpkg/info_bak/ rm -rf /var/lib/dpkg/info mv /var/lib/dpkg/info_bak /var/lib/dpkg/info完成
2022年10月11日
999 阅读
0 评论
0 点赞
1
2