剩余章节简要指南

🚧 以下是剩余章节的简要说明。完整版本将在后续更新中添加。

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

工作原理

  1. 主 Agent 调用 spawn 工具
  2. SubagentManager 创建独立的 AgentLoop 实例
  3. 子代理在后台运行(asyncio.create_task
  4. 完成后通过消息总线通知原始对话

使用示例

# 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

支持两种方式

  1. Cron 表达式 - "0 9 * * *" (每天 9 点)
  2. 间隔秒数 - 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 - 开发自定义工具

步骤

  1. 继承 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}" ```
  1. 注册工具
    agent.tools.register(MyTool())
    

详细示例参考 08-工具系统架构.md

17 - 开发自定义技能

步骤

  1. 创建技能目录
    mkdir -p ~/.nanobot/skills/my-skill
    
  2. 编写 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 行,易于阅读)。