From: Codebuddy Date: Thu, 10 Sep 2026 08:07:06 +0000 (+0800) Subject: feat: 注入并展示会话行为严格准则(7条)到所有会话 X-Git-Url: http://acesimba.cloud/gitweb/?a=commitdiff_plain;h=b519a6596281bf8147c235fe99de1156b37a0ff6;p=codebuddy-web.git feat: 注入并展示会话行为严格准则(7条)到所有会话 - backend/agent_guidelines.md: 替换为用户要求的7条严格行为准则 (严格按描述执行/不擅自建议设计分析优化/不改UI标准/不新增字体字号颜色样式/ 无情感传达只报结果/结果后不给进阶建议),经 --append-system-prompt 注入每个会话 - backend/app.py: 新增 GET /api/guidelines 返回准则文本,供前端初始化界面展示 - frontend/index.html: 打开任意会话窗口时 showGuidelinesBanner() 在终端初始化 界面打印准则横幅(沿用现有连接横幅样式,不新增任何UI元素) 覆盖:新建会话 + 已有会话重连/重启均按新准则;前端每次开窗口可见。 --- diff --git a/backend/agent_guidelines.md b/backend/agent_guidelines.md index dafa519..0ec0940 100644 --- a/backend/agent_guidelines.md +++ b/backend/agent_guidelines.md @@ -1,9 +1,11 @@ -你通过 Codebuddy Web Console 运行。在收到用户的问题或实现需求时,必须遵守以下流程;在获得用户明确确认之前,不得修改任何代码 / 配置,也不得 commit / push: +你通过 Codebuddy Web Console 运行。在本会话中,你必须严格执行以下准则: -1. 先复述并总结用户的问题或需求,确认自己理解无误(包括要点、边界、期望行为)。 -2. 如有歧义或多种实现方式,点明可能的原因、影响范围与关键决策点。 -3. 给出执行方案(改哪些文件、怎么改、是否需重启服务、有无副作用 / 风险)。 -4. 将 1–3 一次性输出,并向用户确认。 -5. 仅在用户明确确认后,才开始实施、测试、提交。 +1. 请严格按照我的描述执行! +2. 描述有任何不清楚的,和既有逻辑冲突或不足的,你可以提出来,我来回复(不得自行臆测或替我补全需求)。 +3. 不得擅自进行任何建议、任何设计、任何分析、任何优化! +4. 不得擅自修改任何 UI 标准。 +5. 不得使用当前 UI 上不存在的字体、字号、颜色、UI 样式等(除非我特别说明);交互操作必须保持和现有页面交互行为逻辑一致。 +6. 回复中不需要任何安慰、表扬、夸奖、赞叹、同情和自我批评等情感传达;只反馈执行结果,或执行中遇到不理解的问题时列出问题。深度思考和任务执行过程中不返回上述信息,只返回执行结果。 +7. 回复任务结果后,不需要进行任何进阶建议。 -例外:纯问答、只读分析,或用户明确说“直接改 / 先改了再说”的情况。 +在打开任何会话窗口时,本准则会在初始化界面展示,你必须严格遵守。 diff --git a/backend/app.py b/backend/app.py index 5e3884d..efb66ab 100644 --- a/backend/app.py +++ b/backend/app.py @@ -553,6 +553,11 @@ async def favicon(): headers={"Cache-Control": "public, max-age=86400"}, ) +# 会话行为准则:注入每个会话(--append-system-prompt),同时供前端初始化界面展示 +@app.get("/api/guidelines") +async def api_guidelines(): + return JSONResponse({"ok": True, "guidelines": _load_agent_guidelines()}) + # 设计说明 / 帮助页(独立静态 HTML,可从应用内“❓ 帮助”打开,支持打印为 PDF) HELP_FILE = FRONTEND_DIR / "help.html" diff --git a/frontend/index.html b/frontend/index.html index 46c2a3d..cadbd49 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -1081,10 +1081,26 @@ body { position: fixed; top: 0; left: 0; right: 0; bottom: 0; width: 100%; heigh updateTitle(); show('terminal'); initTerminal(); + showGuidelinesBanner(); connectWS(); loadModelSelect(); } + // 打开任意会话窗口时,在终端初始化界面打印行为准则(与现有连接横幅同形式,不新增任何 UI 元素) + async function showGuidelinesBanner() { + try { + const res = await fetch(API + '/api/guidelines', { headers: authHeaders() }); + if (!res.ok) return; + const d = await res.json(); + const g = (d.guidelines || '').trim(); + if (!g) return; + term.writeln('\x1b[36m╔════════════════════ 会话行为准则(全程严格遵守)════════════════════\x1b[0m'); + g.split('\n').forEach(line => term.writeln('\x1b[90m' + line + '\x1b[0m')); + term.writeln('\x1b[36m╚════════════════════════════════════════════════════════════════════\x1b[0m'); + term.writeln(''); + } catch (e) { /* 展示失败不影响会话使用 */ } + } + // 切换模型:保存到任务,并重启会话以应用 // 注意:监听器在脚本加载时只绑定一次(见下方初始化区),不放在 showTerminalMode 内, // 避免重复进入终端页导致重复绑定 / 未绑定,从而引起“点了没反应”。