Files
OpenIsle/bots/AGENTS.md

69 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Bots 协作指引
## 1) 适用范围
- 作用于 `bots/` 目录及其子目录。
- 本文件用于统一 Bot 脚本开发、调度与发布规范。
## 2) 模块结构与职责
- `bot_father.ts`Bot 基类,统一 Agent 初始化、MCP 工具接入、CLI 运行入口。
- `instance/reply_bot.ts`:常规互动回复 Bot提及/评论自动处理)。
- `instance/open_source_reply_bot.ts`:开源问答 Bot偏代码与贡献流程
- `instance/daily_news_bot.ts`:每日新闻帖 Bot。
- `instance/coffee_bot.ts`:早安抽奖帖 Bot。
## 3) 开发约定(新增/改造 Bot
- 新 Bot 统一继承 `BotFather`,最少实现:
- `getAdditionalInstructions()`
- `getCliQuery()`
- 保持导出约定:`export const runWorkflow = ...`,并保留 `if (require.main === module)` CLI 入口。
- 不随意改动 `bot_father.ts` 的 MCP 工具白名单;若必须调整,需同步评估 `mcp/` 契约与线上可用性。
## 4) 环境变量与密钥规范
- 必需:`OPENAI_API_KEY`(缺失会直接失败)。
- 常用:
- `OPENISLE_TOKEN`(用于 OpenIsle MCP 鉴权GitHub Actions 中可映射不同 secret
- `APIFY_API_TOKEN`(天气 MCP 鉴权)
- News Bot 可选参数:
- `DAILY_NEWS_CATEGORY_ID`
- `DAILY_NEWS_TAG_IDS`
- 严禁在代码中硬编码真实 token仅通过 CI secrets 或本地环境变量注入。
## 5) 工作流同步规则(与 GitHub Actions 对齐)
- 相关工作流:
- `.github/workflows/reply-bots.yml`
- `.github/workflows/open_source_reply_bot.yml`
- `.github/workflows/news-bot.yml`
- `.github/workflows/coffee-bot.yml`
- 若改脚本入口、依赖或 env 键名,必须同步更新对应 workflow。
- 若改触发节奏cron或 Bot 行为边界,需在变更说明中写明影响(频率、成本、风险)。
## 6) 行为约束(防重复/防失控)
- 回复类 Bot 需保持幂等:避免对同一上下文重复回复。
- 处理未读后应调用 `mark_notifications_read` 清理通知。
- 批量处理建议保持上限(当前提示词约定为最多 10 条)。
- 发帖类 Botnews/coffee必须控制 `create_post` 调用次数(一次任务最多一次发帖)。
- Open Source Reply Bot 保持专业技术风格,避免跑题到非开源问答。
## 7) 本地验证建议
- 依赖安装(与 CI 一致):
- `npm install --no-save @openai/agents tsx typescript`
- 单脚本运行示例:
- `npx tsx bots/instance/reply_bot.ts`
- `npx tsx bots/instance/open_source_reply_bot.ts`
- `npx tsx bots/instance/daily_news_bot.ts`
- `npx tsx bots/instance/coffee_bot.ts`
- 验证时至少确认:可启动、可调用 MCP、异常时退出码非 0。
## 8) 输出要求
- 说明改动影响哪个 Bot、哪个 workflow。
- 说明是否改变了工具调用边界MCP tools / 发帖次数 / 回复策略)。
- 说明是否需要同步更新文档或运维配置。