fix: InitMultiAgent 携带 draft_id 等会商标识
与 Java 对齐:开跑前校验 draftId,并向 DeerFlow init 透传 draft_id / task_id(优先 draftKey) / room_session_id。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
1 parent
bd427b57a1
commit
5dd5049298
2 files changed
+37
-2
No files matched your search
@@ -79,8 +79,16 @@ func (c *Client) AssertModelAvailable(model string) error {
|
||||
return fmt.Errorf("所选模型「%s」不在可用列表中(或不可用)。请换可用模型后重新开始会商,不会自动改用其它模型", want)
|
||||
}
|
||||
|
||||
// InitMultiAgentOpts 内网 DeerFlow 校验会商标识时需要的附加字段。
|
||||
type InitMultiAgentOpts struct {
|
||||
DraftID string
|
||||
TaskID string
|
||||
RoomSessionID string
|
||||
}
|
||||
|
||||
// InitMultiAgent 建多席线程,返回 agentName → threadId。
|
||||
func (c *Client) InitMultiAgent(agentNames []string, mainAgent, model string) (map[string]string, error) {
|
||||
// draft_id 在内网较新 Gateway 上是「会商标识」,缺了会 4xx。
|
||||
func (c *Client) InitMultiAgent(agentNames []string, mainAgent, model string, opts InitMultiAgentOpts) (map[string]string, error) {
|
||||
body := map[string]interface{}{
|
||||
"agent_names": agentNames,
|
||||
"main_agent_name": mainAgent,
|
||||
@@ -88,6 +96,15 @@ func (c *Client) InitMultiAgent(agentNames []string, mainAgent, model string) (m
|
||||
if m := strings.TrimSpace(model); m != "" && !strings.EqualFold(m, "demo") {
|
||||
body["model"] = m
|
||||
}
|
||||
if d := strings.TrimSpace(opts.DraftID); d != "" {
|
||||
body["draft_id"] = d
|
||||
}
|
||||
if t := strings.TrimSpace(opts.TaskID); t != "" {
|
||||
body["task_id"] = t
|
||||
}
|
||||
if r := strings.TrimSpace(opts.RoomSessionID); r != "" {
|
||||
body["room_session_id"] = r
|
||||
}
|
||||
threadIDs := map[string]string{}
|
||||
var errMsg string
|
||||
err := c.readSSE("/api/multi-agent/init", body, nil, func(event string, parsed map[string]interface{}) (bool, error) {
|
||||
|
||||
@@ -74,7 +74,25 @@ func (r *LiveChainRunner) Run(job *domain.AnalysisJob) {
|
||||
putProgress(job, 2, "正在初始化 DeerFlow 席位线程…")
|
||||
r.flush(job)
|
||||
r.pullModelFromDB(job)
|
||||
tids, err := r.DF.InitMultiAgent(agentNames, r.Coord, job.Model)
|
||||
if strings.TrimSpace(job.DraftID) == "" {
|
||||
r.fail(job, "缺少会商标识(draftId)。请从页面重新「开始研讨」以先落盘草稿。")
|
||||
return
|
||||
}
|
||||
roomSessionID := asStr(plan["roomSessionId"])
|
||||
if roomSessionID == "" {
|
||||
roomSessionID = "rs_" + jobID
|
||||
plan["roomSessionId"] = roomSessionID
|
||||
job.Plan = plan
|
||||
}
|
||||
dfTaskID := strings.TrimSpace(job.DraftKey)
|
||||
if dfTaskID == "" {
|
||||
dfTaskID = job.TaskID
|
||||
}
|
||||
tids, err := r.DF.InitMultiAgent(agentNames, r.Coord, job.Model, deerflow.InitMultiAgentOpts{
|
||||
DraftID: job.DraftID,
|
||||
TaskID: dfTaskID,
|
||||
RoomSessionID: roomSessionID,
|
||||
})
|
||||
if err != nil {
|
||||
r.fail(job, err.Error())
|
||||
return
|
||||
|
||||
Reference in new issue
Block a user