feat(intents): 删除 work 改为「停止+记录原因」,不再销毁数据
删除不再删意图与其产出,而是:停到 stopped、要求填写删除原因、把原因作为 事实挂到该意图上、并写进意图 payload,规划者收到 cancelled 触发(意图内容+原因)。 - db: StopIntentWithReason —— 标 stopped + 建原因事实 + 连边 + 合并 payload (cancelled_by_user/cancel_reason),单事务;旧 CancelIntent 保留不再被调用 - agent/server: renderTriggers 加 cancelled 分支;Task.NotifyCancelled; controlIntent/applyIntentControl 接收并要求 reason - web: 删除弹窗改为必填原因的 Textarea;列表用红色垃圾桶+删除线+「已删除」徽标 区分;选中会话顶部横幅展示删除原因;controlIntent 传 reason Claude-Session: https://claude.ai/code/session_019QXSCDmzimwnjntBNCgUD7
This commit is contained in:
1 parent
3297ca1821
commit
025e1ce445
7 files changed
+182
-39
No files matched your search
+2
-1
@@ -1055,6 +1055,7 @@ func (s *Server) controlIntent(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
var req struct {
|
||||
Action string `json:"action"`
|
||||
Reason string `json:"reason"` // cancel(删除)时必填:删除原因,挂为事实并告知 planner
|
||||
}
|
||||
if err := json.NewDecoder(r.Body).Decode(&req); err != nil {
|
||||
writeErr(w, 400, "bad json: "+err.Error())
|
||||
@@ -1065,7 +1066,7 @@ func (s *Server) controlIntent(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
result, err := s.applyIntentControl(r.Context(), t, iid, req.Action)
|
||||
result, err := s.applyIntentControl(r.Context(), t, iid, req.Action, req.Reason)
|
||||
if err != nil {
|
||||
writeErr(w, 409, err.Error())
|
||||
return
|
||||
|
||||
Reference in new issue
Block a user