mcpField
N
network-ai

network-ai

github.com/jovancodingAgent 工作流7946 次安装1 天前更新
代码仓库

关于 network-ai

network-ai 是用于本地文件协作的多 Agent 编排技能,面向需要共享状态与权限检查的复杂工作流。它提供预算拦截、共享黑板和持久项目上下文;不负责启动 Agent 或调用网络。

主要功能

  1. 01任务预算与交接检查
  2. 02TTL 共享黑板
  3. 03持久项目上下文管理
  4. 04敏感资源权限评分
  5. 05按环境隔离数据

适用场景

  1. 01在多个会话内协调子任务
  2. 02并行 Agent 共享任务结果
  3. 03执行敏感操作前评估权限

MCP 相关

README 仅提到可选 npm 包包含需由操作员显式启动的 MCP 服务;该服务不属于此技能包。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/jovancoding/network-ai --skill network-ai

安装后在 Claude Code 中输入/network-ai确认已加载。

详细介绍

Swarm Orchestrator Skill

适用范围: 捆绑的 Python 脚本(scripts/*.py)不会发起任何网络调用,只使用 Python 标准库,且没有任何第三方依赖。令牌基于 UUID(grant_{uuid4().hex}),存储在 data/active_grants.json 中。审计日志为纯 JSONL 格式(data/audit_log.jsonl)。

关于建议性令牌的说明: check_permission.py 签发的授权令牌仅为建议性评分结果——调用方提供的 --agent 身份未经加密验证。下游系统不得将这些令牌视为经过身份验证的凭证,除非另行添加身份验证步骤或人工审批关卡;对 PAYMENTS、DATABASE 和 FILE_EXPORT 资源尤其如此。

数据流说明(宿主平台——不属于此 Skill): 此 Skill 不会实现、调用或控制 sessions_send 或任何 Agent 间消息传递。所有捆绑的 Python 脚本都是仅限本地使用的工具(预算保护、黑板、权限评分、上下文管理器)。如果你的平台内置了 sessions_send,是否使用以及如何使用完全由宿主平台负责,不在此 Skill 的范围内。如果你需要阻止外部网络调用,请在安装此 Skill 之前,在平台设置中禁用或重新路由委派。

上下文文件完整性: context_manager.py 会验证 data/project-context.json 的每个字段(project、goals、stack、milestones、decisions、banned approaches、agents),检查提示词注入和角色分隔符模式、大小及嵌套层级。init 和 update 会在写入前拒绝不安全的值;inject 遇到任何警告都会阻止操作,并将上下文作为单行值输出到 <project_context type="reference-data"> 块中,明确标记其为数据而非指令。请将注入的上下文视为不可信的参考资料。

个人身份信息 / 敏感数据警告: 权限请求中的 justification 字段和审计日志(data/audit_log.jsonl)会存储 Agent 提供的自由文本字符串。请勿在说明文本中包含个人身份信息、机密或凭证。 请考虑限制 data/ 的文件权限,或在隔离的工作区中运行此 Skill。

设置

无需安装 pip。 所有 6 个脚本都只使用 Python 标准库,不依赖任何第三方包。

关于 requirements.txt 的说明: 此文件仅用于文档说明,列出了使用到的标准库模块,没有必需的包。列出的所有依赖项均已注释为可选项。无需运行 pip install -r requirements.txt。

# Prerequisite: python3 (any version ≥ 3.8)
python3 --version

# Run only the six bundled scripts (no other tools are needed):
python3 scripts/blackboard.py list
python3 scripts/swarm_guard.py budget-init --task-id "task_001" --budget 10000

文件锁定功能已内置:blackboard.py 在 Unix 上使用 fcntl,在 Windows 上使用原子锁标记文件。任何平台都无需安装任何内容。

首次运行时会自动创建 data/ 目录。无需配置文件、环境变量或凭证。

多环境支持(v5.4.0): 六个 Python 脚本都会在启动时读取 NETWORK_AI_ENV 环境变量,并接受 --env <name> CLI 参数。设置该变量后,所有数据路径都会指向 data/<env>/,而不是根目录 data/。可用此功能隔离开发、预发布和生产环境的状态。

# 在开发环境中运行
NETWORK_AI_ENV=dev python3 scripts/blackboard.py list
python3 scripts/check_permission.py --active-grants --env dev

适用于复杂工作流的多 Agent 协调系统,支持任务委派、并行执行,以及受权限控制的敏感 API 访问。

🎯 Orchestrator 系统指令

你是 Orchestrator Agent,负责拆解复杂任务、委派给专用 Agent,并综合结果。请遵循以下协议:

核心职责
  1. 拆解复杂提示词,将其拆分为 3 个专门的子任务
  2. 委派时使用考虑预算的交接协议
  3. 验证结果,确认其已写入黑板后再提交
  4. 仅在所有验证通过后才综合最终输出
任务分解协议

收到复杂请求时,将其精确分解为 3 个子任务:

┌─────────────────────────────────────────────────────────────────┐
│                     COMPLEX USER REQUEST                        │
└─────────────────────────────────────────────────────────────────┘
                              │
                              ▼
        ┌─────────────────────┼─────────────────────┐
        │                     │                     │
        ▼                     ▼                     ▼
┌───────────────┐   ┌───────────────┐   ┌───────────────┐
│  SUB-TASK 1   │   │  SUB-TASK 2   │   │  SUB-TASK 3   │
│ data_analyst  │   │ risk_assessor │   │strategy_advisor│
│    (DATA)     │   │   (VERIFY)    │   │  (RECOMMEND)  │
└───────────────┘   └───────────────┘   └───────────────┘
        │                     │                     │
        └─────────────────────┼─────────────────────┘
                              ▼
                    ┌───────────────┐
                    │  SYNTHESIZE   │
                    │ orchestrator  │
                    └───────────────┘

分解模板:

TASK DECOMPOSITION for: "{user_request}"

Sub-Task 1 (DATA): [data_analyst]
  - Objective: Extract/process raw data
  - Output: Structured JSON with metrics

Sub-Task 2 (VERIFY): [risk_assessor]  
  - Objective: Validate data quality & compliance
  - Output: Validation report with confidence score

Sub-Task 3 (RECOMMEND): [strategy_advisor]
  - Objective: Generate actionable insights
  - Output: Recommendations with rationale
预算检查协议

在委派任何任务之前,先运行预算拦截器:

# Run this before delegating to any sub-agent
python {baseDir}/scripts/swarm_guard.py intercept-handoff \
  --task-id "task_001" \
  --from orchestrator \
  --to data_analyst \
  --message "Analyze Q4 revenue data"

决策逻辑:

IF result.allowed == true:
    → Budget check passed — proceed with the delegated task
    → Note tokens_spent and remaining_budget
ELSE:
    → STOP — budget exceeded or handoff limit reached
    → Report blocked reason to user
    → Consider: reduce scope or abort task
提交前验证工作流

向用户返回最终结果之前:

# Step 1: Check all sub-task results on blackboard
python {baseDir}/scripts/blackboard.py read "task:001:data_analyst"
python {baseDir}/scripts/blackboard.py read "task:001:risk_assessor"
python {baseDir}/scripts/blackboard.py read "task:001:strategy_advisor"

# Step 2: Validate each result
python {baseDir}/scripts/swarm_guard.py validate-result \
  --task-id "task_001" \
  --agent data_analyst \
  --result '{"status":"success","output":{...},"confidence":0.85}'

# Step 3: Supervisor review (checks all issues)
python {baseDir}/scripts/swarm_guard.py supervisor-review --task-id "task_001"

# Step 4: Only if APPROVED, commit final state
python {baseDir}/scripts/blackboard.py write "task:001:final" \
  '{"status":"SUCCESS","output":{...}}'

判定处理:

判定操作
APPROVED提交并向用户返回结果
WARNING检查问题,尽可能修复,然后提交
BLOCKED不要返回结果。报告失败。

三层记忆模型

群组中的每个 Agent 都使用三层记忆,每层的范围和生命周期各不相同:

层级名称生命周期管理方
1Agent 上下文临时——仅限当前任务平台(按会话)
2黑板按 TTL 管理——由 Agent 共享scripts/blackboard.py
3项目上下文持久——跨所有会话保留scripts/context_manager.py
第 1 层 — Agent 上下文

每个 Agent 自己的上下文窗口:当前任务说明、对话历史和即时工作记忆。由 OpenClaw/LLM 平台自动管理,无需配置。

第 2 层 — 黑板(共享协调状态)

一个共享的 Markdown 文件(swarm-blackboard.md),用于实时跨 Agent 协调:任务结果、授权令牌、状态标记和按 TTL 管理的缓存条目。Agent 通过 scripts/blackboard.py 读取和写入。条目会自动过期。

第 3 层 — 项目上下文(持久长期记忆)

一个 JSON 文件(data/project-context.json),存储所有 Agent 都应了解的信息,无论当前运行的是哪个会话或任务:

  • 目标 — 项目的长期目标
  • 技术栈 — 语言、框架、基础设施
  • 里程碑 — 已完成、进行中和计划中的工作
  • 架构决策 — 设计选择及其依据
  • 禁用方案 — 已被排除的方案
初始化项目上下文
python {baseDir}/scripts/context_manager.py init \
  --name "MyProject" \
  --description "Multi-agent workflow automation" \
  --version "1.0.0"
将上下文注入 Agent 系统提示词
python {baseDir}/scripts/context_manager.py inject

将输出块复制到 Agent 系统提示词的顶部。每个收到此内容块的 Agent 都能获得相同的项目长期认知。

记录决策
python {baseDir}/scripts/context_manager.py update \
  --section decisions \
  --add '{"decision": "Use atomic blackboard commits", "rationale": "Prevent race conditions in parallel agents"}'
更新里程碑
# Mark a milestone complete
python {baseDir}/scripts/context_manager.py update \
  --section milestones --complete "Ship v2.0"

# Add a planned milestone
python {baseDir}/scripts/context_manager.py update \
  --section milestones --add '{"planned": "Integrate vector memory"}'
设置技术栈
python {baseDir}/scripts/context_manager.py update \
  --section stack \
  --set '{"language": "Python", "runtime": "Python 3.11", "framework": "SwarmOrchestrator"}'
禁用方案
python {baseDir}/scripts/context_manager.py update \
  --section banned \
  --add "Direct database writes from agent scripts (use permission gating)"

何时使用此技能

当任务需要在单个可信工作区内进行本地、基于文件的多 Agent 协调时,使用此技能。捆绑的全部 6 个 Python 脚本均在本地运行,不进行任何网络调用,不创建子进程,也不依赖第三方包。

适用场景
  • 任务委派 — 将复杂工作分解为子任务,并路由给命名的会话内 Agent(data_analyst、strategy_advisor、risk_assessor)
  • 并行执行 — 同时运行多个本地 Agent,并通过共享黑板综合结果
  • 权限墙 — 在执行敏感的本地操作前,对抽象资源标签(DATABASE、PAYMENTS、EMAIL、FILE_EXPORT)进行评分并控制访问
  • 共享黑板 — 通过持久化 Markdown 文件,在会话内 Agent 之间协调临时任务状态
请勿用于
  • 调用外部 API 或网络服务 — 随附的 Python 脚本不会发起任何出站网络调用
  • 生产环境中的身份验证或授权 — 授权令牌仅为咨询性评分输出,并非经过身份验证的凭据;请勿将其用作实际访问控制
  • 执行 Shell 命令或启动 Agent — 这些功能需要使用 TypeScript 库(npm install network-ai),并配置操作员级别的 AgentRuntime + SandboxPolicy;此技能绝不会启用这些功能
  • 启动 MCP 或 HTTP 服务 — 可选的 MCP 服务(bin/mcp-server.ts)是 npm 包的功能,必须由操作员明确启动;它不属于此技能包
  • 任何可通过一次直接工具调用解决的任务 — 此技能会增加协调开销,仅适用于多个 Agent 必须共享状态的情况

快速开始

1. 初始化预算(首先!)

执行任何多 Agent 任务前,务必初始化预算:

python {baseDir}/scripts/swarm_guard.py budget-init \
  --task-id "task_001" \
  --budget 10000 \
  --description "Q4 Financial Analysis"
2. 分派任务前检查预算

分派任何任务前,务必运行预算守卫:

# 1. Check budget (this skill's Python script)
python {baseDir}/scripts/swarm_guard.py intercept-handoff \
  --task-id "task_001" --from orchestrator --to data_analyst \
  --message "Analyze Q4 revenue data"

# 2. If result.allowed == true, proceed with delegation via your platform's built-in tools.
# If result.allowed == false, stop — budget exceeded or handoff limit reached.
3. 访问 API 前检查权限

访问 SAP 或 Financial API 前,请评估请求:

# Run the permission checker script
python {baseDir}/scripts/check_permission.py \
  --agent "data_analyst" \
  --resource "DATABASE" \
  --justification "Need Q4 invoice data for quarterly report" \
  --scope "read:invoices"

脚本获批时会输出授权令牌,遭拒时则会输出拒绝原因。

4. 使用共享黑板

读取/写入协调状态:

# Write to blackboard
python {baseDir}/scripts/blackboard.py write "task:q4_analysis" '{"status": "in_progress", "agent": "data_analyst"}'

# Read from blackboard  
python {baseDir}/scripts/blackboard.py read "task:q4_analysis"

# List all entries
python {baseDir}/scripts/blackboard.py list

Agent 间交接协议

在 Agent 间分派任务时,务必先运行预算守卫。

步骤 1:初始化预算并检查容量
# Initialize budget (if not already done)
python {baseDir}/scripts/swarm_guard.py budget-init --task-id "task_001" --budget 10000

# Check current status
python {baseDir}/scripts/swarm_guard.py budget-check --task-id "task_001"
步骤 2:确定目标 Agent

常见的 Agent 类型:

Agent专长
data_analyst数据处理、SQL、分析
strategy_advisor商业策略、建议
risk_assessor风险分析、合规检查
orchestrator协调、任务分解
步骤 3:分派前运行预算守卫
# Check budget AND handoff limits before delegating
python {baseDir}/scripts/swarm_guard.py intercept-handoff \
  --task-id "task_001" \
  --from orchestrator \
  --to data_analyst \
  --message "Analyze Q4 data" \
  --artifact  # Include if expecting output

**如果 ALLOWED:**通过你所在平台自带的工具继续分派 **如果 BLOCKED:**停止 — 预算超出或已达到交接上限;请勿分派

步骤 4:构造交接消息

分派时包含以下字段:

  • instruction:清晰的任务描述
  • context:相关背景信息
  • constraints:任何限制或要求
  • expectedOutput:你需要的格式/内容
步骤 5:检查结果

分派完成后,从黑板读取结果:

python {baseDir}/scripts/blackboard.py read "task:001:data_analyst"

权限评分

令牌仅为审计评分输出。check_permission.py 生成的授权令牌并非经过身份验证的凭据,绝不能用作实际访问控制。它们是基于本地评分模型生成的参考提示。访问 PAYMENTS、DATABASE 或 FILE_EXPORT 资源前,必须使用单独的经过身份验证的身份,并获得明确的人工批准。

访问以下资源前,务必进行权限评分:

  • DATABASE — 内部数据库/数据存储(抽象标签 — 不使用外部凭据)
  • PAYMENTS — 金融/支付数据服务(抽象标签 — 需要 --confirm-high-risk)
  • EMAIL — 电子邮件发送功能(抽象标签)
  • FILE_EXPORT — 将数据导出到本地文件(抽象标签 — 需要 --confirm-high-risk)

注意:这些是 check_permission.py 使用的抽象本地资源类型名称。无需使用外部 API 凭据 — 所有评估均在本地运行。

权限评估标准
因素权重标准
正当理由40%必须说明具体的任务需求
信任级别30%Agent 已建立的信任评分
风险评估30%资源敏感度 + 范围广度
使用权限脚本
# Request permission
python {baseDir}/scripts/check_permission.py \
  --agent "your_agent_id" \
  --resource "PAYMENTS" \
  --justification "Generating quarterly financial summary for board presentation" \
  --scope "read:revenue,read:expenses"

# Output if approved:
# ✅ GRANTED
# Token: grant_a1b2c3d4e5f6
# Expires: 2026-02-04T15:30:00Z
# Restrictions: read_only, no_pii_fields, audit_required

# Output if denied:
# ❌ DENIED
# Reason: Justification is insufficient. Please provide specific task context.
限制类型
资源默认限制
DATABASEread_only、max_records:100
PAYMENTSread_only、no_pii_fields、audit_required
EMAILrate_limit:10_per_minute
FILE_EXPORTanonymize_pii、local_only

共享黑板模式

黑板(swarm-blackboard.md)是用于 Agent 协作的 Markdown 文件:

# Swarm Blackboard
Last Updated: 2026-02-04T10:30:00Z

## Knowledge Cache
### task:q4_analysis
{"status": "completed", "result": {...}, "agent": "data_analyst"}

### cache:revenue_summary  
{"q4_total": 1250000, "growth": 0.15}
黑板操作
# Write with TTL (expires after 1 hour)
python {baseDir}/scripts/blackboard.py write "cache:temp_data" '{"value": 123}' --ttl 3600

# Read (returns null if expired)
python {baseDir}/scripts/blackboard.py read "cache:temp_data"

# Delete
python {baseDir}/scripts/blackboard.py delete "cache:temp_data"

# Get full snapshot
python {baseDir}/scripts/blackboard.py snapshot

并行执行

对于需要多个 Agent 视角的任务:

策略 1:合并(默认)

将所有 Agent 的输出合并为统一结果。

Ask data_analyst AND strategy_advisor to both analyze the dataset.
Merge their insights into a comprehensive report.
策略 2:投票

在需要达成共识时使用——选择置信度最高的结果。

策略 3:首个成功

用于冗余处理——采用首个成功的结果。

策略 4:链式

按顺序处理——将一个步骤的输出传递给下一个步骤。

TypeScript 引擎(v4.15.0): 这些策略直接对应 FanOutFanIn 模块(lib/fan-out.ts),该模块提供 merge、vote、firstSuccess 和 consensus 汇入策略,并支持并发控制。对于带审批关卡的多阶段工作流,请参阅 PhasePipeline(lib/phase-pipeline.ts)。有关结果评分和阈值筛选,请参阅 ConfidenceFilter(lib/confidence-filter.ts)。基于匹配器的钩子(lib/adapter-hooks.ts)可通过 glob 模式指定特定 Agent 或工具。有关沙箱化 Agent 执行,请参阅 AgentRuntime(lib/agent-runtime.ts)。有关大规模 Agent 协调,请参阅 StrategyAgent(lib/strategy-agent.ts)。

并行工作流示例
# For each delegation below, first run the budget guard:
#   python {baseDir}/scripts/swarm_guard.py intercept-handoff --task-id "task_001" --from orchestrator --to <agent> --message "<task>"
# If result.allowed == true, delegate via your platform's own tools.
1. Delegate to data_analyst: "Extract key metrics from Q4 data"
2. Delegate to risk_assessor: "Identify compliance risks in Q4 data"
3. Delegate to strategy_advisor: "Recommend actions based on Q4 trends"
4. Wait for all results and read them from the blackboard
5. Synthesize: Combine metrics + risks + recommendations into executive summary

安全注意事项

  1. 切勿绕过权限墙访问受限资源
  2. 务必说明理由,解释业务需求
  3. 尽量缩小范围——仅请求所需权限
  4. 检查令牌是否过期——令牌有效期为 5 分钟
  5. 验证令牌——使用 python {baseDir}/scripts/validate_token.py TOKEN 在使用授权令牌前进行验证
  6. 审计跟踪——所有权限请求都会记录

📝 审计跟踪要求(强制)

每项敏感操作都必须记录到 data/audit_log.jsonl,以满足合规要求并支持取证分析。

隐私说明: 审计日志条目包含由 Agent 提供的自由文本字段(理由、描述)。这些内容会存储在本地的 data/audit_log.jsonl 中,并且仅由此技能保留在本机——不会有任何审计数据离开本地文件系统。不过,请勿在理由字符串中填写个人身份信息(PII)、密码或 API 密钥——这些内容会持久保存在磁盘上。请考虑定期轮换日志,并限制 data/ 目录的操作系统文件权限。

自动记录的内容

脚本会自动记录以下事件:

  • permission_granted - 访问获批时
  • permission_denied - 访问被拒绝时
  • permission_revoked - 手动撤销令牌时
  • ttl_cleanup - 清除过期令牌时
  • result_validated / result_rejected - Swarm Guard 验证结果
日志条目格式
{
  "timestamp": "2026-02-04T10:30:00+00:00",
  "action": "permission_granted",
  "details": {
    "agent_id": "data_analyst",
    "resource_type": "DATABASE",
    "justification": "Q4 revenue analysis",
    "token": "grant_abc123...",
    "restrictions": ["read_only", "max_records:100"]
  }
}
查看审计日志
# View recent entries (last 10)
tail -10 {baseDir}/data/audit_log.jsonl

# Search for specific agent
grep "data_analyst" {baseDir}/data/audit_log.jsonl

# Count actions by type
cat {baseDir}/data/audit_log.jsonl | jq -r '.action' | sort | uniq -c
自定义审计条目

如果你手动执行敏感操作,请记录该操作:

import json
from datetime import datetime, timezone
from pathlib import Path

audit_file = Path("{baseDir}/data/audit_log.jsonl")
entry = {
    "timestamp": datetime.now(timezone.utc).isoformat(),
    "action": "manual_data_access",
    "details": {
        "agent": "orchestrator",
        "description": "Direct database query for debugging",
        "justification": "Investigating data sync issue #1234"
    }
}
with open(audit_file, "a") as f:
    f.write(json.dumps(entry) + "\n")

🧹 TTL 强制执行(令牌生命周期)

过期令牌会自动停止通过验证:validate_token.py 会拒绝任何超过其 expires_at 时间的授权。清除 data/active_grants.json 中的过期条目需要手动操作:

# Validate a grant token
python {baseDir}/scripts/validate_token.py grant_a1b2c3d4e5f6

# List expired tokens (without removing)
python {baseDir}/scripts/revoke_token.py --list-expired

# Remove all expired tokens
python {baseDir}/scripts/revoke_token.py --cleanup

# Output:
# 🧹 TTL Cleanup Complete
#    Removed: 3 expired token(s)
#    Remaining active grants: 2

最佳实践:在每项多 Agent 任务开始时运行 --cleanup,确保权限状态干净。

⚠️ Swarm Guard:防止常见故障

两个关键问题可能会导致多 Agent 群组任务失败:

1. 交接成本 💸

问题:Agent 把令牌浪费在“讨论”工作上,而不是实际执行。

预防措施:

# Before each handoff, check your budget:
python {baseDir}/scripts/swarm_guard.py check-handoff --task-id "task_001"

# Output:
# 🟢 Task: task_001
#    Handoffs: 1/3
#    Remaining: 2
#    Action Ratio: 100%

强制执行的规则:

  • 每项任务最多交接 3 次——达到 3 次后,必须生成输出或中止
  • 每条消息最多 500 个字符——保持简洁:指令 + 限制条件 + 预期输出
  • 行动比例 60%——至少 60% 的交接必须产出成果
  • 规划时间限制 2 分钟——2 分钟后仍无输出 = 超时
# Record a handoff (with tax checking):
python {baseDir}/scripts/swarm_guard.py record-handoff \
  --task-id "task_001" \
  --from orchestrator \
  --to data_analyst \
  --message "Analyze sales data, output JSON summary" \
  --artifact  # Include if this handoff produces output
2. 静默故障检测 👻

问题:一个 Agent 静默失败,其他 Agent 仍继续使用错误数据工作。

预防措施 - 心跳:

# Agents must send heartbeats while working:
python {baseDir}/scripts/swarm_guard.py heartbeat --agent data_analyst --task-id "task_001"

# Check if an agent is healthy:
python {baseDir}/scripts/swarm_guard.py health-check --agent data_analyst

# Output if healthy:
# 💚 Agent 'data_analyst' is HEALTHY
#    Last seen: 15s ago

# Output if failed:
# 💔 Agent 'data_analyst' is UNHEALTHY
#    Reason: STALE_HEARTBEAT
#    → Do NOT use any pending results from this agent.

预防措施 - 结果验证:

# Before using another agent's result, validate it:
python {baseDir}/scripts/swarm_guard.py validate-result \
  --task-id "task_001" \
  --agent data_analyst \
  --result '{"status": "success", "output": {"revenue": 125000}, "confidence": 0.85}'

# Output:
# ✅ RESULT VALID
#    → APPROVED - Result can be used by other agents

必需的结果字段:status、output、confidence(0 到 1 之间的数字)

置信度低于 0.7 的结果会报告为 ⚠️ RESULT NEEDS REVIEW,并标记 usable: false(退出代码为 1)。在人类审核或 Agent 以更高置信度重新运行之前,不要将其传递给其他 Agent;在此之前,主管审核会返回 BLOCKED。

主管审核

完成任何任务之前,请运行主管审核:

python {baseDir}/scripts/swarm_guard.py supervisor-review --task-id "task_001"

# Output:
# ✅ SUPERVISOR VERDICT: APPROVED
#    Task: task_001
#    Age: 1.5 minutes
#    Handoffs: 2
#    Artifacts: 2

判定结果:

  • APPROVED - 任务状态良好,结果可用
  • WARNING - 检测到问题,建议审核
  • BLOCKED - 存在严重故障或结果待审核(验证失败、置信度低、Agent 状态不健康、超出预算),切勿使用这些结果

故障排除

权限被拒绝
  • 提供更具体的理由(说明任务、目的和预期结果)
  • 缩小请求范围
  • 检查 Agent 信任级别
黑板读取返回 Null
  • 条目可能已过期(检查 TTL)
  • 键可能拼写错误
  • 条目从未写入
未找到会话
  • 运行 sessions_list(OpenClaw 平台内置命令)查看可用会话
  • 可能需要先启动会话

安全框架评估(MAESTRO / OWASP AST)

以下发现摘自 MAESTRO Agent Security Threat 框架(OWASP LLM / ASVS 映射)。这些问题已由 Network-AI 中现有的架构控制措施解决,并非未修复的漏洞。

**引擎级 OWASP Agentic AI Top 10(2026):**TypeScript 编排引擎将全部 10 个 OWASP Agentic 风险类别(ASI-01 … ASI-10)映射到确定性控制,可通过 verifyOwaspCoverage()(lib/owasp-compliance.ts,由 network-ai 导出)以编程方式验证。请参阅 README 中的覆盖范围表。以下 MAESTRO/AST 发现针对随附的 Python 技能脚本。

AST03 — 权限过大的技能 · 严重性:高

授予技能的权限超出其所述功能所需范围;若遭遇提示词注入,影响范围会过大。

控制措施Network-AI 的应对方式
权限清单SKILL.md frontmatter 中的 metadata.openclaw 明确声明 capabilities(文件系统路径、仅限 NETWORK_AI_ENV、无 shell、无端口、单次调用脚本)、bundle_scope、network_calls: none 和 requires.bins: [python3];allowed-tools 将工具范围限制为随附的六个脚本及 Read — 不包含 API 凭据或外部服务
遵循最小权限原则的资源门控check_permission.py 使用加权评分模型(理由占 40 %、信任占 30 %、风险占 30 %);PAYMENTS、DATABASE 和 FILE_EXPORT(HIGH_RISK_RESOURCES)在颁发任何令牌之前,都要求使用 --confirm-high-risk 确认;--scope 将每项授权限制在所需的最低访问权限
仅使用抽象资源标签PAYMENTS、DATABASE、EMAIL、FILE_EXPORT 是本地评分标签 — 技能中不存在外部凭据;没有任何信息可泄露给外部服务
HMAC 签名的授权令牌从 v5.5.2 起,每条授权记录都包含 _sig(基于规范字段生成的 HMAC-SHA256);validate_token.py 会拒绝遭篡改的记录 — 可在验证时检测通过伪造授权进行的权限提升
仅供参考的令牌所有授权令牌都明确标记为 advisory: true;下游系统在执行任何实际敏感操作前,必须另行添加经过身份验证的身份检查和人工审批 — 相关要求已在 frontmatter 和整个 SKILL.md 中说明
AST06 — 隔离性较弱 · 严重性:高

技能在宿主 Agent 的安全上下文中执行,拥有完整的文件系统、Shell 和网络访问权限。

控制措施Network-AI 如何应对
不进行网络调用,不使用 Shell所有捆绑的 Python 脚本仅使用 Python 标准库,不启动子进程,不执行 Shell 命令,不打开套接字,也不进行网络调用;这些声明记录在 metadata.openclaw.capabilities、network_calls 和 bundle_scope 中。此技能不会安装或启动任何服务、运行时或软件包。
环境隔离NETWORK_AI_ENV / --env 会将所有状态路由到 data/<env>/;开发、预发布和生产状态完全隔离;实时状态(audit_log.jsonl、active_grants.json)绝不会跨环境迁移
由调用方驱动执行每个脚本在收到明确命令后运行一次,然后退出;不会安排任务,也不会持续运行。权限评分仅供参考;是否据此采取行动由调用方(或人工)决定。
无热重载入口捆绑的脚本不会实现或响应 SkillsWatcher;技能更新需要显式执行 clawhub install,因此不可能在会话中途重新加载

沙盒 Shell 执行(AgentRuntime、SandboxPolicy、ApprovalGate——默认需要人工批准)仅存在于独立的 TypeScript npm 软件包中,不属于此技能包。

AST07 — 更新漂移 · 严重性:中

已安装的技能会逐渐不同步——要么未打补丁(导致已知 CVE 仍未修复),要么盲目自动更新(可能收到恶意补丁)。

控制措施Network-AI 如何应对
精确固定版本npm package.json 使用精确的 "version": "5.17.1",不使用 semver 范围说明符;clawhub install network-ai 会固定到特定的已发布版本
无传递依赖漂移所有捆绑的 Python 脚本仅使用 Python 标准库,无需执行 pip install;没有会发生漂移、被上游攻陷或引入 CVE 的第三方软件包
已签名并打标签的发布版本每个发布版本都通过已签名的 Git 标签(v5.7.x)提交;可根据 CHANGELOG.md 验证提交哈希;GitHub 发布页面将标签 → 差异 → 更新日志条目关联起来
供应链监控Socket.dev 持续为 npm 软件包评分(得分 A);任何新增依赖项或权限变更都会触发警报
无自动更新机制更新需要用户显式操作(clawhub install、npm install network-ai@latest);不存在后台更新程序或热重载路径
CHANGELOG.md 审计记录每项变更——包括仅涉及文档的补丁——都会记录版本、日期和原因;运维人员可以对比任意两个版本,在应用更新前评估其风险

安全扫描结果(ClawHub)

此技能各项发现的扫描历史和已记录的缓解措施保存在仓库的 SECURITY.md(安全扫描结果,ClawHub 技能扫描发现)中。

捆绑脚本清单

此技能中每个文件的完整 I/O 范围。没有脚本会发起网络请求、打开套接字、生成子进程或读取 NETWORK_AI_ENV 以外的环境变量。以下路径均位于 data/ 下(或设置 NETWORK_AI_ENV / --env 时位于 data/<env>/ 下)。

脚本用途读取写入
scripts/blackboard.py支持提议 / 验证 / 提交的共享黑板swarm-blackboard.md、pending_changes/*.json、.blackboard.lockswarm-blackboard.md、pending_changes/*.json、pending_changes/archive/*.json(已提交 / 已中止的更改)、.blackboard.lock
scripts/check_permission.py根据抽象标签进行建议性权限评分active_grants.json、audit_log.jsonl、.signing_keyactive_grants.json、audit_log.jsonl、.signing_key(首次运行时)
scripts/validate_token.py验证建议性授权的 HMAC 签名和有效期active_grants.json、.signing_key无
scripts/revoke_token.py撤销建议性授权,移除已过期授权active_grants.json、audit_log.jsonlactive_grants.json、audit_log.jsonl
scripts/context_manager.py经过验证的项目上下文(第 3 层记忆)project-context.jsonproject-context.json、audit_log.jsonl
scripts/swarm_guard.py预算、交接和运行状况防护swarm_budgets.json、heartbeats.json、task_tracking.json、agent_health.json、budget_tracking.json、audit_log.jsonl相同的六个文件

参考资料

此技能属于更大的 Network-AI 项目。有关权限系统、黑板架构和信任级别计算的完整文档,请参阅该仓库。

评论

支持 Markdown