feat(vscode): 设置面板支持 brainstorm 续聊提示词并切换 grill-with-docs

This commit is contained in:
2026-07-31 06:50:38 +08:00
parent d68603ee06
commit 532f9e09b5
12 changed files with 45 additions and 5 deletions
@@ -26,7 +26,7 @@ object DefaultPrompts {
"工单 body 末尾必须包含 <!-- spx:nonce={nonce} -->。创建完工单立即停下汇报,不要擅自实施。" "工单 body 末尾必须包含 <!-- spx:nonce={nonce} -->。创建完工单立即停下汇报,不要擅自实施。"
private const val FALLBACK_BRAINSTORM_CONTINUE = private const val FALLBACK_BRAINSTORM_CONTINUE =
"/superpowers:brainstorming 讨论下 {issueNumber} 号工单。注意:不要 git checkout / 不要写代码 / 不要建 PR," + "/grill-with-docs 讨论下 {issueNumber} 号工单。注意:不要 git checkout / 不要写代码 / 不要建 PR," +
"只讨论需求与 spec/plan,用 spx issue marker 更新 marker。" "只讨论需求与 spec/plan,用 spx issue marker 更新 marker。"
private const val FALLBACK_IMPLEMENT_PLAN = private const val FALLBACK_IMPLEMENT_PLAN =
@@ -1,4 +1,4 @@
/superpowers:brainstorming 讨论下 {issueNumber} 号工单 /grill-with-docs 讨论下 {issueNumber} 号工单
用tea命令找工单 用tea命令找工单
@@ -1,4 +1,4 @@
/superpowers:brainstorming 讨论下 {issueNumber} 号工单 /grill-with-docs 讨论下 {issueNumber} 号工单
用tea命令找工单 用tea命令找工单
+1 -1
View File
@@ -1,4 +1,4 @@
/superpowers:brainstorming 讨论下 {issueNumber} 号工单 /grill-with-docs 讨论下 {issueNumber} 号工单
用tea命令找工单 用tea命令找工单
+2
View File
@@ -859,6 +859,7 @@ export class KanbanWebviewPanel {
tokenSaved: false, tokenSaved: false,
webhookPort: s.webhookPort, webhookPort: s.webhookPort,
brainstormPrompt: s.brainstormPrompt, brainstormPrompt: s.brainstormPrompt,
brainstormContinuePrompt: s.brainstormContinuePrompt,
implementPlanPrompt: s.implementPlanPrompt, implementPlanPrompt: s.implementPlanPrompt,
autoReview: s.autoReview, autoReview: s.autoReview,
reviewPrompt: s.reviewPrompt, reviewPrompt: s.reviewPrompt,
@@ -926,6 +927,7 @@ export class KanbanWebviewPanel {
tokenSaved: false, tokenSaved: false,
webhookPort: s.webhookPort, webhookPort: s.webhookPort,
brainstormPrompt: s.brainstormPrompt, brainstormPrompt: s.brainstormPrompt,
brainstormContinuePrompt: s.brainstormContinuePrompt,
implementPlanPrompt: s.implementPlanPrompt, implementPlanPrompt: s.implementPlanPrompt,
autoReview: s.autoReview, autoReview: s.autoReview,
reviewPrompt: s.reviewPrompt, reviewPrompt: s.reviewPrompt,
+4
View File
@@ -20,6 +20,7 @@ export async function handleSettingsSave(panel: KanbanWebviewPanel, payload: {
token: string token: string
webhookPort: number webhookPort: number
brainstormPrompt: string brainstormPrompt: string
brainstormContinuePrompt: string
implementPlanPrompt: string implementPlanPrompt: string
autoReview: boolean autoReview: boolean
reviewPrompt: string reviewPrompt: string
@@ -89,6 +90,7 @@ export async function handleSettingsSave(panel: KanbanWebviewPanel, payload: {
tokenSaved: !!oldToken, tokenSaved: !!oldToken,
webhookPort: payload.webhookPort, webhookPort: payload.webhookPort,
brainstormPrompt: payload.brainstormPrompt || prev.brainstormPrompt, brainstormPrompt: payload.brainstormPrompt || prev.brainstormPrompt,
brainstormContinuePrompt: payload.brainstormContinuePrompt || prev.brainstormContinuePrompt,
implementPlanPrompt: payload.implementPlanPrompt || prev.implementPlanPrompt, implementPlanPrompt: payload.implementPlanPrompt || prev.implementPlanPrompt,
autoReview: payload.autoReview, autoReview: payload.autoReview,
reviewPrompt: payload.reviewPrompt || prev.reviewPrompt, reviewPrompt: payload.reviewPrompt || prev.reviewPrompt,
@@ -112,6 +114,7 @@ export async function handleSettingsSave(panel: KanbanWebviewPanel, payload: {
await saveSettings(panel.context, { await saveSettings(panel.context, {
webhookPort: payload.webhookPort, webhookPort: payload.webhookPort,
brainstormPrompt: payload.brainstormPrompt, brainstormPrompt: payload.brainstormPrompt,
brainstormContinuePrompt: payload.brainstormContinuePrompt,
implementPlanPrompt: payload.implementPlanPrompt, implementPlanPrompt: payload.implementPlanPrompt,
autoReview: payload.autoReview, autoReview: payload.autoReview,
reviewPrompt: payload.reviewPrompt, reviewPrompt: payload.reviewPrompt,
@@ -209,6 +212,7 @@ export async function handleEditSettingsRequest(panel: KanbanWebviewPanel): Prom
tokenSaved, tokenSaved,
webhookPort: s.webhookPort, webhookPort: s.webhookPort,
brainstormPrompt: s.brainstormPrompt, brainstormPrompt: s.brainstormPrompt,
brainstormContinuePrompt: s.brainstormContinuePrompt,
implementPlanPrompt: s.implementPlanPrompt, implementPlanPrompt: s.implementPlanPrompt,
autoReview: s.autoReview, autoReview: s.autoReview,
reviewPrompt: s.reviewPrompt, reviewPrompt: s.reviewPrompt,
+2
View File
@@ -54,6 +54,7 @@ export type ExtensionToWebview
tokenSaved: boolean tokenSaved: boolean
webhookPort: number webhookPort: number
brainstormPrompt: string brainstormPrompt: string
brainstormContinuePrompt: string
implementPlanPrompt: string implementPlanPrompt: string
autoReview: boolean autoReview: boolean
reviewPrompt: string reviewPrompt: string
@@ -122,6 +123,7 @@ export type WebviewToExtension
token: string token: string
webhookPort: number webhookPort: number
brainstormPrompt: string brainstormPrompt: string
brainstormContinuePrompt: string
implementPlanPrompt: string implementPlanPrompt: string
autoReview: boolean autoReview: boolean
reviewPrompt: string reviewPrompt: string
+1 -1
View File
@@ -24,7 +24,7 @@ import { seedCommitProfilePath } from '../cc/commitProfile'
*/ */
const FALLBACK_BRAINSTORM_PROMPT = `/goal 我现在有这样一个需求 {userRequest},你用 spx 命令创建 gitea 工单。工单 body 末尾必须包含 <!-- spx:nonce={nonce} -->。创建完工单立即停下汇报,不要擅自实施。` const FALLBACK_BRAINSTORM_PROMPT = `/goal 我现在有这样一个需求 {userRequest},你用 spx 命令创建 gitea 工单。工单 body 末尾必须包含 <!-- spx:nonce={nonce} -->。创建完工单立即停下汇报,不要擅自实施。`
const FALLBACK_BRAINSTORM_CONTINUE_PROMPT = `/superpowers:brainstorming 讨论下 {issueNumber} 号工单。注意:不要 git checkout / 不要写代码 / 不要建 PR,只讨论需求与 spec/plan,用 spx issue marker 更新 marker。` const FALLBACK_BRAINSTORM_CONTINUE_PROMPT = `/grill-with-docs 讨论下 {issueNumber} 号工单。注意:不要 git checkout / 不要写代码 / 不要建 PR,只讨论需求与 spec/plan,用 spx issue marker 更新 marker。`
const FALLBACK_IMPLEMENT_PLAN_PROMPT = `/goal 使用子代理全程绿灯实施 @{planFile},发起 PR 时在 body 中包含 "Closes #{issueNumber}"。严禁合并 PR。` const FALLBACK_IMPLEMENT_PLAN_PROMPT = `/goal 使用子代理全程绿灯实施 @{planFile},发起 PR 时在 body 中包含 "Closes #{issueNumber}"。严禁合并 PR。`
+1
View File
@@ -453,6 +453,7 @@ export function App() {
initialTokenSaved={settings?.tokenSaved ?? false} initialTokenSaved={settings?.tokenSaved ?? false}
initialWebhookPort={settings?.webhookPort ?? 17421} initialWebhookPort={settings?.webhookPort ?? 17421}
initialBrainstormPrompt={settings?.brainstormPrompt ?? ''} initialBrainstormPrompt={settings?.brainstormPrompt ?? ''}
initialBrainstormContinuePrompt={settings?.brainstormContinuePrompt ?? ''}
initialImplementPlanPrompt={settings?.implementPlanPrompt ?? ''} initialImplementPlanPrompt={settings?.implementPlanPrompt ?? ''}
initialAutoReview={settings?.autoReview ?? true} initialAutoReview={settings?.autoReview ?? true}
initialReviewPrompt={settings?.reviewPrompt ?? ''} initialReviewPrompt={settings?.reviewPrompt ?? ''}
@@ -19,6 +19,7 @@ interface SubmitValues {
token: string token: string
webhookPort: number webhookPort: number
brainstormPrompt: string brainstormPrompt: string
brainstormContinuePrompt: string
implementPlanPrompt: string implementPlanPrompt: string
autoReview: boolean autoReview: boolean
reviewPrompt: string reviewPrompt: string
@@ -63,6 +64,7 @@ export interface SettingsModalProps {
initialTokenSaved: boolean initialTokenSaved: boolean
initialWebhookPort: number initialWebhookPort: number
initialBrainstormPrompt: string initialBrainstormPrompt: string
initialBrainstormContinuePrompt: string
initialImplementPlanPrompt: string initialImplementPlanPrompt: string
initialAutoReview: boolean initialAutoReview: boolean
initialReviewPrompt: string initialReviewPrompt: string
@@ -141,6 +143,7 @@ export function SettingsModal({
initialTokenSaved, initialTokenSaved,
initialWebhookPort, initialWebhookPort,
initialBrainstormPrompt, initialBrainstormPrompt,
initialBrainstormContinuePrompt,
initialImplementPlanPrompt, initialImplementPlanPrompt,
initialAutoReview, initialAutoReview,
initialReviewPrompt, initialReviewPrompt,
@@ -173,6 +176,7 @@ export function SettingsModal({
const [token, setToken] = useState('') const [token, setToken] = useState('')
const [webhookPort, setWebhookPort] = useState<string>(String(initialWebhookPort)) const [webhookPort, setWebhookPort] = useState<string>(String(initialWebhookPort))
const [brainstormPrompt, setBrainstormPrompt] = useState(initialBrainstormPrompt) const [brainstormPrompt, setBrainstormPrompt] = useState(initialBrainstormPrompt)
const [brainstormContinuePrompt, setBrainstormContinuePrompt] = useState(initialBrainstormContinuePrompt)
const [implementPlanPrompt, setImplementPlanPrompt] = useState(initialImplementPlanPrompt) const [implementPlanPrompt, setImplementPlanPrompt] = useState(initialImplementPlanPrompt)
const [autoReview, setAutoReview] = useState(initialAutoReview) const [autoReview, setAutoReview] = useState(initialAutoReview)
const [reviewPrompt, setReviewPrompt] = useState(initialReviewPrompt) const [reviewPrompt, setReviewPrompt] = useState(initialReviewPrompt)
@@ -207,6 +211,7 @@ export function SettingsModal({
setToken('') setToken('')
setWebhookPort(String(initialWebhookPort)) setWebhookPort(String(initialWebhookPort))
setBrainstormPrompt(initialBrainstormPrompt) setBrainstormPrompt(initialBrainstormPrompt)
setBrainstormContinuePrompt(initialBrainstormContinuePrompt)
setImplementPlanPrompt(initialImplementPlanPrompt) setImplementPlanPrompt(initialImplementPlanPrompt)
setAutoReview(initialAutoReview) setAutoReview(initialAutoReview)
setReviewPrompt(initialReviewPrompt) setReviewPrompt(initialReviewPrompt)
@@ -290,6 +295,7 @@ export function SettingsModal({
token: trimmedToken, token: trimmedToken,
webhookPort: portNum, webhookPort: portNum,
brainstormPrompt, brainstormPrompt,
brainstormContinuePrompt,
implementPlanPrompt, implementPlanPrompt,
autoReview, autoReview,
reviewPrompt, reviewPrompt,
@@ -745,6 +751,25 @@ export function SettingsModal({
/> />
</Field> </Field>
<Field
label="头脑风暴续聊提示词"
hint={(
<>
{' '}
<code>{'{issueNumber}'}</code>
/ spec/plan
</>
)}
>
<textarea
rows={8}
value={brainstormContinuePrompt}
onChange={e => setBrainstormContinuePrompt(e.target.value)}
className={`${inputClass} resize-y font-mono`}
/>
</Field>
<Field <Field
label="实施提示词" label="实施提示词"
hint={( hint={(
+4
View File
@@ -28,6 +28,7 @@ export interface SettingsValues {
token: string token: string
webhookPort: number webhookPort: number
brainstormPrompt: string brainstormPrompt: string
brainstormContinuePrompt: string
implementPlanPrompt: string implementPlanPrompt: string
autoReview: boolean autoReview: boolean
reviewPrompt: string reviewPrompt: string
@@ -58,6 +59,7 @@ export interface SettingsOverlayState {
tokenSaved: boolean tokenSaved: boolean
webhookPort: number webhookPort: number
brainstormPrompt: string brainstormPrompt: string
brainstormContinuePrompt: string
implementPlanPrompt: string implementPlanPrompt: string
autoReview: boolean autoReview: boolean
reviewPrompt: string reviewPrompt: string
@@ -279,6 +281,7 @@ export function useIssues(): UseIssuesResult {
token: values.token, token: values.token,
webhookPort: values.webhookPort, webhookPort: values.webhookPort,
brainstormPrompt: values.brainstormPrompt, brainstormPrompt: values.brainstormPrompt,
brainstormContinuePrompt: values.brainstormContinuePrompt,
implementPlanPrompt: values.implementPlanPrompt, implementPlanPrompt: values.implementPlanPrompt,
autoReview: values.autoReview, autoReview: values.autoReview,
reviewPrompt: values.reviewPrompt, reviewPrompt: values.reviewPrompt,
@@ -626,6 +629,7 @@ export function useIssues(): UseIssuesResult {
tokenSaved: msg.tokenSaved, tokenSaved: msg.tokenSaved,
webhookPort: msg.webhookPort, webhookPort: msg.webhookPort,
brainstormPrompt: msg.brainstormPrompt, brainstormPrompt: msg.brainstormPrompt,
brainstormContinuePrompt: msg.brainstormContinuePrompt,
implementPlanPrompt: msg.implementPlanPrompt, implementPlanPrompt: msg.implementPlanPrompt,
autoReview: msg.autoReview, autoReview: msg.autoReview,
reviewPrompt: msg.reviewPrompt, reviewPrompt: msg.reviewPrompt,
+2
View File
@@ -69,6 +69,7 @@ export type ExtensionToWebview
tokenSaved: boolean tokenSaved: boolean
webhookPort: number webhookPort: number
brainstormPrompt: string brainstormPrompt: string
brainstormContinuePrompt: string
implementPlanPrompt: string implementPlanPrompt: string
autoReview: boolean autoReview: boolean
reviewPrompt: string reviewPrompt: string
@@ -137,6 +138,7 @@ export type WebviewToExtension
token: string token: string
webhookPort: number webhookPort: number
brainstormPrompt: string brainstormPrompt: string
brainstormContinuePrompt: string
implementPlanPrompt: string implementPlanPrompt: string
autoReview: boolean autoReview: boolean
reviewPrompt: string reviewPrompt: string