基于 SOC 职业分类
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/ffsshhttiikk/opencode-agents-skills --skill fog-computing命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
| name | fog-computing |
| description | Fog computing architecture and IoT integration |
| license | MIT |
| compatibility | opencode |
| metadata | {"audience":"architect, iot-engineer, devops-engineer","category":"devops"} |
┌─────────────────────────────────────────┐
│ Cloud (Tier 3) │
│ Long-term storage, ML training │
└─────────────────┬───────────────────────┘
│
┌─────────────────▼───────────────────────┐
│ Fog Layer (Tier 2) │
│ Regional data centers, analytics │
└─────────────────┬───────────────────────┘
│
┌─────────────────▼───────────────────────┐
│ Edge Layer (Tier 1) │
│ Gateways, local processing │
└─────────────────┬───────────────────────┘
│
┌─────────────────▼───────────────────────┐
│ IoT Devices (Tier 0) │
│ Sensors, actuators, controllers │
└─────────────────────────────────────────┘
import paho.mqtt.client as mqtt
# Fog node configuration
class FogNode:
def __init__(self, broker, node_id):
self.client = mqtt.Client(client_id=node_id)
self.client.on_connect = self.on_connect
self.client.on_message = self.on_message
self.broker = broker
def on_connect(self, client, userdata, flags, rc):
# Subscribe with QoS levels
# QoS 0: At most once (fire and forget)
# QoS 1: At least once (acknowledged delivery)
# QoS 2: Exactly once (assured delivery)
client.subscribe("sensors/#", qos=1)
client.subscribe("alerts/#", qos=2)
def on_message(self, client, userdata, msg):
# Process at fog layer
payload = json.loads(msg.payload)
# Filter and aggregate
if self.should_process(payload):
result = self.process_locally(payload)
# Forward important data to cloud
if result.important:
client.publish("cloud/data", json.dumps(result))
def should_process(self, payload):
# Local processing decisions
payload.get() ==
class DataAggregator:
def __init__(self, window_size=60):
self.window_size = window_size
self.buffer = []
def aggregate(self, data_points):
# Time-windowed aggregation
aggregated = {
'count': len(data_points),
'avg': sum(d['value'] for d in data_points) / len(data_points),
'min': min(d['value'] for d in data_points),
'max': max(d['value'] for d in data_points),
'sum': sum(d['value'] for d in data_points),
'window': self.window_size
}
# Downsampling for cloud
if aggregated['count'] > 1000:
return self.downsample(aggregated)
return aggregated
def downsample(self, data):
# Keep statistical summary
{
: data[],
: data[],
: .calculate_std(data),
: data[],
: data[]
}
# Kubernetes deployment for fog
apiVersion: apps/v1
kind: Deployment
metadata:
name: fog-collector
spec:
replicas: 3
selector:
matchLabels:
app: fog-collector
template:
spec:
affinity:
nodeAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
preference:
matchLabels:
tier: fog
containers:
- name: collector
image: fog-collector:latest
env:
- name: CLOUD_ENDPOINT
valueFrom:
configMapKeyRef:
name: fog-config
key: cloud.endpoint
- name: OFFLINE_MODE
value: "true"
volumeMounts:
- name: local-storage
class OfflineBuffer:
def __init__(self, max_size=10000):
self.buffer = []
self.max_size = max_size
def store(self, data):
self.buffer.append(data)
if len(self.buffer) >= self.max_size:
self.flush()
def flush(self):
if not self.buffer:
return
# Try to sync with cloud
try:
self.cloud_client.batch_upload(self.buffer)
self.buffer = []
except NetworkError:
# Keep buffering
pass