Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| f6e8d40459 | |||
| 2c55213d39 | |||
| 28da16829f |
63
README.md
63
README.md
@@ -1,8 +1,31 @@
|
||||
# 黄庄三号四能力 Agent
|
||||
|
||||
基于 LangGraph 的多能力 AI Agent,集成 FC / MCP / 思考模式 / Skill 四种核心能力。
|
||||
基于 LangGraph 的多能力 AI Agent,集成 FC / MCP / 思考模式 / Skill 四种核心能力,**v3.0 支持多Agent交互**。
|
||||
|
||||
**v2.0 配置驱动版** — 新增工具/技能/MCP服务器无需改源码,丢文件或改配置即可。
|
||||
## 核心架构:Supervisor + Worker + Aggregator
|
||||
|
||||
```
|
||||
用户输入 → Supervisor(分析/分解/调度)
|
||||
│
|
||||
┌──────────┼──────────┬──────────┐
|
||||
▼ ▼ ▼ ▼
|
||||
┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐
|
||||
│天气 │ │数学 │ │知识 │ │MCP │ ← 各Worker Agent
|
||||
│专家 │ │专家 │ │专家 │ │Agent │
|
||||
└──┬───┘ └──┬───┘ └──┬───┘ └──┬───┘
|
||||
│ │ │ │
|
||||
└─────────┴─────────┴─────────┘
|
||||
│
|
||||
Aggregator(聚合)
|
||||
│
|
||||
最终回复
|
||||
```
|
||||
|
||||
**关键能力:**
|
||||
- **并行执行**:多个Agent同时处理不同子任务(Send API)
|
||||
- **串行执行**:单Agent直接处理简单任务
|
||||
- **结果聚合**:多Agent结果自动合并为连贯回复
|
||||
- **智能调度**:Supervisor自动分析任务、选择Agent
|
||||
|
||||
## 四项能力
|
||||
|
||||
@@ -69,6 +92,10 @@ TOOLS = [get_stock_price] # 必须!供自动扫描
|
||||
|
||||
## 新增技能
|
||||
|
||||
支持两种格式:
|
||||
|
||||
### 格式1: .yaml 文件(简洁定义)
|
||||
|
||||
在 `skills/` 目录下创建 .yaml 文件:
|
||||
|
||||
```yaml
|
||||
@@ -82,11 +109,41 @@ tools:
|
||||
- get_stock_price
|
||||
```
|
||||
|
||||
然后在 `config.yaml` 的 `skill_keywords` 中添加路由关键词:
|
||||
### 格式2: OpenClaw 格式(目录 + SKILL.md + scripts/)
|
||||
|
||||
在 `skills/` 目录下创建目录,放入 `SKILL.md` 和 `scripts/`:
|
||||
|
||||
```
|
||||
skills/
|
||||
└── my-skill/
|
||||
├── SKILL.md ← OpenClaw 标准格式
|
||||
└── scripts/
|
||||
└── do_something.py
|
||||
```
|
||||
|
||||
SKILL.md 格式:
|
||||
|
||||
```markdown
|
||||
---
|
||||
name: my-skill
|
||||
description: "我的自定义技能"
|
||||
---
|
||||
|
||||
# 我的自定义技能
|
||||
|
||||
技能的详细说明和使用方法...
|
||||
```
|
||||
|
||||
Agent 会自动扫描 SKILL.md 的 frontmatter 和 scripts/ 目录,执行脚本并将输出传给 LLM。
|
||||
|
||||
### 路由关键词
|
||||
|
||||
无论哪种格式,都需要在 `config.yaml` 的 `skill_keywords` 中添加路由:
|
||||
|
||||
```yaml
|
||||
skill_keywords:
|
||||
stock_analyst: ["股价", "股票", "行情"]
|
||||
my-skill: ["关键词1", "关键词2"]
|
||||
```
|
||||
|
||||
## 新增 MCP 服务器
|
||||
|
||||
@@ -33,3 +33,4 @@ skill_keywords:
|
||||
weather_analyst: ["天气", "出行", "穿什么"]
|
||||
math_tutor: ["计算", "算", "数学", "等于多少"]
|
||||
knowledge_explorer: ["是什么", "解释", "了解"]
|
||||
time-tool: ["时间工具", "日期", "星期几"]
|
||||
|
||||
19
skills/time-tool/SKILL.md
Normal file
19
skills/time-tool/SKILL.md
Normal file
@@ -0,0 +1,19 @@
|
||||
---
|
||||
name: time-tool
|
||||
description: "时间工具 - 获取当前时间和日期信息"
|
||||
---
|
||||
|
||||
# 时间工具
|
||||
|
||||
获取当前时间、日期信息,以及进行简单的日期计算。
|
||||
|
||||
## 使用方法
|
||||
|
||||
```bash
|
||||
python3 scripts/time_info.py [时区]
|
||||
```
|
||||
|
||||
## 功能
|
||||
- 获取当前时间(支持指定时区)
|
||||
- 获取当前日期和星期
|
||||
- 输出格式化的时间信息
|
||||
34
skills/time-tool/scripts/time_info.py
Normal file
34
skills/time-tool/scripts/time_info.py
Normal file
@@ -0,0 +1,34 @@
|
||||
#!/usr/bin/env python3
|
||||
"""时间信息脚本 - OpenClaw skill 示例"""
|
||||
import sys
|
||||
from datetime import datetime
|
||||
|
||||
try:
|
||||
import pytz
|
||||
HAS_PYTZ = True
|
||||
except ImportError:
|
||||
HAS_PYTZ = False
|
||||
|
||||
def main():
|
||||
tz_name = sys.argv[1] if len(sys.argv) > 1 else "Asia/Shanghai"
|
||||
|
||||
if HAS_PYTZ:
|
||||
try:
|
||||
tz = pytz.timezone(tz_name)
|
||||
now = datetime.now(tz)
|
||||
except Exception:
|
||||
now = datetime.now()
|
||||
tz_name = "本地时间"
|
||||
else:
|
||||
now = datetime.now()
|
||||
tz_name = "本地时间"
|
||||
|
||||
weekdays = ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"]
|
||||
|
||||
print(f"时区: {tz_name}")
|
||||
print(f"日期: {now.strftime('%Y年%m月%d日')}")
|
||||
print(f"星期: {weekdays[now.weekday()]}")
|
||||
print(f"时间: {now.strftime('%H:%M:%S')}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user