✨ feat(vscode): 七份提示词统一走 Handlebars,头脑风暴三档合一

- 模板引擎换成 Handlebars(noEscape,提示词是纯文本不能被转义),单花括号写法彻底退场
- brainstorm-continue / brainstorm-continue-prototype 两份并进 brainstorm.md,
  用 {{#if issueNumber}} 分新建 / 续聊,续聊里用 {{#if prototypeFile}} 嵌原型段落,
  设置面板对应的两个 textarea 一并删掉
- 模板上下文 = 工单 state JSON 全量字段 + issueNumber / userRequest / nonce /
  planFile / prNumber / prRef,以后模板想用新字段不用改扩展代码
- 各会话入口共用一条 state 读取路径,读失败只记 warn 按空状态继续,不拦开会话
- 升级后首次启动把存量自定义提示词迁到双花括号并合并成一份,改写前把
  settings.json 备份成 settings.json.bak-<时间戳>,迁移动作全写日志
- 装 handlebars 时给 vsce 传递依赖的老 semver 加 trustPolicyExclude 豁免,
  否则 no-downgrade 策略卡住整个装包

Claude-Session: https://claude.ai/code/session_01Kgmb1LvrPmFX3NoUDB4zZC
This commit is contained in:
cruldra committed 2026-09-15 00:44:28 +08:00
1 parent efeac8c978
commit 7bac5c8b03
28 files changed
+853 -424

No files matched your search

+10 -4
View File
@@ -1007,8 +1007,6 @@ export class KanbanWebviewPanel {
webhookPort: s.webhookPort,
webhookSecret: s.webhookSecret,
brainstormPrompt: s.brainstormPrompt,
brainstormContinuePrompt: s.brainstormContinuePrompt,
prototypeRefPrompt: s.prototypeRefPrompt,
implementPlanPrompt: s.implementPlanPrompt,
autoReview: s.autoReview,
reviewPrompt: s.reviewPrompt,
@@ -1099,8 +1097,6 @@ export class KanbanWebviewPanel {
webhookPort: s.webhookPort,
webhookSecret: s.webhookSecret,
brainstormPrompt: s.brainstormPrompt,
brainstormContinuePrompt: s.brainstormContinuePrompt,
prototypeRefPrompt: s.prototypeRefPrompt,
implementPlanPrompt: s.implementPlanPrompt,
autoReview: s.autoReview,
reviewPrompt: s.reviewPrompt,
@@ -1147,6 +1143,16 @@ export class KanbanWebviewPanel {
return { source: entry?.source ?? 'gitea', number: issueNumber, externalId: entry?.externalId }
}
/**
* 提示词里用的工单号:youtrack 卡片的看板号是合成的,必须换成可读 id
* (LXF-12),否则 cc 照着一个不存在的号去查工单。
*/
// internal: handler 模块访问
issueRefLabel(issueNumber: number): string {
const ref = this.refFor(issueNumber)
return ref.externalId ?? String(ref.number)
}
/**
* 记下一张增量上板的卡的归属。webhook 单卡 append 不走批量加载,漏了这一步
* 归属表里就没有它,写门禁查不到会当成我的工单放行。