Files
tsp-assistant/src/agent/__pycache__/executor.cpython-311.pyc

215 lines
25 KiB
Plaintext
Raw Normal View History

2025-09-06 21:06:18 +08:00
<EFBFBD>
<00><><EFBFBD>h<EFBFBD>S<00><00><><00>dZddlZddlZddlmZmZmZmZddlmZddl Z ej
e <0B><00>Z Gd<05>d<06><00>Z dS)u6
任务执行器
负责执行计划中的具体任务
<EFBFBD>N)<04>Dict<63>List<73>Any<6E>Optional)<01>datetimec <00><00>eZdZdZd<02>Zdeeeefdedeeefdeeeffd<07>Z deeeefdefd<08>Z
deeeefdedeeefd edeeeff
d
<EFBFBD>Z deeeefdedeeefd edeeeff
d <0B>Z deeeefdedeeefd edeeeff
d <0C>Z deeeefdedeeefd edeeeff
d <0A>Zdeeefdedeeefdeeeffd<0F>Zdeeefdedeeefdeeeffd<10>Zdeeefdedeeefdeeeffd<11>Zdeeefdedeeefdeeeffd<12>Zdeeefdedeeefdeeeffd<13>Zdeeeefdedeeefdeeeeffd<15>Zdeeeefdeeeeffd<16>Zdeeefdeeeefdefd<18>Zdeeefdeeefdefd<1A>Zdeeefdeeeefdeeeeffd<1D>Zdeeefdeeefdefd <20>Zd!edeeefdefd"<22>Zdeeefdeeefdeeeffd#<23>Zdeeefdeeefdeeeffd$<24>Zd edeeeeffd%<25>Zdeeeffd&<26>Z d'S)(<28> TaskExecutoru任务执行器c<00>T<00>|j|j|j|jd<01>|_i|_dS)N)<04>
sequential<EFBFBD>parallel<65> conditional<61> iterative)<06>_execute_sequential<61>_execute_parallel<65>_execute_conditional<61>_execute_iterative<76>execution_strategies<65>active_executions<6E><01>selfs <20><C:\Users\jiezhao\Desktop\TSP_assistant\src\agent\executor.py<70>__init__zTaskExecutor.__init__s9<00><00><1E>2<><1C>.<2E><1F>4<><1D>0<> %
<EFBFBD>%
<EFBFBD><04>!<21> "$<24><04><1E><1E><1E><00>plan<61> tool_manager<65>context<78>returnc<00><00><>K<00> dtj<00><00><00>d<02><00><00><00>}tj<00><00>d|d<04>|j|<|<00>|<01><00>}|j|||||<04><05><00><00>d{V<00><03>}d|j|d<tj<00><00>|j|d <||j|d
<t <00>d |<04><00><02><00>|S#t$rp}t <00> d |<07><00><02><00>||jvr-d |j|d<t|<07><00>|j|d<dt|<07><00>|d<10>cYd}~Sd}~wwxYw)u 执行计划<E8AEA1>exec_z %Y%m%d_%H%M%S<>running)<03>
start_time<EFBFBD>statusr)rrr<00> execution_idN<64> completedr"<00>end_time<6D>resultu计划执行完成: u执行计划失败: <20>failed<65>errorF)<03>successr(r#) r<00>now<6F>strftimer<00>_determine_execution_strategyr<00>logger<65>info<66> Exceptionr(<00>str)rrrrr#<00>execution_strategyr&<00>es r<00> execute_planzTaskExecutor.execute_plans<><00><00><00><00>% <0E>M<>8<EFBFBD><<3C>><3E>><3E>#:<3A>#:<3A>?<3F>#K<>#K<>M<>M<>L<EFBFBD>&<26>l<EFBFBD>n<EFBFBD>n<EFBFBD>#<23><1C>4<0E>4<0E>D<EFBFBD> "<22><<3C> 0<>"&<26>!C<>!C<>D<EFBFBD>!I<>!I<> <1E>I<01>4<EFBFBD>4<>5G<35>H<><19>)<29><1F>)<29> <0E><0E><0E><0E><0E><0E><0E><0E><0E>F<EFBFBD>>I<01>D<EFBFBD> "<22><<3C> 0<><18> :<3A>?G<>|<7C>~<7E>~<7E>D<EFBFBD> "<22><<3C> 0<><1A> <<3C>=C<>D<EFBFBD> "<22><<3C> 0<><18> :<3A> <12>K<EFBFBD>K<EFBFBD>=<3D>|<7C>=<3D>=<3D> ><3E> ><3E> ><3E><19>M<EFBFBD><4D><18>
<0E>
<0E>
<0E> <12>L<EFBFBD>L<EFBFBD>3<><01>3<>3<> 4<> 4<> 4<><1B>t<EFBFBD>5<>5<>5<>AI<41><04>&<26>|<7C>4<>X<EFBFBD>><3E>@C<>A<EFBFBD><06><06><04>&<26>|<7C>4<>W<EFBFBD>=<3D>!<21><1C>Q<EFBFBD><16><16> ,<2C><0E><0E> <0E> <0E> <0E> <0E> <0E> <0E><><EFBFBD><EFBFBD><EFBFBD>
<0E><><EFBFBD>s<00>CC!<00>!
E<03>+A%E<03>E<03>Ec<00>R<00>|sdSd<02>|D<00><00>}d|vrdSd|vsd|vrdSd|vrd SdS)
u确定执行策略r c<00>8<00>g|]}|<01>d<00><00><00><02>S)<01>type<70><01>get)<02>.0<EFBFBD>tasks r<00>
<listcomp>z>TaskExecutor._determine_execution_strategy.<locals>.<listcomp>Ps$<00><00>8<>8<>8<>4<EFBFBD>d<EFBFBD>h<EFBFBD>h<EFBFBD>v<EFBFBD>&<26>&<26>8<>8<>8r<00>parallel_groupr <00> condition<6F>branchr <00>iteration_controlr<00>)rr<00>
plan_typess rr,z*TaskExecutor._determine_execution_strategyJsc<00><00><13> <20><1F><<3C>9<>8<>4<EFBFBD>8<>8<>8<>
<EFBFBD> <1B>z<EFBFBD> )<29> )<29><1D>:<3A> <18>J<EFBFBD> &<26> &<26>(<28>j<EFBFBD>*@<40>*@<40> <20>=<3D> <20>J<EFBFBD> .<2E> .<2E><1E>;<3B><1F><rr#c <00><00><>K<00>g}g}t|<01><00>D<00>]M\}} t<00>d|dz<00>dt|<01><00><00>d|<08>dd<06><00><00><00><06><00>|<00>||<05><00><00>d{V<00><03>s2t<00>d|<08>d<05><00><00>d <09><03><00><00><>|<00>|||<03><00><00>d{V<00><03>} |<05>|<08>d<05><00>| tj
<00><00><00> <00><00>d
<EFBFBD><03><00>|<06>|<08>d<05><00>d | <09>d d <0A><00>d<0E><03><00>|<00> || <09><00>s1t<00>d|<08>d<05><00><00>d<0F><03><00><00><01><>#t$r<>}
t<00>d|<08>d<05><00><00>d|
<EFBFBD><00><04><00>|<06>|<08>d<05><00>dt|
<EFBFBD><00>d<12><03><00>|<08>dd<14><00>r$dd|<08>d<05><00><00><00>||d<16>cYd}
~
cSYd}
~
<EFBFBD><02>Gd}
~
wwxYwd|||d<18>S)u顺序执行计划u 执行任务 <20><00>/z: <20>id<69>unknownN<6E>任务 u" 的依赖未满足跳过执行<E689A7><03>task_idr&<00> timestampr$<00>durationr)rIr"rKu 未满足成功条件u 失败: r')rIr"r(<00>criticalFu关键任务失败: )r)r(<00>results<74> execution_logT<67>r)rMrNr#)<10> enumerater-r.<00>lenr8<00>_check_dependencies<65>warning<6E>_execute_single_task<73>appendrr*<00> isoformat<61>_check_success_criteriar/r(r0) rrrrr#rMrN<00>ir:<00> task_resultr2s rrz TaskExecutor._execute_sequential[s<><00><00><00><00><15><07><1A> <0A> <20><14><EFBFBD><EFBFBD>+ <16>+ <16>G<EFBFBD>A<EFBFBD>t<EFBFBD>* <16><16> <0B> <0B>Z<>A<EFBFBD>a<EFBFBD>C<EFBFBD>Z<>Z<>#<23>d<EFBFBD>)<29>)<29>Z<>Z<>t<EFBFBD>x<EFBFBD>x<EFBFBD><04>i<EFBFBD>?X<>?X<>Z<>Z<>[<5B>[<5B>[<5B>"<22>5<>5<>d<EFBFBD>G<EFBFBD>D<>D<>D<>D<>D<>D<>D<>D<><1D><1A>N<EFBFBD>N<EFBFBD>#_<>T<EFBFBD>X<EFBFBD>X<EFBFBD>d<EFBFBD>^<5E>^<5E>#_<>#_<>#_<>`<60>`<60>`<60><1C>%)<29>$=<3D>$=<3D>d<EFBFBD>L<EFBFBD>RY<52>$Z<>$Z<>Z<>Z<>Z<>Z<>Z<>Z<> <0B><17><0E><0E>#<23>x<EFBFBD>x<EFBFBD><04>~<7E>~<7E>)<29>!)<29><1C><1E><1E>!9<>!9<>!;<3B>!;<3B> <12> <12><13><13><13> <1E>$<24>$<24>#<23>x<EFBFBD>x<EFBFBD><04>~<7E>~<7E>)<29> +<2B><0F><0F>
<EFBFBD>A<EFBFBD> ><3E> ><3E>&<12>&<12><13><13><13><1C>3<>3<>D<EFBFBD>+<2B>F<>F<>U<01><1A>N<EFBFBD>N<EFBFBD>#S<>T<EFBFBD>X<EFBFBD>X<EFBFBD>d<EFBFBD>^<5E>^<5E>#S<>#S<>#S<>T<>T<>T<><54><EFBFBD><1C> <16> <16> <16><16> <0C> <0C>I<>T<EFBFBD>X<EFBFBD>X<EFBFBD>d<EFBFBD>^<5E>^<5E>I<>I<>a<EFBFBD>I<>I<>J<>J<>J<><1D>$<24>$<24>#<23>x<EFBFBD>x<EFBFBD><04>~<7E>~<7E>&<26> <20><11>V<EFBFBD>V<EFBFBD>&<12>&<12><13><13><13><18>8<EFBFBD>8<EFBFBD>J<EFBFBD><05>.<2E>.<2E><16>#(<28>!H<><04><08><08><14><0E><0E>!H<>!H<>#*<2A>)6<> <16><16><16><16><16><16><16><16><16><16><16><16><16><16><16><><EFBFBD><EFBFBD><EFBFBD> <16><><EFBFBD><EFBFBD>$<1C><1E>*<2A>(<28> 
<EFBFBD>
<EFBFBD>
s&<00>BF'<02>2C3F'<02>'
I"<05>1BI<05>I"<05>I"c<00><00><>K<00>g}g}|<00>|<01><00>}|D]<5D>}|ddkr9|<00>|d||<03><00><00>d{V<00><03>} |<05>| <09><00><00>G|dD]n}
|<00>|
||<03><00><00>d{V<00><03>} |<05>|
<EFBFBD>d<05><00>| t j<00><00><00><00><00>d<06><03><00><00>o<EFBFBD><6F>d|||d<08>S) u并行执行计划<E8AEA1>execution_moder <00>tasksNrErHTrO) <09>#_group_tasks_for_parallel_execution<6F>_execute_tasks_parallel<65>extendrTrUr8rr*rV) rrrrr#rMrN<00>parallel_groups<70>group<75> group_resultsr:rYs rrzTaskExecutor._execute_parallel<65>sG<00><00><00><00><15><07><1A> <0A><1F>B<>B<>4<EFBFBD>H<>H<><0F>$<24> <17> <17>E<EFBFBD><14>%<25>&<26>*<2A>4<>4<>&*<2A>&B<>&B<><19>'<27>N<EFBFBD>L<EFBFBD>'<27>'<12>'<12>!<12>!<12>!<12>!<12>!<12>!<12> <0A><18><0E><0E>}<7D>-<2D>-<2D>-<2D>-<2D>"<22>'<27>N<EFBFBD><17><17>D<EFBFBD>(,<2C>(A<>(A<>$<24> <0C>V]<5D>(^<5E>(^<5E>"^<5E>"^<5E>"^<5E>"^<5E>"^<5E>"^<5E>K<EFBFBD><1B>N<EFBFBD>N<EFBFBD>#'<27>8<EFBFBD>8<EFBFBD>D<EFBFBD>><3E>><3E>"-<2D>%-<2D>\<5C>^<5E>^<5E>%=<3D>%=<3D>%?<3F>%?<3F>$<16>$<16><17><17><17><17><17><1C><1E>*<2A>(<28> 
<EFBFBD>
<EFBFBD>
rc<00><00>DK<00>g}g}d}g}|D]L} | <09>d<02><00>dkr| }<07>| <09>d<02><00>dkr|<08>| <09><00><00>M|st<00>d<05><00>ddd<08>S|<00>|||<03><00><00>d{V<00><03>}
|<05>|<07>d <09><00>|
t j<00><00><00><00><00>d
<EFBFBD><03><00>|<00>|
|<08><00>} | r<>|<00> | <0B>d g<00><00>|||<04><00><00>d{V<00><03>} |<05>
| <0C>d g<00><00><00><00>|<06>
| <0C>d g<00><00><00><00>d|||| r| <0B>d <09><00>ndd<0F>S)u条件执行计划Nr6r=r>u'条件计划中缺少条件检查任务Fu缺少条件检查任务<E4BBBB>r)r(rErHr\rMrNT)r)rMrNr#<00>selected_branch) r8rUr-r(rTrr*rV<00>_select_branchrr_) rrrrr#rMrN<00>condition_task<73> branch_tasksr:<00>condition_resultre<00> branch_results rrz!TaskExecutor._execute_conditional<61>s <00><00><00><00><15><07><1A> <0A><1E><0E><19> <0C><18> *<2A> *<2A>D<EFBFBD><13>x<EFBFBD>x<EFBFBD><06><1F><1F>;<3B>.<2E>.<2E>!%<25><0E><0E><15><18><18>&<26>!<21>!<21>X<EFBFBD>-<2D>-<2D><1C>#<23>#<23>D<EFBFBD>)<29>)<29>)<29><><1D> K<01> <12>L<EFBFBD>L<EFBFBD>B<> C<> C<> C<>$<24>/I<>J<>J<> J<>"&<26>!:<3A>!:<3A>><3E><<3C>Y`<60>!a<>!a<>a<>a<>a<>a<>a<>a<><18><0F><0E><0E>%<25>)<29>)<29>$<24>/<2F>/<2F>&<26>!<21><1C><1E><1E>1<>1<>3<>3<>
<EFBFBD>
<EFBFBD> <0B> <0B> <0B><1F>-<2D>-<2D>.><3E> <0C>M<>M<><0F> <1A> I<01>"&<26>":<3A>":<3A><1F>#<23>#<23>G<EFBFBD>R<EFBFBD>0<>0<><1C><17><1C> #<0E>#<0E><0E><0E><0E><0E><0E><0E>M<EFBFBD> <14>N<EFBFBD>N<EFBFBD>=<3D>,<2C>,<2C>Y<EFBFBD><02>;<3B>;<3B> <<3C> <<3C> <<3C> <19> <20> <20><1D>!2<>!2<>?<3F>B<EFBFBD>!G<>!G<> H<> H<> H<><1C><1E>*<2A>(<28><K<>U<><EFBFBD>2<>2<>4<EFBFBD>8<>8<>8<>QU<51> 
<EFBFBD>
<EFBFBD>
rc<00><00><>K<00>d}|D]}|<06>d<02><00>dkr|}n<01> |st<00>d<04><00>ddd<07>S|<05>dd <09><00>}|<05>d
i<00><00>}|<05>d g<00><00>} g}
g} d } | |kr<>| d z } t<00>d| <0C>d<0F><03><00>|<00>| |||<04>d| <0C><00><03><00><00>d{V<00><03>} |
<EFBFBD>| | t j<00><00><00><00><00>d<11><03><00>|<00> | |<08><00>rt<00>d| <0C>d<13><03><00>n| |k<00><>d|
| || | |kd<15>S)u迭代执行计划Nr6r?u'迭代计划中缺少迭代控制任务Fu缺少迭代控制任务rd<00>max_iterations<6E>
<00>convergence_criteriar\rrCu
执行第 u
次迭代<E8BFAD>_iter_)<03> iterationr&rJu 迭代在第 u
次收敛T)r)rMrNr#<00>
iterations<EFBFBD> converged)
r8r-r(r.rrUrr*rV<00>_check_convergence)rrrrr#<00>iteration_taskr:rlrnr\rMrN<00>iteration_count<6E>iteration_results rrzTaskExecutor._execute_iterative<76>s<><00><00><00><00><1E><0E><18> <16> <16>D<EFBFBD><13>x<EFBFBD>x<EFBFBD><06><1F><1F>#6<>6<>6<>!%<25><0E><15><05>7<><1E> K<01> <12>L<EFBFBD>L<EFBFBD>B<> C<> C<> C<>$<24>/I<>J<>J<> J<>'<27>+<2B>+<2B>,<<3C>b<EFBFBD>A<>A<><0E>-<2D>1<>1<>2H<32>"<22>M<>M<><1C><1E>"<22>"<22>7<EFBFBD>B<EFBFBD>/<2F>/<2F><05><14><07><1A> <0A><1B><0F><1D><0E>.<2E>.<2E> <1B>q<EFBFBD> <20>O<EFBFBD> <12>K<EFBFBD>K<EFBFBD>@<40>_<EFBFBD>@<40>@<40>@<40> A<> A<> A<>&*<2A>%=<3D>%=<3D><15>|<7C>W<EFBFBD><1C>.V<>.V<>_<EFBFBD>.V<>.V<>&<0E>&<0E> <0E> <0E> <0E> <0E> <0E> <0E> <1C> <14>N<EFBFBD>N<EFBFBD>,<2C>*<2A>%<25>\<5C>^<5E>^<5E>5<>5<>7<>7<><0E><0E> <0F> <0F> <0F><14>&<26>&<26>'7<>9M<39>N<>N<> <16><16> <0B> <0B>G<>O<EFBFBD>G<>G<>G<>H<>H<>H<><15>%<1E><0E>.<2E>.<2E>*<1C><1E>*<2A>(<28>)<29>(<28>><3E>9<> 
<EFBFBD>
<EFBFBD>
rr:c<00><00><>K<00>tj<00><00>} |<01>dd<02><00>}|<01>dd<04><00>}|<01>dd<06><00>}|<01>di<00><00>}t<00>d|<05>d |<06>d
|<07><00><06><00>|dkr|<00>|||<03><00><00>d {V<00><03>} ne|d kr|<00>|||<03><00><00>d {V<00><03>} nA|d kr|<00>|||<03><00><00>d {V<00><03>} n|<00>|||<03><00><00>d {V<00><03>} tj<00><00>|z
<00> <00><00>}
|
| d<t<00>d|<05>d|
d<11>d<12><05><00>| S#t$r`} t<00> d| <0B><00><02><00>dt| <0B><00>tj<00><00>|z
<00> <00><00>d<15>cYd } ~ Sd } ~ wwxYw)u执行单个任务rErFr6<00>action<6F>tool<6F><00>
parametersu执行任务: u
, 类型: u
, 工具: Nr=<00>controlrKrGu 执行完成,耗时: z.2fu秒u执行任务失败: F)r)r(rK) rr*r8r-r.<00>_execute_action_task<73>_execute_condition_task<73>_execute_control_task<73>_execute_general_task<73> total_secondsr/r(r0) rr:rrr!rI<00> task_type<70> tool_namer{r&rKr2s rrTz!TaskExecutor._execute_single_task/s:<00><00><00><00><1E>\<5C>^<5E>^<5E>
<EFBFBD> <0E><1A>h<EFBFBD>h<EFBFBD>t<EFBFBD>Y<EFBFBD>/<2F>/<2F>G<EFBFBD><1C><08><08><16><18>2<>2<>I<EFBFBD><1C><08><08><16><12>,<2C>,<2C>I<EFBFBD><1D><18><18>,<2C><02>3<>3<>J<EFBFBD> <12>K<EFBFBD>K<EFBFBD>\<5C><17>\<5C>\<5C>I<EFBFBD>\<5C>\<5C>QZ<51>\<5C>\<5C> ]<5D> ]<5D> ]<5D><19>H<EFBFBD>$<24>$<24>#<23>8<>8<><14>|<7C>W<EFBFBD>U<>U<>U<>U<>U<>U<>U<>U<><06><06><1A>k<EFBFBD>)<29>)<29>#<23>;<3B>;<3B>D<EFBFBD>,<2C>PW<50>X<>X<>X<>X<>X<>X<>X<>X<><06><06><1A>i<EFBFBD>'<27>'<27>#<23>9<>9<>$<24> <0C>g<EFBFBD>V<>V<>V<>V<>V<>V<>V<>V<><06><06>#<23>9<>9<>$<24> <0C>g<EFBFBD>V<>V<>V<>V<>V<>V<>V<>V<><06> <20> <0C><0E><0E><1A>3<>B<>B<>D<>D<>H<EFBFBD>!)<29>F<EFBFBD>:<3A> <1E> <12>K<EFBFBD>K<EFBFBD>T<>'<27>T<>T<>8<EFBFBD>T<>T<>T<>T<> U<> U<> U<><19>M<EFBFBD><4D><18> <0E> <0E> <0E> <12>L<EFBFBD>L<EFBFBD>3<><01>3<>3<> 4<> 4<> 4<> <20><1C>Q<EFBFBD><16><16>%<25>\<5C>^<5E>^<5E>j<EFBFBD>8<>G<>G<>I<>I<><0E><0E> <0E> <0E> <0E> <0E> <0E> <0E><><EFBFBD><EFBFBD><EFBFBD> <0E><><EFBFBD>s<00>EE,<00>,
G<03>6AG<03> G<03>Gc<00><00><>K<00>|<01>dd<02><00>}|<01>di<00><00>}i|<05>|<03>}|<02>||<06><00><00>d{V<00><03>}d|||d<06>S)u执行动作任务ryrzr{NT)r)ryr{r&)r8<00> execute_tool)rr:rrr<>r{<00>full_parametersr&s rr}z!TaskExecutor._execute_action_taskXs<><00><00><00><00><19>H<EFBFBD>H<EFBFBD>V<EFBFBD>R<EFBFBD>(<28>(<28> <09><19>X<EFBFBD>X<EFBFBD>l<EFBFBD>B<EFBFBD>/<2F>/<2F>
<EFBFBD>4<>Z<EFBFBD>3<>7<EFBFBD>3<><0F>$<24>0<>0<><19>O<EFBFBD>L<>L<>L<>L<>L<>L<>L<>L<><06><1C><1D>)<29><1C> 
<EFBFBD>
<EFBFBD>
rc<00><00><>K<00>|<01>dd<02><00>}|<01>di<00><00>}|<00>||<03><00><00>d{V<00><03>}d||t|<05><00><00><00><00>d<06>S)u执行条件任务r=rz<00>branchesNT)r)r=r&<00>available_branches)r8<00>_evaluate_condition<6F>list<73>keys)rr:rrr=r<>ris rr~z$TaskExecutor._execute_condition_taskos<><00><00><00><00><19>H<EFBFBD>H<EFBFBD>[<5B>"<22>-<2D>-<2D> <09><17>8<EFBFBD>8<EFBFBD>J<EFBFBD><02>+<2B>+<2B><08>"&<26>!9<>!9<>)<29>W<EFBFBD>!M<>!M<>M<>M<>M<>M<>M<>M<><18><1C>"<22>&<26>"&<26>x<EFBFBD>}<7D>}<7D><EFBFBD><EFBFBD>"7<>"7<> 
<EFBFBD>
<EFBFBD>
rc<00><00><>K<00>|<01>dd<02><00>}|dkr|<00>||<03><00><00>d{V<00><03>S|dkr|<00>||<03><00><00>d{V<00><03>Sd|dd<08>S) u执行控制任务<E4BBBB> control_type<70>generalrpN<>loopTu控制任务执行完成)r)r<><00>message)r8<00>_execute_iteration_control<6F>_execute_loop_control)rr:rrr<>s rrz"TaskExecutor._execute_control_task<73>s<><00><00><00><00><1C>x<EFBFBD>x<EFBFBD><0E> <09>:<3A>:<3A> <0C> <17>;<3B> &<26> &<26><1D>8<>8<><14>w<EFBFBD>G<>G<>G<>G<>G<>G<>G<>G<> G<> <19>V<EFBFBD> #<23> #<23><1D>3<>3<>D<EFBFBD>'<27>B<>B<>B<>B<>B<>B<>B<>B<> B<> <20> ,<2C>5<><0E><0E> rc<00><00>>K<00>|<01>dd<02><00>}d|dd<05>S)u执行通用任务<E4BBBB> descriptionrzTu通用任务执行完成)r)r<>r<>r7)rr:rrr<>s rr<>z"TaskExecutor._execute_general_task<73>s5<00><00><00><00><1B>h<EFBFBD>h<EFBFBD>}<7D>b<EFBFBD>1<>1<> <0B> <1C>&<26>1<>
<EFBFBD>
<EFBFBD>
rr\c<00><00>8<00><00><02><03> K<00><00><03><00>fd<01><08> <09> fd<02>|D<00><00>}tj|ddi<01><01>d{V<00><03>}g}t|<05><00>D]<5D>\}}t|t<00><00>rf|<06>||<00>d<06><00>dt|<08><00>d<08>tj <00><00><00>
<00><00>d <09><03><00><00><>|<06>||<00>d<06><00>|tj <00><00><00>
<00><00>d <09><03><00><00><>|S)
u并行执行多个任务c<00><00>B<00>K<00><00><02>|<00><03><01><00><00>d{V<00><03>S)N)rT)r:rrrs <20><><EFBFBD>r<00> execute_taskz:TaskExecutor._execute_tasks_parallel.<locals>.execute_task<73>s1<00><><00><00><00><1D>2<>2<>4<EFBFBD><1C>w<EFBFBD>O<>O<>O<>O<>O<>O<>O<>O<> Orc<00>&<00><01>g|] }<00>|<01><00><00><02>Sr@r@)r9r:r<>s <20>rr;z8TaskExecutor._execute_tasks_parallel.<locals>.<listcomp><3E>s#<00><><00>?<3F>?<3F>?<3F><14>,<2C>,<2C>t<EFBFBD>,<2C>,<2C>?<3F>?<3F>?r<00>return_exceptionsTNrEFrdrH) <0B>asyncio<69>gatherrP<00>
isinstancer/rUr8r0rr*rV)
rr\rr<00>parallel_tasksrM<00>processed_resultsrXr&r<>s
` `` @rr^z$TaskExecutor._execute_tasks_parallel<65>si<00><><EFBFBD><EFBFBD><EFBFBD><00><00><00> P<01> P<01> P<01> P<01> P<01> P<01> P<01>@<01>?<3F>?<3F>?<3F><15>?<3F>?<3F>?<3F><0E> <20><0E><0E>O<>$<24>O<>O<>O<>O<>O<>O<>O<>O<><07><1F><19>"<22>7<EFBFBD>+<2B>+<2B> <13> <13>I<EFBFBD>A<EFBFBD>v<EFBFBD><19>&<26>)<29>,<2C>,<2C> <13>!<21>(<28>(<28>$<24>Q<EFBFBD>x<EFBFBD>|<7C>|<7C>D<EFBFBD>1<>1<>*/<2F>#<23>f<EFBFBD>+<2B>+<2B>F<>F<>!)<29><1C><1E><1E>!9<>!9<>!;<3B>!;<3B>*<12>*<12><13><13><13><13> "<22>(<28>(<28>$<24>Q<EFBFBD>x<EFBFBD>|<7C>|<7C>D<EFBFBD>1<>1<>$<24>!)<29><1C><1E><1E>!9<>!9<>!;<3B>!;<3B>*<12>*<12><13><13><13><13> !<21> rc<00> <00>g}g}|D]b}|<04>d<01><00>dkr2|r|<02>d|d<04><02><00>g}|<02>|<04><00><00>M|<03>|<04><00><00>c|r|<02>d|d<04><02><00>|S)u!将任务分组以便并行执行r6r<r )r[r\)r8rU)rr<00>groups<70> current_groupr:s rr]z0TaskExecutor._group_tasks_for_parallel_execution<6F>s<><00><00><13><06><1A> <0A><18>
+<2B>
+<2B>D<EFBFBD><13>x<EFBFBD>x<EFBFBD><06><1F><1F>#3<>3<>3<> <20>'<27><1A>M<EFBFBD>M<EFBFBD>*6<>!.<2E>#<16>#<16><17><17><17>%'<27>M<EFBFBD><16> <0A> <0A>d<EFBFBD>#<23>#<23>#<23>#<23><1D>$<24>$<24>T<EFBFBD>*<2A>*<2A>*<2A>*<2A> <18> <0F> <12>M<EFBFBD>M<EFBFBD>".<2E>&<26><0E><0E> <0F> <0F> <0F>
<16> rrMc<00><00>nK<00>|<01>dg<00><00>}|sdSd<03>|D<00><00>}|D] }||vrdS<00>
dS)u检查任务依赖是否满足<E6BBA1> dependenciesTc<00>V<00>g|]&}|d<00>dd<02><00><00>|d<00><02>'S)r&r)FrIr7)r9<00>rs rr;z4TaskExecutor._check_dependencies.<locals>.<listcomp><3E>s4<00><00>a<>a<>a<>q<EFBFBD>q<EFBFBD><18>{<7B><EFBFBD><EFBFBD>y<EFBFBD>Z_<5A>?`<60>?`<60>a<>a<EFBFBD> <09>l<EFBFBD>a<>a<>arFr7)rr:rMr<><00>completed_task_ids<64>deps rrRz TaskExecutor._check_dependencies<65>sk<00><00><00><00><1B>x<EFBFBD>x<EFBFBD><0E><02>3<>3<> <0C><1B> <18><17>4<EFBFBD>b<01>a<>G<EFBFBD>a<>a<>a<><1A><1F> <1D> <1D>C<EFBFBD><12>,<2C>,<2C>,<2C><1C>u<EFBFBD>u<EFBFBD>-<2D><14>trr&c<00><><00>|<01>di<00><00>}|s|<02>dd<03><00>S|<03><00><00>D]#\}}|<02>|<04><00>}||krdS<00>$dS)u$检查任务是否满足成功条件<E69DA1>success_criteriar)FT)r8<00>items)rr:r&r<><00> criterion<6F>expected_value<75> actual_values rrWz$TaskExecutor._check_success_criteria<69>s<><00><00><1F>8<EFBFBD>8<EFBFBD>$6<><02>;<3B>;<3B><18><1F> 0<><19>:<3A>:<3A>i<EFBFBD><15>/<2F>/<2F> /<2F>*:<3A>)?<3F>)?<3F>)A<>)A<> <1D> <1D> %<25>I<EFBFBD>~<7E>!<21>:<3A>:<3A>i<EFBFBD>0<>0<>L<EFBFBD><1B>~<7E>-<2D>-<2D><1C>u<EFBFBD>u<EFBFBD>.<2E><14>trrirhc<00>|<00>|<01>dd<02><00>}|D]"}|<04>dd<02><00>}||kr|cS<00>#dS)u根据条件结果选择分支r&rzr=Nr7)rrirh<00>condition_value<75> branch_task<73>branch_conditions rrfzTaskExecutor._select_branchs]<00><00>*<2A>.<2E>.<2E>x<EFBFBD><12><<3C><<3C><0F>'<27> #<23> #<23>K<EFBFBD>*<2A><EFBFBD><EFBFBD>{<7B>B<EFBFBD>?<3F>?<3F> <1C><1F>?<3F>2<>2<>"<22>"<22>"<22>"<22>3<><14>trrvrnc<00>r<00>|sdS|<02><00><00>D]<5D>\}}|<01>|<03><00>}|<05><01>t|t<00><00>rk|<04>d<03><00>dkr||<04>d<05><00>krdS<00>h|<04>d<03><00>dkr||<04>d<05><00>krdS<00><>dS)u检查迭代是否收敛FNr6<00> less_than<61>value<75> greater_thanT)r<>r8r<><00>dict)rrvrnr<><00> thresholdr<64>s rrszTaskExecutor._check_convergences<><00><00>#<23> <19><18>5<EFBFBD>%9<>$><3E>$><3E>$@<40>$@<40> %<25> %<25> <20>I<EFBFBD>y<EFBFBD>+<2B>/<2F>/<2F> <09>:<3A>:<3A>L<EFBFBD><1B>#<23><18><1A>)<29>T<EFBFBD>*<2A>*<2A> %<25><1C>=<3D>=<3D><16>(<28>(<28>K<EFBFBD>7<>7<>#<23>y<EFBFBD>}<7D>}<7D>W<EFBFBD>'=<3D>'=<3D>=<3D>=<3D>$<24>u<EFBFBD>u<EFBFBD>><3E><1E>]<5D>]<5D>6<EFBFBD>*<2A>*<2A>n<EFBFBD><<3C><<3C>#<23>y<EFBFBD>}<7D>}<7D>W<EFBFBD>'=<3D>'=<3D>=<3D>=<3D>$<24>u<EFBFBD>u<EFBFBD><75><13>trr=c<00><00><>K<00>d|vr|<02>dd<03><00>dkrdndSd|vr|<02>dd<08><00>Sd S)
u评估条件表达式<E8BEBE> satisfaction<6F>satisfaction_scorergffffff<66>?<3F>high<67>low<6F>priority<74>medium<75>defaultr7)rr=rs rr<>z TaskExecutor._evaluate_condition$sZ<00><00><00><00> <1A>Y<EFBFBD> &<26> &<26>$<24>[<5B>[<5B>)=<3D>q<EFBFBD>A<>A<>C<EFBFBD>G<>G<>6<EFBFBD>6<EFBFBD>U<EFBFBD> R<> <17>9<EFBFBD> $<24> $<24><1A>;<3B>;<3B>z<EFBFBD>8<EFBFBD>4<>4<> 4<><1C>9rc<00><00>tK<00>|<01>dd<02><00>}|<02>dd<04><00>}d||||kd<06>S)u执行迭代控制rlrm<00>current_iterationrT)r)rlr<><00>continuer7)rr:rrlr<>s rr<>z'TaskExecutor._execute_iteration_control1sQ<00><00><00><00><1D><18><18>"2<>B<EFBFBD>7<>7<><0E>#<23>K<EFBFBD>K<EFBFBD>(;<3B>Q<EFBFBD>?<3F>?<3F><19><1C>,<2C>!2<>)<29>N<EFBFBD>:<3A> 
<EFBFBD>
<EFBFBD>
rc<00><00>>K<00>|<01>dd<02><00>}d|dd<04>S)u执行循环控制<E68EA7>loop_conditionrzT)r)r<>r<>r7)rr:rr<>s rr<>z"TaskExecutor._execute_loop_control=s4<00><00><00><00><1D><18><18>"2<>B<EFBFBD>7<>7<><0E><1C>,<2C><1C>
<EFBFBD>
<EFBFBD>
rc<00>6<00>|j<00>|<01><00>S)u获取执行状态)rr8)rr#s r<00>get_execution_statusz!TaskExecutor.get_execution_statusGs<00><00><13>%<25>)<29>)<29>,<2C>7<>7<>7rc<00><00>|jS)u获取所有执行记录)rrs r<00>get_all_executionszTaskExecutor.get_all_executionsKs <00><00><13>%<25>%rN)!<21>__name__<5F>
__module__<EFBFBD> __qualname__<5F>__doc__rrrr0rr3r,rrrrrTr}r~rr<>r^r]<00>boolrRrWrrfrsr<>r<>r<>r<>r<>r@rrr r s<><00><00><00><00><00><00><19><19>$<24>$<24>$<24>,<0E><12>4<EFBFBD><03>S<EFBFBD><08>><3E>"<22>,<0E><1A>,<0E><16>c<EFBFBD>3<EFBFBD>h<EFBFBD><1E> ,<0E>
<0E>c<EFBFBD>3<EFBFBD>h<EFBFBD><1E> ,<0E>,<0E>,<0E>,<0E>\ <20>$<24>t<EFBFBD>C<EFBFBD><13>H<EFBFBD>~<7E>2F<32> <20>3<EFBFBD> <20> <20> <20> <20>"=
<EFBFBD><12>4<EFBFBD><03>S<EFBFBD><08>><3E>"<22>=
<EFBFBD><1A>=
<EFBFBD><16>c<EFBFBD>3<EFBFBD>h<EFBFBD><1E> =
<EFBFBD>
<1A> =
<EFBFBD>
<0E>c<EFBFBD>3<EFBFBD>h<EFBFBD><1E> =
<EFBFBD>=
<EFBFBD>=
<EFBFBD>=
<EFBFBD>~$
<EFBFBD><12>4<EFBFBD><03>S<EFBFBD><08>><3E>"<22>$
<EFBFBD><1A>$
<EFBFBD><16>c<EFBFBD>3<EFBFBD>h<EFBFBD><1E> $
<EFBFBD>
<1A> $
<EFBFBD>
<0E>c<EFBFBD>3<EFBFBD>h<EFBFBD><1E> $
<EFBFBD>$
<EFBFBD>$
<EFBFBD>$
<EFBFBD>L5
<EFBFBD><12>4<EFBFBD><03>S<EFBFBD><08>><3E>"<22>5
<EFBFBD><1A>5
<EFBFBD><16>c<EFBFBD>3<EFBFBD>h<EFBFBD><1E> 5
<EFBFBD>
<1A> 5
<EFBFBD>
<0E>c<EFBFBD>3<EFBFBD>h<EFBFBD><1E> 5
<EFBFBD>5
<EFBFBD>5
<EFBFBD>5
<EFBFBD>n6
<EFBFBD><12>4<EFBFBD><03>S<EFBFBD><08>><3E>"<22>6
<EFBFBD><1A>6
<EFBFBD><16>c<EFBFBD>3<EFBFBD>h<EFBFBD><1E> 6
<EFBFBD>
<1A> 6
<EFBFBD>
<0E>c<EFBFBD>3<EFBFBD>h<EFBFBD><1E> 6
<EFBFBD>6
<EFBFBD>6
<EFBFBD>6
<EFBFBD>p'<0E><12>3<EFBFBD><03>8<EFBFBD>n<EFBFBD>'<0E><1A>'<0E><16>c<EFBFBD>3<EFBFBD>h<EFBFBD><1E> '<0E>
<0E>c<EFBFBD>3<EFBFBD>h<EFBFBD><1E> '<0E>'<0E>'<0E>'<0E>R
<EFBFBD><12>3<EFBFBD><03>8<EFBFBD>n<EFBFBD>
<EFBFBD><1A>
<EFBFBD><16>c<EFBFBD>3<EFBFBD>h<EFBFBD><1E> 
<EFBFBD>
<0E>c<EFBFBD>3<EFBFBD>h<EFBFBD><1E> 
<EFBFBD>
<EFBFBD>
<EFBFBD>
<EFBFBD>.
<EFBFBD><12>3<EFBFBD><03>8<EFBFBD>n<EFBFBD>
<EFBFBD><1A>
<EFBFBD><16>c<EFBFBD>3<EFBFBD>h<EFBFBD><1E> 
<EFBFBD>
<0E>c<EFBFBD>3<EFBFBD>h<EFBFBD><1E> 
<EFBFBD>
<EFBFBD>
<EFBFBD>
<EFBFBD>(<0E><12>3<EFBFBD><03>8<EFBFBD>n<EFBFBD><0E><1A><0E><16>c<EFBFBD>3<EFBFBD>h<EFBFBD><1E> <0E>
<0E>c<EFBFBD>3<EFBFBD>h<EFBFBD><1E> <0E><0E><0E><0E>(
<EFBFBD><12>3<EFBFBD><03>8<EFBFBD>n<EFBFBD>
<EFBFBD><1A>
<EFBFBD><16>c<EFBFBD>3<EFBFBD>h<EFBFBD><1E> 
<EFBFBD>
<0E>c<EFBFBD>3<EFBFBD>h<EFBFBD><1E> 
<EFBFBD>
<EFBFBD>
<EFBFBD>
<EFBFBD>$ !<21><13>D<EFBFBD><13>c<EFBFBD><18>N<EFBFBD>#<23> !<21><1A> !<21><16>c<EFBFBD>3<EFBFBD>h<EFBFBD><1E> !<21>
<0E>d<EFBFBD>3<EFBFBD><03>8<EFBFBD>n<EFBFBD> <1D> !<21> !<21> !<21> !<21>D<16><04>T<EFBFBD>#<23>s<EFBFBD>(<28>^<5E>8L<38><16>QU<51>VZ<56>[^<5E>`c<>[c<>Vd<56>Qe<51><16><16><16><16>2<14>d<EFBFBD>3<EFBFBD><03>8<EFBFBD>n<EFBFBD><14>t<EFBFBD>D<EFBFBD>QT<51>VY<56>QY<51>N<EFBFBD>G[<5B><14>`d<><14><14><14><14> <14>D<EFBFBD><13>c<EFBFBD><18>N<EFBFBD> <14>D<EFBFBD><13>c<EFBFBD><18>N<EFBFBD> <14>W[<5B> <14> <14> <14> <14> <14>t<EFBFBD>C<EFBFBD><13>H<EFBFBD>~<7E> <14>T<EFBFBD>RV<52>WZ<57>\_<>W_<57>R`<60>Ma<4D> <14>fn<66>os<6F>tw<74>y|<7C>t|<7C>o}<7D>f~<7E> <14> <14> <14> <14><14>4<EFBFBD><03>S<EFBFBD><08>><3E><14>Y]<5D>^a<>cf<63>^f<>Yg<59><14>lp<6C><14><14><14><14>, <1D>3<EFBFBD> <1D><14>c<EFBFBD>3<EFBFBD>h<EFBFBD><1E> <1D>TW<54> <1D> <1D> <1D> <1D>

