09至17 简要指南
剩余章节简要指南
🚧 以下是剩余章节的简要说明。完整版本将在后续更新中添加。
09 - 内置工具详解
详细介绍每个内置工具的功能、参数和使用示例:
- ReadFileTool - 读取文件内容
- WriteFileTool - 写入文件
- EditFileTool - 编辑文件指定行
- ListDirTool - 列出目录内容
- ExecTool - 执行 Shell 命令
- WebSearchTool - Web 搜索(Brave API)
- WebFetchTool - 抓取网页内容
- MessageTool - 发送消息到渠道
- SpawnTool - 生成子代理
参考 08-工具系统架构.md 了解工具的基本概念。
10 - 技能系统
核心概念:
- 技能是 Markdown 文档(
SKILL.md)+ 可选脚本 - Agent 通过
read_file工具读取技能文档 - 技能比工具更灵活,适合需要上下文理解的任务
技能目录结构:
~/.nanobot/skills/my-skill/
├── SKILL.md # 技能定义
├── script.py # 可选脚本
└── resources/ # 可选资源
SKILL.md 格式:
---
name: my-skill
description: 简短描述
available: true
---
# my-skill
完整的使用说明...
预置技能:
github- GitHub 仓库操作weather- 天气查询tmux- Tmux 会话管理summarize- 内容摘要skill-creator- 创建新技能的助手
11 - 子代理系统
用途:处理后台长时间任务
核心类:SubagentManager
工作原理:
- 主 Agent 调用
spawn工具 - SubagentManager 创建独立的 AgentLoop 实例
- 子代理在后台运行(
asyncio.create_task) - 完成后通过消息总线通知原始对话
使用示例:
# Agent 调用
spawn(task="每小时检查网站状态", announce=True)
# 子代理在后台运行
# 发现问题时自动通知用户
12 - 记忆系统
核心类:MemoryStore
文件结构:
~/.nanobot/memory/
├── MEMORY.md # 长期记忆
└── 2026-02-03.md # 每日笔记
自动集成:
- ContextBuilder 自动加载 MEMORY.md
- Agent 可以通过工具读写记忆文件
使用模式:
# Agent 通过工具写入记忆
write_file(
path="~/.nanobot/memory/MEMORY.md",
content="用户喜欢使用 Python..."
)
13 - 渠道管理
核心类:ChannelManager
支持的渠道:
- Telegram - 基于
python-telegram-bot - WhatsApp - 通过 Node.js 桥接
渠道接口:
class Channel(ABC):
@abstractmethod
async def start(self):
"""启动渠道监听"""
pass
@abstractmethod
async def send_message(self, msg: OutboundMessage):
"""发送消息"""
pass
配置示例:
{
"channels": {
"telegram": {
"enabled": true,
"token": "YOUR_BOT_TOKEN",
"allowFrom": ["USER_ID"]
}
}
}
14 - 定时任务
核心类:CronService
支持两种方式:
- Cron 表达式 -
"0 9 * * *"(每天 9 点) - 间隔秒数 -
3600(每小时)
任务模型:
class CronJob(BaseModel):
id: str
name: str
message: str
cron_expr: str | None
interval_seconds: int | None
enabled: bool
channel: str | None
to: str | None
执行方式:
- 定时任务通过消息总线发送到 Agent
- Agent 处理后可以发送到指定渠道
15 - 心跳机制
核心类:HeartbeatService
用途:主动唤醒 Agent,执行周期性任务
示例场景:
- 早上主动问候用户
- 定期检查任务完成情况
- 提醒用户未完成的事项
实现:类似 Cron,但更轻量级
16 - 开发自定义工具
步骤:
- 继承 Tool 基类: ```python from nanobot.agent.tools.base import Tool
class MyTool(Tool): @property def name(self) -> str: return “my_tool”
@property
def description(self) -> str:
return "工具描述"
@property
def parameters(self) -> dict:
return {
"type": "object",
"properties": {
"arg": {"type": "string"}
},
"required": ["arg"]
}
async def execute(self, arg: str) -> str:
return f"处理: {arg}" ```
- 注册工具:
agent.tools.register(MyTool())
详细示例参考 08-工具系统架构.md
17 - 开发自定义技能
步骤:
- 创建技能目录:
mkdir -p ~/.nanobot/skills/my-skill - 编写 SKILL.md: ```markdown — name: my-skill description: 我的自定义技能 available: true —
my-skill
这个技能用于…
使用方法
`bash
python ~/.nanobot/skills/my-skill/script.py
\`
3. **可选:添加脚本**:
```python
#!/usr/bin/env python3
import sys
def main():
# 技能逻辑
print("结果")
if __name__ == "__main__":
main()
Agent 会自动发现新技能并在系统提示中显示。
完整文档计划
这些章节的完整版本将包含:
- 详细的代码示例
- 架构图和流程图
- 最佳实践
- 常见问题解答
当前可参考已有的详细文档:
以及源代码本身(~4,700 行,易于阅读)。