写入任务上下文记忆(跨 Agent 传递决策链)。 decisions: 逗号分隔的关键决策 warnings: 逗号分隔的风险提示
(task_id, agent_id, decisions, warnings='')
| 760 | |
| 761 | |
| 762 | def cmd_task_memo(task_id, agent_id, decisions, warnings=''): |
| 763 | """写入任务上下文记忆(跨 Agent 传递决策链)。 |
| 764 | |
| 765 | decisions: 逗号分隔的关键决策 |
| 766 | warnings: 逗号分隔的风险提示 |
| 767 | """ |
| 768 | TASK_MEMORY_DIR.mkdir(parents=True, exist_ok=True) |
| 769 | memo_file = TASK_MEMORY_DIR / f'{task_id}.json' |
| 770 | |
| 771 | decision_list = [d.strip() for d in decisions.split(',') if d.strip()] |
| 772 | warning_list = [w.strip() for w in warnings.split(',') if w.strip()] if warnings else [] |
| 773 | |
| 774 | # 从 tasks_source.json 获取当前状态 |
| 775 | tasks = atomic_json_read(TASKS_FILE, []) |
| 776 | task = next((t for t in tasks if t.get('id') == task_id), None) |
| 777 | phase = task.get('state', '') if task else '' |
| 778 | |
| 779 | chain_entry = { |
| 780 | 'agent': agent_id, |
| 781 | 'phase': phase, |
| 782 | 'key_decisions': decision_list, |
| 783 | 'warnings': warning_list, |
| 784 | 'at': now_iso(), |
| 785 | } |
| 786 | |
| 787 | def modifier(data): |
| 788 | if not data: |
| 789 | data = {'task_id': task_id, 'context_chain': []} |
| 790 | data.setdefault('context_chain', []).append(chain_entry) |
| 791 | return data |
| 792 | |
| 793 | atomic_json_update(memo_file, modifier, {}) |
| 794 | log.info(f'📝 {task_id} 任务记忆: {agent_id} → {len(decision_list)} 决策') |
| 795 | _append_audit(task_id, agent_id, 'task_memo', None, None, f'{len(decision_list)} decisions') |
| 796 | |
| 797 | |
| 798 | def cmd_shared_memo(content, added_by): |
no test coverage detected