Skip to content

修复 system_prompt 导致重复 up 误报更新#281

Merged
kingfs merged 1 commit into
chaitin:mainfrom
qinhn525:fix/system-prompt-idempotency
Jul 14, 2026
Merged

修复 system_prompt 导致重复 up 误报更新#281
kingfs merged 1 commit into
chaitin:mainfrom
qinhn525:fix/system-prompt-idempotency

Conversation

@qinhn525

Copy link
Copy Markdown
Contributor

变更说明

  • 修复 YAML 块标量产生的末尾换行导致重复执行 up 时 agent 始终显示 updated 的问题。
  • 变更判断改用 UpsertManagedAgentDefinition 返回的规范化持久化结果,确保比较结果与数据库实际状态一致。
  • 补充包含 system_prompt: | 的 CLI 回归测试,验证重复 up 返回 unchanged,真实配置变化仍返回 updated。

测试

  • go test ./cmd/agent-compose -run ^TestIntegrationCLIUpAppliesProjectFirstRepeatedModifiedAndJSON$ -count=1
  • go test ./pkg/projects/... ./pkg/storage/configstore/...
  • golangci-lint fmt --no-config --diff ./cmd/... ./pkg/...
  • golangci-lint run --no-config --allow-parallel-runners ./cmd/agent-compose ./pkg/projects ./pkg/storage/configstore

检查清单

  • 本次行为修复无需额外用户文档。
  • 已为用户可见行为增加或更新测试。
  • 未包含密钥、私有端点、内部证书或本地运行状态。

@monkeyscan

monkeyscan Bot commented Jul 14, 2026

Copy link
Copy Markdown

PR Title: 修复 system_prompt 导致重复 up 误报更新

Commit: 1705536

本次 PR 修复了一个 system_prompt 存在时导致重复 up 操作幂等性误判的 bug。

变更内容:

  1. pkg/projects/reconcile.go:在 ReconcileManagedAgentDefinitions 中,将 ManagedAgentDefinitionChangeAction 的第三个参数从 agent(传入的期望状态)改为 savedUpsertManagedAgentDefinition 实际持久化后返回的状态)。
  2. cmd/agent-compose/main_test.go:在测试用例中为 agent 配置添加 system_prompt(多行字符串),并增加 agent_definition 在重复执行时保持 unchanged 的断言,以覆盖该 bug 场景。

设计决策:

  • 幂等性判断应基于存储层实际返回的持久化状态 saved,而非原始的期望状态 agent。因为存储层在 upsert 过程中可能对数据进行归一化(normalization),导致 agentsaved 在字段层面存在差异(例如 system_prompt 的多行字符串处理),从而错误地触发 "updated" 变更动作。
  • 测试直接复用现有的 CLI up 集成测试框架,在重复执行和变更执行两种场景下验证 agent_definition 的行为。

总体评估:
改动范围极小、意图清晰,修复了因状态比较基准错误导致的伪变更问题,测试覆盖到位。没有发现新的问题。

@kingfs
kingfs merged commit 72e3e22 into chaitin:main Jul 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants