first build nexus

This commit is contained in:
billyshen
2026-03-23 20:57:45 +08:00
parent acb58c5684
commit e312026141
400 changed files with 52448 additions and 0 deletions

View File

@@ -0,0 +1,458 @@
# Agent 任务管理 CLI 工具实现方案
> 创建日期2026-03-19
> 作者:星枢
> 用途:定义 CLI 工具的具体实现,供 Agent 调用
---
## 1. 概述
本文档定义用于任务管理的 CLI 工具,帮助执行 Agentyunjiang、yunzhi、fengchi 等)与 Notion 任务看板交互,实现任务领取、执行、更新、验收等操作。
**核心原则**
- 简单可靠:一条命令完成一个操作
- 幂等性:重复执行不产生副作用
- 可观测:输出关键日志,便于调试
---
## 2. 工具设计
### 2.1 命令结构
```bash
kanban <command> [options]
```
### 2.2 命令列表
| 命令 | 用途 | 示例 |
|------|------|------|
| `kanban list` | 列出任务 | `kanban list -s TODO -a yunjiang` |
| `kanban get` | 查看任务详情 | `kanban get <task-id>` |
| `kanban take` | 领取任务 | `kanban take <task-id>` |
| `kanban done` | 完成任务 | `kanban done <task-id> -r /path/to/report.md` |
| `kanban review` | 验收任务 | `kanban review <task-id> -r pass -m "验收说明"` |
| `kanban my-tasks` | 我的待办任务 | `kanban my-tasks` |
| `kanban pending-review` | 待我验收的任务 | `kanban pending-review` |
---
## 3. 详细命令定义
### 3.1 kanban list
列出符合条件的任务。
```bash
kanban list [options]
```
**选项**
| 选项 | 缩写 | 说明 | 默认值 |
|------|------|------|--------|
| `--status` | `-s` | 任务状态 | 全部 |
| `--assignee` | `-a` | 执行者 | 全部 |
| `--priority` | `-p` | 优先级 | 全部 |
| `--limit` | `-l` | 返回数量限制 | 10 |
**示例**
```bash
# 列出我yunjiang待执行的任务
kanban list -s TODO -a yunjiang
# 列出所有待验收的任务
kanban list -s "待验收"
# 列出优先级最高的任务限制5条
kanban list -s TODO -p 1 -l 5
```
**输出格式**
```
ID 任务名 状态 执行者 优先级
----------- ------------------------ -------- ----------- --------
abc123 配置 CI/CD 流水线 TODO yunjiang 1
def456 修复登录 Bug TODO yunjiang 2
```
---
### 3.2 kanban get
查看单个任务的完整信息。
```bash
kanban get <task-id>
```
**示例**
```bash
kanban get abc123
```
**输出格式**
```
任务: 配置 CI/CD 流水线
ID: abc123
状态: TODO
优先级: 1
执行者: yunjiang
验收者: fengheng
验收标准:
- CI 流水线运行成功
- 测试覆盖率 > 80%
- 部署到测试环境无报错
验收方式: 自动
依赖任务: def456 (已完成)
创建时间: 2026-03-18 10:00
```
---
### 3.3 kanban take
领取任务,将状态从 TODO 改为 进行中。
```bash
kanban take <task-id>
```
**示例**
```bash
kanban take abc123
```
**输出**
```
✅ 已领取任务: abc123
状态: TODO → 进行中
```
**错误情况**
```
❌ 任务已被其他人领取 (状态: 进行中, 执行者: yunzhi)
❌ 依赖任务未完成 (依赖: def456 状态: TODO)
```
---
### 3.4 kanban done
完成任务,将状态从 进行中 改为 待验收。
```bash
kanban done <task-id> [options]
```
**选项**
| 选项 | 缩写 | 说明 | 必需 |
|------|------|------|------|
| `--report` | `-r` | Obsidian 报告文件路径 | 是 |
**示例**
```bash
# 完成任务并提交报告
kanban done abc123 -r /Users/weishen/Obsidian/shenwei/reports/2026-03-19/ci-pipeline.md
```
**输出**
```
✅ 任务完成: abc123
状态: 进行中 → 待验收
报告: /Users/weishen/Obsidian/shenwei/reports/2026-03-19/ci-pipeline.md
```
**错误情况**
```
❌ 任务状态不是进行中,无法完成
❌ 报告文件不存在
```
---
### 3.5 kanban review
验收任务(供 fengheng 使用)。
```bash
kanban review <task-id> [options]
```
**选项**
| 选项 | 缩写 | 说明 | 必需 |
|------|------|------|------|
| `--result` | `-r` | 验收结果:`pass``fail` | 是 |
| `--message` | `-m` | 验收说明或失败原因 | 否 |
**示例**
```bash
# 验收通过
kanban review abc123 -r pass -m "CI 流水线运行成功,测试通过"
# 验收失败
kanban review abc123 -r fail -m "部署脚本有语法错误"
```
**输出**
```
✅ 验收通过: abc123
状态: 待验收 → 完成
❌ 验收失败: abc123
状态: 待验收 → 需修复
原因: 部署脚本有语法错误
```
---
### 3.6 kanban my-tasks
查看当前 Agent 待执行的任务(快捷命令)。
```bash
kanban my-tasks
```
**实现逻辑**:等同于 `kanban list -s TODO -a <当前Agent-ID>`
**输出**
```
🎯 你有 2 个待执行任务:
[1] 配置 CI/CD 流水线 (优先级: 1)
ID: abc123
验收标准: CI 运行成功, 覆盖率 > 80%
[2] 修复登录 Bug (优先级: 2)
ID: def456
验收标准: 登录流程无报错
```
---
### 3.7 kanban pending-review
查看待当前 Agent 验收的任务(快捷命令,供 fengheng 使用)。
```bash
kanban pending-review
```
**实现逻辑**:等同于 `kanban list -s "待验收" -a fengheng`
---
## 4. 实现架构
### 4.1 目录结构
```
/opt/kanban/
├── bin/
│ └── kanban # 主入口脚本
├── src/
│ ├── __init__.py
│ ├── cli.py # CLI 参数解析
│ ├── notion_client.py # Notion API 封装
│ ├── obsidian_client.py # Obsidian 操作封装
│ └── config.py # 配置管理
├── config/
│ └── config.yaml # 配置文件
└── reports/ # 报告输出目录(可选)
```
### 4.2 配置文件 config.yaml
```yaml
notion:
api_key: "secret_xxxxxxxxxxxxx"
database_id: "xxxxxxxxxxxxx"
obsidian:
vault_path: "/Users/weishen/Obsidian/shenwei"
reports_folder: "reports"
agent:
# 当前 Agent ID由启动时注入
id: "yunjiang"
```
### 4.3 依赖
```txt
# requirements.txt
pyyaml>=6.0
requests>=2.28.0
python-dotenv>=1.0.0
click>=8.0.0
```
---
## 5. Agent 集成方式
### 5.1 环境变量注入
通过环境变量传递当前 Agent ID
```bash
export KANBAN_AGENT_ID="yunjiang"
kanban my-tasks
```
### 5.2 在 Agent 代码中调用
**示例yunjiang 执行任务后**
```python
import subprocess
import os
def execute_and_report(task_id, report_path):
# 1. 执行任务(业务逻辑)...
result = do_task(task_id)
# 2. 生成报告
with open(report_path, 'w') as f:
f.write(f"# 任务执行报告\n\n{result}")
# 3. 调用 CLI 更新 Notion
subprocess.run([
'kanban', 'done', task_id,
'--report', report_path
], env={**os.environ, 'KANBAN_AGENT_ID': 'yunjiang'})
```
---
## 6. 错误处理
### 6.1 错误码
| 错误码 | 说明 |
|--------|------|
| 0 | 成功 |
| 1 | 参数错误 |
| 2 | Notion API 错误 |
| 3 | 任务状态不合法 |
| 4 | 文件不存在 |
| 5 | 权限不足 |
### 6.2 重试机制
对于 Notion API 调用(网络不稳定),实现指数退避重试:
```python
def call_with_retry(func, max_retries=3):
for i in range(max_retries):
try:
return func()
except requests.exceptions.RequestException as e:
if i == max_retries - 1:
raise
time.sleep(2 ** i) # 1s, 2s, 4s
```
---
## 7. 日志
### 7.1 日志级别
| 级别 | 用途 |
|------|------|
| ERROR | 操作失败 |
| WARNING | 警告(可继续) |
| INFO | 关键操作(默认) |
| DEBUG | 调试信息 |
### 7.2 日志格式
```
2026-03-19 07:30:00 [INFO] kanban done abc123 - task completed
2026-03-19 07:30:01 [ERROR] kanban take def456 - dependency not met
```
### 7.3 日志文件
```
/var/log/kanban/kanban.log
```
---
## 8. 部署步骤
### 8.1 安装依赖
```bash
# 安装 Python 依赖
pip install -r requirements.txt
# 确保在 PATH 中
export PATH="/opt/kanban/bin:$PATH"
```
### 8.2 配置
```bash
# 复制配置模板
cp config/config.yaml.example config/config.yaml
# 编辑配置
vim config/config.yaml
# 填入 Notion API Key 和 Database ID
```
### 8.3 测试
```bash
# 测试 list 命令
kanban list -s TODO
# 测试获取任务
kanban get <task-id>
```
---
## 9. 待实现功能
- [ ] Notion API 封装notion_client.py
- [ ] CLI 参数解析cli.py
- [ ] 配置文件管理config.py
- [ ] Obsidian 报告模板
- [ ] 日志系统
- [ ] 错误处理与重试
- [ ] 单元测试
---
## 10. 相关文档
- [[Agent任务管理系统设计]] - 整体架构设计
- [[星枢调度Agent列表]] - Agent 职责定义
- Notion API 官方文档https://developers.notion.com/
---
*最后更新2026-03-19*
*作者:星枢*

