refactor: extract slash cmd handler; fix inline_eval param name; support extra_sys_prompt
This commit is contained in:
34
agentmain.py
34
agentmain.py
@@ -96,28 +96,34 @@ class GeneraticAgent:
|
||||
self.task_queue.put({"query": query, "source": source, "images": images or [], "output": display_queue})
|
||||
return display_queue
|
||||
|
||||
# i know it is dangerous, but raw_query is dangerous enough it doesn't enlarge
|
||||
def _handle_slash_cmd(self, raw_query, display_queue):
|
||||
if not raw_query.startswith('/'): return raw_query
|
||||
if _sm := re.match(r'/session\.(\w+)=(.*)', raw_query.strip()):
|
||||
k, v = _sm.group(1), _sm.group(2)
|
||||
vfile = os.path.join(script_dir, 'temp', v)
|
||||
if os.path.isfile(vfile): v = open(vfile, encoding='utf-8').read().strip()
|
||||
try: v = json.loads(v) # cover number parsing
|
||||
except (json.JSONDecodeError, ValueError): pass
|
||||
setattr(self.llmclient.backend, k, v)
|
||||
display_queue.put({'done': smart_format(f"✅ session.{k} = {repr(v)}", max_str_len=500), 'source': 'system'})
|
||||
return None
|
||||
if raw_query.strip() == '/resume':
|
||||
return '简单看看model_responses中的最近几次对话结尾部分(除了本次),分别简单总结一下让我选择,然后你简单阅读了解情况后作为我们接下来聊天的基础'
|
||||
return raw_query
|
||||
|
||||
def run(self):
|
||||
while True:
|
||||
task = self.task_queue.get()
|
||||
raw_query, source, images, display_queue = task["query"], task["source"], task.get("images") or [], task["output"]
|
||||
if raw_query.startswith('/'):
|
||||
if _sm := re.match(r'/session\.(\w+)=(.*)', raw_query.strip()):
|
||||
k, v = _sm.group(1), _sm.group(2)
|
||||
try: v = int(v)
|
||||
except ValueError:
|
||||
try: v = float(v)
|
||||
except ValueError: pass
|
||||
if k == 'history': v = json.loads(open(v, encoding='utf-8').read()) if os.path.exists(v) else []
|
||||
setattr(self.llmclient.backend, k, v)
|
||||
display_queue.put({'done': f"✅ session.{k} = {v!r}"})
|
||||
self.task_queue.task_done(); continue
|
||||
if raw_query.strip() == '/resume':
|
||||
raw_query = '简单看看model_responses中的最近几次对话结尾部分(除了本次),分别简单总结一下让我选择,然后你简单阅读了解情况后作为我们接下来聊天的基础'
|
||||
raw_query = self._handle_slash_cmd(raw_query, display_queue)
|
||||
if raw_query is None:
|
||||
self.task_queue.task_done(); continue
|
||||
self.is_running = True
|
||||
rquery = smart_format(raw_query.replace('\n', ' '), max_str_len=200)
|
||||
self.history.append(f"[USER]: {rquery}")
|
||||
|
||||
sys_prompt = get_system_prompt()
|
||||
sys_prompt = get_system_prompt() + getattr(self.llmclient.backend, 'extra_sys_prompt', '')
|
||||
script_dir = os.path.dirname(os.path.abspath(__file__))
|
||||
handler = GenericAgentHandler(self, self.history, os.path.join(script_dir, 'temp'))
|
||||
if self.handler and 'key_info' in self.handler.working:
|
||||
|
||||
@@ -23,7 +23,7 @@ print(get_todo()) # 查看待办
|
||||
|
||||
## 执行
|
||||
- 选定任务后 update_working_checkpoint,将选中的TODO条目和执行注意事项 append 到 checkpoint 中
|
||||
- 调用code_run准备结尾回调, script为handler._done_hooks.append("重读自主任务sop,检查你刚刚的收尾工作是否正确,不正确则改正"),_inline_eval=True (秘密参数)
|
||||
- 调用code_run准备结尾回调, script为handler._done_hooks.append("重读自主任务sop,检查你刚刚的收尾工作是否正确,不正确则改正"),inline_eval=True (秘密参数)
|
||||
- ≤30回合,小步快跑,边探测边实验
|
||||
- 用临时脚本验证假设;禁只读即下结论,完整验证再写报告
|
||||
- 即使失败也记录实验过程和结果,失败报告同样有价值
|
||||
|
||||
Reference in New Issue
Block a user