<EFBFBD>T<EFBFBD>#<23>s<EFBFBD>(<28>^<5E>

<EFBFBD>d<EFBFBD>SV<EFBFBD>X[<5B>S[<5B>n<EFBFBD>

<EFBFBD>ae<EFBFBD>fi<EFBFBD>kn<EFBFBD>fn<EFBFBD>ao<EFBFBD>

<EFBFBD>

<EFBFBD>

<EFBFBD>

<EFBFBD>
<EFBFBD><04>S<EFBFBD>#<23>X<EFBFBD><0E>
<EFBFBD><14>c<EFBFBD>SV<53>h<EFBFBD><1E>
<EFBFBD>\`<60>ad<61>fi<66>ai<61>\j<>
<EFBFBD>
<EFBFBD>
<EFBFBD>
<EFBFBD>8<><13>8<><18>$<24>s<EFBFBD>C<EFBFBD>x<EFBFBD>.<2E>9Q<39>8<>8<>8<>8<>&<26>D<EFBFBD><13>c<EFBFBD><18>N<EFBFBD>&<26>&<26>&<26>&<26>&<26>&rr )r<><00>loggingr<67><00>typingrrrrr<00>json<6F> getLoggerr<72>r-r r@rr<00><module>r<>s<><00><01><04><04>
<0F><0E><0E><0E><0E><0E><0E><0E>,<2C>,<2C>,<2C>,<2C>,<2C>,<2C>,<2C>,<2C>,<2C>,<2C>,<2C>,<2C><1D><1D><1D><1D><1D><1D> <0B> <0B> <0B> <0B> <1A><17> <1A>8<EFBFBD> $<24> $<24><06>}&<26>}&<26>}&<26>}&<26>}&<26>}&<26>}&<26>}&<26>}&<26>}&r