关于 network-ai
network-ai 是用于本地文件协作的多 Agent 编排技能,面向需要共享状态与权限检查的复杂工作流。它提供预算拦截、共享黑板和持久项目上下文;不负责启动 Agent 或调用网络。
主要功能
- 01任务预算与交接检查
- 02TTL 共享黑板
- 03持久项目上下文管理
- 04敏感资源权限评分
- 05按环境隔离数据
适用场景
- 01在多个会话内协调子任务
- 02并行 Agent 共享任务结果
- 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,并综合结果。请遵循以下协议:
核心职责
- 拆解复杂提示词,将其拆分为 3 个专门的子任务
- 委派时使用考虑预算的交接协议
- 验证结果,确认其已写入黑板后再提交
- 仅在所有验证通过后才综合最终输出
任务分解协议
收到复杂请求时,将其精确分解为 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 都使用三层记忆,每层的范围和生命周期各不相同:
| 层级 | 名称 | 生命周期 | 管理方 |
|---|---|---|---|
| 1 | Agent 上下文 | 临时——仅限当前任务 | 平台(按会话) |
| 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.
限制类型
| 资源 | 默认限制 |
|---|---|
| DATABASE | read_only、max_records:100 |
| PAYMENTS | read_only、no_pii_fields、audit_required |
rate_limit:10_per_minute | |
| FILE_EXPORT | anonymize_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
安全注意事项
- 切勿绕过权限墙访问受限资源
- 务必说明理由,解释业务需求
- 尽量缩小范围——仅请求所需权限
- 检查令牌是否过期——令牌有效期为 5 分钟
- 验证令牌——使用
python {baseDir}/scripts/validate_token.py TOKEN在使用授权令牌前进行验证 - 审计跟踪——所有权限请求都会记录
📝 审计跟踪要求(强制)
每项敏感操作都必须记录到 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.lock | swarm-blackboard.md、pending_changes/*.json、pending_changes/archive/*.json(已提交 / 已中止的更改)、.blackboard.lock |
scripts/check_permission.py | 根据抽象标签进行建议性权限评分 | active_grants.json、audit_log.jsonl、.signing_key | active_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.jsonl | active_grants.json、audit_log.jsonl |
scripts/context_manager.py | 经过验证的项目上下文(第 3 层记忆) | project-context.json | project-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 项目。有关权限系统、黑板架构和信任级别计算的完整文档,请参阅该仓库。