Skip to content

Commit f3bf9d0

Browse files
feat: support remark for openclaw (#12361)
Refs #12191
1 parent 05ea384 commit f3bf9d0

12 files changed

Lines changed: 85 additions & 1 deletion

File tree

agent/app/api/v2/agents.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,26 @@ func (b *BaseApi) ResetAgentToken(c *gin.Context) {
9191
helper.Success(c)
9292
}
9393

94+
// @Tags AI
95+
// @Summary Update Agent remark
96+
// @Accept json
97+
// @Param request body dto.AgentRemarkUpdateReq true "request"
98+
// @Success 200
99+
// @Security ApiKeyAuth
100+
// @Security Timestamp
101+
// @Router /ai/agents/remark [post]
102+
func (b *BaseApi) UpdateAgentRemark(c *gin.Context) {
103+
var req dto.AgentRemarkUpdateReq
104+
if err := helper.CheckBindAndValidate(&req, c); err != nil {
105+
return
106+
}
107+
if err := agentService.UpdateRemark(req); err != nil {
108+
helper.BadRequest(c, err)
109+
return
110+
}
111+
helper.Success(c)
112+
}
113+
94114
// @Tags AI
95115
// @Summary Update Agent model config
96116
// @Accept json

agent/app/dto/agents.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import "time"
44

55
type AgentCreateReq struct {
66
Name string `json:"name" validate:"required"`
7+
Remark string `json:"remark"`
78
AppVersion string `json:"appVersion" validate:"required"`
89
WebUIPort int `json:"webUIPort" validate:"required"`
910
BridgePort int `json:"bridgePort"`
@@ -29,6 +30,7 @@ type AgentCreateReq struct {
2930
type AgentItem struct {
3031
ID uint `json:"id"`
3132
Name string `json:"name"`
33+
Remark string `json:"remark"`
3234
AgentType string `json:"agentType"`
3335
Provider string `json:"provider"`
3436
ProviderName string `json:"providerName"`
@@ -63,6 +65,11 @@ type AgentTokenResetReq struct {
6365
ID uint `json:"id" validate:"required"`
6466
}
6567

68+
type AgentRemarkUpdateReq struct {
69+
ID uint `json:"id" validate:"required"`
70+
Remark string `json:"remark"`
71+
}
72+
6673
type AgentModelConfigUpdateReq struct {
6774
AgentID uint `json:"agentId" validate:"required"`
6875
AccountID uint `json:"accountId" validate:"required"`

agent/app/model/agent.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package model
33
type Agent struct {
44
BaseModel
55
Name string `json:"name" gorm:"not null;unique"`
6+
Remark string `json:"remark"`
67
AgentType string `json:"agentType" gorm:"default:openclaw"`
78
Provider string `json:"provider"`
89
Model string `json:"model"`

agent/app/service/agents.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ type IAgentService interface {
2929
Page(req dto.SearchWithPage) (int64, []dto.AgentItem, error)
3030
Delete(req dto.AgentDeleteReq) error
3131
ResetToken(req dto.AgentTokenResetReq) error
32+
UpdateRemark(req dto.AgentRemarkUpdateReq) error
3233
UpdateModelConfig(req dto.AgentModelConfigUpdateReq) error
3334
GetOverview(req dto.AgentOverviewReq) (*dto.AgentOverview, error)
3435
GetProviders() ([]dto.ProviderInfo, error)
@@ -234,6 +235,7 @@ func (a AgentService) Create(req dto.AgentCreateReq) (*dto.AgentItem, error) {
234235
}
235236
agent := &model.Agent{
236237
Name: req.Name,
238+
Remark: req.Remark,
237239
AgentType: agentType,
238240
Provider: provider,
239241
Model: storedModel,
@@ -323,6 +325,15 @@ func (a AgentService) ResetToken(req dto.AgentTokenResetReq) error {
323325
return agentRepo.Save(agent)
324326
}
325327

328+
func (a AgentService) UpdateRemark(req dto.AgentRemarkUpdateReq) error {
329+
agent, err := agentRepo.GetFirst(repo.WithByID(req.ID))
330+
if err != nil {
331+
return err
332+
}
333+
agent.Remark = req.Remark
334+
return agentRepo.Save(agent)
335+
}
336+
326337
func (a AgentService) UpdateModelConfig(req dto.AgentModelConfigUpdateReq) error {
327338
agent, err := loadOpenclawAgentByID(req.AgentID)
328339
if err != nil {

agent/app/service/agents_utils.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -340,6 +340,7 @@ func buildAgentItem(agent *model.Agent, appInstall *model.AppInstall, envMap map
340340
item := dto.AgentItem{
341341
ID: agent.ID,
342342
Name: agent.Name,
343+
Remark: agent.Remark,
343344
AgentType: agentType,
344345
Provider: agent.Provider,
345346
ProviderName: providercatalog.DisplayName(agent.Provider),

agent/init/migration/migrate.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ func InitAgentDB() {
7777
migrations.AddAITerminalSettings,
7878
migrations.UpdateAgentQuickJumpTitle,
7979
migrations.FixOpenclaw20260323HTTPPort,
80+
migrations.AddAgentRemarkColumn,
8081
})
8182
if err := m.Migrate(); err != nil {
8283
global.LOG.Error(err)

agent/init/migration/migrations/init.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1151,3 +1151,10 @@ WHERE version = ?
11511151
).Error
11521152
},
11531153
}
1154+
1155+
var AddAgentRemarkColumn = &gormigrate.Migration{
1156+
ID: "20260330-add-agent-remark-column",
1157+
Migrate: func(tx *gorm.DB) error {
1158+
return tx.AutoMigrate(&model.Agent{})
1159+
},
1160+
}

agent/router/ro_ai.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ func (a *AIToolsRouter) InitRouter(Router *gin.RouterGroup) {
4444
aiToolsRouter.POST("/agents/search", baseApi.PageAgents)
4545
aiToolsRouter.POST("/agents/delete", baseApi.DeleteAgent)
4646
aiToolsRouter.POST("/agents/token/reset", baseApi.ResetAgentToken)
47+
aiToolsRouter.POST("/agents/remark", baseApi.UpdateAgentRemark)
4748
aiToolsRouter.POST("/agents/model/update", baseApi.UpdateAgentModelConfig)
4849
aiToolsRouter.POST("/agents/overview", baseApi.GetAgentOverview)
4950
aiToolsRouter.GET("/agents/providers", baseApi.GetAgentProviders)

frontend/src/api/interface/ai.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,7 @@ export namespace AI {
238238

239239
export interface AgentCreateReq {
240240
name: string;
241+
remark: string;
241242
appVersion: string;
242243
webUIPort: number;
243244
bridgePort?: number;
@@ -263,6 +264,7 @@ export namespace AI {
263264
export interface AgentItem {
264265
id: number;
265266
name: string;
267+
remark: string;
266268
agentType: 'openclaw' | 'copaw';
267269
provider: string;
268270
providerName: string;
@@ -297,6 +299,11 @@ export namespace AI {
297299
id: number;
298300
}
299301

302+
export interface AgentRemarkUpdateReq {
303+
id: number;
304+
remark: string;
305+
}
306+
300307
export interface AgentModelConfigUpdateReq {
301308
agentId: number;
302309
accountId: number;

frontend/src/api/modules/ai.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,10 @@ export const resetAgentToken = (req: AI.AgentTokenResetReq) => {
109109
return http.post(`/ai/agents/token/reset`, req);
110110
};
111111

112+
export const updateAgentRemark = (req: AI.AgentRemarkUpdateReq) => {
113+
return http.post(`/ai/agents/remark`, req);
114+
};
115+
112116
export const updateAgentModelConfig = (req: AI.AgentModelConfigUpdateReq) => {
113117
return http.post(`/ai/agents/model/update`, req);
114118
};

0 commit comments

Comments
 (0)