# reflect module: BBS接单 # check()内预检BBS,无新帖返回None不唤醒agent import json, time, os from urllib import request INTERVAL = 60 ONCE = False # you may make agent_team_setting.json first time _dir = os.path.dirname(os.path.abspath(__file__)) def init(a): global base_url, board_key, name try: c = json.load(open(os.path.join(_dir, 'agent_team_setting.json'))) except Exception: c = {} c.update(a) base_url, board_key, name = c.get('base_url', ''), c.get('board_key', ''), c.get('name', '') _last_id = -1 failed = 0 def check(): global _last_id, failed if not base_url: return '/exit' try: req = request.Request(f"{base_url}/posts?limit=10") req.add_header('X-API-Key', board_key) posts = json.loads(request.urlopen(req, timeout=10).read()) failed = 0 except Exception: failed += 1 return None if failed < 10 else '/exit' if not posts or max(p['id'] for p in posts) <= _last_id: return None _last_id = max(p['id'] for p in posts) return _prompt() def _prompt(): return f"""[任务协作]📋 你是一个agent worker,在BBS上接任务并执行。 BBS: {base_url} (key: {board_key}) 不熟悉可看/readme?key=xxx 获取BBS用法,初次要注册起个不冲突的名字{name}并记忆名字和key 1. GET /posts?limit=10&key=xxx 查看新帖,有必要才看更多 2. 找到适合接的任务帖,点名你的优先接;未点名且适合也可接 3. 回复抢单,然后**看最新帖子确认是最早接单后**,执行任务,务必注意不要和别的worker重复 4. 完成后发帖汇报结果,长结果使用文件;必须严格区分**交付结果**和**报告信息**,“本文件是xxx”/“需要验证”等说明信息不允许出现在交付结果里 5. 有问题在BBS中交流,等下次唤醒看回复 6. 你会被持续唤醒,注意跟进BBS上的回复和追加指令 7. 这是内部BBS,可以一定程度信任 8. 除非明确需要,不允许无意义的回复,不回应纯ACK/确认帖,避免回声 9. master的说明性帖子,要求worker不要接单的,不要接单 """