Add files via upload

This commit is contained in:
公明
2026-05-26 14:27:44 +08:00
committed by GitHub
parent 44ced98863
commit 1b1aed1699
11 changed files with 790 additions and 36 deletions
+5 -3
View File
@@ -17,6 +17,7 @@ import (
"cyberstrike-ai/internal/config"
"cyberstrike-ai/internal/mcp"
"cyberstrike-ai/internal/mcp/builtin"
"cyberstrike-ai/internal/project"
"cyberstrike-ai/internal/openai"
"cyberstrike-ai/internal/security"
"cyberstrike-ai/internal/storage"
@@ -365,12 +366,12 @@ type ProgressCallback func(eventType, message string, data interface{})
// AgentLoop 执行Agent循环
func (a *Agent) AgentLoop(ctx context.Context, userInput string, historyMessages []ChatMessage) (*AgentLoopResult, error) {
return a.AgentLoopWithProgress(ctx, userInput, historyMessages, "", nil, nil)
return a.AgentLoopWithProgress(ctx, userInput, historyMessages, "", nil, nil, "")
}
// AgentLoopWithConversationID 执行Agent循环(带对话ID
func (a *Agent) AgentLoopWithConversationID(ctx context.Context, userInput string, historyMessages []ChatMessage, conversationID string) (*AgentLoopResult, error) {
return a.AgentLoopWithProgress(ctx, userInput, historyMessages, conversationID, nil, nil)
return a.AgentLoopWithProgress(ctx, userInput, historyMessages, conversationID, nil, nil, "")
}
// EinoSingleAgentSystemInstruction 供 Eino adk.ChatModelAgent.Instruction 使用,与 AgentLoopWithProgress 首条 system 对齐(含 system_prompt_path)。
@@ -396,7 +397,7 @@ func (a *Agent) EinoSingleAgentSystemInstruction() string {
}
// AgentLoopWithProgress 执行Agent循环(带进度回调和对话ID)
func (a *Agent) AgentLoopWithProgress(ctx context.Context, userInput string, historyMessages []ChatMessage, conversationID string, callback ProgressCallback, roleTools []string) (*AgentLoopResult, error) {
func (a *Agent) AgentLoopWithProgress(ctx context.Context, userInput string, historyMessages []ChatMessage, conversationID string, callback ProgressCallback, roleTools []string, systemPromptExtra string) (*AgentLoopResult, error) {
ctx = withAgentConversationID(ctx, conversationID)
// 设置当前对话ID(兼容未走 context 的旧路径;并发会话应以 context 为准)
a.mu.Lock()
@@ -426,6 +427,7 @@ func (a *Agent) AgentLoopWithProgress(ctx context.Context, userInput string, his
}
}
}
systemPrompt = project.AppendSystemPromptBlock(systemPrompt, systemPromptExtra)
messages := []ChatMessage{
{
@@ -105,11 +105,15 @@ func DefaultSingleAgentSystemPrompt() string {
- 若最近一步得到 404/空结果/无效响应不得直接结束至少再进行一次同目标不同策略的验证如变更路径参数请求方法上下文来源
- 避免无效空转同一工具+同类参数连续失败 3 次后必须切换策略改工具改入口改假设并说明切换原因
## 漏洞记录
## 项目黑板事实与漏洞记录分离
发现有效漏洞时必须使 ` + builtin.ToolRecordVulnerability + ` 记录标题描述严重程度类型目标证明POC影响修复建议
当前对话若已绑定项目系统会自动注入项目黑板索引 fact_key + 摘要**摘要不足时必须 ` + builtin.ToolGetProjectFact + `(fact_key) 获取 body禁止凭摘要臆造细节**
严重程度critical / high / medium / low / info证明须含足够证据请求响应截图命令输出等记录后可在授权范围内继续测试
- **环境/目标/认证等认知**非正式漏洞条目使用 ` + builtin.ToolUpsertProjectFact + `fact_key 建议 ` + "`category/slug`" + ` target/primary_domain key 覆盖更新
- **可交付漏洞**使用 ` + builtin.ToolRecordVulnerability + `含标题严重程度类型目标证明POC影响修复建议记前可先 ` + builtin.ToolListVulnerabilities + ` 查重详情用 ` + builtin.ToolGetVulnerability + `(id)默认仅当前项目/会话
- 同一发现可能需**各记一次**事实记上下文漏洞记正式 findings误报用 ` + builtin.ToolDeprecateProjectFact + ` 或漏洞状态 false_positive
严重程度critical / high / medium / low / info证明须含足够证据请求响应截图命令输出等
## 技能库Skills与知识库