Nanobot自定义图像
用于具有MCP服务器、Google Workspace API访问、GitHub CLI和Nextcloud同步的纳米机器人的自定义Docker映像。
包含内容
| 组件 | 位置 | 注释 |
|---|---|---|
| 纳米机器人 | /usr/local/lib/python3.12/site-packages/ | 从源代码构建(v0.1.5) |
| Node.js | /usr/bin/node | apt软件包 |
| npm | /usr/bin/npm | apt软件包 |
| tmux | /usr/bin/tmux | apt软件包 |
| GitHub命令行界面 | /usr/bin/gh | apt软件包 |
| nextcloud桌面cmd | /usr/bin/nextcloudcmd | apt软件包 |
| gws | /usr/bin/gws | 谷歌工作区命令行界面(npm global) |
| 织物 | /usr/local/bin/fabric | AI增强图案(danielmiesler/织物) |
| pip审计 | /usr/local/bin/pip-audit | Python依赖安全扫描 |
| 看门狗 | Python包 | 事件驱动的vault文件监视 |
| lightrag hku | Python包 | Vault RAG索引和查询 |
| ollama | Python包 | ollama客户端(连接到位于192.168.86.88:11434的ollama服务器) |
| ebooklib | Python包 | EPUB生成 |
| 枕头 | Python包 | 图像处理(EPUB封面) |
| mcp黑曜石 | npx缓存 | 通过运行 npx @mauricio.wolff/mcp-obsidian |
| mcp服务器内存 | npx缓存 | 通过运行 npx @modelcontextprotocol/server-memory |
| 铬 | /usr/bin/chromium | 用于PinchTab自动化的浏览器引擎 |
| 平克他布 | /root/.pinchtab/bin/ | 浏览器自动化服务器(v0.8.6,自动启动) |
用法
拉
docker pull ghcr.io/orrinwitt/nanobot-custom:latest跑
docker run -d \
--name nanobot \
-v /path/to/nanobot-data:/root/.nanobot \
ghcr.io/orrinwitt/nanobot-custom:latest注: 仅 /root/.nanobot 需要安装。所有工具都包含在图像中。MCP服务器配置
MCP服务器通过以下方式运行 npx (无需全局安装,自动缓存):
{
"mcpServers": {
"obsidian": {
"command": "npx",
"args": ["-y", "@mauricio.wolff/mcp-obsidian", "/root/.nanobot/workspace/vault"],
"transport": "stdio",
"disabled": false
},
"memory": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-memory"],
"transport": "stdio",
"disabled": false
}
}
}自动更新
此图像会自动检查来自的新版本 香港科技大学/纳米机器人 每日:
- 日程:每天早上6点UTC(美国东部时间凌晨1点)
- 过程:检测新版本→ 更新Dockerfile→ 构建图像→ 通过电报通知
- 手动触发:转到操作→ “上游自动更新”→ 运行工作流
手动更新
要手动更新到特定版本,请执行以下操作:
- 更新
NANOBOT_VERSION在Dockerfile - 将更改推送到GitHub
- GitHub Actions将自动构建并推送新镜像
或者在本地构建:
docker build --build-arg NANOBOT_VERSION=v0.1.5 -t ghcr.io/orrinwitt/nanobot-custom:latest .
docker push ghcr.io/orrinwitt/nanobot-custom:latest卷
仅 /root/.nanobot 需要作为卷安装。所有工具都包含在图像中。
| 路径 | 目的 |
|---|---|
/root/.nanobot/config.json | 配置文件 |
/root/.nanobot/workspace/ | 工作空间(技能、记忆、保险库) |
/root/.nanobot/workspace/vault/ | 黑曜石保险库(已同步到Nextcloud) |
/root/.nanobot/workspace/secrets/ | 凭证和令牌 |
Nextcloud同步
使用以下方式将保管库同步到Nextcloud nextcloudcmd:
nextcloudcmd --non-interactive --trust \
-u 'USERNAME' -p 'PASSWORD' \
--path 'NanobotMemory' \
/root/.nanobot/workspace/vault \
'https://nextcloud.flwitts.us'Google Workspace API访问(gws)
这 gws CLI提供对Google服务(Gmail、日历、任务、驱动器、文档、表格、幻灯片)的访问:
# Authenticate
gws auth login
# Example: list emails
gws gmail list
# Example: list calendar events
gws calendar list请参阅:https://github.com/googleworkspace/cli
织物(AI增强图案)
fabric 提供257多种AI模式用于文本转换、摘要、分析等:
# List available patterns
fabric --list
# Use a pattern
echo "content" | fabric --pattern summarize
cat file.txt | fabric --pattern extract_wisdom模式存储器
| 类型 | 位置 | 注释 |
|---|---|---|
| 标准图案 | 烘焙成图像 | 在构建时预下载257个图案 |
| 定制图案 | workspace/skills/fabric/patterns/ | 容量持久,启动时复制 |
优点:
- 无启动时间下载延迟(模式已在映像中)
- 自定义模式在容器重建过程中持续存在
- 背景更新检查使模式保持最新
配置
结构通过以下方式配置 ~/.config/fabric/.env (安装自 /root/.nanobot/workspace/secrets/fabric.env):
OPENAI_API_KEY=your-api-key
OPENAI_API_BASE_URL=https://your-openwebui-instance/api/v1
DEFAULT_MODEL=anthropic/claude-sonnet-4.6
DEFAULT_VENDOR=OpenAI
FABRIC_DISABLE_RESPONSES_API=true注:FABRIC_DISABLE_RESPONSES_API=true是OpenWebUI兼容性所必需的(防止结构使用/responses端点)。
请参阅:https://github.com/danielmiessler/fabric
GitHub CLI(gh)
这 gh CLI为问题、PR、操作等提供了GitHub API访问权限:
# Authenticate
gh auth login
# Example: trigger workflow
gh workflow run build.yml
# Example: check workflow status
gh run list --limit 5请参阅:https://cli.github.com/
PinchTab浏览器自动化
PinchTab提供无头浏览器自动化,用于导航网站、截图、填写表单和与网页交互。
状态
- 自动启动 在容器启动时(通过entrypoint.sh)
- 令牌身份验证 必需--已配置
/root/.pinchtab/config.json - 容器模式:用途
PINCHTAB_CHROME_NO_SANDBOX=1非根/容器兼容性
快速测试
curl -X POST http://localhost:9867/navigate \
-H "Authorization: Bearer " \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com"}'服务命令
# On the container:
/root/.nanobot/workspace/scripts/pinchtab-service.sh start|stop|restart|status端点
| 端点 | 方法 | 描述 |
|---|---|---|
/navigate | POST | 导航到URL |
/screenshot | POST | 截图 |
/click | POST | 按ref单击元素 |
/type | POST | 在元素中键入文本 |
/scroll | POST | 滚动页面 |
/page | GET | 获取页面信息和元素引用 |
/tabs | GET | 列出打开的选项卡 |
/close | POST | 关闭选项卡 |
/health | GET | 健康检查 |
SSRF白名单
本地网络访问(本地主机、家庭网络)通过以下方式控制 tools.ssrfWhitelist 在 config.json:
{
"tools": {
"ssrfWhitelist": ["127.0.0.0/8", "::1/128", "192.168.0.0/16"]
}
}请参阅:https://github.com/HKUDS/nanobot/releases/tag/v0.1.5
Vault RAG(检索增强生成)
使用LightRAG和Ollama对保险库进行索引和搜索。问一些关于你的保险库的自然问题,并从你的实际笔记中得到综合答案。
运作原理
- 索引 --Vault文件被分块、嵌入(
qwen3-embedding:8b),并存储在知识图+矢量数据库中 - 查询 --你的问题被嵌入,相关块被检索出来
qwen3.5:cloud综合答案 仅来自检索到的上下文 (无幻觉)
用法
Telegram/Discord中的触发短语:
- “在我的保险库中搜索\[主题\]”
- “向我的保险库询问\[主题\]”
- “我的笔记对\[主题\]说了什么?”
或者从命令行:
cd /root/.nanobot/workspace
python3 skills/vault-rag/query_vault.py "your question"
python3 skills/vault-rag/query_vault.py --mode mix "thorough question"
# Re-index after vault changes
python3 skills/vault-rag/index_vault.py --reindex自动索引
vault监视器在每次Nextcloud同步后自动重新索引,因此索引保持最新状态,无需手动干预。
模型使用
| 步骤 | 型号 | 位置 |
|---|---|---|
| 嵌入 | qwen3-embedding:8b | Ollama服务器(GPU) |
| 实体提取 | nemotron-3-nano:4b | Ollama服务器(GPU,仅用于索引) |
| 合成 | qwen3.5:cloud | Ollama服务器→ OpenRouter |
查询模式
| 模式 | 描述 |
|---|---|
local | 图形实体+块(默认,快速) |
mix | 综合(最彻底) |
global | 全图遍历 |
naive | 纯向量相似度 |