View File

@@ -0,0 +1,70 @@
# Agent 任务管理系统实施记录
> 创建日期2026-03-19
---
## 1. Notion Integration 创建
1. 登录 https://www.notion.so/my-integrations
2. 点击 "New integration",命名为"任务调度"
3. 获取 Token`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`
---
## 2. 创建数据库
### 2.1 准备父页面
1. 在 Notion 中创建一个空白页面(如"Agent任务管理"
2. 右上角 ... → Connect to → 选择"任务调度"
### 2.2 创建任务数据库
**Database ID**: `32847fe1-da27-8135-af44-eefdbd3b1640`
| 字段 | 类型 |
|------|------|
| 任务名 | Title |
| 状态 | Select (TODO/进行中/待验收/完成/需修复) |
| 优先级 | Select (1-5) |
| 验收标准 | Rich Text |
| 报告链接 | URL |
### 2.3 创建 Agents 数据库
**Database ID**: `32847fe1-da27-8101-8758-d416db87d4de`
| 字段 | 类型 |
|------|------|
| Agent ID | Title |
| 名称 | Rich Text |
| 服务器 | Select (Ubuntu2/Ubuntu1/Mac Mini) |
| 角色 | Select (云系/风系/星系) |
| 状态 | Select (在线/离线) |
### 2.4 创建任务类型数据库
**Database ID**: `32847fe1-da27-8172-9558-e8cd5ae3e9b4`
| 字段 | 类型 |
|------|------|
| 类型名 | Title |
| 描述 | Rich Text |
---
## 3. 待完成
- [ ] 连接 Agents 和任务类型数据库到"任务调度" Integration
- [ ] 更新任务数据库,添加 Relation 字段(执行者、验收者、任务类型)
- [ ] 添加预设 Agent 数据
- [ ] 添加预设任务类型数据
---
## 4. 数据库链接
- 任务数据库https://www.notion.so/32847fe1da278135af44eefdbd3b1640
- Agentshttps://www.notion.so/32847fe1da2781018758d416db87d4de
- 任务类型https://www.notion.so/32847fe1da2781729558e8cd5ae3e9b4

View File

@@ -0,0 +1,121 @@
# Agent 任务管理系统设计
> 创建日期2026-03-18
> 更新日期2026-03-19
> 参与者:比利哥(用户)、星枢(调度 Agent
---
## 背景与目标
- 我(星枢)接收任务需求 → 写入 Notion 看板 → 执行 Agent 轮询领取 → 执行完成标记
- 全程可通过手机查看任务进度
---
## 系统架构
```
比利哥 → 星枢(规划确认) → Notion看板 → 云系Agent(轮询领取) → 标记完成
```
**测试范围**:先从云系 AgentUbuntu2开始星系暂不动。
---
## Notion 数据库结构
### 1. 任务数据库
| 字段 | 类型 | 说明 |
|------|------|------|
| 任务名 | Title | 任务标题 |
| 任务类型 | Relation → TaskTypes | 关联类型 |
| 状态 | Select | TODO / 进行中 / 待验收 / 完成 / 需修复 |
| 执行者 | Relation → Agents | 谁来执行 |
| 验收者 | Relation → Agents | 谁来验收 |
| 优先级 | Select | 1-51最高 |
| 依赖任务 | Relation | 关联同一数据库的任务(前置任务) |
| 验收标准 | Text | 可量化标准 |
| 报告链接 | URL | 指向 Obsidian 笔记 |
### 2. Agents 数据库
| 字段 | 类型 | 说明 |
|------|------|------|
| Agent ID | Title | 如 yunjiang |
| 名称 | Text | 如 云匠 |
| 服务器 | Select | Ubuntu2 / Ubuntu1 / Mac Mini |
| 角色 | Select | 云系 / 风系 / 星系 |
| 可执行任务类型 | Relation → TaskTypes | 多对多 |
| 状态 | Select | 在线 / 离线 |
### 3. TaskTypes 数据库
| 字段 | 类型 | 说明 |
|------|------|------|
| 类型名 | Title | 如 开发、运维、监控、CI/CD |
| 描述 | Text | 类型说明 |
| 适用 Agent | Relation → Agents | 多对多 |
---
## 工作流程
### 1. 任务创建(星枢执行)
1. 比利哥给需求
2. 星枢分析需求、拆分子任务、指定执行 Agent、定义验收标准
3. 输出任务列表,与比利哥确认
4. 确认后写入 Notion 看板
### 2. 任务执行Agent 轮询)
**每个 Agent 定时轮询3-5 分钟)**
1. 查询条件:状态=TODO AND 执行者=我 AND (无依赖 OR 依赖任务.状态=完成)
2. 领取任务:状态→进行中
3. 执行完成:创建 Obsidian 报告 → 状态→待验收 → 填入报告链接
### 3. 任务验收
- **暂缓**:验收者、验收流程后续再定
---
## 关键设计决策
| 决策 | 说明 |
|------|------|
| 任务分配 | 直接指定执行 Agent优先级驱动 |
| 依赖管理 | 通过 Relation 实现,支持多层级依赖 |
| 任务协作 | Agent 通过轮询感知依赖满足,被动触发(延迟分钟级) |
| 报告存储 | 任务完成后生成 Obsidian 笔记,链接回填 Notion |
---
## 待实现
- [ ] Notion Integration 配置(用户创建,提供 Token
- [ ] 创建三个数据库任务、Agents、TaskTypes
- [ ] Notion API 集成(创建/查询/更新任务)
- [ ] 云系 Agent 配置 Heartbeat 轮询
- [ ] 验证任务获取流程
---
## 相关 Agent
| Agent | 服务器 | 角色 |
|-------|--------|------|
| yunjiang | Ubuntu2 | 云匠 / 开发 |
| yunzhi | Ubuntu2 | 云织 / CI/CD |
| yunhan | Ubuntu2 | 云瀚 / 监控 |
| yunce | Ubuntu2 | 云策 / 架构 |
---
## 备注
- 2026-03-18初始设计
- 2026-03-19补充数据库 Relation 设计、先从云系测试、验收后续再定

116
openclaw/xingshu/MEMORY.md Normal file
View File

@@ -0,0 +1,116 @@
# MEMORY.md - 长期记忆
## 我的身份
- **名字**: 星枢
- **角色**: 最高统领 / Master Orchestrator
- **职责**: 统一调度所有 Agent
- **下属**: 星曜IT 管家)、星辉(个人助理)
---
## Agent 架构体系
### 三层架构
| 层级 | 系列 | 含义 | 主要职责 |
|------|------|------|----------|
| 控制层 | 星系 | 星辰统御 | 调度、管理、智能决策 |
| 技术层 | 云系 | 云海算力 | 开发、架构、监控 |
| 执行层 | 风系 | 风行万里 | 测试、业务执行、流程处理 |
### 当前部署Mac Mini - 中央控制节点)
| Telegram Account | Bot Name | Agent ID | 角色 | 定位 |
|------------------|----------|----------|------|------|
| xingshu | @shenwei_macmini_xingshu_bot | main | 星枢 | 最高统领 / 总调度 |
| xingyao | @shenwei_macmini_xingyao_bot | xingyao | 星曜 | IT 管家 / 运维管理 |
| xinghui | @shenwei_macmini_xinghui_bot | xinghui | 星辉 | 个人助理 / 日程管理 |
### 远程 Agent 配置
#### Ubuntu1准生产服务器
- **地址**: 192.168.3.47
- **Agent**:
- `fengheng`(风衡)- QA测试
- `fengchi`(风驰)- 自动执行
- `fengji`(风纪)- 规则审计
#### Ubuntu2开发服务器
- **地址**: 192.168.3.45
- **Agent**:
- `yunhan`(云瀚)- 监控
- `yunce`(云策)- 架构设计
- `yunjiang`(云匠)- 代码开发
- `yunzhi`(云织)- CI/CD自动化
### 完整 Agent 定位表
| 服务器 | Agent ID | 角色 | 定位 | 职责 |
|--------|----------|------|------|------|
| Mac Mini | main | 星枢 | 最高统领 | 统一调度、战略决策 |
| Mac Mini | xingyao | 星曜 | IT 管家 | 服务器运维、环境管理 |
| Mac Mini | xinghui | 星辉 | 个人助理 | 日程提醒、个人事务 |
| Ubuntu2 | yunhan | 云瀚 | 监控官 | 系统监控、状态巡检 |
| Ubuntu2 | yunce | 云策 | 架构师 | 技术方案、系统规划 |
| Ubuntu2 | yunzhi | 云织 | 自动化师 | CI/CD、流程编排 |
| Ubuntu2 | yunjiang | 云匠 | 工匠 | 代码开发、工程实现 |
| Ubuntu1 | fengheng | 风衡 | 质检官 | QA测试、质量控制 |
| Ubuntu1 | fengchi | 风驰 | 执行者 | 任务执行、业务流程 |
| Ubuntu1 | fengji | 风纪 | 审计官 | 规则审计、合规检查 |
---
## 专属笔记路径
- **星枢笔记库**: `/Users/weishen/Library/Mobile Documents/iCloud~md~obsidian/Documents/weishen/openclaw/xingshu`
- 用于记录我的专属思考、调度决策、团队协作笔记
## 知识库路径
- **Obsidian笔记目录**: `/Users/weishen/Library/Mobile Documents/iCloud~md~obsidian/Documents/weishen/`
- 用户指定的Obsidian笔记根目录
- 以后提及"obsidian笔记目录"即指此路径
- **星枢专属笔记**: `/Users/weishen/Library/Mobile Documents/iCloud~md~obsidian/Documents/weishen/openclaw/xingshu`
- 用于记录我的专属思考、调度决策、团队协作笔记
- **知识库**: `/Users/weishen/Library/Mobile Documents/iCloud~md~obsidian/Documents/weishen/openclaw/knowledgebase`
- 用户创建的Obsidian知识库存放各类知识文档
---
### ⚠️ 重要原则(必须牢记)
**讨论/头脑风暴阶段**
- 未经用户允许,**禁止**安装任何程序、技能或工具
- 未经用户允许,**禁止**编写任何代码
- 未经用户允许,**禁止**创建任何文件或项目
- 必待用户确认全部方案后,方可实施后续步骤
- 节奏由用户掌控,一切行动需等待指令
---
### ⚠️ 失败教训(必须牢记)
**失败原因**
- 使用 `edit` 工具更新任务记录时,因文件中存在多个相似的 JSON 片段,导致 `oldText` 匹配不唯一
- 错误信息:`Found X occurrences of the text in file. The text must be unique.`
**解决方案**
- **禁止使用 edit 工具追加任务记录**
- **必须使用 write 工具重写整个文件**
- 每次添加新任务时,读取当前文件内容,追加新任务,然后使用 write 工具完整写入
---
## :star: 每日必做 - 记忆习惯
1. **每天第一次对话时**: 自动创建当天的记忆文件 `memory/YYYY-MM-DD.md`
2. **记录内容**: 对话中的重要操作、决策、用户要求等
3. **用户要求**: 当用户说"请记住xxxx"时必须记录到记忆文件
4. **同步规则**: MEMORY.md更新后必须同步复制到Obsidian笔记目录
- 笔记目录: `/Users/weishen/Library/Mobile Documents/iCloud~md~obsidian/Documents/weishen/openclaw/xingshu/MEMORY.md`
*此为每日必执行的routine不可遗漏。*

View File

@@ -0,0 +1,215 @@
#!/usr/bin/env python3
"""
Agent 任务轮询脚本
每个 Agent 定时运行,查询分配给自己的任务并执行
"""
import os
import sys
import time
import logging
import requests
from datetime import datetime
# 配置日志
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(levelname)s - %(message)s'
)
logger = logging.getLogger(__name__)
# 环境变量或配置
NOTION_TOKEN = os.environ.get("NOTION_TOKEN", "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")
AGENT_ID = os.environ.get("AGENT_ID", "yunjiang") # 当前 Agent ID
POLL_INTERVAL = int(os.environ.get("POLL_INTERVAL", "180")) # 轮询间隔默认3分钟
# Database IDs
TASKS_DB_ID = "32847fe1-da27-8135-af44-eefdbd3b1640"
AGENTS_DB_ID = "32847fe1-da27-8101-8758-d416db87d4de"
# Notion API 基础 URL
NOTION_API_BASE = "https://api.notion.com/v1"
def notion_request(method, endpoint, **kwargs):
"""Notion API 请求封装"""
url = f"{NOTION_API_BASE}{endpoint}"
headers = {
"Authorization": f"Bearer {NOTION_TOKEN}",
"Notion-Version": "2022-06-28",
"Content-Type": "application/json"
}
if method == "GET":
response = requests.get(url, headers=headers, **kwargs)
elif method == "POST":
response = requests.post(url, headers=headers, **kwargs)
elif method == "PATCH":
response = requests.patch(url, headers=headers, **kwargs)
else:
raise ValueError(f"Unsupported method: {method}")
response.raise_for_status()
return response.json()
def get_agent_info(agent_id):
"""获取 Agent 信息"""
response = notion_request("POST", f"/databases/{AGENTS_DB_ID}/query")
for page in response.get("results", []):
props = page.get("properties", {})
if "Agent ID" in props:
title = props["Agent ID"]["title"]
if title and title[0]["plain_text"] == agent_id:
return {
"id": page["id"],
"name": props["名称"]["rich_text"][0]["plain_text"] if props["名称"]["rich_text"] else agent_id,
"status": props["状态"]["select"]["name"] if props["状态"].get("select") else "离线"
}
return None
def query_todo_tasks(agent_page_id=None):
"""查询 TODO 任务"""
logger.info(f"查询 {AGENT_ID} 的 TODO 任务...")
# 如果有 agent_page_id使用 Relation 过滤
filter_dict = {
"property": "状态",
"select": {
"equals": "TODO"
}
}
# 这里简化处理:查询所有 TODO 任务
# 后续应该根据执行者 Relation 过滤
try:
response = notion_request(
"POST",
f"/databases/{TASKS_DB_ID}/query",
json={"filter": filter_dict}
)
tasks = response.get("results", [])
logger.info(f"找到 {len(tasks)} 个 TODO 任务")
return tasks
except Exception as e:
logger.error(f"查询任务失败: {e}")
return []
def claim_task(task_id):
"""领取任务:将状态改为进行中"""
try:
notion_request(
"PATCH",
f"/pages/{task_id}",
json={
"properties": {
"状态": {
"select": {"name": "进行中"}
}
}
}
)
logger.info(f"✓ 领取任务成功: {task_id}")
return True
except Exception as e:
logger.error(f"领取任务失败: {e}")
return False
def complete_task(task_id, report_link):
"""完成任务:将状态改为待验收"""
try:
notion_request(
"PATCH",
f"/pages/{task_id}",
json={
"properties": {
"状态": {
"select": {"name": "待验收"}
},
"报告链接": {
"url": report_link
}
}
}
)
logger.info(f"✓ 完成任务: {task_id}")
return True
except Exception as e:
logger.error(f"完成任务失败: {e}")
return False
def execute_task(task):
"""执行任务的逻辑(可自定义)"""
# 获取任务信息
props = task.get("properties", {})
task_name = props.get("任务名", {}).get("title", [{}])[0].get("plain_text", "未命名任务")
task_id = task["id"]
logger.info(f"开始执行任务: {task_name}")
# 1. 领取任务
if not claim_task(task_id):
return False
# 2. 执行任务(这里只是示例,实际应根据任务类型执行不同操作)
# 模拟执行
time.sleep(2)
# 3. 完成任务(生成报告链接)
# 这里应该生成实际的 Obsidian 报告
report_link = f"https://example.com/report/{task_id}"
return complete_task(task_id, report_link)
def polling_loop():
"""轮询主循环"""
logger.info(f"🚀 Agent {AGENT_ID} 任务轮询启动")
logger.info(f"轮询间隔: {POLL_INTERVAL}")
# 获取 Agent 信息
agent_info = get_agent_info(AGENT_ID)
if agent_info:
logger.info(f"Agent 信息: {agent_info['name']} (状态: {agent_info['status']})")
else:
logger.warning(f"未找到 Agent: {AGENT_ID}")
while True:
try:
# 查询 TODO 任务
tasks = query_todo_tasks(None)
if tasks:
logger.info(f"发现 {len(tasks)} 个待处理任务")
for task in tasks:
execute_task(task)
else:
logger.debug("没有待处理任务")
except Exception as e:
logger.error(f"轮询异常: {e}")
time.sleep(POLL_INTERVAL)
def main():
"""主入口"""
if len(sys.argv) > 1:
global AGENT_ID
AGENT_ID = sys.argv[1]
if len(sys.argv) > 2:
global POLL_INTERVAL
POLL_INTERVAL = int(sys.argv[2])
polling_loop()
if __name__ == "__main__":
main()

