Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
69 commits
Select commit Hold shift + click to select a range
33d93d7
feat: AI Agent 侧边聊天面板 + API 设置界面优化
Jul 18, 2026
48d551e
feat: Agent 面板 OneBox 风格改版
Jul 18, 2026
b7902cd
feat: Agent 面板 OneBox 风格输入区域
Jul 18, 2026
e914e33
fix: 缩略图移到左下角 + 下拉面板关闭修复 + 参数面板重新设计
Jul 18, 2026
f2d5dda
feat: Agent 面板多对话管理 + 消息操作 + UI 修复
Jul 18, 2026
f84eff0
feat: @引用图片OneBox展示+点击跳转 + 关闭更新功能
Jul 18, 2026
b9b5efd
feat: 参数面板重新设计 + 下拉面板定位修复 + 8张支持 + 按钮文字
Jul 18, 2026
c0b7180
feat: 附件改回大缩略图+点击跳转 + 悬浮工具栏发送至Agent + 折叠菜单 + 跳转居中修复
Jul 18, 2026
155bc80
fix: 参数面板显示修复 + 图片叠在一起A+C方案 + 聊天锁定 + 按钮右对齐 + 跳转居中
Jul 18, 2026
78918fd
fix: 参数面板点击修复 + z-index 提升
Jul 18, 2026
766716a
feat: 机器人发送的结果图片点击跳转
Jul 18, 2026
2108392
fix: 机器人结果图片点击跳转兼容旧消息
Jul 18, 2026
77967ee
feat: 去掉分辨率自动 + 版本号Agent版 + 生成速度优化 + 水平排列 + 关键词检测选项按钮
Jul 18, 2026
28d3f2c
feat: 聊天框自动拉高 + 结构化options字段
Jul 18, 2026
d428856
feat: Agent对话确认工作流程优化
Jul 18, 2026
9b90931
feat: 图片排列顶部对齐 + GitHub链接到当前分支
Jul 18, 2026
6a46d0f
fix: 修改按钮改为重新生成提示词,确保二次确认
Jul 18, 2026
02be106
feat: LLM生图能力全面升级
Jul 18, 2026
700dd27
feat: 生图占位功能
Jul 18, 2026
aed4aea
fix: 确认按钮点击失效修复
Jul 18, 2026
0fd9b0e
merge: AI Agent 面板功能合并到 main
Jul 18, 2026
88f8de3
docs: README 增加 AI Agent 版改动说明与警示
Jul 18, 2026
bde9314
Update README.md
mufanmu Jul 18, 2026
aefbd37
Agent生图优化:修改场景强制use_last_outputs、占位计时修复、顶部对齐、提示词展开、刷新恢复、系统提示词重写
Jul 18, 2026
0adc213
优化agent生图轮询间隔和占位节点按比例展示
Jul 18, 2026
70d412f
修复Agent生图延迟:WebSocket实时通知替代轮询+精简系统提示词
Jul 18, 2026
9aeaf5c
修复占位比例动态显示+修改场景提示词过度发散问题
Jul 18, 2026
5a860dd
Agent架构重构:LLM任务后端化+息屏/刷新恢复+修改意图链路修复
Jul 18, 2026
661ef38
修复生图完成后仍显示正在生图中+复制对话框优先复制prompt
Jul 18, 2026
b88ae5b
修复prompt含文字导致画面出现标题+提示词显示行数增加到5行
Jul 18, 2026
9011d54
文字规则改为按需判断:skill或用户明确要求时才在prompt中包含文字
Jul 18, 2026
c5f47bc
修复: Agent主体更换失败+占位/最终图片比例错误
Jul 18, 2026
63524c7
修复: 主体更换场景丢失问题
Jul 18, 2026
cbfcd05
修复: Agent并发生成多张图时占位节点叠在一起
Jul 18, 2026
aa8335f
docs: 版本号更新为v1.1, 添加v1.0/v1.1版本更新日志
Jul 18, 2026
7f21dff
chore: 将history.json加入.gitignore, 不再跟踪运行时缓存版本号
Jul 18, 2026
6cb013f
v1.3: 思维模式开关+全模型模糊需求统一+发送按钮修复+LLM超时保护
Jul 18, 2026
24012ab
v1.4: Agent 思维模式多图确认流程重构 + skill 完整保留
Jul 19, 2026
f964b94
fix: 多图数量校准 - 选2张4K但LLM返回4张时自动截断到请求数量;升级版本号到 v1.4.1784450000
Jul 19, 2026
377ea30
fix: 通用修复所有 LLM provider 遵循 skill - 重构 system_prompt 结构(首因+近因+中英双语) +…
Jul 19, 2026
43930ff
fix: 思维模式下兜底生图绕过确认流程的bug - 兜底逻辑中思维模式不触发hasGenInProgress - generations…
Jul 19, 2026
d30a951
feat: 硬软参数分层 - Skill=单张图样式不决定数量, 出图数量=输入框>工具栏 - 重构agentSystemPrompt: …
Jul 19, 2026
d0c8e5a
release: v1.5 - 硬软参数分层 + Skill定位明确 - README版本更新改为列表大纲,增加v1.4/v1.5 - V…
Jul 19, 2026
3d3e9dd
fix: 直接模式重复生图 - count>1用同一prompt发多次请求导致重复 - 直接模式数量校准改为追加新generation(c…
Jul 19, 2026
93b2532
docs: 精简 README,版本大纲移至 CHANGELOG.md(README 仅保留重要提示和版本表格)
Jul 19, 2026
c53d39d
fix: 修复单 generation 多图泄漏——限制每 gen 最多 gen.count 张图+过滤参考图 URL+count=1 强…
Jul 19, 2026
8ef2cf0
feat(smart-canvas): 思维模式两阶段流程+去掉跳过按钮+修复UI裁切
Jul 19, 2026
2fec373
fix(css): 修复提示词卡片和按钮超出对话框被裁切的问题
Jul 19, 2026
531f145
fix: codex CLI --size 不支持 1K,映射为 auto;prompt 文本仍显示 1K
Jul 19, 2026
5d05d73
fix: 思维模式阶段二数量继承+补充prompts差异化+generations重复追加修复
Jul 20, 2026
44d80e9
fix: 一条龙等固定词组误判数量为1+加强变体差异要求减少生图重复
Jul 20, 2026
0d279ed
fix: 生图请求网络错误自动重试,减少并发时间歇性失败
Jul 20, 2026
53a0370
fix: 参考图压缩到1024px再上传,解决大图导致413 Request Entity Too Large
Jul 20, 2026
c88ceab
feat: 启动服务后自动打开浏览器
Jul 20, 2026
2929593
fix: 多参考图生图失败——压缩到768px+限制6张+503/429自动重试
Jul 20, 2026
ac82edb
feat: provider参考图上限提示+LLM参考图分析优化+生图截取兜底
Jul 20, 2026
e2f4be1
v1.6: LLM与生图解耦、思维模式多轮维度采集、批量发送至Agent、附件拖拽排序、发送按钮bug修复
Jul 20, 2026
f3a8738
v1.6: 思维模式渐进式修复 + 附件编号 + 纯文字引导解析 + 确认面板
Jul 20, 2026
1d30198
fix: 修复思维模式JSON解析失败和非思维模式发送按钮不可点击
Jul 20, 2026
225453f
feat: 生成图编号引用+非思维模式直连生图+编号翻译层+UI重构
Jul 21, 2026
e4d299a
feat: OFF模式重写为LLM快速执行器+分析防护+代理修复
Jul 21, 2026
49593ab
feat(agent): 重构非思维模式意图路由架构
Jul 21, 2026
8b595ee
docs: 版本号升级至 v2.0,更新 README 版本表格和 CHANGELOG 改版大纲
Jul 21, 2026
b9dd48c
fix(agent): 快速路径加入正向信号(生图动词或>10字),防止寒暄误生图
Jul 21, 2026
03276c8
feat(agent): 变体按钮支持数量选择 + 思维模式数量修复 + 文案优化
Jul 22, 2026
197ee09
v2.1 灵感库:Civitai 图源 + 真关键词搜索 + 标签筛选
Jul 22, 2026
7b975b6
docs: README 补充 v2.1 更新大纲
Jul 22, 2026
0e406f4
重新开启自动更新并连回主项目 hero8152/Infinite-Canvas,准备合并主线
Jul 23, 2026
9df3498
Merge remote-tracking branch 'upstream/main'
Jul 23, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# 敏感信息
API/.env

# 运行时数据
assets/
data/

# 系统文件
.DS_Store
__pycache__/
*.pyc
history.json
123 changes: 123 additions & 0 deletions .qoder/better-loop/2026-07-21/160331-infinite-canvas/canvas.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
{
"schemaVersion": 1,
"summary": {
"evidenceMode": "session-limited",
"evidenceBoundary": {
"manifest": {
"schemaVersion": 2,
"sourceFingerprint": "7254844991a82cce",
"adapterVersion": "qoder-task-loop-source-v2",
"platform": "qoder",
"selection": {
"strategy": "all-eligible",
"eligibleCount": 0,
"analyzedCount": 0,
"confidence": "Low"
}
},
"deliveryEvidenceLevels": [],
"sourceGaps": []
},
"semanticFacets": {
"schemaVersion": 1,
"status": "supplementary",
"entries": [
{
"id": "session-insight:source-coverage",
"kind": "redacted-summary",
"episodeRef": null,
"status": "candidate",
"labels": [
"source-coverage",
"Low"
],
"summary": "Analyzed 0 of 0 sessions; 0/5 enabled source roots exist. Use this as the current workspace evidence boundary for final insight cards.",
"evidenceRefs": [],
"modelVersion": "session-insights-v1"
},
{
"id": "session-insight:validation-behavior",
"kind": "redacted-summary",
"episodeRef": null,
"status": "candidate",
"labels": [
"validation-behavior",
"Low"
],
"summary": "No validation command category was observed in the analyzed session sample. Inspect more sessions or add explicit validation guidance before claiming validation-after-edit behavior.",
"evidenceRefs": [],
"modelVersion": "session-insights-v1"
},
{
"id": "session-insight:post-edit-validation",
"kind": "rework-correction",
"episodeRef": null,
"status": "candidate",
"labels": [
"post-edit-validation",
"Low"
],
"summary": "No edit event was observed in the analyzed sample. Inspect more sessions before making claims about edit or validation habits.",
"evidenceRefs": [],
"modelVersion": "session-insights-v1"
},
{
"id": "session-insight:execution-friction",
"kind": "friction-taxonomy",
"episodeRef": null,
"status": "candidate",
"labels": [
"execution-friction",
"Low"
],
"summary": "No strong execution friction signal in the analyzed sample. Keep friction claims narrow unless additional failed commands, rejected actions, or warnings are inspected.",
"evidenceRefs": [],
"modelVersion": "session-insights-v1"
}
]
},
"learningCapture": {
"schemaVersion": 1,
"state": "N/A",
"summary": "暂不适用——需要两个可比的观察窗口和一次改进对比。",
"interventions": []
}
},
"dimensions": [
{
"id": "task-understanding"
},
{
"id": "controlled-execution"
},
{
"id": "change-validation"
},
{
"id": "reliable-delivery"
},
{
"id": "learning-capture"
}
],
"findings": [
{
"id": "agent-context-entrypoint-missing"
},
{
"id": "monolith-scope-localization"
},
{
"id": "no-automated-validation"
},
{
"id": "no-quality-enforcement-gate"
},
{
"id": "dependency-not-pinned"
},
{
"id": "no-change-acceptance-path"
}
]
}
191 changes: 191 additions & 0 deletions .qoder/better-loop/2026-07-21/160331-infinite-canvas/findings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,191 @@
{
"summary": {
"projectName": "Infinite-Canvas",
"locale": "zh-CN",
"modelId": "agent-work-loop-v4",
"reportContractVersion": 24,
"overview": "Infinite-Canvas 是一个 FastAPI 单体项目,具备基本启动脚本和依赖声明,但缺乏 agent 上下文指引、自动化验证、质量门禁和变更验收机制。本次审查为 session-limited 模式(无合格会话),结论仅基于项目静态证据。",
"aiAgentPractice": {
"inspectedSurfaces": [
"Workflows",
"Plugins",
"Memories"
],
"coverageRows": [
{
"surface": "Workflows",
"scopes": [
"Project"
],
"count": 7,
"paths": [
"workflows/2511.json",
"workflows/Flux2-Klein.json",
"workflows/LTXDirectorv2-API.json",
"workflows/upscale.json",
"workflows/Z-Image.json",
"workflows/Z-Image-Enhance.json",
"workflows/LTXDirectorv2-API.config.json"
]
},
{
"surface": "Plugins",
"scopes": [
"Plugin"
],
"count": 2,
"paths": [
"better-loop",
"qoder-create-plugin"
]
},
{
"surface": "Memories",
"scopes": [
"Project"
],
"count": 2,
"paths": [
"~/.qoder/memories/019f6f6d/projects/Users-yangfan-Desktop-Infinite-Canvas/project_introduction/Infinite-Canvas_AI_Agent项目概述.md",
"~/.qoder/memories/019f6f6d/projects/Users-yangfan-Desktop-Infinite-Canvas/project_tech_stack/Python后端技术栈与协议支持.md"
]
}
]
},
"suggestions": [],
"assignmentSummaries": [],
"dimensions": [
{
"id": "task-understanding",
"label": "任务理解",
"score": 25,
"summary": "README 提供了 fork 约束等基本信息,但无 agent 指令文件或模块化结构,agent 无法高效定位任务边界和风险区域。",
"findingRefs": [
"agent-context-entrypoint-missing",
"monolith-scope-localization"
]
},
{
"id": "controlled-execution",
"label": "可控执行",
"score": 30,
"summary": "存在一键启动脚本和基本依赖声明,但依赖未锁定版本,无 doctor/reset 路径,环境可复现性不足。",
"findingRefs": [
"dependency-not-pinned"
]
},
{
"id": "change-validation",
"label": "改动验证",
"score": 5,
"summary": "项目中不存在任何测试、lint、typecheck 或 CI 配置,agent 变更后无任何自动化反馈信号。",
"findingRefs": [
"no-automated-validation"
]
},
{
"id": "reliable-delivery",
"label": "可靠交付",
"score": 10,
"summary": "无 CI 流水线、分支保护、PR 验收路径或回滚机制,变更可直接合入主分支而无机械化检查。",
"findingRefs": [
"no-quality-enforcement-gate",
"no-change-acceptance-path"
]
},
{
"id": "learning-capture",
"label": "经验沉淀",
"score": 35,
"summary": "存在 2 条项目记忆和 7 个工作流资产,但无可观察的循环检测、复用改进或后续验证证据。",
"findingRefs": []
}
]
},
"findings": [
{
"id": "agent-context-entrypoint-missing",
"title": "缺少 Agent 上下文入口文件",
"severity": "Medium",
"reason": "项目无 AGENTS.md、CLAUDE.md 或等效的 agent 指令文件。agent 无法从项目结构中获得任务边界、高风险区域、模块职责或下一步指引,只能依赖通读 README 和遍历目录推断上下文。",
"expectedOutput": [
"创建一个结构化的 agent 入口文件,覆盖项目定位、目录说明、启动路径、高风险区域和任务路由。"
],
"expectedArtifact": "AGENTS.md",
"aiFixPrompt": "/better-loop fix this issue\n\n为 Infinite-Canvas 创建一个简洁的 AGENTS.md 入口文件(80-150 行),包含:项目定位、目录职责、启动命令、高风险区域、常见任务路径。\n\n## Validation\n\n- 确认文件存在且内容覆盖上述五个部分\n- 确认命令与 mac-启动服务.sh 和 main.py 一致",
"dimensionRefs": [
"task-understanding"
]
},
{
"id": "monolith-scope-localization",
"title": "17,787 行单文件单体阻碍变更范围定位",
"severity": "High",
"reason": "main.py 包含全部路由、WebSocket 管理、LLM 调用、生图逻辑和文件处理(17,787 行),无模块或包拆分。agent 无法通过目录结构定位变更范围,任何修改都需要在巨大单文件中搜索目标,增加误改风险。",
"expectedOutput": [
"将 main.py 按功能域拆分为独立模块,每个模块职责单一,agent 可通过目录结构定位变更范围。"
],
"expectedArtifact": "模块拆分方案",
"aiFixPrompt": "/better-loop fix this issue\n\n制定 main.py 的模块拆分方案:按功能域(路由、WebSocket、LLM、生图、文件处理)拆分为独立模块,保持现有 API 兼容。\n\n## Validation\n\n- 服务正常启动且端口 3000 可访问\n- 各模块可独立导入无循环依赖",
"dimensionRefs": [
"task-understanding"
]
},
{
"id": "no-automated-validation",
"title": "无任何自动化验证手段",
"severity": "High",
"reason": "项目中不存在测试文件、lint 配置(ruff/flake8)、类型检查(mypy/pyright)或 CI 流水线。agent 变更后唯一的反馈是「服务是否启动不报错」,无法检测逻辑回归、类型错误或代码风格问题。",
"expectedOutput": [
"配置 ruff lint 和 pytest 冒烟测试,agent 变更后可在 2 分钟内获得可操作的反馈信号。"
],
"expectedArtifact": "验证配置",
"aiFixPrompt": "/better-loop fix this issue\n\n为项目添加最小验证层:1) 配置 ruff 作为 linter;2) 添加 pytest 及至少覆盖核心路由的冒烟测试;3) 在 requirements.txt 中声明开发依赖。\n\n## Validation\n\n- ruff check 可运行并输出可操作的诊断\n- pytest 至少有一个通过的冒烟测试\n- 验证命令可在 2 分钟内完成",
"dimensionRefs": [
"change-validation"
]
},
{
"id": "no-quality-enforcement-gate",
"title": "无质量执行门禁",
"severity": "Medium",
"reason": "无 pre-commit hooks、CI pipeline、schema 校验或架构边界检查。质量完全依赖人工审查,agent 产出的代码无机械化拦截路径,违反约束的变更可无阻碍地进入代码库。",
"expectedOutput": [
"配置 pre-commit hook,在提交前自动运行 lint 检查,违规时阻止提交并给出修复方向。"
],
"expectedArtifact": "质量门禁配置",
"aiFixPrompt": "/better-loop fix this issue\n\n添加最小质量门禁:1) 配置 pre-commit hook 运行 ruff check;2) 添加基本的 .pre-commit-config.yaml。\n\n## Validation\n\n- pre-commit run --all-files 可执行\n- 违规时输出包含文件和规则信息",
"dimensionRefs": [
"reliable-delivery"
]
},
{
"id": "dependency-not-pinned",
"title": "依赖未锁定版本,环境不可复现",
"severity": "Medium",
"reason": "requirements.txt 中 7 个依赖均无版本约束(无 == 或 >= 限定),无 pip-tools/poetry lockfile。不同时间或环境安装可能产生不兼容版本,agent 无法保证确定性环境复现。",
"expectedOutput": [
"生成带版本约束的依赖文件,确保不同环境安装结果一致。"
],
"expectedArtifact": "锁定的依赖文件",
"aiFixPrompt": "/better-loop fix this issue\n\n锁定依赖版本:1) 使用 pip freeze 或 pip-compile 生成带版本约束的 requirements.txt;2) 或迁移到 poetry/pip-tools 管理 lockfile。\n\n## Validation\n\n- requirements.txt 中每个依赖有明确版本约束\n- 从 lockfile 安装后服务正常启动",
"dimensionRefs": [
"controlled-execution"
]
},
{
"id": "no-change-acceptance-path",
"title": "无变更验收路径和安全边界",
"severity": "Medium",
"reason": "无分支保护、PR 模板、CODEOWNERS 或合并前检查。agent 产出的变更可直接合入主分支而无验收步骤。同时 data/ 目录下的运行时数据虽被 .gitignore 排除但存在于工作目录,agent 操作可能意外修改用户数据而无感知。",
"expectedOutput": [
"声明变更验收路径和运行时数据操作边界,agent 产出变更有明确的验收步骤。"
],
"expectedArtifact": "验收流程文档",
"aiFixPrompt": "/better-loop fix this issue\n\n建立最小变更验收路径:1) 在 README 或 AGENTS.md 中声明变更需通过分支+PR 流程;2) 对 data/ 目录添加操作边界说明。\n\n## Validation\n\n- 文档中明确了变更验收流程\n- data/ 目录的操作边界有明确说明",
"dimensionRefs": [
"reliable-delivery"
]
}
]
}
Loading