Integrate the Agent-Squad engine

Details (original message):
Integrate the Agent-Squad engine: squadadapter maps RoleRegistry/RulePlanner/BackendResolver/ProgressSink/HITL onto the unified Run and event model (step subagents, plan updates, deliverable artifacts, confirmation cards); step-wise engine driving loop; model routing respects profile routes with layered resolver + integration tests; context assembly observation flows to run.completed; mock outputs and e2e coverage.
This commit is contained in:
weichen
2026-09-29 18:27:49 +00:00
parent 30ad92730d
commit c7736a1917
203 changed files with 3576 additions and 30 deletions
+3
View File
@@ -13,3 +13,6 @@
[submodule "deps/error-code-system"]
path = deps/error-code-system
url = ssh://git@git-ssh.u1680832.nyat.app:31411/weichen/Error-Code-System.git
[submodule "deps/agent-squad"]
path = deps/agent-squad
url = ssh://git@git-ssh.u1680832.nyat.app:31411/weichen/Agent-Squad.git
Vendored Submodule
+1
Submodule deps/agent-squad added at 5454f7485e
+4
View File
@@ -11,6 +11,8 @@ require (
)
require (
agent-squad v0.0.0-00010101000000-000000000000 // indirect
error-code-system v0.0.0 // indirect
github.com/dustin/go-humanize v1.0.1 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/mattn/go-isatty v0.0.24 // indirect
@@ -25,6 +27,8 @@ require (
replace agent-intent => ./deps/agent-intent
replace agent-squad => ./deps/agent-squad
replace agent-native => ./deps/agent-native
replace agent-system-core => ./deps/agent-system-core
+1
View File
@@ -48,6 +48,7 @@ func Run(opt Options) error {
return fmt.Errorf("builtin tools: %w", err)
}
setSvc := settings.NewService(st)
setSvc.SetSystemOverride(map[string]any{"storage": map[string]any{"dataDir": opt.DataDir}})
profSvc := profiles.New(st)
if err := profSvc.EnsureDefault(); err != nil {
return fmt.Errorf("default profile: %w", err)
+30 -1
View File
@@ -39,6 +39,7 @@ type runHandle struct {
cancel context.CancelFunc
hitlCh chan hitlAnswer
assistant []core.Part
ctxObs *core.ContextObservation
started time.Time
}
@@ -85,6 +86,11 @@ func (c *runCtx) History() []core.Message {
func (c *runCtx) Attachments() []core.ParsedDocument { return c.attachments }
func (c *runCtx) Subtask() string { return c.subTask }
func (c *runCtx) Tools() []core.ToolDesc { return c.mgr.registry.List() }
func (c *runCtx) SetContextObservation(o core.ContextObservation) {
c.mgr.mu.Lock()
c.h.ctxObs = &o
c.mgr.mu.Unlock()
}
func (c *runCtx) Emit(typ core.StreamEventType, payload any) error {
_, err := c.mgr.emit(c.run.ConversationID, c.run.ID, typ, payload)
@@ -310,7 +316,12 @@ func (m *Manager) finishRun(rc *runCtx, status core.RunStatus, usage core.Usage,
switch status {
case core.RunCompleted:
usagePayload := core.RunCompletedPayload{Usage: usage}
// 把工具调用数补进 usage(由 runner 在部件里体现,这里取事件计数)。
// 上下文组装观测随终态下发(4.10/4.17:构成与裁剪可解释)。
m.mu.Lock()
if rc.h.ctxObs != nil {
usagePayload.Context = rc.h.ctxObs
}
m.mu.Unlock()
m.emit(rc.run.ConversationID, rc.run.ID, core.EvRunCompleted, usagePayload)
case core.RunFailed:
m.emit(rc.run.ConversationID, rc.run.ID, core.EvRunFailed, core.RunFailedPayload{Code: errPart.Code, Message: errPart.Message})
@@ -512,9 +523,16 @@ func (m *Manager) spawnSubagent(parentCtx context.Context, parent core.Run, name
m.mu.Lock()
subParts := append([]core.Part{}, h.assistant...)
m.mu.Unlock()
fullText := partsText(subParts)
if len(subParts) > 0 {
_ = m.st.AppendMessage(&core.Message{ConversationID: child.ConversationID, RunID: child.ID, Role: core.RoleAssistant, Parts: subParts})
}
if fullText != "" {
payload.Text = fullText
if payload.Summary == "" || payload.Summary == "完成" {
payload.Summary = truncate(fullText, 160)
}
}
m.mu.Lock()
delete(m.active, child.ID)
@@ -552,6 +570,17 @@ func (m *Manager) InterruptRunning() {
}
}
func partsText(parts []core.Part) string {
var sb strings.Builder
for _, p := range parts {
if p.Type == core.PartText {
sb.WriteString(p.Text)
sb.WriteString("\n")
}
}
return strings.TrimSpace(sb.String())
}
func truncate(s string, n int) string {
if len(s) <= n {
return s
+35 -23
View File
@@ -8,6 +8,7 @@ import (
agentllm "agent-native/runtime/llm"
core "agent-system-core"
"agent-system-backend/internal/ctxasm"
"agent-system-backend/internal/squadadapter"
)
// LLMRunner 主对话执行器:复用 agent-native 的 OpenAI 兼容流式客户端(不自研接入层)。
@@ -21,19 +22,18 @@ const (
toolDelegate = "delegate_task"
toolPlan = "update_plan"
toolTodos = "update_todos"
toolSquad = "squad_orchestrate"
)
func (l *LLMRunner) Execute(rc RunCtx) error {
eff := rc.Settings()
chat := eff.GetString("models.chat.model", "")
base := eff.GetString("models.chat.baseUrl", "")
key := eff.GetString("models.chat.apiKey", "")
if chat == "" || base == "" {
return fmt.Errorf("llm: 主模型未配置(settings: models.chat.baseUrl / models.chat.model;演示模式可开 runtime.mock)")
prof := rc.Profile()
route := ResolveChatModel(prof, eff)
if route.Model == "" || route.Base == "" {
return fmt.Errorf("llm: 主模型未配置(当前解析:model=%q base=%q;检查 settings.models.chat 与画像 ModelRoute;演示模式可开 runtime.mock)", route.Model, route.Base)
}
client := &agentllm.Client{BaseURL: base, APIKey: key}
prof := rc.Profile()
client := &agentllm.Client{BaseURL: route.Base, APIKey: route.Key}
// 知识注入:当前消息包含 @knowledge 引用时检索注入(最小实现:显式引用)。
var knowledge []core.RetrievalHit
@@ -53,10 +53,16 @@ func (l *LLMRunner) Execute(rc RunCtx) error {
break
}
}
msgs, _ := ctxasm.AssembleInput(prof, eff, hist, currentUser, rc.Attachments(), knowledge)
msgs, asmReport := ctxasm.AssembleInput(prof, eff, hist, currentUser, rc.Attachments(), knowledge)
if asmReport != nil {
rc.SetContextObservation(core.ContextObservation{
Items: asmReport.Items, Truncations: asmReport.Truncations, EstChars: asmReport.EstChars,
})
}
// 声明工具:编排型内置 + 注册表中画像允许的工具。
decls := []agentllm.ToolDecl{
{Name: toolSquad, Description: "用小队编排引擎执行多步骤目标:规则规划器拆解为 梳理→专项→成文→终审 步骤并逐步执行(每步一个子代理),挂起决策会以提问卡片征求用户", Parameters: json.RawMessage(`{"type":"object","properties":{"goal":{"type":"string","description":"要完成的整体目标描述"}},"required":["goal"]}`)},
{Name: toolDelegate, Description: "派生一个子代理执行独立子任务(如检索、撰写),返回其结果摘要", Parameters: json.RawMessage(`{"type":"object","properties":{"name":{"type":"string","description":"子代理角色名"},"task":{"type":"string","description":"子任务描述"},"hint":{"type":"string","description":"执行提示"}},"required":["name","task"]}`)},
{Name: toolPlan, Description: "创建或更新当前会话的计划(步骤列表)", Parameters: json.RawMessage(`{"type":"object","properties":{"title":{"type":"string"},"steps":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"text":{"type":"string"},"status":{"type":"string","enum":["pending","in_progress","done","skipped"]}},"required":["id","text","status"]}}},"required":["title","steps"]}`)},
{Name: toolTodos, Description: "更新当前会话的待办清单", Parameters: json.RawMessage(`{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"text":{"type":"string"},"status":{"type":"string","enum":["pending","in_progress","done"]}},"required":["id","text","status"]}}},"required":["items"]}`)},
@@ -92,7 +98,7 @@ func (l *LLMRunner) Execute(rc RunCtx) error {
var turnThinking, turnText strings.Builder
var calls []agentllm.ToolCall
var usage agentllm.Usage
ev := client.Stream(rc.Context(), chat, msgs, decls, agentllm.StreamOptions{})
ev := client.Stream(rc.Context(), route.Model, msgs, decls, agentllm.StreamOptions{})
phaseEmitted := false
for e := range ev {
switch e.Kind {
@@ -153,6 +159,20 @@ func (l *LLMRunner) Execute(rc RunCtx) error {
var err error
var artifactRef *core.ArtifactRef
switch call.Name {
case toolSquad:
if !eff.GetBool("runtime.squad", true) {
out = "小队编排已被设置禁用(runtime.squad)"
break
}
var a struct{ Goal string }
json.Unmarshal([]byte(call.Arguments), &a)
dataDir := eff.GetString("storage.dataDir", "./data")
summary, serr := squadadapter.Orchestrate(rc, dataDir, a.Goal)
if serr != nil {
out = "小队编排失败:" + serr.Error()
} else {
out = summary
}
case toolDelegate:
var a struct{ Name, Task, Hint string }
json.Unmarshal([]byte(call.Arguments), &a)
@@ -190,7 +210,7 @@ func (l *LLMRunner) Execute(rc RunCtx) error {
}
rc.Emit(core.EvToolResult, core.ToolResultPayload{CallID: call.ID, Status: res.Status, Summary: summarize(out, err), Truncated: res.Truncated})
}
if call.Name == toolDelegate || call.Name == toolPlan || call.Name == toolTodos {
if call.Name == toolDelegate || call.Name == toolPlan || call.Name == toolTodos || call.Name == toolSquad {
rc.Emit(core.EvToolResult, core.ToolResultPayload{CallID: call.ID, Status: "ok", Summary: summarize(out, err)})
}
@@ -222,26 +242,18 @@ type SubLLMRunner struct{}
func (l *SubLLMRunner) Name() string { return "llm-subagent" }
func (l *SubLLMRunner) Execute(rc RunCtx) error {
eff := rc.Settings()
model := eff.GetString("models.lightweight.model", "")
base := eff.GetString("models.lightweight.baseUrl", "")
key := eff.GetString("models.lightweight.apiKey", "")
if model == "" || base == "" {
model = eff.GetString("models.chat.model", "")
base = eff.GetString("models.chat.baseUrl", "")
key = eff.GetString("models.chat.apiKey", "")
}
if model == "" || base == "" {
return fmt.Errorf("llm-subagent: 模型未配置")
route := ResolveLightweightModel(rc.Profile(), rc.Settings())
if route.Model == "" || route.Base == "" {
return fmt.Errorf("llm-subagent: 模型未配置(当前解析:model=%q base=%q)", route.Model, route.Base)
}
rc.Emit(core.EvAgentProgress, core.AgentProgressPayload{AgentRun: rc.Run().ID, Note: "执行子任务……", Phase: core.PhaseActing})
client := &agentllm.Client{BaseURL: base, APIKey: key}
client := &agentllm.Client{BaseURL: route.Base, APIKey: route.Key}
msgs := []agentllm.Message{
{Role: agentllm.RoleSystem, Content: "你是被派生的子代理。独立完成给定子任务,输出简明结果摘要(不超过 300 字)。"},
{Role: agentllm.RoleUser, Content: rc.Subtask()},
}
var sb strings.Builder
for e := range client.Stream(rc.Context(), model, msgs, nil, agentllm.StreamOptions{}) {
for e := range client.Stream(rc.Context(), route.Model, msgs, nil, agentllm.StreamOptions{}) {
if e.Kind == agentllm.KindTextDelta {
sb.WriteString(e.Text)
rc.Emit(core.EvAgentProgress, core.AgentProgressPayload{AgentRun: rc.Run().ID, Note: truncateRun(sb.String(), 80)})
+35 -1
View File
@@ -6,8 +6,18 @@ import (
"time"
core "agent-system-core"
"agent-system-backend/internal/squadadapter"
)
func firstNonEmpty0(vals ...string) string {
for _, v := range vals {
if strings.TrimSpace(v) != "" {
return v
}
}
return ""
}
// MockRunner 按脚本回放事件流(P1 骨架闭环与验收基线;不调用任何模型)。
// 用户消息中的指令词触发不同演示路径,其余走默认脚本(思考→工具→回复)。
type MockRunner struct{}
@@ -32,6 +42,11 @@ func (m *MockRunner) Execute(rc RunCtx) error {
addText := func(t string) {
parts = append(parts, core.Part{Type: core.PartText, Text: t})
}
// mock 路径同样产出上下文观测(演示可解释性入口;真实路径由 ctxasm 产出)。
rc.SetContextObservation(core.ContextObservation{
Items: []string{"system(画像)", "history(mock)", "attachments(0)"},
EstChars: len(user) + 128,
})
switch {
case strings.Contains(user, "#hitl"):
@@ -95,6 +110,23 @@ func (m *MockRunner) Execute(rc RunCtx) error {
}
addText("文档已生成,见右侧 Artifacts 标签(也可点击消息中的工件引用)。")
case strings.Contains(user, "#squad"):
rc.Emit(core.EvThinkingDelta, core.ThinkingDeltaPayload{Index: 0, Text: "调用 Agent-Squad 引擎编排……"})
parts = append(parts, core.Part{Type: core.PartThinking, Text: "调用 Agent-Squad 引擎编排……", Process: true})
goal := strings.TrimSpace(strings.ReplaceAll(strings.ReplaceAll(user, "#squad", ""), "#hitl", ""))
if eff := rc.Settings(); !eff.GetBool("runtime.squad", true) {
addText("小队编排已被设置禁用(runtime.squad)。")
rc.SetAssistantParts(parts)
return nil
}
dataDir := rc.Settings().GetString("storage.dataDir", "./data")
summary, err := squadadapter.Orchestrate(rc, dataDir, firstNonEmpty0(goal, "生成一份关于演示目标的简要报告"))
if err != nil {
addText("小队编排结束(" + err.Error() + ")。摘要:" + summary)
} else {
addText("Agent-Squad 编排完成:" + summary + "。步骤与子代理见右栏「计划」「代理」。")
}
case strings.Contains(user, "#error"):
return fmt.Errorf("mock: 演示失败路径(#error 指令)")
@@ -134,7 +166,9 @@ func (m *MockSubagent) Execute(rc RunCtx) error {
time.Sleep(150 * time.Millisecond)
rc.Emit(core.EvAgentProgress, core.AgentProgressPayload{AgentRun: rc.Run().ID, Note: "处理中……", Phase: core.PhaseActing})
time.Sleep(150 * time.Millisecond)
rc.SetAssistantParts([]core.Part{{Type: core.PartText, Text: "子任务完成(mock)。"}})
task := rc.Subtask()
rc.SetAssistantParts([]core.Part{{Type: core.PartText, Text: fmt.Sprintf("# 子代理产出(mock)\n\n任务:%s\n\n- 已按子代理角色完成处理\n- 本文本将作为小队步骤的交付物写入工作区\n- 任务树与中间过程可在右栏与弹窗查看\n", firstNonEmpty0(task, "(未提供任务描述)"))}})
return nil
}
+49
View File
@@ -0,0 +1,49 @@
package runtime
import (
core "agent-system-core"
)
// 模型路由解析(4.7 / 4.9 覆盖链):设置层 defaults → system → user → project,
// 画像 ModelRoute 为会话内最高层覆盖(kind 为空回落设置层主模型)。
// 端点与密钥按 kind 独立配置,轻量档空则回落主档。
// ResolvedModel 是一次路由解析的结果。
type ResolvedModel struct {
Kind string // chat | lightweight
Model string
Base string
Key string
}
// ResolveChatModel 解析主对话模型(画像 route > 设置层)。
func ResolveChatModel(prof core.AgentProfile, eff core.EffectiveSettings) ResolvedModel {
m := eff.GetString("models.chat.model", "")
if prof.Model.Chat != "" {
m = prof.Model.Chat
}
return ResolvedModel{Kind: "chat", Model: m,
Base: eff.GetString("models.chat.baseUrl", ""),
Key: eff.GetString("models.chat.apiKey", "")}
}
// ResolveLightweightModel 解析轻量模型:画像 route > 设置层轻量档 > 回落主档。
func ResolveLightweightModel(prof core.AgentProfile, eff core.EffectiveSettings) ResolvedModel {
m := eff.GetString("models.lightweight.model", "")
base := eff.GetString("models.lightweight.baseUrl", "")
key := eff.GetString("models.lightweight.apiKey", "")
if prof.Model.Lightweight != "" {
m = prof.Model.Lightweight
}
if m == "" || base == "" {
// 回落主档(模型与端点分别回落,允许轻量仅覆盖模型名)。
chat := ResolveChatModel(prof, eff)
if m == "" {
m = chat.Model
}
if base == "" {
base, key = chat.Base, chat.Key
}
}
return ResolvedModel{Kind: "lightweight", Model: m, Base: base, Key: key}
}
+47
View File
@@ -0,0 +1,47 @@
package runtime
import (
"testing"
core "agent-system-core"
)
func effOf(kv map[string]any) core.EffectiveSettings { return core.EffectiveSettings(kv) }
// 三层覆盖链解析:defaults → user → project 由 settings 服务合并(server 集成测试覆盖);
// 此处验证解析器对「设置层结果 + 画像层」的最后一级覆盖与回落。
func TestResolveChatModelLayers(t *testing.T) {
eff := effOf(map[string]any{"models": map[string]any{"chat": map[string]any{
"model": "model-settings", "baseUrl": "https://s.example", "apiKey": "k0",
}}})
prof := core.AgentProfile{}
// 仅设置层。
got := ResolveChatModel(prof, eff)
if got.Model != "model-settings" || got.Base != "https://s.example" || got.Key != "k0" {
t.Fatalf("settings layer: %+v", got)
}
// 画像覆盖模型(端点沿用设置层)。
prof.Model.Chat = "model-profile"
got = ResolveChatModel(prof, eff)
if got.Model != "model-profile" || got.Base != "https://s.example" {
t.Fatalf("profile layer should override model only: %+v", got)
}
}
func TestResolveLightweightFallback(t *testing.T) {
eff := effOf(map[string]any{"models": map[string]any{
"chat": map[string]any{"model": "main-m", "baseUrl": "https://main", "apiKey": "k"},
"lightweight": map[string]any{"model": ""},
}})
got := ResolveLightweightModel(core.AgentProfile{}, eff)
if got.Model != "main-m" || got.Base != "https://main" {
t.Fatalf("lightweight should fall back to chat: %+v", got)
}
// 轻量档只配模型名:模型用轻量、端点回落主档。
eff["models"].(map[string]any)["lightweight"] = map[string]any{"model": "lite-m"}
got = ResolveLightweightModel(core.AgentProfile{Model: core.ModelRoute{Lightweight: "prof-lite"}}, eff)
if got.Model != "prof-lite" || got.Base != "https://main" {
t.Fatalf("profile lightweight + chat endpoint: %+v", got)
}
}
+2
View File
@@ -30,6 +30,8 @@ type RunCtx interface {
Tools() []core.ToolDesc
// Subtask 返回子代理任务描述(仅 subagent run 有值)。
Subtask() string
// SetContextObservation 记录本次运行的上下文组装观测(随 run.completed 下发)。
SetContextObservation(o core.ContextObservation)
}
// Runner 执行一个 run 至终态:返回 nil = completed;ctx 取消应返回 ctx.Err()。
@@ -0,0 +1,7 @@
{
"facts": null,
"gaps": null,
"implications": null,
"fields": {},
"updated_at": "2026-09-29T18:24:46.040810299Z"
}
@@ -0,0 +1,3 @@
# 运行目标
生成一份示例目标简报
@@ -0,0 +1,10 @@
{
"context_items": [
{
"file": "context/goal.md",
"description": "运行目标与约束",
"authority_level": "authoritative",
"guidance": "不可推翻;所有产出须与目标一致"
}
]
}
@@ -0,0 +1,67 @@
{
"squad_name": "生成一份示例目标简报",
"version": "1",
"agents": [
{
"role": "organizer",
"name": "organizer专员",
"source": "derived",
"base_role": "planner",
"backend": "agent-system",
"bash_permission": "deny",
"responsibilities": [
"梳理目标背景与输入材料,产出事实与缺口"
],
"forbidden_actions": [
"严禁违规越权执行未经规划的破坏性命令",
"严禁直接代用户做终审拍板"
],
"instructions": "梳理目标与材料,产出结构化要点与执行建议。"
},
{
"role": "specialist",
"name": "specialist专员",
"source": "derived",
"base_role": "organizer",
"backend": "agent-system",
"bash_permission": "deny",
"responsibilities": [
"围绕目标开展专业分析与推演"
],
"forbidden_actions": [
"严禁违规越权执行未经规划的破坏性命令",
"严禁直接代用户做终审拍板"
],
"instructions": "梳理目标与材料,产出结构化要点与执行建议。"
},
{
"role": "writer",
"name": "撰稿员",
"source": "registered",
"backend": "agent-system",
"bash_permission": "deny",
"keywords": [
"撰写",
"成文",
"报告"
],
"instructions": "把前序要点与调研结论整理为清晰成文的交付文档。"
},
{
"role": "leader",
"name": "leader专员",
"source": "derived",
"base_role": "organizer",
"backend": "agent-system",
"bash_permission": "deny",
"responsibilities": [
"一致性终审与交付把关"
],
"forbidden_actions": [
"严禁违规越权执行未经规划的破坏性命令",
"严禁直接代用户做终审拍板"
],
"instructions": "梳理目标与材料,产出结构化要点与执行建议。"
}
]
}
@@ -0,0 +1 @@
梳理目标与材料,产出结构化要点与执行建议。
@@ -0,0 +1,20 @@
# 步骤任务:梳理目标背景与输入材料,产出事实与缺口
- 角色:organizer专员(organizer)
- 期望产出:[notes.md fields.json]
## 任务上下文资源与权威等级(已快照到本目录,只引用本地路径)
| 资源路径 | 权威等级 | 用途说明 | 使用与引用指导 |
|---|---|---|---|
| `context/goal.md` | **authoritative** | 运行目标 | 不可推翻 |
| `context/goal.md` | **authoritative** | 运行目标与约束 | 不可推翻;所有产出须与目标一致 |
## 黑板快照(共享状态)
## 产出要求
1. 按期望产出文件名落盘到本子目录;
2. 结构化事实回填 `fields.json`(字符串键值);
3. 发现信息缺口且无法假设时写 `gaps.json`([{"item":"…","blocking":true}])。
@@ -0,0 +1,3 @@
# 运行目标
生成一份示例目标简报
@@ -0,0 +1,10 @@
{
"context_items": [
{
"file": "context/goal.md",
"description": "运行目标与约束",
"authority_level": "authoritative",
"guidance": "不可推翻;所有产出须与目标一致"
}
]
}
@@ -0,0 +1 @@
梳理目标与材料,产出结构化要点与执行建议。
@@ -0,0 +1,20 @@
# 步骤任务:围绕目标开展专业分析与推演
- 角色:specialist专员(specialist)
- 期望产出:[notes.md fields.json]
## 任务上下文资源与权威等级(已快照到本目录,只引用本地路径)
| 资源路径 | 权威等级 | 用途说明 | 使用与引用指导 |
|---|---|---|---|
| `context/goal.md` | **authoritative** | 运行目标 | 不可推翻 |
| `context/goal.md` | **authoritative** | 运行目标与约束 | 不可推翻;所有产出须与目标一致 |
## 黑板快照(共享状态)
## 产出要求
1. 按期望产出文件名落盘到本子目录;
2. 结构化事实回填 `fields.json`(字符串键值);
3. 发现信息缺口且无法假设时写 `gaps.json`([{"item":"…","blocking":true}])。
@@ -0,0 +1,3 @@
# 运行目标
生成一份示例目标简报
@@ -0,0 +1,10 @@
{
"context_items": [
{
"file": "context/goal.md",
"description": "运行目标与约束",
"authority_level": "authoritative",
"guidance": "不可推翻;所有产出须与目标一致"
}
]
}
@@ -0,0 +1 @@
把前序要点与调研结论整理为清晰成文的交付文档。
@@ -0,0 +1,20 @@
# 步骤任务:汇总各角色产出,撰写交付物初稿
- 角色:撰稿员(writer)
- 期望产出:[notes.md fields.json]
## 任务上下文资源与权威等级(已快照到本目录,只引用本地路径)
| 资源路径 | 权威等级 | 用途说明 | 使用与引用指导 |
|---|---|---|---|
| `context/goal.md` | **authoritative** | 运行目标 | 不可推翻 |
| `context/goal.md` | **authoritative** | 运行目标与约束 | 不可推翻;所有产出须与目标一致 |
## 黑板快照(共享状态)
## 产出要求
1. 按期望产出文件名落盘到本子目录;
2. 结构化事实回填 `fields.json`(字符串键值);
3. 发现信息缺口且无法假设时写 `gaps.json`([{"item":"…","blocking":true}])。
@@ -0,0 +1,3 @@
# 运行目标
生成一份示例目标简报
@@ -0,0 +1,10 @@
{
"context_items": [
{
"file": "context/goal.md",
"description": "运行目标与约束",
"authority_level": "authoritative",
"guidance": "不可推翻;所有产出须与目标一致"
}
]
}
@@ -0,0 +1 @@
梳理目标与材料,产出结构化要点与执行建议。
@@ -0,0 +1,20 @@
# 步骤任务:一致性终审与交付把关
- 角色:leader专员(leader)
- 期望产出:[output.md]
## 任务上下文资源与权威等级(已快照到本目录,只引用本地路径)
| 资源路径 | 权威等级 | 用途说明 | 使用与引用指导 |
|---|---|---|---|
| `context/goal.md` | **authoritative** | 运行目标 | 不可推翻 |
| `context/goal.md` | **authoritative** | 运行目标与约束 | 不可推翻;所有产出须与目标一致 |
## 黑板快照(共享状态)
## 产出要求
1. 按期望产出文件名落盘到本子目录;
2. 结构化事实回填 `fields.json`(字符串键值);
3. 发现信息缺口且无法假设时写 `gaps.json`([{"item":"…","blocking":true}])。
@@ -0,0 +1,3 @@
# 运行目标
生成一份示例目标简报
@@ -0,0 +1,10 @@
{
"context_items": [
{
"file": "context/goal.md",
"description": "运行目标与约束",
"authority_level": "authoritative",
"guidance": "不可推翻;所有产出须与目标一致"
}
]
}
@@ -0,0 +1,17 @@
# 生成一份示例目标简报
## 概述与背景
(目标、范围与输入材料概述)
## 核心内容
(按目标拆解的核心分析/结果章节)
## 风险与注意事项
(风险、限制与依赖)
## 基准假设与待确认清单
(假设及需人工确认事项)
@@ -0,0 +1,58 @@
{
"workflow_id": "wf_1790706285654853719",
"title": "生成一份示例目标简报",
"planning_mode": "autonomous",
"status": "failed",
"current_step_index": 0,
"steps": [
{
"id": "step_01_organizer",
"role": "organizer",
"title": "梳理目标背景与输入材料,产出事实与缺口",
"sub_workspace": "tasks/01_organizer",
"parallel": false,
"targets": [
"notes.md",
"fields.json"
],
"status": "failed",
"duration_ms": 302,
"error": "missing deliverables: [notes.md fields.json]"
},
{
"id": "step_02_specialist",
"role": "specialist",
"title": "围绕目标开展专业分析与推演",
"sub_workspace": "tasks/02_specialist",
"parallel": false,
"targets": [
"notes.md",
"fields.json"
],
"status": "pending"
},
{
"id": "step_03_writer",
"role": "writer",
"title": "汇总各角色产出,撰写交付物初稿",
"sub_workspace": "tasks/03_writer",
"parallel": false,
"targets": [
"notes.md",
"fields.json"
],
"status": "pending"
},
{
"id": "step_04_leader",
"role": "leader",
"title": "一致性终审与交付把关",
"sub_workspace": "tasks/04_leader",
"parallel": false,
"targets": [
"output.md"
],
"status": "pending"
}
]
}
@@ -0,0 +1,16 @@
{
"id": "run_20260929T182445.654814990",
"goal": {
"text": "生成一份示例目标简报"
},
"status": "executing",
"backend": "agent-system",
"planner": "rule",
"work_dir": "data/squad/run_536ef7ed0c73/runs/run_20260929T182445.654814990",
"created_at": "2026-09-29T18:24:45.65482064Z",
"updated_at": "2026-09-29T18:24:46.040597085Z",
"metadata": {
"mode": "",
"task_key": ""
}
}
@@ -0,0 +1,7 @@
{
"facts": null,
"gaps": null,
"implications": null,
"fields": {},
"updated_at": "2026-09-29T18:21:10.615100644Z"
}
@@ -0,0 +1,3 @@
# 运行目标
生成一份示例目标简报
@@ -0,0 +1,10 @@
{
"context_items": [
{
"file": "context/goal.md",
"description": "运行目标与约束",
"authority_level": "authoritative",
"guidance": "不可推翻;所有产出须与目标一致"
}
]
}
@@ -0,0 +1,67 @@
{
"squad_name": "生成一份示例目标简报",
"version": "1",
"agents": [
{
"role": "organizer",
"name": "organizer专员",
"source": "derived",
"base_role": "planner",
"backend": "agent-system",
"bash_permission": "deny",
"responsibilities": [
"梳理目标背景与输入材料,产出事实与缺口"
],
"forbidden_actions": [
"严禁违规越权执行未经规划的破坏性命令",
"严禁直接代用户做终审拍板"
],
"instructions": "梳理目标与材料,产出结构化要点与执行建议。"
},
{
"role": "specialist",
"name": "specialist专员",
"source": "derived",
"base_role": "organizer",
"backend": "agent-system",
"bash_permission": "deny",
"responsibilities": [
"围绕目标开展专业分析与推演"
],
"forbidden_actions": [
"严禁违规越权执行未经规划的破坏性命令",
"严禁直接代用户做终审拍板"
],
"instructions": "梳理目标与材料,产出结构化要点与执行建议。"
},
{
"role": "writer",
"name": "撰稿员",
"source": "registered",
"backend": "agent-system",
"bash_permission": "deny",
"keywords": [
"撰写",
"成文",
"报告"
],
"instructions": "把前序要点与调研结论整理为清晰成文的交付文档。"
},
{
"role": "leader",
"name": "leader专员",
"source": "derived",
"base_role": "organizer",
"backend": "agent-system",
"bash_permission": "deny",
"responsibilities": [
"一致性终审与交付把关"
],
"forbidden_actions": [
"严禁违规越权执行未经规划的破坏性命令",
"严禁直接代用户做终审拍板"
],
"instructions": "梳理目标与材料,产出结构化要点与执行建议。"
}
]
}
@@ -0,0 +1 @@
梳理目标与材料,产出结构化要点与执行建议。
@@ -0,0 +1,20 @@
# 步骤任务:梳理目标背景与输入材料,产出事实与缺口
- 角色:organizer专员(organizer)
- 期望产出:[notes.md fields.json]
## 任务上下文资源与权威等级(已快照到本目录,只引用本地路径)
| 资源路径 | 权威等级 | 用途说明 | 使用与引用指导 |
|---|---|---|---|
| `context/goal.md` | **authoritative** | 运行目标 | 不可推翻 |
| `context/goal.md` | **authoritative** | 运行目标与约束 | 不可推翻;所有产出须与目标一致 |
## 黑板快照(共享状态)
## 产出要求
1. 按期望产出文件名落盘到本子目录;
2. 结构化事实回填 `fields.json`(字符串键值);
3. 发现信息缺口且无法假设时写 `gaps.json`([{"item":"…","blocking":true}])。
@@ -0,0 +1,3 @@
# 运行目标
生成一份示例目标简报
@@ -0,0 +1,10 @@
{
"context_items": [
{
"file": "context/goal.md",
"description": "运行目标与约束",
"authority_level": "authoritative",
"guidance": "不可推翻;所有产出须与目标一致"
}
]
}
@@ -0,0 +1 @@
梳理目标与材料,产出结构化要点与执行建议。
@@ -0,0 +1,20 @@
# 步骤任务:围绕目标开展专业分析与推演
- 角色:specialist专员(specialist)
- 期望产出:[notes.md fields.json]
## 任务上下文资源与权威等级(已快照到本目录,只引用本地路径)
| 资源路径 | 权威等级 | 用途说明 | 使用与引用指导 |
|---|---|---|---|
| `context/goal.md` | **authoritative** | 运行目标 | 不可推翻 |
| `context/goal.md` | **authoritative** | 运行目标与约束 | 不可推翻;所有产出须与目标一致 |
## 黑板快照(共享状态)
## 产出要求
1. 按期望产出文件名落盘到本子目录;
2. 结构化事实回填 `fields.json`(字符串键值);
3. 发现信息缺口且无法假设时写 `gaps.json`([{"item":"…","blocking":true}])。
@@ -0,0 +1,3 @@
# 运行目标
生成一份示例目标简报
@@ -0,0 +1,10 @@
{
"context_items": [
{
"file": "context/goal.md",
"description": "运行目标与约束",
"authority_level": "authoritative",
"guidance": "不可推翻;所有产出须与目标一致"
}
]
}
@@ -0,0 +1 @@
把前序要点与调研结论整理为清晰成文的交付文档。
@@ -0,0 +1,20 @@
# 步骤任务:汇总各角色产出,撰写交付物初稿
- 角色:撰稿员(writer)
- 期望产出:[notes.md fields.json]
## 任务上下文资源与权威等级(已快照到本目录,只引用本地路径)
| 资源路径 | 权威等级 | 用途说明 | 使用与引用指导 |
|---|---|---|---|
| `context/goal.md` | **authoritative** | 运行目标 | 不可推翻 |
| `context/goal.md` | **authoritative** | 运行目标与约束 | 不可推翻;所有产出须与目标一致 |
## 黑板快照(共享状态)
## 产出要求
1. 按期望产出文件名落盘到本子目录;
2. 结构化事实回填 `fields.json`(字符串键值);
3. 发现信息缺口且无法假设时写 `gaps.json`([{"item":"…","blocking":true}])。
@@ -0,0 +1,3 @@
# 运行目标
生成一份示例目标简报
@@ -0,0 +1,10 @@
{
"context_items": [
{
"file": "context/goal.md",
"description": "运行目标与约束",
"authority_level": "authoritative",
"guidance": "不可推翻;所有产出须与目标一致"
}
]
}
@@ -0,0 +1 @@
梳理目标与材料,产出结构化要点与执行建议。
@@ -0,0 +1,20 @@
# 步骤任务:一致性终审与交付把关
- 角色:leader专员(leader)
- 期望产出:[output.md]
## 任务上下文资源与权威等级(已快照到本目录,只引用本地路径)
| 资源路径 | 权威等级 | 用途说明 | 使用与引用指导 |
|---|---|---|---|
| `context/goal.md` | **authoritative** | 运行目标 | 不可推翻 |
| `context/goal.md` | **authoritative** | 运行目标与约束 | 不可推翻;所有产出须与目标一致 |
## 黑板快照(共享状态)
## 产出要求
1. 按期望产出文件名落盘到本子目录;
2. 结构化事实回填 `fields.json`(字符串键值);
3. 发现信息缺口且无法假设时写 `gaps.json`([{"item":"…","blocking":true}])。
@@ -0,0 +1,3 @@
# 运行目标
生成一份示例目标简报
@@ -0,0 +1,10 @@
{
"context_items": [
{
"file": "context/goal.md",
"description": "运行目标与约束",
"authority_level": "authoritative",
"guidance": "不可推翻;所有产出须与目标一致"
}
]
}
@@ -0,0 +1,17 @@
# 生成一份示例目标简报
## 概述与背景
(目标、范围与输入材料概述)
## 核心内容
(按目标拆解的核心分析/结果章节)
## 风险与注意事项
(风险、限制与依赖)
## 基准假设与待确认清单
(假设及需人工确认事项)
@@ -0,0 +1,58 @@
{
"workflow_id": "wf_1790706070248445331",
"title": "生成一份示例目标简报",
"planning_mode": "autonomous",
"status": "failed",
"current_step_index": 0,
"steps": [
{
"id": "step_01_organizer",
"role": "organizer",
"title": "梳理目标背景与输入材料,产出事实与缺口",
"sub_workspace": "tasks/01_organizer",
"parallel": false,
"targets": [
"notes.md",
"fields.json"
],
"status": "failed",
"duration_ms": 303,
"error": "missing deliverables: [notes.md fields.json]"
},
{
"id": "step_02_specialist",
"role": "specialist",
"title": "围绕目标开展专业分析与推演",
"sub_workspace": "tasks/02_specialist",
"parallel": false,
"targets": [
"notes.md",
"fields.json"
],
"status": "pending"
},
{
"id": "step_03_writer",
"role": "writer",
"title": "汇总各角色产出,撰写交付物初稿",
"sub_workspace": "tasks/03_writer",
"parallel": false,
"targets": [
"notes.md",
"fields.json"
],
"status": "pending"
},
{
"id": "step_04_leader",
"role": "leader",
"title": "一致性终审与交付把关",
"sub_workspace": "tasks/04_leader",
"parallel": false,
"targets": [
"output.md"
],
"status": "pending"
}
]
}
@@ -0,0 +1,16 @@
{
"id": "run_20260929T182110.248410412",
"goal": {
"text": "生成一份示例目标简报"
},
"status": "executing",
"backend": "agent-system",
"planner": "rule",
"work_dir": "data/squad/run_5e64ebd987c0/runs/run_20260929T182110.248410412",
"created_at": "2026-09-29T18:21:10.248414712Z",
"updated_at": "2026-09-29T18:21:10.614790993Z",
"metadata": {
"mode": "",
"task_key": ""
}
}
@@ -0,0 +1,7 @@
{
"facts": null,
"gaps": null,
"implications": null,
"fields": {},
"updated_at": "2026-09-29T18:20:50.315927955Z"
}
@@ -0,0 +1,3 @@
# 运行目标
生成一份示例目标简报
@@ -0,0 +1,10 @@
{
"context_items": [
{
"file": "context/goal.md",
"description": "运行目标与约束",
"authority_level": "authoritative",
"guidance": "不可推翻;所有产出须与目标一致"
}
]
}
@@ -0,0 +1,67 @@
{
"squad_name": "生成一份示例目标简报",
"version": "1",
"agents": [
{
"role": "organizer",
"name": "organizer专员",
"source": "derived",
"base_role": "planner",
"backend": "agent-system",
"bash_permission": "deny",
"responsibilities": [
"梳理目标背景与输入材料,产出事实与缺口"
],
"forbidden_actions": [
"严禁违规越权执行未经规划的破坏性命令",
"严禁直接代用户做终审拍板"
],
"instructions": "梳理目标与材料,产出结构化要点与执行建议。"
},
{
"role": "specialist",
"name": "specialist专员",
"source": "derived",
"base_role": "organizer",
"backend": "agent-system",
"bash_permission": "deny",
"responsibilities": [
"围绕目标开展专业分析与推演"
],
"forbidden_actions": [
"严禁违规越权执行未经规划的破坏性命令",
"严禁直接代用户做终审拍板"
],
"instructions": "梳理目标与材料,产出结构化要点与执行建议。"
},
{
"role": "writer",
"name": "撰稿员",
"source": "registered",
"backend": "agent-system",
"bash_permission": "deny",
"keywords": [
"撰写",
"成文",
"报告"
],
"instructions": "把前序要点与调研结论整理为清晰成文的交付文档。"
},
{
"role": "leader",
"name": "leader专员",
"source": "derived",
"base_role": "organizer",
"backend": "agent-system",
"bash_permission": "deny",
"responsibilities": [
"一致性终审与交付把关"
],
"forbidden_actions": [
"严禁违规越权执行未经规划的破坏性命令",
"严禁直接代用户做终审拍板"
],
"instructions": "梳理目标与材料,产出结构化要点与执行建议。"
}
]
}
@@ -0,0 +1 @@
梳理目标与材料,产出结构化要点与执行建议。
@@ -0,0 +1,20 @@
# 步骤任务:梳理目标背景与输入材料,产出事实与缺口
- 角色:organizer专员(organizer)
- 期望产出:[notes.md fields.json]
## 任务上下文资源与权威等级(已快照到本目录,只引用本地路径)
| 资源路径 | 权威等级 | 用途说明 | 使用与引用指导 |
|---|---|---|---|
| `context/goal.md` | **authoritative** | 运行目标 | 不可推翻 |
| `context/goal.md` | **authoritative** | 运行目标与约束 | 不可推翻;所有产出须与目标一致 |
## 黑板快照(共享状态)
## 产出要求
1. 按期望产出文件名落盘到本子目录;
2. 结构化事实回填 `fields.json`(字符串键值);
3. 发现信息缺口且无法假设时写 `gaps.json`([{"item":"…","blocking":true}])。
@@ -0,0 +1,3 @@
# 运行目标
生成一份示例目标简报
@@ -0,0 +1,10 @@
{
"context_items": [
{
"file": "context/goal.md",
"description": "运行目标与约束",
"authority_level": "authoritative",
"guidance": "不可推翻;所有产出须与目标一致"
}
]
}
@@ -0,0 +1 @@
梳理目标与材料,产出结构化要点与执行建议。
@@ -0,0 +1,20 @@
# 步骤任务:围绕目标开展专业分析与推演
- 角色:specialist专员(specialist)
- 期望产出:[notes.md fields.json]
## 任务上下文资源与权威等级(已快照到本目录,只引用本地路径)
| 资源路径 | 权威等级 | 用途说明 | 使用与引用指导 |
|---|---|---|---|
| `context/goal.md` | **authoritative** | 运行目标 | 不可推翻 |
| `context/goal.md` | **authoritative** | 运行目标与约束 | 不可推翻;所有产出须与目标一致 |
## 黑板快照(共享状态)
## 产出要求
1. 按期望产出文件名落盘到本子目录;
2. 结构化事实回填 `fields.json`(字符串键值);
3. 发现信息缺口且无法假设时写 `gaps.json`([{"item":"…","blocking":true}])。
@@ -0,0 +1,3 @@
# 运行目标
生成一份示例目标简报
@@ -0,0 +1,10 @@
{
"context_items": [
{
"file": "context/goal.md",
"description": "运行目标与约束",
"authority_level": "authoritative",
"guidance": "不可推翻;所有产出须与目标一致"
}
]
}
@@ -0,0 +1 @@
把前序要点与调研结论整理为清晰成文的交付文档。
@@ -0,0 +1,20 @@
# 步骤任务:汇总各角色产出,撰写交付物初稿
- 角色:撰稿员(writer)
- 期望产出:[notes.md fields.json]
## 任务上下文资源与权威等级(已快照到本目录,只引用本地路径)
| 资源路径 | 权威等级 | 用途说明 | 使用与引用指导 |
|---|---|---|---|
| `context/goal.md` | **authoritative** | 运行目标 | 不可推翻 |
| `context/goal.md` | **authoritative** | 运行目标与约束 | 不可推翻;所有产出须与目标一致 |
## 黑板快照(共享状态)
## 产出要求
1. 按期望产出文件名落盘到本子目录;
2. 结构化事实回填 `fields.json`(字符串键值);
3. 发现信息缺口且无法假设时写 `gaps.json`([{"item":"…","blocking":true}])。
@@ -0,0 +1,3 @@
# 运行目标
生成一份示例目标简报
@@ -0,0 +1,10 @@
{
"context_items": [
{
"file": "context/goal.md",
"description": "运行目标与约束",
"authority_level": "authoritative",
"guidance": "不可推翻;所有产出须与目标一致"
}
]
}
@@ -0,0 +1 @@
梳理目标与材料,产出结构化要点与执行建议。
@@ -0,0 +1,20 @@
# 步骤任务:一致性终审与交付把关
- 角色:leader专员(leader)
- 期望产出:[output.md]
## 任务上下文资源与权威等级(已快照到本目录,只引用本地路径)
| 资源路径 | 权威等级 | 用途说明 | 使用与引用指导 |
|---|---|---|---|
| `context/goal.md` | **authoritative** | 运行目标 | 不可推翻 |
| `context/goal.md` | **authoritative** | 运行目标与约束 | 不可推翻;所有产出须与目标一致 |
## 黑板快照(共享状态)
## 产出要求
1. 按期望产出文件名落盘到本子目录;
2. 结构化事实回填 `fields.json`(字符串键值);
3. 发现信息缺口且无法假设时写 `gaps.json`([{"item":"…","blocking":true}])。
@@ -0,0 +1,3 @@
# 运行目标
生成一份示例目标简报
@@ -0,0 +1,10 @@
{
"context_items": [
{
"file": "context/goal.md",
"description": "运行目标与约束",
"authority_level": "authoritative",
"guidance": "不可推翻;所有产出须与目标一致"
}
]
}
@@ -0,0 +1,17 @@
# 生成一份示例目标简报
## 概述与背景
(目标、范围与输入材料概述)
## 核心内容
(按目标拆解的核心分析/结果章节)
## 风险与注意事项
(风险、限制与依赖)
## 基准假设与待确认清单
(假设及需人工确认事项)
@@ -0,0 +1,58 @@
{
"workflow_id": "wf_1790706049929670905",
"title": "生成一份示例目标简报",
"planning_mode": "autonomous",
"status": "failed",
"current_step_index": 0,
"steps": [
{
"id": "step_01_organizer",
"role": "organizer",
"title": "梳理目标背景与输入材料,产出事实与缺口",
"sub_workspace": "tasks/01_organizer",
"parallel": false,
"targets": [
"notes.md",
"fields.json"
],
"status": "failed",
"duration_ms": 302,
"error": "missing deliverables: [notes.md fields.json]"
},
{
"id": "step_02_specialist",
"role": "specialist",
"title": "围绕目标开展专业分析与推演",
"sub_workspace": "tasks/02_specialist",
"parallel": false,
"targets": [
"notes.md",
"fields.json"
],
"status": "pending"
},
{
"id": "step_03_writer",
"role": "writer",
"title": "汇总各角色产出,撰写交付物初稿",
"sub_workspace": "tasks/03_writer",
"parallel": false,
"targets": [
"notes.md",
"fields.json"
],
"status": "pending"
},
{
"id": "step_04_leader",
"role": "leader",
"title": "一致性终审与交付把关",
"sub_workspace": "tasks/04_leader",
"parallel": false,
"targets": [
"output.md"
],
"status": "pending"
}
]
}
@@ -0,0 +1,16 @@
{
"id": "run_20260929T182049.929636366",
"goal": {
"text": "生成一份示例目标简报"
},
"status": "executing",
"backend": "agent-system",
"planner": "rule",
"work_dir": "data/squad/run_9631472cbf29/runs/run_20260929T182049.929636366",
"created_at": "2026-09-29T18:20:49.929641005Z",
"updated_at": "2026-09-29T18:20:50.315718482Z",
"metadata": {
"mode": "",
"task_key": ""
}
}
@@ -0,0 +1,7 @@
{
"facts": null,
"gaps": null,
"implications": null,
"fields": {},
"updated_at": "2026-09-29T18:19:43.17909913Z"
}
@@ -0,0 +1,3 @@
# 运行目标
生成一份示例目标简报
@@ -0,0 +1,10 @@
{
"context_items": [
{
"file": "context/goal.md",
"description": "运行目标与约束",
"authority_level": "authoritative",
"guidance": "不可推翻;所有产出须与目标一致"
}
]
}
@@ -0,0 +1,148 @@
{
"request": {
"id": "hr_98299362c636e114",
"run_id": "run_20260929T181943.177695352",
"kind": "confirmation",
"severity": "action_required",
"question": "计划已生成,需要人工确认后执行:",
"options": [
{
"value": "approve",
"label": "批准并执行"
},
{
"value": "abort",
"label": "放弃执行"
}
],
"context": "确认原因:注册表中缺少对应角色,计划包含现场派生的通用角色,请确认编制\n编制:\n- organizer(organizer专员,backend=agent-system model=)\n- specialist(specialist专员,backend=agent-system model=)\n- writer(撰稿员,backend=agent-system model=)\n- leader(leader专员,backend=agent-system model=)\n步骤:\n- step_01_organizer [organizer] 梳理目标背景与输入材料,产出事实与缺口(产出 [notes.md fields.json])\n- step_02_specialist [specialist] 围绕目标开展专业分析与推演(产出 [notes.md fields.json])\n- step_03_writer [writer] 汇总各角色产出,撰写交付物初稿(产出 [notes.md fields.json])\n- step_04_leader [leader] 一致性终审与交付把关(产出 [output.md])",
"created_at": "2026-09-29T18:19:43.178743461Z",
"status": "pending"
},
"plan": {
"squad": {
"squad_name": "生成一份示例目标简报",
"version": "1",
"agents": [
{
"role": "organizer",
"name": "organizer专员",
"source": "derived",
"base_role": "planner",
"backend": "agent-system",
"bash_permission": "deny",
"responsibilities": [
"梳理目标背景与输入材料,产出事实与缺口"
],
"forbidden_actions": [
"严禁违规越权执行未经规划的破坏性命令",
"严禁直接代用户做终审拍板"
],
"instructions": "梳理目标与材料,产出结构化要点与执行建议。"
},
{
"role": "specialist",
"name": "specialist专员",
"source": "derived",
"base_role": "organizer",
"backend": "agent-system",
"bash_permission": "deny",
"responsibilities": [
"围绕目标开展专业分析与推演"
],
"forbidden_actions": [
"严禁违规越权执行未经规划的破坏性命令",
"严禁直接代用户做终审拍板"
],
"instructions": "梳理目标与材料,产出结构化要点与执行建议。"
},
{
"role": "writer",
"name": "撰稿员",
"source": "registered",
"backend": "agent-system",
"bash_permission": "deny",
"keywords": [
"撰写",
"成文",
"报告"
],
"instructions": "把前序要点与调研结论整理为清晰成文的交付文档。"
},
{
"role": "leader",
"name": "leader专员",
"source": "derived",
"base_role": "organizer",
"backend": "agent-system",
"bash_permission": "deny",
"responsibilities": [
"一致性终审与交付把关"
],
"forbidden_actions": [
"严禁违规越权执行未经规划的破坏性命令",
"严禁直接代用户做终审拍板"
],
"instructions": "梳理目标与材料,产出结构化要点与执行建议。"
}
]
},
"workflow": {
"workflow_id": "wf_1790705983177730641",
"title": "生成一份示例目标简报",
"planning_mode": "autonomous",
"status": "pending",
"current_step_index": 0,
"steps": [
{
"id": "step_01_organizer",
"role": "organizer",
"title": "梳理目标背景与输入材料,产出事实与缺口",
"sub_workspace": "tasks/01_organizer",
"parallel": false,
"targets": [
"notes.md",
"fields.json"
],
"status": "pending"
},
{
"id": "step_02_specialist",
"role": "specialist",
"title": "围绕目标开展专业分析与推演",
"sub_workspace": "tasks/02_specialist",
"parallel": false,
"targets": [
"notes.md",
"fields.json"
],
"status": "pending"
},
{
"id": "step_03_writer",
"role": "writer",
"title": "汇总各角色产出,撰写交付物初稿",
"sub_workspace": "tasks/03_writer",
"parallel": false,
"targets": [
"notes.md",
"fields.json"
],
"status": "pending"
},
{
"id": "step_04_leader",
"role": "leader",
"title": "一致性终审与交付把关",
"sub_workspace": "tasks/04_leader",
"parallel": false,
"targets": [
"output.md"
],
"status": "pending"
}
]
}
},
"prev_status": "planning"
}
@@ -0,0 +1,67 @@
{
"squad_name": "生成一份示例目标简报",
"version": "1",
"agents": [
{
"role": "organizer",
"name": "organizer专员",
"source": "derived",
"base_role": "planner",
"backend": "agent-system",
"bash_permission": "deny",
"responsibilities": [
"梳理目标背景与输入材料,产出事实与缺口"
],
"forbidden_actions": [
"严禁违规越权执行未经规划的破坏性命令",
"严禁直接代用户做终审拍板"
],
"instructions": "梳理目标与材料,产出结构化要点与执行建议。"
},
{
"role": "specialist",
"name": "specialist专员",
"source": "derived",
"base_role": "organizer",
"backend": "agent-system",
"bash_permission": "deny",
"responsibilities": [
"围绕目标开展专业分析与推演"
],
"forbidden_actions": [
"严禁违规越权执行未经规划的破坏性命令",
"严禁直接代用户做终审拍板"
],
"instructions": "梳理目标与材料,产出结构化要点与执行建议。"
},
{
"role": "writer",
"name": "撰稿员",
"source": "registered",
"backend": "agent-system",
"bash_permission": "deny",
"keywords": [
"撰写",
"成文",
"报告"
],
"instructions": "把前序要点与调研结论整理为清晰成文的交付文档。"
},
{
"role": "leader",
"name": "leader专员",
"source": "derived",
"base_role": "organizer",
"backend": "agent-system",
"bash_permission": "deny",
"responsibilities": [
"一致性终审与交付把关"
],
"forbidden_actions": [
"严禁违规越权执行未经规划的破坏性命令",
"严禁直接代用户做终审拍板"
],
"instructions": "梳理目标与材料,产出结构化要点与执行建议。"
}
]
}
@@ -0,0 +1 @@
梳理目标与材料,产出结构化要点与执行建议。
@@ -0,0 +1,20 @@
# 步骤任务:梳理目标背景与输入材料,产出事实与缺口
- 角色:organizer专员(organizer)
- 期望产出:[notes.md fields.json]
## 任务上下文资源与权威等级(已快照到本目录,只引用本地路径)
| 资源路径 | 权威等级 | 用途说明 | 使用与引用指导 |
|---|---|---|---|
| `context/goal.md` | **authoritative** | 运行目标 | 不可推翻 |
| `context/goal.md` | **authoritative** | 运行目标与约束 | 不可推翻;所有产出须与目标一致 |
## 黑板快照(共享状态)
## 产出要求
1. 按期望产出文件名落盘到本子目录;
2. 结构化事实回填 `fields.json`(字符串键值);
3. 发现信息缺口且无法假设时写 `gaps.json`([{"item":"…","blocking":true}])。
@@ -0,0 +1,3 @@
# 运行目标
生成一份示例目标简报
@@ -0,0 +1,10 @@
{
"context_items": [
{
"file": "context/goal.md",
"description": "运行目标与约束",
"authority_level": "authoritative",
"guidance": "不可推翻;所有产出须与目标一致"
}
]
}
@@ -0,0 +1 @@
梳理目标与材料,产出结构化要点与执行建议。
@@ -0,0 +1,20 @@
# 步骤任务:围绕目标开展专业分析与推演
- 角色:specialist专员(specialist)
- 期望产出:[notes.md fields.json]
## 任务上下文资源与权威等级(已快照到本目录,只引用本地路径)
| 资源路径 | 权威等级 | 用途说明 | 使用与引用指导 |
|---|---|---|---|
| `context/goal.md` | **authoritative** | 运行目标 | 不可推翻 |
| `context/goal.md` | **authoritative** | 运行目标与约束 | 不可推翻;所有产出须与目标一致 |
## 黑板快照(共享状态)
## 产出要求
1. 按期望产出文件名落盘到本子目录;
2. 结构化事实回填 `fields.json`(字符串键值);
3. 发现信息缺口且无法假设时写 `gaps.json`([{"item":"…","blocking":true}])。
@@ -0,0 +1,3 @@
# 运行目标
生成一份示例目标简报
@@ -0,0 +1,10 @@
{
"context_items": [
{
"file": "context/goal.md",
"description": "运行目标与约束",
"authority_level": "authoritative",
"guidance": "不可推翻;所有产出须与目标一致"
}
]
}
@@ -0,0 +1 @@
把前序要点与调研结论整理为清晰成文的交付文档。
@@ -0,0 +1,20 @@
# 步骤任务:汇总各角色产出,撰写交付物初稿
- 角色:撰稿员(writer)
- 期望产出:[notes.md fields.json]
## 任务上下文资源与权威等级(已快照到本目录,只引用本地路径)
| 资源路径 | 权威等级 | 用途说明 | 使用与引用指导 |
|---|---|---|---|
| `context/goal.md` | **authoritative** | 运行目标 | 不可推翻 |
| `context/goal.md` | **authoritative** | 运行目标与约束 | 不可推翻;所有产出须与目标一致 |
## 黑板快照(共享状态)
## 产出要求
1. 按期望产出文件名落盘到本子目录;
2. 结构化事实回填 `fields.json`(字符串键值);
3. 发现信息缺口且无法假设时写 `gaps.json`([{"item":"…","blocking":true}])。
@@ -0,0 +1,3 @@
# 运行目标
生成一份示例目标简报
@@ -0,0 +1,10 @@
{
"context_items": [
{
"file": "context/goal.md",
"description": "运行目标与约束",
"authority_level": "authoritative",
"guidance": "不可推翻;所有产出须与目标一致"
}
]
}
@@ -0,0 +1 @@
梳理目标与材料,产出结构化要点与执行建议。
@@ -0,0 +1,20 @@
# 步骤任务:一致性终审与交付把关
- 角色:leader专员(leader)
- 期望产出:[output.md]
## 任务上下文资源与权威等级(已快照到本目录,只引用本地路径)
| 资源路径 | 权威等级 | 用途说明 | 使用与引用指导 |
|---|---|---|---|
| `context/goal.md` | **authoritative** | 运行目标 | 不可推翻 |
| `context/goal.md` | **authoritative** | 运行目标与约束 | 不可推翻;所有产出须与目标一致 |
## 黑板快照(共享状态)
## 产出要求
1. 按期望产出文件名落盘到本子目录;
2. 结构化事实回填 `fields.json`(字符串键值);
3. 发现信息缺口且无法假设时写 `gaps.json`([{"item":"…","blocking":true}])。
@@ -0,0 +1,3 @@
# 运行目标
生成一份示例目标简报

Some files were not shown because too many files have changed in this diff Show More