View File

@@ -0,0 +1,137 @@
# 星枢调度 Agent 列表
> 创建日期: 2026-03-17
> 作者: 星枢
---
## 概述
本文档记录星枢(最高统领)负责调度的所有 Agent包括所属服务器、Agent 名称、职责分配等信息。
---
## Agent 架构体系
### 三层架构
| 层级 | 系列 | 含义 | 主要职责 |
|------|------|------|----------|
| 控制层 | 星系 | 星辰统御 | 调度、管理、智能决策 |
| 技术层 | 云系 | 云海算力 | 开发、架构、监控 |
| 执行层 | 风系 | 风行万里 | 测试、业务执行、流程处理 |
---
## Agent 详细列表
### Mac Mini中央控制节点
| 服务器 | Agent ID | 角色 | Telegram Account | 职责 |
|--------|----------|------|----------------|------|
| Mac Mini | main | **星枢** | xingshu | 最高统领 / 总调度 |
| Mac Mini | xingyao | 星曜 | xingyao | IT 管家 / 运维管理 |
| Mac Mini | xinghui | 星辉 | xinghui | 个人助理 / 日程管理 |
### Ubuntu2开发服务器
| 服务器 | Agent ID | 角色 | 职责 |
|--------|----------|------|------|
| Ubuntu2 (192.168.3.45) | yunhan | 云瀚 | 监控官 / 系统监控、状态巡检 |
| Ubuntu2 (192.168.3.45) | yunce | 云策 | 架构师 / 技术方案、系统规划 |
| Ubuntu2 (192.168.3.45) | yunjiang | 云匠 | 工匠 / 代码开发、工程实现 |
| Ubuntu2 (192.168.3.45) | yunzhi | 云织 | 自动化师 / CI/CD、流程编排 |
### Ubuntu1准生产服务器
| 服务器 | Agent ID | 角色 | 职责 |
|--------|----------|------|------|
| Ubuntu1 (192.168.3.47) | fengheng | 风衡 | 质检官 / QA测试、质量控制 |
| Ubuntu1 (192.168.3.47) | fengchi | 风驰 | 执行者 / 任务执行、业务流程 |
| Ubuntu1 (192.168.3.47) | fengji | 风纪 | 审计官 / 规则审计、合规检查 |
---
## 职责分配规则
| 任务类型 | 执行者 | 服务器 |
|----------|--------|---------|
| IT运维/服务器管理 | xingyao星曜 | Mac Mini |
| 日程/个人事务 | xinghui星辉 | Mac Mini |
| 监控/架构/自动化 | yunhan/yunce/yunzhi | Ubuntu2 |
| 代码开发 | yunjiang云匠 | Ubuntu2 |
| QA测试 | fengheng风衡 | Ubuntu1 |
| 自动执行 | fengchi风驰 | Ubuntu1 |
| 审计/合规 | fengji风纪 | Ubuntu1 |
---
## 调度命令
### 本地调度Mac Mini
```bash
# 调度星曜
openclaw agent --agent xingyao --message "任务内容" --deliver
# 调度星辉
openclaw agent --agent xinghui --message "任务内容" --deliver
```
### 远程调度Ubuntu2
```bash
# 调度云系
ssh ubuntu2 "openclaw agent --agent yunce --message '任务内容'"
```
### 远程调度Ubuntu1
```bash
# 调度风系
ssh ubuntu1 "openclaw agent --agent fengheng --message '任务内容'"
```
---
## 定时任务
| 任务名称 | 执行时间 | 执行内容 | 执行者 |
|----------|----------|----------|--------|
| 每日备份任务 | 每天 22:00 | 备份 Mac Mini + Ubuntu2 | xinghui |
| 每日定时任务检查 | 每天 09:00 | 检查所有定时任务状态 | xinghui |
---
## 技能列表
### Mac Mini 技能
- task-summary
- proactive-agent-lite
- openclaw-tavily-search
- self-improving-agent
- (其他 60+ 技能)
### Ubuntu2 技能
- task-summary
- proactive-agent-lite
- self-improving-agent
- 1password
- agent-browser-clawdbot
- docker
- ontology
---
## 更新日志
| 日期 | 更新内容 |
|------|----------|
| 2026-03-17 | 初始版本 |
---
*最后更新: 2026-03-17*
*记录者: 星枢*