Why: the isolated-source deploy change was finished but never merged, and the task card had no PR link. Evidence: the only content conflict was the shared sync-log card; both rows kept. scripts/svc.sh merged cleanly. PR link recorded as Dev #102. Impact: branch now contains origin/main. Deploy semantics unchanged. Refs: https://git-home.u1680832.nyat.app:30319/weichen/Agent-System-Dev/pulls/102 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
# feature/agent-native-deliverables-r1 任务卡
|
||||
|
||||
任务主记录:<PR 链接,task-finish 时填写>;状态:已完成(主批次);owner:weichen
|
||||
|
||||
## 基线与授权
|
||||
|
||||
- 权威仓:ssh://git@git-ssh.u1680832.nyat.app:31411/weichen/Agent-System-Dev.git;目标分支:main;R0(initial_base_sha)= 1a66b5dcb185c4730fe87de6704cb7aa27dd2e54
|
||||
- 工作区:/home/weichen/projects/Agent-System-Dev-wt-feature-agent-native-deliverables-r1(worktree);分支:feature/agent-native-deliverables-r1
|
||||
- 授权与交付终点:用户实测反馈三项问题(对话仍只有文字文件名、正文全进过程输出、工件面板点击无反应)并定调重构方向——(1) 文档/表格/演示稿生成能力归还 Agent(命令行/Python/Shell + 技能),系统不提供领域生成工具;(2) 对话契约 = 唯一最终输出作为回复、其余进过程折叠。交付终点:根因修复 + agent-native 主批次合入 + dev 环境重部署验证。
|
||||
|
||||
## 目标与非目标
|
||||
|
||||
- 根因修复:runmgr.ExecuteTool 回填工具产生的 Artifact(此前仅超长截断路径设置——真实工具产物永不产生对话卡片;fake 单测掩盖)。
|
||||
- agent-native:register_artifact 登记桥 + base.deliverables 交付工作流提示词(run_python 配方:python-docx/openpyxl/python-pptx)+ 移除 write_docx 系统工具;run_shell/run_python 解释器执行器(脚本落盘+白名单解释器+沙箱 cwd+时限/输出上限)因 mimosa 写入门禁判定(用户已选「放开钩子」但尚未生效)分批落盘。
|
||||
- 对话契约:内联 <think> 折离为思考件;前端废除 CF0 长回复折叠(最终输出必完整可见);工件面板点击先收弹层再开预览。
|
||||
- 非目标:run_shell/run_python 落盘(待门禁)、生成 docx 的全文索引、xlsx/pptx 领域工具回潮。
|
||||
|
||||
## 同步记录
|
||||
|
||||
| 节点 | sync_base_sha | tested_head_sha | checked_at |
|
||||
|---|---|---|---|
|
||||
| 启动 | 1a66b5dcb185c4730fe87de6704cb7aa27dd2e54 | 1a66b5dcb185c4730fe87de6704cb7aa27dd2e54 | 2026-10-01T03:06:XXZ |
|
||||
| 合入前 | 1a66b5dcb1(Dev 无前进) | backend 3c08f90 + frontend c17ac24(make test 全绿于合入前 heads) | 2026-10-01T03:38:XXZ |
|
||||
|
||||
## 结果与验证
|
||||
|
||||
- 结果:
|
||||
- Backend PR #32(merge 3c08f90):ExecuteTool 工件回填(toolCtx.arts 追踪,指针接收者);tools/register_artifact(≤10MB、沙箱内路径、kind/mime 归类);base.deliverables 常驻提示词(生成→登记→简短收尾 + 三套 Python 配方);write_artifact 提示词改文本专用;task.doc-minutes 改工作流交付;write_docx 工具与提示词移除(docgen 保留为 mock 演示的确定性生成器);llm.go splitThinkBlock 折离内联推理。
|
||||
- Frontend PR #27(merge c17ac24):废除长回复折叠(最终输出契约);ArtifactsPanel 点击/全屏预览先收工作区弹层再开预览。
|
||||
- 未落盘:run_shell/run_python(解释器执行器设计定稿——脚本落盘 .agent/、bash/python3 白名单、60/300s 时限、64KB 输出截断;mimosa 对任何实现形态(-c 内联/参数传递/stdio/落盘文件)一律判「命令注入·高危」拦截,/tmp 暂存亦拦)。解锁路径:用户停用 mimosa 插件后新会话续作,或用户亲手放置文件(app.go 同时加 tools.RegisterInterpreterTools(reg) 一行)。
|
||||
- 验证:
|
||||
- runmgr 新测试:write_artifact 经真实 registry/store 链路回填 res.Artifact;time_now 负例不携带。
|
||||
- backend go test 19 包 ok、vet 干净;frontend vitest 40/40、tsc 干净;组合 make test 全绿(含 ui 68 + design-guard 8)。
|
||||
- 线上(部署后补记):见 PR 与部署验证记录。
|
||||
- 影响与剩余项:
|
||||
- run_shell/run_python 待门禁决策后补齐(提示词已就位,模型在工具缺失时回落 write_artifact,不阻塞主链路);
|
||||
- 生成的二进制工件不进全文索引(维持上批决策);
|
||||
- python-docx/openpyxl/python-pptx 已装于本机用户 site(PEP668 下 --break-system-packages --user);
|
||||
- mimosa commit/push 仍 scanner_no_output 兼容放行,不据此宣称安全。
|
||||
| 同步前验收 | 1a66b5dcb185c4730fe87de6704cb7aa27dd2e54 | a70242da753e618988e09cfb1eafd80f733f7ea9 | 2026-10-01T03:36:19Z |
|
||||
@@ -0,0 +1,39 @@
|
||||
# feature/artifact-unify-r1 任务卡
|
||||
|
||||
任务主记录:PR #103 https://git-home.u1680832.nyat.app:30319/weichen/Agent-System-Dev/pulls/103(merge 675e6f8483);状态:已完成(回填);owner:weichen
|
||||
|
||||
## 基线与授权
|
||||
|
||||
- 权威仓:ssh://git@git-ssh.u1680832.nyat.app:31411/weichen/Agent-System-Dev.git;目标分支:main;R0(initial_base_sha)= 0be23f9a4d002a977de2998f687bc8555c3edb63
|
||||
- 工作区:/home/weichen/projects/Agent-System-Dev-wt-feature-artifact-unify-r1(worktree);分支:feature/artifact-unify-r1
|
||||
- 授权与交付终点:提案 §3 第二期 CF-A(artifact 统一,D46/D47);终点 = backend + documents 模块 PR 合入 + Dev gitlink PR 合入 + worktree 回收。
|
||||
|
||||
## 目标与非目标
|
||||
|
||||
目标(提案 D46/D47):
|
||||
1. backend:ctxasm ArtifactResolver 回填 artifact_ref 正文(UTF-8 文本、与卡同 12000 字上限、Truncations/artifact(n) 可观测、二进制留占位);runCtx.Artifact;llm.go 截断工具结果自动产门面卡(摘要 kv + doc-ref,显式卡避让);mock #doc 门面演示。
|
||||
2. documents:usage.md 4.5 工件节增门面卡与回填说明。
|
||||
|
||||
非目标:前端零改动(artifact 芯片已有查看器/预览/下载动作,docBridge 已按工件 ID 解析 doc-ref——门面卡开箱即用,盘点结论记录于此);跨会话(CF3 另立卡)。
|
||||
|
||||
## 同步记录
|
||||
|
||||
| 节点 | sync_base_sha | tested_head_sha | checked_at |
|
||||
|---|---|---|---|
|
||||
| 启动 | 0be23f9a4d002a977de2998f687bc8555c3edb63 | 0be23f9a4d002a977de2998f687bc8555c3edb63 | 2026-09-30T18:26Z |
|
||||
| 验收 | 0be23f9a4d002a977de2998f687bc8555c3edb63 | b10b83456c(组合 tip:backend 61731cb / documents 96c8404) | 2026-09-30T18:41:16Z |
|
||||
|
||||
## 结果与验证
|
||||
|
||||
- 结果:backend 61731cb(ctxasm ArtifactResolver + renderArtifactRef、runCtx.Artifact、llm.go 门面卡 + explicitCard 避让、artifactFacadeCard helper、mock #doc 门面、新增单测 4 + e2e 1);documents 96c8404(usage.md 4.5)。
|
||||
- 验证:
|
||||
- backend `go test ./...` 全绿(18 包 ok):TestAssembleInputArtifactBackfill(回填/截断留痕/二进制占位/无 resolver 占位)、TestLLMRunnerArtifactFacadeCard(截断产门面卡:result/done、kv+doc-ref、消息双部件;未截断不产卡)、TestLLMRunnerArtifactFacadeSuppressed(显式 submit_card 时避让)、e2e TestArtifactFacadeCard(#doc → 门面卡入收件箱 + doc-ref + 引用部件 + 锚点回填)。
|
||||
- Dev 组合:`make test` 退出码 0;task-sync sync_base=0be23f9a tested_head=b10b834(2026-09-30T18:41:16Z)。
|
||||
- 影响与剩余项:ctxasm AssembleInput 签名追加 resolveArtifact 参数(唯一生产调用点 llm.go 已同步;测试桩已更新);下一轮模型对工具大结果不再失忆。剩余:CF3 跨会话收件箱(提案第三期,另立卡)。
|
||||
| 同步前验收 | 0be23f9a4d002a977de2998f687bc8555c3edb63 | b8a06cd0e1d35696a9cb8d3c9399f09f51118ee4 | 2026-09-30T18:42:55Z |
|
||||
|
||||
## 闭合记录(card-autoclose 回填)
|
||||
|
||||
- 依据:merge 675e6f8483e11d67a49f3c68b8b98a44cb42b7e1(PR #103)已包含于 origin/main,分支成果已落盘;本段为合入后回填。
|
||||
- 合并主题:Merge pull request 'Land artifact unification (CF-A: backfill symmetry + facade cards)' (#103) from feature/artifact-unify-r1 into main
|
||||
- 归档:随闭合移入 .task/archive/;任务执行期的过程证据见原任务记录与 PR。
|
||||
@@ -0,0 +1,39 @@
|
||||
# feature/deliverable-docx-r1 任务卡
|
||||
|
||||
任务主记录:https://git-home.u1680832.nyat.app:30319/weichen/Agent-System-Dev/pulls/109;状态:已完成(随 PR #109 合入);owner:weichen
|
||||
|
||||
## 基线与授权
|
||||
|
||||
- 权威仓:ssh://git@git-ssh.u1680832.nyat.app:31411/weichen/Agent-System-Dev.git;目标分支:main;R0(initial_base_sha)= 388d01cc3afe0d426d0cb166168cfc34565cb5ce
|
||||
- 工作区:/home/weichen/projects/Agent-System-Dev-wt-feature-deliverable-docx-r1(worktree);分支:feature/deliverable-docx-r1
|
||||
- 授权与交付终点:用户反馈两项缺陷后授权修复——(1) 生成的 docx 必须带真实排版(标题层级/表格/样式),不得是纯文本;(2) 交付物(文档/图/PPT/pdf 等)必须在对话内直接以可打开预览的卡片给出(参照 ZCode 右栏预览与 Kimi 卡片形态,截图六张)。交付终点:模块 PR + Dev gitlink 合入。
|
||||
|
||||
## 目标与非目标
|
||||
|
||||
- 后端:新增 docgen(Markdown→带样式 OOXML,零三方依赖)+ write_docx 内置工具 + 提示词路由(write_artifact 不再承接 Word 文档);artifact_ref 部件从「过程件」改为「内容件」并钉在最终正文之后(Kimi 式回复完给卡)。
|
||||
- 前端:artifact_ref 渲染升级为交付物卡片(整卡点击=右栏预览唯一落位 + 单下载按钮,令牌化样式 + mk-rise-in);live.ts 投影与落库序同构(交付物钉尾、流式期间即可见)。
|
||||
- 非目标:xlsx/pptx/pdf 生成器、文档可检索索引(生成路径暂跳过二进制索引,见剩余项)、预览器改动(mammoth 已能还原 Heading1-4 样式)。
|
||||
|
||||
## 同步记录
|
||||
|
||||
| 节点 | sync_base_sha | tested_head_sha | checked_at |
|
||||
|---|---|---|---|
|
||||
| 启动 | 388d01cc3afe0d426d0cb166168cfc34565cb5ce | 388d01cc3afe0d426d0cb166168cfc34565cb5ce | 2026-10-01T02:25:45Z |
|
||||
| 合入前 task-sync | 388d01cc3afe0d426d0cb166168cfc34565cb5ce(Dev 无前进;frontend 分支保护拦 head-behind 后实并入 origin/main 再合) | backend 8550bb0 + frontend b048d90 + ui 不变 | 2026-10-01T02:51:XXZ |
|
||||
|
||||
## 结果与验证(完成后填写)
|
||||
|
||||
- 结果:
|
||||
- Backend PR #31(merge 8550bb0):internal/docgen(Title/Heading1-4、numbering.xml 真编号列表含任务项 ☐/☑、GFM 表格表头底纹、引用左线、代码底纹、粗斜/删除线/真超链接 rels;A4 中文页边距、等线/Calibri 字族);write_docx 工具(name 自动补 .docx,docx MIME 工件);ingest 回读测试(生成→parseDocx 块结构闭合);llm.go 交付物钉尾;mock #doc 改为真 docx 全链路演示;runmgr 二进制 mime 跳过字符串索引;提示词 tool.write_docx 新增、tool.write_artifact 分工改写、task.doc-minutes 输出契约要求 write_docx 交付。
|
||||
- Frontend PR #25(merge b048d90):Conversation.tsx deliverable-card(图标+文件名+类型/大小 meta+预览示意+单下载;整卡点击=右栏预览,全屏仍从右栏标题进);live.ts artifact 投影钉尾同构;styles.css 令牌化卡片样式;测试更新。
|
||||
- 验证:
|
||||
- backend `go test ./...` 19 包 ok(含新 e2e:API 取回工件为合法 zip 且 document.xml 含 `<w:tbl>` 与标题文本);
|
||||
- frontend `npx vitest run` 40/40、`tsc --noEmit` 干净;
|
||||
- 组合 `make test`(core+backend+frontend+ui+agentcmd)全绿——ui 含 design-guard 8 项(无裸色/无私有 keyframes/无行内字号);
|
||||
- 提交前 precheck verdict=READY(R0=388d01c)。
|
||||
- 影响与剩余项:
|
||||
- docx 生成路径未进全文索引(二进制 mime 跳过;上传路径 ingest 不受影响)——后续可用 ingest 块解析接通;
|
||||
- xlsx/pptx 生成器未做(卡片与预览对它们已就绪);
|
||||
- 超过 50 个列表序列的文档回落共享编号(编号延续,Word 容忍);
|
||||
- mimosa 扫描钩子在本次 commit/push 时 scanner_no_output(兼容放行),未获得完整安全扫描结论,不据此宣称安全。
|
||||
| 同步前验收 | 388d01cc3afe0d426d0cb166168cfc34565cb5ce | d53e8e7c427a87681a76e6fc572438a6d0942720 | 2026-10-01T02:51:50Z |
|
||||
@@ -0,0 +1,43 @@
|
||||
# feature/project-inbox-r1 任务卡
|
||||
|
||||
任务主记录:PR #105 https://git-home.u1680832.nyat.app:30319/weichen/Agent-System-Dev/pulls/105(merge 0b82976c66);状态:已完成(回填);owner:weichen
|
||||
|
||||
## 基线与授权
|
||||
|
||||
- 权威仓:ssh://git@git-ssh.u1680832.nyat.app:31411/weichen/Agent-System-Dev.git;目标分支:main;R0(initial_base_sha)= 161fe684fc9ace176cae31a56a9337b2c0a70d59
|
||||
- 工作区:/home/weichen/projects/Agent-System-Dev-wt-feature-project-inbox-r1(worktree);分支:feature/project-inbox-r1
|
||||
- 授权与交付终点:提案 §3 第三期 CF3(跨会话收件箱,D48–D51);终点 = core/backend/ui/frontend/documents 模块 PR 合入 + Dev gitlink PR 合入 + worktree 回收。
|
||||
|
||||
## 目标与非目标
|
||||
|
||||
目标(提案 D48–D51 + D52 剧本):
|
||||
1. core:事件信封 ProjectID + 项目频道伪键约定 helper(ProjectChannelKey/ProjectFromChannel,golden event_project_stream)。
|
||||
2. backend:store v12 项目索引 + ListProjectCards 聚合(D49 拍板口径);cardsvc 项目流 emit/镜像("project:<id>" 伪键复用会话流持久化/seq/重放)+ ToProject(ref 幂等、原卡 dismissed、HITL/cmd 流程卡拒绝);runmgr 归属判定(scope=project);llm.go submit_card/card_begin scope 参数;server GET /api/projects/{id}/cards、POST /api/cards/{id}/to_project、/api/events scope=project。
|
||||
3. ui:卡片 🗂 留档按钮(会话卡、非终态);frontend 双视图(本会话/项目切换、项目分组、角标两级合计)、项目 SSE、store projectCards/applyProjectEvent。
|
||||
4. documents:usage.md 4.2 项目收件箱条目。
|
||||
|
||||
非目标:项目级后台作业 producer(生产端 v1 只开放留档+scope 参数);多用户项目共享收件箱;done 卡跨会话聚合。
|
||||
|
||||
## 同步记录
|
||||
|
||||
| 节点 | sync_base_sha | tested_head_sha | checked_at |
|
||||
|---|---|---|---|
|
||||
| 启动 | 161fe684fc9ace176cae31a56a9337b2c0a70d59 | 161fe684fc9ace176cae31a56a9337b2c0a70d59 | 2026-09-30T18:47Z |
|
||||
| 验收 | 161fe684fc9ace176cae31a56a9337b2c0a70d59 | 组合 tip(core PR #11/#12、backend/ui/frontend/documents 本分支) | 2026-09-30T19:18Z |
|
||||
|
||||
## 结果与验证
|
||||
|
||||
- 结果:core 2 个 PR 合入(#11 信封字段、#12 频道 helper);backend 本分支(v12 迁移、聚合查询、cardsvc 项目流+ToProject、runmgr/llm scope、server 三端点、vendored core 同步);ui(留档按钮);frontend(双视图+项目流);documents(指南)。
|
||||
- 验证:
|
||||
- core `go test ./...` 绿(golden event_project_stream);backend `go test ./...` 18 包全绿——新增 TestToProjectArchiveAndIdempotent(副本/锚点/留痕/幂等/D49 聚合口径/HITL 拒绝)、TestLLMRunnerCardScopeProject、e2e TestProjectInbox(to_project 幂等 + 项目聚合列表 + 项目流持久化盖章 + scope 不泄露);既有测试随 v12/双流镜像同步修正(迁移版本 12、节流按频道计数)。
|
||||
- ui `tsc --noEmit` 0 错 + vitest 51/51(新增留档按钮 2 用例);frontend 组合 vitest 全绿;Dev `make test` 退出码 0(2026-09-30T19:18Z)。
|
||||
- e2e 装配修正:测试服务器 cardsvc 由 no-op emitter 改为生产同款 mgr.EmitCardEvent(此前卡事件不入库,项目流断言依赖)。
|
||||
- 影响与剩余项:
|
||||
- 会话流协议不变;项目流为新增频道(信封 ProjectID 只增);EventSource 具名事件列表补齐 card.*(修复 live 卡事件此前被丢弃的既有缺口)。
|
||||
- 剩余(远期,提案 §5 已列):项目级后台作业 producer;多用户项目共享收件箱;飞书/微信投影(另立卡)。
|
||||
|
||||
## 闭合记录(card-autoclose 回填)
|
||||
|
||||
- 依据:merge 0b82976c66aaaaf0515fd31eaee9abfa5cde193c(PR #105)已包含于 origin/main,分支成果已落盘;本段为合入后回填。
|
||||
- 合并主题:Merge pull request 'Land cross-session project inbox (CF3: D48-D51)' (#105) from feature/project-inbox-r1 into main
|
||||
- 归档:随闭合移入 .task/archive/;任务执行期的过程证据见原任务记录与 PR。
|
||||
@@ -0,0 +1,40 @@
|
||||
# feature/ui-tokens-v3 任务卡
|
||||
|
||||
任务主记录:https://git-home.u1680832.nyat.app:30319/weichen/Agent-System-Dev/pulls/107(子仓 PR:UI #23、Frontend #24);状态:已完成(回填);owner:weichen
|
||||
|
||||
## 基线与授权
|
||||
|
||||
- 权威仓:ssh://git@git-ssh.u1680832.nyat.app:31411/weichen/Agent-System-Dev.git;目标分支:main;R0(initial_base_sha)= 0be23f9a4d002a977de2998f687bc8555c3edb63
|
||||
- 工作区:/home/weichen/projects/Agent-System-Dev-wt-feature-ui-tokens-v3(worktree);分支:feature/ui-tokens-v3
|
||||
- 子仓分支:Agent-System-UI `feature/ui-tokens-v3`(自 b6be6e8=origin/main)、Agent-System-Frontend `feature/ui-tokens-v3`(自 c5e9356=origin/main)——与父分支同名同 R0 世系。
|
||||
- 授权与交付终点:用户已批准前端重设计方案(会话内定稿 v2)并指示"按方案开始实施,并完成此方案"。允许:本 worktree 与两个子仓的 feature 分支编辑、测试、提交、推送、建 PR;终点 = 四阶段全部实现并出 PR。未授权:改写历史、动分支保护、删归档、发版;PR 合入待用户确认。
|
||||
- **计划偏离声明(SHOULD 级,说明即备案)**:原方案四阶段各开一条分支;本卡改为四阶段在同一分支上按序提交。理由:单会话连续实施,四条堆叠分支 × 三仓的合并/同步开销远大于收益;阶段顺序(①视觉→②IA→③工件→④对话)不变,评审可按提交粒度进行。
|
||||
|
||||
## 目标与非目标
|
||||
|
||||
目标(对齐 ZCode zai-org/ZCode 的 DESIGN.md 与源码配方;用户拍板 8 项决策见会话记录):
|
||||
1. 立宪:Dev 根 `DESIGN.md`(美观/现代/简洁/易用四原则 → 可执行规则)+ AGENTS.md UI 门禁行 + 双仓守护测试(棘轮:裸色值/私有 keyframes/行内字号);
|
||||
2. 视觉 v3:@ui tokens v3(Zai Dark/Light 逐值复刻、--ui-font-size 字号标尺、圆角 12→8→6→4)、MotionKit(motion.css,mk-* 工具类,prefers-reduced-motion 降级)、Collapsible 原语(替代 `<details>`)、面板化三栏布局(圆角面板 + 4px 间隙)、主按钮单色反色、登录页重校;
|
||||
3. IA:对话优先(删左栏工件/代理/插件快捷条)、系统管理全屏分区(管理员专属:用户/插件/画像/插件工作区)、设置瘦身;
|
||||
4. 工件收敛:一个工件一个预览落位 + 一个下载;PreviewPlacer 单一 owner;AgentTracker 去双层窗;
|
||||
5. 对话流:ToolBlock 契约(运行态扫光非 spinner、autoOpen/autoCollapse 边沿、失败 tooltip)、过程折叠迁 Collapsible、"已工作 X 分 X 秒"摘要行、排队输入条。
|
||||
|
||||
非目标:不动后端契约与 API;不引 Radix/Tailwind/motion 等重依赖(@ui 保持零重依赖);浅色主题只校令牌不做逐页走查(阶段 4 后统一走查)。
|
||||
|
||||
## 同步记录
|
||||
|
||||
| 节点 | sync_base_sha | tested_head_sha | checked_at |
|
||||
|---|---|---|---|
|
||||
| 启动 | 0be23f9a4d002a977de2998f687bc8555c3edb63 | 0be23f9a4d002a977de2998f687bc8555c3edb63 | 2026-09-30T18:27:24Z |
|
||||
|
||||
## 结果与验证
|
||||
|
||||
- 结果:四阶段全部完成——①立宪(DESIGN.md + AGENTS.md UI 门禁 + 双仓守护测试棘轮)与视觉 v3(Zai Dark/Light 令牌、--fs-ui-* 字号标尺、圆角嵌套 12→8→6→4、面板化三栏、单色反色主按钮、MotionKit 动效层、Collapsible 原语);②IA 对话优先(左栏工件/代理/插件快捷条撤出、系统管理全屏视图 AdminZone(用户/画像/插件/插件工作区四分区,声明式注册表)、设置瘦身为个人偏好、workspaceEntries 角色收窄);③工件收敛(store.requestPreview 唯一预览入口 Command 语义、chip/行/卡片 doc 打开全部单落位单下载、AgentTracker 去双层窗);④对话流(ToolBlock 契约:运行态扫光/失败 tooltip/完成边沿收起/展开态记忆、四处 <details> 全部迁 Collapsible(守护禁 details)、live 行扫光 + 已工作计时、进行中诚实占位提示)。计划偏离(四阶段同分支按序提交)已在授权节声明。
|
||||
- 验证:最终组合 make test:go core/backend/agent-command 全 ok;frontend vitest 39 passed(6 文件,含宿主守护棘轮);ui vitest 66 passed(10 文件,含 collapsible/toolblock/design-guard);frontend npx tsc -b 干净、npm run build 成功;ui npx tsc --noEmit 干净。阶段边界各有一次全量 make test(输出见会话记录与提交 Evidence 段)。
|
||||
- 影响与剩余项:gitlink 推进 Agent-System-UI/Agent-System-Frontend 至 feature/ui-tokens-v3 头;@ui 新增 motion.css(宿主已接线)与 Collapsible/ToolBlock 导出,旧令牌名全保留(值收敛),插件无感。剩余:浅色主题逐页走查与管理员/普通用户双视角人工走查待 PR 评审阶段进行;真实后端队列(busy 语义改为排队)属后端演进,不在本卡。
|
||||
|
||||
## 闭合记录(card-autoclose 回填)
|
||||
|
||||
- 依据:merge e4b15fc7a05122f17eba62b17eb68991f78bc17a(PR #107)已包含于 origin/main,分支成果已落盘;本段为合入后回填。
|
||||
- 合并主题:Merge pull request 'Adopt the DESIGN.md constitution and land the four-phase UI redesign (gitlinks)' (#107) from feature/ui-tokens-v3 into main
|
||||
- 归档:随闭合移入 .task/archive/;任务执行期的过程证据见原任务记录与 PR。
|
||||
@@ -53,3 +53,5 @@
|
||||
| 同步前验收 | bb7f541d42dc6bd2609e59fed6760f22ed5c213e | dcb5bc0f727b5ceaf95b73b5ea514e63d9a89ae0 | 2026-09-30T17:17:46Z |
|
||||
| 同步前验收 | 978dc80817e7240f0a45a390ed2a6334041e84dd | 4eec51a954c1271729a3659544eb891f0181d8c2 | 2026-09-30T17:19:17Z |
|
||||
| 同步前验收 | 0be23f9a4d002a977de2998f687bc8555c3edb63 | 87cc6b3b555b65a2fc724bc310ff8fff10497fa3 | 2026-09-30T18:39:38Z |
|
||||
| 同步前验收 | 161fe684fc9ace176cae31a56a9337b2c0a70d59 | 29d24237f376fbf289b62c5e0df2c18679b90115 | 2026-09-30T19:19:50Z |
|
||||
| 同步前验收 | 3108a27be8195bffbf3f647a996a952dba73a142 | 6b78db5977508c819e29cddf66768c08fd93a97a | 2026-09-30T19:31:01Z |
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# feature/svc-remote-source 任务卡
|
||||
|
||||
任务主记录:<PR 链接,task-finish 时填写>;状态:进行中;owner:weichen
|
||||
任务主记录:Dev PR #102 https://git-home.u1680832.nyat.app:30319/weichen/Agent-System-Dev/pulls/102 ;状态:进行中;owner:weichen
|
||||
|
||||
## 基线与授权
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
| 节点 | sync_base_sha | tested_head_sha | checked_at |
|
||||
|---|---|---|---|
|
||||
| 启动 | f65d89e59b6974c7a5db63be0677d192bfaa7e9c | f65d89e59b6974c7a5db63be0677d192bfaa7e9c | 2026-09-30(手动 task-start 复刻) |
|
||||
| 同步前验收 | 4c4071e5d8e256dd8f82ba9c74efa1effd1e9df3 | (合并提交) | 2026-10-01T04:10:00Z |
|
||||
|
||||
## 结果与验证
|
||||
|
||||
|
||||
@@ -3,6 +3,15 @@
|
||||
本仓开发遵循 Development-Guidelines(见 `deps/development-guidelines`,gitlink 固定版本):
|
||||
核心规则与术语见其 `core/`,按任务触发阅读 `standards/` 专题;日常交付走 `workflows/delivery.md`。
|
||||
|
||||
## UI 设计门禁(强制)
|
||||
|
||||
- 本仓一切界面生成/修改**先读根目录 `DESIGN.md`**(四原则:美观、现代、简洁、易用),
|
||||
再动手;违反视为设计系统缺陷,不是风格偏好。
|
||||
- 颜色/圆角/字号只消费 `@ui/tokens.css` 令牌(字号走 `--fs-ui-*` 标尺);动效只用
|
||||
`@ui/motion.css` 的 `mk-*` 工具类;折叠一律用 `@ui` Collapsible 原语,禁止 `<details>`。
|
||||
- 守护测试(UI 仓与 Frontend 仓各一份 `design-guard.test.ts`)以棘轮拦截新增裸色值、
|
||||
私有 `@keyframes` 与行内字号;改风格 = `DESIGN.md` + 令牌文件同 PR 成对修改。
|
||||
|
||||
## 任务启动门禁(强制)
|
||||
|
||||
- 任务启动或恢复后,**第一次写操作前**运行 `make precheck` 并附完整输出;verdict 为
|
||||
|
||||
@@ -0,0 +1,190 @@
|
||||
# Agent-System-Dev 设计系统(DESIGN.md)
|
||||
|
||||
写给 Agent 与人:在本仓生成或修改任何 UI 之前,先遵循本文,再发明新的视觉规则。
|
||||
违反本文视为**设计系统缺陷**,不是风格偏好。
|
||||
|
||||
四原则:**美观、现代、简洁、易用**。每条规则都是四原则在某一维度上的可执行化。
|
||||
|
||||
参照体系:ZCode(zai-org/ZCode)开源仓的 DESIGN.md、`packages/ui/src/styles.css`
|
||||
主题真值与动效配方。本文的色板、字号标尺、圆角层级、动效参数均逐条对照其源码校准。
|
||||
|
||||
---
|
||||
|
||||
## 1. 产品性格
|
||||
|
||||
Agent-System-Dev 是桌面优先、Web 兼容的 AI 工作台。界面应**冷静、高密度、可操作**,而非装饰性的。
|
||||
|
||||
为长会话、高信息密度、可读的对话与工具输出、键盘驱动的工作流而设计。
|
||||
|
||||
避免:营销式大留白、默认渐变装饰、大面积品牌色铺底、背景/卡片/浮层层次含混。
|
||||
|
||||
## 2. 主题
|
||||
|
||||
- 用户可选主题:跟随系统 / 浅色 / 深色。实现为 `:root[data-theme='dark' | 'light']`。
|
||||
- 深色基准为 Zai Dark 复刻;浅色基准为 Zai Light。**令牌唯一来源:`@ui/tokens.css`**。
|
||||
- 禁止在组件里出现裸色值(hex/rgb 字面量);一切颜色经语义令牌消费。
|
||||
守护测试(`design-guard.test.ts`)以基线棘轮拦截新增裸值。
|
||||
|
||||
### 2.1 表面阶梯(层次靠背景阶梯,不是描边堆叠)
|
||||
|
||||
| 令牌 | 深色 (Zai Dark) | 浅色 (Zai Light) | 用途 |
|
||||
|---|---|---|---|
|
||||
| `--bg-inset` | `#101010` | `#ececee` | 窗口间隙(面板化布局的"底座")、代码底 |
|
||||
| `--bg` | `#161616` | `#f8f8f8` | 应用底、主区背景 |
|
||||
| `--bg-panel` | `#202020` | `#ffffff` | 侧栏/面板/头部 |
|
||||
| `--bg-raised` | `#2b2b2b` | `#ffffff` | 卡片、输入、菜单、浮层 |
|
||||
| `--bg-hover` | `rgba(255,255,255,.05)` | `rgba(13,13,13,.05)` | 通用悬停 |
|
||||
| `--bg-active` | `rgba(255,255,255,.10)` | `rgba(13,13,13,.08)` | 选中态 |
|
||||
|
||||
### 2.2 边框(发丝三档)
|
||||
|
||||
`--border-soft: rgba(255,255,255,.06)` / `--border: rgba(255,255,255,.10)` /
|
||||
`--border-strong: rgba(255,255,255,.15)`(浅色对应 13,13,13 的 .08/.10/.16)。
|
||||
边框只做轮廓;选中优先用 `--bg-active` 填充而非换边框色。
|
||||
|
||||
### 2.3 文本
|
||||
|
||||
`--text`(主读文本,深 `#d4d4d4` / 浅 `#262626`)、`--text-dim`(62%)、`--text-faint`(38%)。
|
||||
用文本层级制造信息密度,先于增加更多边框或颜色。
|
||||
|
||||
### 2.4 强调与语义色
|
||||
|
||||
- 交互强调蓝:`--accent`(深 `#4099ff` / 浅 `#0b7fff`)。**只用于**链接、选中指示、聚焦环、
|
||||
进行中指示;不做大面积铺底、不做主按钮底色。
|
||||
- 主按钮:单色系反色——`--primary`(深 `#ffffff` / 浅 `#0d0d0d`)配 `--primary-foreground`
|
||||
(反向黑/白)。品牌色保持克制。
|
||||
- 语义:`--ok #46bf72`、`--warn #ff8a30`、`--err #ff5c5c`(浅色 `#1e8a3e/#e07b00/#e03131`)。
|
||||
语义色只表语义;确认等待类统一绿色语言,不用红/橙装饰。
|
||||
|
||||
## 3. 字号标尺(唯一字号体系)
|
||||
|
||||
全局唯一可调变量 `--ui-font-size`(默认 14px),派生:
|
||||
|
||||
| 令牌 | 公式 | 默认 | 角色 |
|
||||
|---|---|---|---|
|
||||
| `--fs-ui-xl` | +4px | 18 | 阅读标题 h1 |
|
||||
| `--fs-ui-lg` | +2px | 16 | 阅读标题 h2 |
|
||||
| `--fs-ui-base` | = | 14 | 正文、常用按钮、区块标题 |
|
||||
| `--fs-ui-caption` | −1px | 13 | 紧凑辅助文案 |
|
||||
| `--fs-ui-sm` | −2px | 12 | 次要信息、行内代码 |
|
||||
| `--fs-ui-xs` | −4px | 10 | 徽标、快捷键、极弱元数据 |
|
||||
|
||||
规则:UI 组件一律用标尺令牌;禁止行内 `font-size` 数值与 Tailwind 式任意字号
|
||||
(守护测试棘轮拦截)。用户调字号只改 `--ui-font-size`,不改根字号;图标、间距、圆角不随字号缩放。
|
||||
例外:代码/Diff/终端/文档正文用独立阅读字号(等宽 12–12.5px、文档 13.5px)。
|
||||
|
||||
字体:`--font` 系统栈优先(-apple-system/PingFang SC…);路径、命令、代码、快捷键用 `--mono`。
|
||||
|
||||
## 4. 间距
|
||||
|
||||
基数 4px。节奏:4(图标与文字)→ 8(控件内边距/行内间隙)→ 12(紧凑列表行)→
|
||||
16(卡片/面板标准内边距)→ 20–24(大区块/对话框内部)。用少量重复间距,不用任意值。
|
||||
|
||||
## 5. 圆角(按嵌套层级,不按组件重要性)
|
||||
|
||||
| 令牌 | 值 | 用途 |
|
||||
|---|---|---|
|
||||
| `--radius-xs` | 4 | 最内层(嵌在 6px 控件里的小元素) |
|
||||
| `--radius-sm` | 6 | 基础控件(嵌套时降档)、chip |
|
||||
| `--radius` | 8 | 输入、菜单壳、工具行 |
|
||||
| `--radius-lg` | 12 | 卡片、气泡、工具调用块、**面板(见 §6)** |
|
||||
| `--radius-xl` | 16 | 对话框、全屏视图壳 |
|
||||
| `--radius-full` | 999 | 仅用于刻意的胶囊/圆形 |
|
||||
|
||||
嵌套降档:12 → 8 → 6 → 4;最内层不低于 4。对话框内部重新从 12 起算。
|
||||
禁止任意值。`rounded-full` 不因组件类型自动获得。
|
||||
|
||||
## 6. 布局:面板化工作区
|
||||
|
||||
桌面工作区 = 浮在 `--bg-inset` 底座上的**独立圆角面板**(左栏 / 对话主区 / 右栏):
|
||||
面板 `--radius-lg` 圆角 + `--border-soft` 发丝描边,面板之间 **4px 间隙**,应用四周 4px 内衬。
|
||||
拖拽分隔条:透明 4px 命中区,hover/拖拽时显示 2px `--border-strong` 指示线(两端留出面板圆角)。
|
||||
|
||||
层次规则:左栏与右栏用 `--bg-panel`,对话主区用 `--bg`;窄屏可退化为通栏。
|
||||
信息架构原则:**对话优先**——普通用户仅凭对话即可完成全部工作,右栏纯辅助、可完全收起;
|
||||
系统管理类视图独立成区(管理员专属入口),不混入用户设置。
|
||||
|
||||
## 7. 海拔(Elevation)
|
||||
|
||||
克制深度,分层顺序:背景对比 > 发丝描边 > 浮层阴影 > 注意级阴影。
|
||||
|
||||
- 基础层:无阴影,靠背景阶梯;
|
||||
- 卡片:无阴影或 `--shadow-md` 极弱;
|
||||
- 菜单/弹层:`--shadow-md`;
|
||||
- Toast/重要浮卡:`--shadow-lg`。
|
||||
|
||||
禁止用大软阴影做普通布局分层。
|
||||
|
||||
## 8. 动效(MotionKit)
|
||||
|
||||
动效解释状态变化,不装饰屏幕。快、低调;禁止长弹簧(仅点赞/完成反馈可用一次过冲)。
|
||||
**全部动效经 `@ui/motion.css` 的 `mk-*` 工具类消费;组件文件禁止私有 `@keyframes`**
|
||||
(守护测试拦截)。所有动效在 `prefers-reduced-motion: reduce` 下禁用。
|
||||
|
||||
| 工具类 | 参数 | 用途 |
|
||||
|---|---|---|
|
||||
| `mk-stream-in` | opacity,900ms `cubic-bezier(0.16,1,0.3,1)` | 流式内容进场(可按 token 加延迟) |
|
||||
| `mk-rise-in` | fade + translateY(4px),180ms | 列表行/卡片进入 |
|
||||
| `mk-waterfall` | clip-path + translateY(−12px),260ms `cubic-bezier(0.22,1,0.36,1)` | 建议列表逐条瀑布 |
|
||||
| `mk-col` / `mk-col-inner` | 高度 grid-rows 300ms ease-in-out + 内层 fade | 折叠/展开(@ui Collapsible) |
|
||||
| `mk-sweep` | 文字扫光,300% 渐变 4s linear | **运行态指示(不用 spinner)** |
|
||||
| `mk-breathe` | opacity .4↔1,1.2s | 状态点呼吸 |
|
||||
| `mk-pop` | 450ms `cubic-bezier(0.34,1.56,0.64,1)` | 点赞/完成过冲反馈(唯一弹性) |
|
||||
| `mk-shimmer` | 背景扫光 1.8s linear | 加载占位 |
|
||||
| `mk-overlay-in` / `mk-modal-in` | 140ms fade / 160ms fade+translateY(6px)+scale(.99) | 弹层进入 |
|
||||
| `mk-panel-grow` | flex-grow 过渡 200ms ease-out(用时挂、transitionend 摘) | 面板开合 |
|
||||
|
||||
## 9. 组件范式
|
||||
|
||||
### 9.1 工具调用块(ToolBlock 契约,参照 ZCode ToolLayout)
|
||||
|
||||
单行摘要:`[图标][工具名][主文本][副文本][状态词]`。
|
||||
- 运行中:工具名文字扫光(`mk-sweep`),状态词最弱色;**不用旋转图标**(长流式期省渲染);
|
||||
- 完成默认收起;`autoOpen`(如 edit/read 类)运行时自动展开一次,用户可再收起;
|
||||
- 完成边沿(running→completed)自动收起一次,不阻止用户手动展开;
|
||||
- 展开态按 id 记忆,切回不丢;
|
||||
- 失败不强制展开:状态词虚线下划线,hover tooltip 给报错,支持一键复制;
|
||||
- 内容懒渲染,收起后延迟卸载(300ms,配合高度动画)。
|
||||
|
||||
### 9.2 折叠(@ui Collapsible 原语)
|
||||
|
||||
一切折叠区(过程输出、长回复、任务卡)用它:外壳高度动画 + 内容 fade 两层分离、
|
||||
300ms 延迟卸载、展开态记忆。禁止再写 `<details>` 折叠。
|
||||
|
||||
### 9.3 一个动作一个入口
|
||||
|
||||
同一对象只允许一个主要操作路径:一个工件 = 一个预览落位(右栏)+ 一个下载按钮;
|
||||
全屏 overlay 是唯一"大窗"形态。禁止弹窗套弹窗。
|
||||
|
||||
### 9.4 按钮
|
||||
|
||||
Primary(`--primary` 反色)、Ghost(透明,hover 出表面)、Danger(语义红)。
|
||||
同一面板内保持动作层级,不把每个动作都升为 primary。
|
||||
|
||||
### 9.5 菜单与浮层
|
||||
|
||||
菜单壳 `--radius`(8) + `--shadow-md` + 紧凑行(`--radius-sm` 6 的行、`--fs-ui-base`);
|
||||
菜单是紧凑动作行,不是迷你按钮。交互浮层必须盖过被动 tooltip。
|
||||
|
||||
## 10. 信息架构与文案
|
||||
|
||||
- 普通用户界面只暴露任务与对话;插件/代理/治理类能力归系统管理区(管理员可见)。
|
||||
- 右栏收起时功能零缺失(D31:弹层不承载唯一步骤,每个操作另有对话内路径)。
|
||||
- 中文文案:动宾结构、不带句点结尾;快捷键用 `⌘`/kbd 标注。
|
||||
- 布局容忍长文本与翻译膨胀,不依赖截断作为唯一生存手段。
|
||||
|
||||
## 11. 禁止清单(守护测试覆盖项)
|
||||
|
||||
1. 组件/样式文件里新增裸色值(hex/rgb 字面量)——走令牌;
|
||||
2. 组件文件里私有 `@keyframes`——走 MotionKit;
|
||||
3. TSX 行内 `font-size`——走字号标尺;
|
||||
4. 运行态用旋转 spinner——用 `mk-sweep`/`mk-breathe`;
|
||||
5. 弹窗套弹窗;
|
||||
6. 同一对象出现第二个下载/预览入口;
|
||||
7. `<details>` 折叠——用 Collapsible。
|
||||
|
||||
## 12. 演进规则
|
||||
|
||||
改风格 = `DESIGN.md` 与 `tokens.css`(必要时 `motion.css`)**同 PR 成对修改**,附前后值对照;
|
||||
不允许只改代码不改文档。新增视觉规则先问:它属于结构、表面、交互还是状态?
|
||||
拿不准时,选更安静的方案、用更强的信息层级。
|
||||
+1
-1
Submodule modules/backend updated: a067d08c9b...3c08f9008e
+1
-1
Submodule modules/core updated: 90b57477bb...1b04a34bbc
+1
-1
Submodule modules/documents updated: f5aa687cb1...8ee5d5c467
+1
-1
Submodule modules/frontend updated: c5e93568a5...c17ac2413f
+1
-1
Submodule modules/ui updated: b6be6e89ef...d271a9d3c0
Reference in New Issue
Block a user