update prompt

This commit is contained in:
funnywolf
2025-12-07 19:28:39 +08:00
parent 1d652037ae
commit 7714f91eb6
7 changed files with 66 additions and 18 deletions
+38
View File
@@ -0,0 +1,38 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="ASP" type="Python.DjangoServer" factoryName="Django server">
<module name="agentic-soc-platform" />
<option name="ENV_FILES" value="" />
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs>
<env name="PYTHONUNBUFFERED" value="1" />
<env name="DJANGO_SETTINGS_MODULE" value="ASP.settings" />
</envs>
<option name="SDK_HOME" value="" />
<option name="SDK_NAME" value="uv (agentic-soc-platform)" />
<option name="WORKING_DIRECTORY" value="" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<EXTENSION ID="net.ashald.envfile">
<option name="IS_ENABLED" value="false" />
<option name="IS_SUBST" value="false" />
<option name="IS_PATH_MACRO_SUPPORTED" value="false" />
<option name="IS_IGNORE_MISSING_FILES" value="false" />
<option name="IS_ENABLE_EXPERIMENTAL_INTEGRATIONS" value="false" />
<ENTRIES>
<ENTRY IS_ENABLED="true" PARSER="runconfig" IS_EXECUTABLE="false" />
</ENTRIES>
</EXTENSION>
<option name="launchJavascriptDebuger" value="false" />
<option name="port" value="7000" />
<option name="host" value="0.0.0.0" />
<option name="additionalOptions" value="" />
<option name="browserUrl" value="" />
<option name="runTestServer" value="false" />
<option name="runNoReload" value="false" />
<option name="useCustomRunCommand" value="false" />
<option name="customRunCommand" value="" />
<method v="2" />
</configuration>
</component>
@@ -1,6 +1,6 @@
以下是本次会话的数据:
### 案件背景 (Case Context)
### 案件原始信息 (Case Context)
{case}
@@ -32,8 +32,7 @@ Objective)。
1. **威胁预判 (Prioritize)**:优先分析`严重``高`级别的警报,它们是调查的起点。
2. **确定支点 (Identify Pivot)**:从警报涉及的实体中,选择最可疑、信息最丰富的作为调查的“支点”。通常是具有不良信誉的外部IP、或发生异常行为的关键内部资产。
3. **构建假设 (Formulate Hypothesis)**:基于警报类型,提出一个可被验证的假设性目标,旨在确认威胁的真实性并评估其影响。
* *示例*:对于“高危警报:检测到PowerShell混淆执行”,您的目标应该是:“确认在主机 `DEV-WEB-03`
上检测到PowerShell混淆执行警报后,是否存在成功的代码执行或持久化后门”。
* *示例*:对于“高危警报:检测到PowerShell混淆执行”,您的目标应该是:“确认在主机 `DEV-WEB-03`上检测到PowerShell混淆执行警报后,是否存在成功的代码执行或持久化后门”。
# 输出约束
@@ -2,7 +2,11 @@
请根据以下信息,生成下一步的调查计划。
### 本轮猎杀的“作战目标”
### 案件原始信息
{case}
### "作战目标"
<hunting_objective>{hunting_objective}</hunting_objective>
@@ -10,7 +14,7 @@
<iteration_count>{iteration_count}</iteration_count>
### 调查发现
### 历史"调查发现"
以下是迄今为止收集到的所有调查发现、问题及结论:
@@ -20,11 +24,11 @@
**核心任务**:
综合上述所有信息(作战目标”、“当前迭代轮次以及**特别是**调查发现),请判断:
综合上述所有信息("案件原始信息"、"作战目标"、"当前迭代轮次"以及**特别是**"调查发现"),请判断:
1. 是否需要进行进一步调查来完成“作战目标
1. 是否需要进行进一步调查来实现"作战目标"
2. 如果需要,下一步最合理、最有效且可并行执行的调查问题是什么?
如果作战目标已达成,或者无法进行进一步调查,请返回一个空计划(`current_plan` 为空列表)。
如果"作战目标"已达成,或者无法进行进一步调查,请返回一个空计划(`current_plan` 为空列表)。
**请严格遵循系统提示中定义的JSON格式进行输出。**
@@ -2,15 +2,21 @@
### 1. 猎杀目标
<hunting_objective>{hunting_objective}</hunting_objective>
<hunting_objective>
{hunting_objective}
</hunting_objective>
### 2. 调查过程(推理与任务)
<investigation_history>{planning_history}</investigation_history>
<investigation_history>
{planning_history}
</investigation_history>
### 3. 技术发现(收集的证据)
<findings>{findings}</findings>
<findings>
{findings}
</findings>
---
基于上述内容,请撰写最终威胁猎杀报告。
+7 -6
View File
@@ -30,7 +30,7 @@ class PlanningRecord(BaseModel):
# 可以在这里增加 helper 方法,方便转字符串
def to_markdown(self) -> str:
tasks_str = ", ".join(self.plan)
return (f"### Round {self.iteration}\n"
return (f"#### Round {self.iteration}\n"
f"**Reasoning:** {self.rationale}\n"
f"**Tasks Executed:** {tasks_str}\n")
@@ -54,18 +54,18 @@ class Finding(BaseModel):
tool_calls: List = Field(default_factory=list, description="工具调用记录")
def to_markdown(self) -> str:
return (f"---\n"
return (f"\n"
f"**Question:** {self.question}\n"
f"**Reasoning:** {self.reasoning}\n"
f"**Answer:** {self.answer}\n"
f"---\n"
f"\n\n\n"
)
def to_markdown_for_planning(self) -> str:
return (f"---\n"
return (f"\n"
f"**Question:** {self.question}\n"
f"**Answer:** {self.answer}\n"
f"---\n"
f"\n\n\n"
)
@@ -402,7 +402,8 @@ class Playbook(LanggraphPlaybook):
findings_str = "\n".join(history_md_list)
human_message = self.load_human_prompt_template("Planner_Human", lang=PROMPT_LANG).format(hunting_objective=hunting_objective,
human_message = self.load_human_prompt_template("Planner_Human", lang=PROMPT_LANG).format(case=state.case,
hunting_objective=hunting_objective,
findings=findings_str,
iteration_count=iteration_count,
)
+1 -1
View File
@@ -362,7 +362,7 @@ class Playbook(object):
return row_id
@staticmethod
def update_status_and_remark(row_id, status: StatusType, remark):
def update_status_and_remark(row_id, status: PlaybookStatusType, remark):
fields = [
{"id": "job_status", "value": status},
{"id": "remark", "value": remark},