feat: Goal Hive Mode - BBS quick启动参数化 + Hive SOP + goal_mode prompt调整

This commit is contained in:
Liang Jiaqing committed 2026-05-17 16:56:48 +08:00
1 parent 72ed05609a
commit fcbd8572f1
4 files changed
+55 -10

No files matched your search

+3
View File
@@ -75,6 +75,9 @@ memory/L4_raw_sessions/*
# Goal Mode SOP
!memory/goal_mode_sop.md
# Goal Hive Mode SOP
!memory/goal_hive_sop.md
# Skill Search SOP
!memory/skill_search/
!memory/skill_search/**
+9 -2
View File
@@ -19,6 +19,9 @@ BOARDS, BOARDS_MTIME_NS, BOARDS_LOCK = DEFAULT_BOARDS, None, Lock()
def load_boards_if_changed():
global BOARDS, BOARDS_MTIME_NS
with BOARDS_LOCK:
if BOARDS_FILE is None:
if BOARDS_MTIME_NS is None: init_db(); BOARDS_MTIME_NS = 0
return BOARDS
if not os.path.exists(BOARDS_FILE):
json.dump(DEFAULT_BOARDS, open(BOARDS_FILE, "w", encoding="utf-8"), ensure_ascii=False, indent=2)
mtime = os.stat(BOARDS_FILE).st_mtime_ns
@@ -211,5 +214,9 @@ def download_file(rand_id: str, filename: str):
return FileResponse(path, filename=filename)
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=58800)
import argparse, uvicorn
p = argparse.ArgumentParser(); p.add_argument("--cwd"); p.add_argument("--port", type=int, default=58800); p.add_argument("--key")
a = p.parse_args();
if a.cwd: os.chdir(a.cwd)
if a.key: BOARDS_FILE = None; BOARDS.clear(); BOARDS[a.key] = {"name": "default", "db": f"{a.key}.db"}
uvicorn.run(app, host="0.0.0.0", port=a.port)
+34
View File
@@ -0,0 +1,34 @@
# Goal Hive Mode SOP
## 定义
Goal Hive = Goal Mode 的多 worker 协作协议
Hive模式单独运行,不要和plan/supervisor/subagent混杂
## 启动
1. 选一个空闲端口 `PORT` 和本次协作 key `BOARD_KEY`。
2. 创建本次 Hive 数据目录:`BBS_CWD=<CodeRoot>/temp/hive_<目标短名>`。
3. 启动 BBS:`start /b python <CodeRoot>/assets/agent_bbs.py --cwd <BBS_CWD> --port <PORT> --key <BOARD_KEY>`。
4. 按http://127.0.0.1:<PORT>/readme?key=<BOARD_KEY>,在bbs发第一个帖子,包括1.任务目标;2.以下的Hive Master职责;3.优先使用`<BBS_CWD>`进行文件传输而非bbs的文件功能;4.附加说明:`此为最终目标,worker不要接单,先等hive master拆分子任务。`
5. 后台启动首个worker
6. 询问用户时间预算,按`goal_mode_sop.md`后台启动hive master
7. Hive master,workers都是与你不同的独立进程,你启动它们后应当报告用户并停止
## Goal Master
`objective` 必须逐字包含三块,缺一不可:用户目标、`http://127.0.0.1:<PORT>/readme?key=<BOARD_KEY>`、下方“Hive Master 职责”全文;启动 master 前必须回读 `goal_state.json`,确认 objective 同时包含 BBS URL、`Hive Master 职责`、`保持调度视角`,否则不得启动。
Hive Master 职责:
1. 你**负责任务调度和团队组织**,不允许亲自干活导致 worker 空转,耗时执行与复杂复核应拆给 worker
2. 终极目标是要做到**完美的找不到任何问题的**任务交付结果,保证用户满意,围绕核心产出(不太需要额外产出)
3. 针对任务目标设计要做的子任务,发到bbs上,worker会接任务并完成
4. 如果子任务很多,worker做不过来,可以参照Goal Hive Mode SOP拉起更多worker
5. 只要时间没到,就持续验收结果、检查问题、寻找下一个改进点,并继续设计新子任务
6. 时间没到不允许交付,必须头脑风暴找改进点和检查点,也可发动worker一起寻找改进点
## 拉起 worker
启动 worker:`start /b python <CodeRoot>/agentmain.py --reflect <CodeRoot>/reflect/agent_team_worker.py --base_url http://127.0.0.1:<PORT> --board_key <BOARD_KEY> --name hive-worker-1`。
后续 worker 由 Goal Master 按需要增加。
+9 -8
View File
@@ -25,14 +25,14 @@ def _save(state):
# --- prompt 模板 ---
CONTINUATION_PROMPT = """[Goal Mode — 持续推进]
<untrusted_objective>
<objective>
{objective}
</untrusted_objective>
</objective>
⏱ 已用 {elapsed_min:.0f} 分钟,剩余约 {remaining_min:.0f} 分钟。第 {turn} 次唤醒。
你正在 Goal Mode 下工作:
1. 禁止说"已完成,是否继续"——预算没到就不准停。
1. 禁止说"已完成,是否继续"——预算没到就不准停,不准提前交付,围绕核心产出不要额外产出。
2. 在 cwd 下建立工作文件夹存放成果和进度,复杂任务可使用 plan 模式。
3. 如果当前方向做完了,主动找下一个改进点:测试/边界case/性能/安全/文档/代码质量。
4. 找不到改进点?扩大视野:关联模块、上下游依赖、用户体验、错误提示、日志可观测性、上网搜索、找其他路径、翻记忆里面有无相关。
@@ -41,16 +41,17 @@ CONTINUATION_PROMPT = """[Goal Mode — 持续推进]
BUDGET_LIMIT_PROMPT = """[Goal Mode — 预算耗尽,收口]
<untrusted_objective>
<objective>
{objective}
</untrusted_objective>
</objective>
⏱ 预算已耗尽({budget_min:.0f} 分钟)。这是最后一轮。
请执行收口:
1. 总结本次 goal 的所有进展(列表)。
2. 列出未完成的事项和建议的 next step。
3. 确保工作文件夹中记录了关键成果,以便下次继续。
1. 总结本次 goal 的所有进展(列表)
2. 列出未完成的事项和建议的 next step
3. 确保工作文件夹中记录了关键成果
4. 清理一些确定无用的中间临时文件和不再用的进程
"""
# --- 主逻辑 ---