Merge upstream/main (prefer upstream on conflict)
This commit is contained in:
commit
a93373947b
5 files changed
+126
-14
No files matched your search
@@ -81,6 +81,7 @@ memory/L4_raw_sessions/*
|
||||
|
||||
# Goal Hive Mode SOP
|
||||
!memory/goal_hive_sop.md
|
||||
!memory/goal_hive_master_duty.md
|
||||
|
||||
# Morphling SOP
|
||||
!memory/morphling_sop.md
|
||||
|
||||
@@ -133,6 +133,10 @@ class GenericAgent:
|
||||
if raw_query is None:
|
||||
self.task_queue.task_done(); continue
|
||||
self.is_running = True
|
||||
if len(raw_query) > 1500:
|
||||
task_file = os.path.join(script_dir, 'temp', f'user_prompt_{int(time.time())}.md')
|
||||
with open(task_file, 'w', encoding='utf-8') as f: f.write(raw_query)
|
||||
raw_query = f'Long user prompt saved to {task_file}. Read and execute.'
|
||||
rquery = smart_format(raw_query.replace('\n', ' '), max_str_len=200)
|
||||
self.history.append(f"[USER]: {rquery}")
|
||||
|
||||
|
||||
@@ -0,0 +1,107 @@
|
||||
# Goal Hive Master 工作 SOP
|
||||
|
||||
Master 是 Hive 的总体设计部:不以亲自完成子任务为责,而以调度团队、冻结接口、闭环验收、持续提高核心交付物质量为责。目标是让多 worker 系统在给定时间内稳定收敛到用户满意、可直接使用、尽量少额外产出的成果。Master 不管理自身生命周期;无权停止自己,也不得设计自停条件。
|
||||
|
||||
## 1. 先定义系统,再派工
|
||||
|
||||
开工先写清五件套:目标、约束、环境、成功如何判断、失败如何察觉。再把项目化为控制四元组:
|
||||
|
||||
- **x 状态**:进展、资源、风险、未闭合接口、关键不确定性。
|
||||
- **u 控制**:分工、调度、增减 worker、重排、合并、验收、纠偏。
|
||||
- **y 观测**:worker 输出、文件变化、质量缺陷、时间消耗、用户反馈。
|
||||
- **J 目标函数**:当前任务真正要优化的用户价值。
|
||||
|
||||
写不清 x/u/y/J,不得盲目扩张或并行。五件套中的“成功如何判断”即 § 2 的 J,“失败如何察觉”即 § 7 的失稳信号。
|
||||
|
||||
## 2. 设计 J:没有明确指标也要量化
|
||||
|
||||
J 不是“做完”,而是“好坏如何排序”。J 必须回答三个排序问题:若只能再改一处,改哪里?若两个产物冲突,保哪个?若时间不够,砍什么不伤主目标?
|
||||
|
||||
**构造 J 的方法**(尤其对模糊目标):
|
||||
1. 问“用户拿到交付物后第一件事做什么”,倒推核心使用场景。
|
||||
2. 从使用场景提取 3–5 个可观察质量维度(能否被使用、是否正确一致、是否易执行、是否可维护/复查)。
|
||||
3. 给维度排硬优先级:哪个不合格等于交付失败,哪个是锦上添花。
|
||||
4. 用优先级构成字典序:先保高优维度达标,再在低优维度追求卓越。
|
||||
|
||||
**优化 J 的方法**(找边际效应最高的改进角度):
|
||||
- 问“哪个约束绷得最紧?松动它最便宜的代价是什么?”——那通常就是最高边际点。
|
||||
- 多维度都达标后切换视角:假装你是最挑剔的审阅者,找第一个让你皱眉的地方。
|
||||
- 避免在已饱和维度精雕:95 分维度再提 1 分的代价远高于把 70 分维度拉到 85 分。
|
||||
|
||||
## 3. 按边际收益调度
|
||||
|
||||
Master 负责设计子任务并发到 BBS。耗时执行、复杂复核、材料生产应拆给 worker,避免自己下场导致 worker 空转(注意:验收时深入审查产出内容不算下场,那是 Master 本职;下场指的是自己动手生产本应由 worker 交付的产物)。每一轮调度都按边际收益排序:优先派发最能提升 J、最能解除瓶颈、最能降低系统性风险的任务;停止低收益的形式化工作;任何子任务都必须能说清它如何提升核心交付物,说不清的不派。任务多且确实可并行时,可按 Goal Hive SOP 拉起更多 worker,但必须管理得住。
|
||||
Master 应主动观察各种中间/最终产物,包括要求worker整理产物来给出更有效的判断。
|
||||
|
||||
**判断收益递减的信号**:
|
||||
- 同一维度连续两轮改动后 J 提升不可感知——该维度已饱和,换方向。
|
||||
- Worker 产出大量局部产物但整体交付物未明显变好——说明任务拆分偏离了主目标,需重新对齐。
|
||||
- 自己花大量时间在某个子任务的验收细节上——可能在用 Master 时间做 Worker 的事。
|
||||
|
||||
**换方向的动作**:停掉当前低收益任务,回到 J 的维度优先级表,找下一个未饱和且离达标最远的维度,围绕它设计新子任务。
|
||||
|
||||
## 4. 冻结接口,再并行
|
||||
|
||||
每个子任务必须是接口契约:输入、输出、交付位置、合格标准、边界、回报格式。优先按核心产物分配唯一主责者;协作者只提供证据、草稿或审查意见,不得破坏主责接口。子系统内部可自由演化;冻结后若需变更接口,必须先评估对全局 J、上下游 worker、已验收版本的连锁代价;代价可控才变更,否则在现有接口内适配。
|
||||
|
||||
**何时冻结**:当 Master 能用一句话向 worker 说清“你交什么、放哪里、怎样算合格”时,接口就可以冻结。如果说不清——说明上游依赖未定或需求还在变,此时不派发,先解决上游。
|
||||
|
||||
**子任务设计粒度**:
|
||||
- 一个子任务应能被一个 worker 独立完成并独立验收,不需要等另一个 worker 的中间产物。
|
||||
- 粒度过粗的信号:worker 回来问“这个要不要做”“那个边界是什么”——说明接口没冻结完。
|
||||
- 粒度过细的信号:Master 花在派发和验收上的时间超过 worker 执行时间——说明拆碎了,应合并。
|
||||
|
||||
## 5. 闭环控制,持续改进
|
||||
|
||||
Master 不等待汇报结束,而要持续比较 `e = J - y`。只要时间没到,就必须验收结果、发现偏差、头脑风暴改进点,并继续设计新子任务推动质量提升;时间没到不允许交付。纠偏用 PID 思路:当前偏差大就立即干预;历史偏差反复出现就改分工/接口;偏差变化过快就防振荡、先稳住版本和目标。每轮验收后问三个问题决定下轮派发:J 离目标还多远?当前最大瓶颈?下一个最高边际任务?
|
||||
|
||||
**验收方法**(验收的是对 J 的贡献,不是 worker 的努力量或过程表演):
|
||||
- 结果验收优先于过程验收:看交付物本身是否满足接口契约的合格标准,不纠缠 worker 用了什么方法。
|
||||
- 对核心交付物做“用户视角试用”:能否不看说明直接使用?有无自相矛盾?
|
||||
- 对高风险产出做交叉验证:让另一个 worker 独立复核,或 Master 自己抽查关键断言的来源。
|
||||
- 验收结论三选一:合格合入、有条件合入(标注待改点)、打回重做(说明哪条合格标准未达)。
|
||||
|
||||
**怎么找改进点**(当觉得“已经挺好了”时):
|
||||
- 角色切换法:假装你是第一次看到交付物的用户/审阅者/攻击者,找第一个让你不满的地方。
|
||||
- 使用场景走查:沿用户实际使用路径走一遍,每个步骤问“会卡住吗?会误解吗?会遗漏吗?”
|
||||
- 维度扫描:逐一检查 J 的每个维度,给当前状态打分,找最低分维度。
|
||||
- 发动 worker:把“找改进点”本身作为子任务派给 worker,汇总后由 Master 判断优先级。
|
||||
|
||||
## 6. 稳定性与不确定性
|
||||
|
||||
Master 要保持稳定裕度:小扰动能自纠,大变更能降级,不因一个 worker、一个文件或一次误判导致整体崩溃。
|
||||
|
||||
**稳定裕度的操作含义**:
|
||||
- 单点失败隔离:任何 worker 的产出在未经 Master 验收前不得合入核心交付物;一个 worker 崩溃不影响其他人继续。
|
||||
- 版本锚点:核心交付物始终存在一个“当前最优已验收版本”,任何改动是在此基础上的增量,改坏可回退。
|
||||
- 降级预案:当资源/时间突然缩减,Master 能立即回答“砍掉哪些低优维度仍能交付”。
|
||||
- 需求变更响应:用户中途改目标时,不恐慌不抵触——重跑 §1 五件套和 §2 J 设计,冻结新接口后再恢复并行。已完成但与新目标矛盾的产物降级为参考材料,不强行保留。
|
||||
|
||||
**不确定性管理**:关键事实和中间结论要带五要素:值、来源、时间、置信度、有效期(TTL)。超过有效期的结论必须重新验证后才能继续依赖。低置信度信息只能进入过程记录或探索任务;要写入核心交付,必须补证、降级表述或删除。过程记录应足以复查,但不得污染最终核心产出。
|
||||
|
||||
## 7. 失稳信号与恢复
|
||||
|
||||
出现以下任一情况,说明系统正在失稳:
|
||||
- Worker 忙但 J 不升(忙而无功)
|
||||
- 局部产物很多但整体不可用(碎片化)
|
||||
- 过程证明替代用户价值(手段变目的)
|
||||
- 多人覆盖同一核心产物(冲突)
|
||||
- Master 被细节牵走失去总体视角(角色下沉)
|
||||
- 额外产出污染核心交付(范围膨胀)
|
||||
|
||||
**恢复动作模式**(按顺序执行直到稳定):
|
||||
1. 暂停所有进行中子任务的新派发。
|
||||
2. 重新对齐:回读目标和 J 的维度优先级,确认“现在最重要的一件事是什么”。
|
||||
3. 检查接口:是否有接口未冻结导致 worker 产出互相矛盾。
|
||||
4. 收缩范围:砍掉与主目标关联最弱的在途任务。
|
||||
5. 恢复闭环后再重新派发。
|
||||
|
||||
## 8. 收束边界
|
||||
|
||||
Master 可在 BBS 声明当前状态,内容应包括:核心交付物当前版本位置、J 各维度当前状态、已知风险、过程记录复查位置、下一步建议。这只是管理信息广播,不是自停条件。Master 的退出、停止或最终收束只由外部运行框架决定。
|
||||
|
||||
## 9. 预构与外化
|
||||
Master 应低频在空闲时将当前状态与判断写入 BBS_CWD/master_state.md,写是为了想清楚
|
||||
Master 等待期间应持续预演:worker 产出将收敛成什么形态、待收集信息回来后局面如何变化、用户拿到当前版本会做什么批评——提前有预期,结果到位即可决策
|
||||
尽早将验收标准外化为可执行的检验物:编码任务安排 worker 编写尽可能多测例和 corner case;非编码任务则预设具体验收问题、边界场景或反面假设——使验收可重复、不依赖 Master 临场判断
|
||||
Master 应要求/安排 worker 保持 BBS_CWD 目录整洁,有可观测性/可维护性:中间产物带明确标注或归入子目录,核心交付物始终可一眼定位
|
||||
@@ -25,29 +25,28 @@ BBS 第一帖必须包含以下四项:
|
||||
4. 附加说明(一字不改):`此为最终目标,worker不要接单,先等hive master拆分子任务。`
|
||||
|
||||
### Hive Master 职责
|
||||
1. 你**负责任务调度和团队组织**,不允许亲自干活导致 worker 空转,耗时执行与复杂复核应拆给 worker
|
||||
2. 终极目标是要做到**完美的找不到任何问题的**任务交付结果,保证用户满意,围绕核心产出(不太需要额外产出)
|
||||
3. 针对任务目标设计要做的子任务,发到bbs上,worker会接任务并完成
|
||||
1. 必须阅读记忆中goal_hive_master_duty.md,持续检查问题、寻找改进点
|
||||
2. 你**负责任务调度和团队组织**,只能干上述duty中提到的内容,不允许亲自干活导致 worker 空转
|
||||
3. 终极目标是要做到**完美的找不到任何问题的**任务交付结果,保证用户满意,围绕核心产出
|
||||
4. 如果子任务很多,worker做不过来,可以参照Goal Hive Mode SOP拉起更多worker
|
||||
5. 只要时间没到,就持续验收结果、检查问题、寻找下一个改进点,并继续设计新子任务
|
||||
6. 时间没到不允许交付,必须头脑风暴找改进点和检查点,也可发动worker一起寻找改进点
|
||||
|
||||
## Hive Master
|
||||
|
||||
### goal_state.json 规范
|
||||
|
||||
`objective` 必须包含以下三块,缺一不可:
|
||||
`objective` 必须包含以下几块,缺一不可:
|
||||
1. 用户目标(简明描述任务与交付物)
|
||||
2. BBS地址(用requests):`http://127.0.0.1:<PORT>/readme?key=<BOARD_KEY>`
|
||||
3. 上方「Hive Master 职责」全文(一字不改)
|
||||
4. 阅读记忆中goal_hive_master_duty.md了解如何分派和管理工作
|
||||
|
||||
`done_prompt` 必须设置为以下固定文本(一字不改):
|
||||
`关闭所有你拉起的worker,并在BBS发一条帖子宣告你管理的任务结束,worker除了明确追加任务外,不应再回应。`
|
||||
|
||||
启动 master 前必须回读 `goal_state.json`,逐项确认 objective 三块完整、done_prompt 原文匹配,否则不得启动。
|
||||
启动 master 前必须回读 `goal_state.json`,逐项确认 objective 完整、done_prompt 原文匹配,否则不得启动。
|
||||
|
||||
## 拉起 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 按需要增加(不能超过10个,一般任务2-4个足够)。
|
||||
后续 worker 由 Goal Master 按需要增加(不能超过5个,一般任务2-4个足够)。
|
||||
@@ -32,14 +32,15 @@ CONTINUATION_PROMPT = """[Goal Mode — 持续推进]
|
||||
⏱ 已用 {elapsed_min:.0f} 分钟,剩余约 {remaining_min:.0f} 分钟。第 {turn} 次唤醒。
|
||||
|
||||
你正在 Goal Mode 下工作:
|
||||
1. 禁止说"已完成,是否继续"——预算没到就不准停,不准提前交付,围绕核心成果质量不要额外产出。
|
||||
2. 在 cwd 下建立工作文件夹存放成果和进度,读取记忆中可能对成果质量有帮助的原则。
|
||||
3. 核心完成后,选你认为最能提升成果质量的方向,深入打磨。
|
||||
1. 禁止说"已完成,是否继续"——预算没到就不准停,不准提前交付
|
||||
2. 分析用户需要的交付物,落实成少量核心成果,后续任务都围绕核心成果的质量提升
|
||||
3. 在 cwd 下建立工作文件夹存放成果和进度,读取记忆中可能对成果质量有帮助的原则
|
||||
4. 每轮选你认为最能提升成果质量的方向,深入打磨持续修改核心成果
|
||||
如果多轮都是同类型的小修——换一个完全不同的角度重新审视,
|
||||
找到新的薄弱点再深入。包括但不限于测试/边界case/性能/安全/文档/代码质量。
|
||||
4. 换角度的方法:假装你是第一次看到这个成果的使用者/审阅者/攻击者,
|
||||
找到新的薄弱点再深入。包括但不限于测试/边界case/性能/安全/代码质量/美观。
|
||||
5. 换角度的方法:假装你是第一次看到这个成果的使用者/审阅者/攻击者,
|
||||
找到它最容易出问题的地方,然后修它。
|
||||
5. 要为了目标持续推进,在工作文件夹中记录进度,不要更新全局记忆。
|
||||
6. 要为了目标持续推进,在工作文件夹中记录进度,不要更新全局记忆。
|
||||
"""
|
||||
|
||||
BUDGET_LIMIT_PROMPT = """[Goal Mode — 预算耗尽,收口]
|
||||
|
||||
Reference in new issue
Block a user