feat: focus built-in AI prompts

This commit is contained in:
tianma-if committed 2026-08-15 21:56:17 +08:00
1 parent b57c2edc64
commit 4b43756be2
12 files changed
+167 -163

No files matched your search

+1 -1
View File
@@ -209,7 +209,7 @@ With MCP, EdgeEver can also connect to tools such as Notion databases and Feishu
Open **Profile → AI Integrations** to add one or more OpenAI-compatible, Anthropic Messages, or Google Gemini services with your own Base URLs and API keys. Third-party API relays are also supported. Each service can contain multiple models: discover them from the provider's model-list endpoint or enter a model ID manually. A service-level switch temporarily makes all of its models unavailable, while the workspace default selects the model used for note AI.
Note AI supports summarizing, extracting key points and tasks, rewriting, proofreading, translating, shortening, expanding, simplifying, changing tone, continuing a note, and custom instructions across Web, Android, and iOS. Editors on all three platforms can also run AI directly on selected text and replace only that selection. Results stream into a reviewable draft that you can retry, refine with a follow-up instruction, append, or explicitly accept as a replacement. Translation uses a language picker whose default follows the interface language: Chinese defaults to English, while English defaults to Simplified Chinese.
Note AI includes six focused built-in prompts across Web, Android, and iOS: summarize, translate, polish, make concise, convert to Xiaohongshu style, and convert to X (Twitter) style. You can add custom prompts for more specialized workflows. Editors on all three platforms can also run AI directly on selected text and replace only that selection. Results stream into a reviewable draft that you can retry, refine with a follow-up instruction, append, or explicitly accept as a replacement. Translation uses a language picker whose default follows the interface language: Chinese defaults to English, while English defaults to Simplified Chinese.
AI requests are sent by the EdgeEver server rather than directly by the browser or native client. Model credentials are isolated by personal workspace and encrypted before being stored. Standard deployments automatically derive an AI-specific encryption key from the existing instance authentication secret, so no additional deployment variable is required. The same AI business code runs in Cloudflare Workers and the planned Docker/Bun runtime.
+1 -1
View File
@@ -211,7 +211,7 @@ Remote MCP 端点支持无状态的 `2026-07-28` 协议,同时继续兼容现
进入**个人中心 → AI 集成**,可以使用自己的 Base URL 和 API Key 添加一个或多个 OpenAI 兼容协议、Anthropic Messages 或 Google Gemini 云端服务,也支持第三方中转站。每个服务都能配置多个模型:既可以从服务的模型列表接口自动发现,也可以手动输入模型 ID。服务级开关会让该服务下的全部模型暂时不可用,工作区默认模型则决定笔记 AI 实际使用哪个模型。
当前 Web、Android 与 iOS 的 AI 功能支持总结、提炼要点、提取待办、改写校对、翻译、缩短、扩写、简化、改变语气、继续写作与自定义指令。三个平台的编辑器都可以直接处理选中内容,并只替换对应选区。模型结果会先作为可审查的流式草稿展示,用户可以重试、继续提出调整要求、追加内容,或明确接受后替换原文。翻译使用带默认值的语言下拉框:中文界面默认译为英语,英文界面默认译为简体中文。
当前 Web、Android 与 iOS 内置 6 个常用提示词:总结、翻译、润色、精炼表达、转为小红书风格与转为推特风格;更细分的场景可自行添加提示词。三个平台的编辑器都可以直接处理选中内容,并只替换对应选区。模型结果会先作为可审查的流式草稿展示,用户可以重试、继续提出调整要求、追加内容,或明确接受后替换原文。翻译使用带默认值的语言下拉框:中文界面默认译为英语,英文界面默认译为简体中文。
AI 请求统一由 EdgeEver 服务端发出,不会由浏览器或原生客户端直接携带模型密钥。模型凭据按个人工作区隔离并加密保存;标准部署会自动从已有的实例认证 Secret 派生 AI 专用加密密钥,不需要增加任何部署变量。Cloudflare Worker 与未来的 Docker/Bun 运行时共用同一套 AI 业务代码。
+48 -2
View File
@@ -118,6 +118,52 @@ const createApp = ({ currentAuth = auth, demoMode = false } = {}) => {
};
describe("AI prompt template routes", () => {
test("keeps the starter catalog focused on six common workflows", () => {
expect(DEFAULT_AI_PROMPT_SEEDS.map((prompt) => [prompt.key, prompt.name])).toEqual([
["summarize", "总结"],
["translate", "翻译"],
["improve-writing", "润色"],
["make-shorter", "精炼表达"],
["rewrite-proofread", "转为小红书风格"],
["simplify-language", "转为推特风格"],
]);
});
test("retires legacy system prompts even when their old copy was edited", () => {
const sqlite = new Database(":memory:");
const migrations = globSync("migrations/*.sql").sort();
for (const migration of migrations.filter((path) => path < "migrations/0027")) {
sqlite.exec(readFileSync(migration, "utf8"));
}
sqlite.query("INSERT INTO workspaces (id, name, is_personal) VALUES (?, ?, 1)")
.run("ws_migration", "Migration workspace");
for (const migration of migrations.filter(
(path) => path >= "migrations/0027" && path < "migrations/0032",
)) {
sqlite.exec(readFileSync(migration, "utf8"));
}
sqlite.query(
`UPDATE ai_prompt_templates
SET instruction = ?, instruction_customized = 1
WHERE workspace_id = ? AND seed_key = ?`,
).run("Keep my specialized proofreading prompt.", "ws_migration", "rewrite-proofread");
sqlite.exec(readFileSync("migrations/0032_limit_default_ai_prompts.sql", "utf8"));
const rows = sqlite.query(
`SELECT seed_key, action, name, instruction
FROM ai_prompt_templates
WHERE workspace_id = ?
ORDER BY name`,
).all("ws_migration");
expect(rows).toHaveLength(6);
expect(rows.filter((row) => row.seed_key !== null).map((row) => row.seed_key).sort()).toEqual(
DEFAULT_AI_PROMPT_SEEDS.map((prompt) => prompt.key).sort(),
);
expect(rows.find((row) => row.instruction === "Keep my specialized proofreading prompt.")).toBeUndefined();
});
test("validates create and update payloads", () => {
expect(AiPromptTemplateCreateSchema.safeParse({
name: "Weekly digest",
@@ -291,8 +337,8 @@ describe("AI prompt template routes", () => {
environment,
);
const todosId = defaultAiPromptId(workspaceId, "extract-todos");
await app.request(`/api/v1/ai/prompts/${todosId}`, { method: "DELETE" }, environment);
const conciseId = defaultAiPromptId(workspaceId, "make-shorter");
await app.request(`/api/v1/ai/prompts/${conciseId}`, { method: "DELETE" }, environment);
const second = await app.request(
"/api/v1/ai/prompts/restore-defaults",
+6 -6
View File
@@ -328,15 +328,15 @@ export const testAiModel = async (config: {
*/
export const aiActionInstructions: Record<Exclude<AiAction, "translate" | "change-tone" | "custom">, string> = {
summarize: getDefaultAiPromptSeed("summarize")!.instruction,
"extract-key-points": getDefaultAiPromptSeed("extract-key-points")!.instruction,
"extract-todos": getDefaultAiPromptSeed("extract-todos")!.instruction,
"rewrite-proofread": getDefaultAiPromptSeed("rewrite-proofread")!.instruction,
"extract-key-points": "提取笔记中最重要的要点,用简洁的 Markdown 列表输出。保持原语言,不要添加原文没有的信息。",
"extract-todos": "从笔记中提取明确或隐含的可执行任务,用 Markdown 任务列表(- [ ])输出。保持原语言,不要编造任务。若没有可执行事项,用原文语言简短说明。",
"rewrite-proofread": "改写并校对完整笔记。修正拼写、语法、标点、清晰度与结构,不改变原意。保持原语言与 Markdown 格式。只返回完整修订稿。",
"improve-writing": getDefaultAiPromptSeed("improve-writing")!.instruction,
"fix-spelling-grammar": getDefaultAiPromptSeed("fix-spelling-grammar")!.instruction,
"fix-spelling-grammar": "只修正拼写、语法与标点。不要改变语气、结构或含义。保持原语言与 Markdown 格式。只返回修正后的内容。",
"make-shorter": getDefaultAiPromptSeed("make-shorter")!.instruction,
"make-longer": getDefaultAiPromptSeed("make-longer")!.instruction,
"make-longer": "扩写内容,补充有用的说明与更顺畅的过渡,但不要编造事实。保持原语言与有用的 Markdown 格式。只返回扩写后的内容。",
"simplify-language": getDefaultAiPromptSeed("simplify-language")!.instruction,
"continue-writing": getDefaultAiPromptSeed("continue-writing")!.instruction,
"continue-writing": "从笔记结束处自然续写。只返回新增续写内容,不要重复原文。保持原语言与 Markdown 风格。",
};
const AI_PROMPT_OUTPUT_INSTRUCTION =
@@ -404,10 +404,10 @@ struct AiAssistantSheet: View {
case .summarize: env.preferences.t("总结", en: "Summarize")
case .extractKeyPoints: env.preferences.t("提炼要点", en: "Key points")
case .extractTodos: env.preferences.t("提取待办", en: "Extract tasks")
case .rewriteProofread: env.preferences.t("改写与校对", en: "Rewrite & proofread")
case .makeShorter: env.preferences.t("缩短内容", en: "Make shorter")
case .rewriteProofread: env.preferences.t("转为小红书风格", en: "Convert to Xiaohongshu style")
case .makeShorter: env.preferences.t("精炼表达", en: "Make concise")
case .makeLonger: env.preferences.t("扩写内容", en: "Make longer")
case .simplifyLanguage: env.preferences.t("简化表达", en: "Simplify language")
case .simplifyLanguage: env.preferences.t("转为推特风格", en: "Convert to X (Twitter) style")
case .changeTone: env.preferences.t("调整语气", en: "Change tone")
case .translate: env.preferences.t("翻译", en: "Translate")
case .continueWriting: env.preferences.t("继续写作", en: "Continue writing")
@@ -441,30 +441,22 @@ struct AiAssistantSheet: View {
private var availableActions: [AiAction] {
if isSelection {
return [
.improveWriting,
.fixSpellingGrammar,
.makeShorter,
.makeLonger,
.simplifyLanguage,
.changeTone,
.translate,
.summarize,
.extractKeyPoints,
.extractTodos,
.translate,
.improveWriting,
.makeShorter,
.rewriteProofread,
.simplifyLanguage,
.custom,
]
}
return [
.summarize,
.extractKeyPoints,
.extractTodos,
.rewriteProofread,
.makeShorter,
.makeLonger,
.simplifyLanguage,
.changeTone,
.translate,
.continueWriting,
.improveWriting,
.makeShorter,
.rewriteProofread,
.simplifyLanguage,
.custom,
]
}
@@ -15,6 +15,7 @@ import {
AI_SELECTED_TEXT_ACTIONS,
AI_TARGET_LANGUAGES,
AI_TONES,
AI_WHOLE_NOTE_ACTIONS,
canReplaceAiSource,
docToMarkdown,
getDefaultAiTargetLanguage,
@@ -1319,13 +1320,13 @@ const MobileSelectionAiPanel = ({
summarize: english ? "Summarize" : "总结",
"extract-key-points": english ? "Key points" : "提炼要点",
"extract-todos": english ? "Extract tasks" : "提取待办",
"rewrite-proofread": english ? "Rewrite & proofread" : "改写与校对",
"rewrite-proofread": english ? "Convert to Xiaohongshu style" : "转为小红书风格",
translate: english ? "Translate" : "翻译",
"improve-writing": english ? "Improve writing" : "改进写作",
"fix-spelling-grammar": english ? "Fix spelling & grammar" : "修正拼写与语法",
"make-shorter": english ? "Make shorter" : "缩短内容",
"make-shorter": english ? "Make concise" : "精炼表达",
"make-longer": english ? "Make longer" : "扩写内容",
"simplify-language": english ? "Simplify language" : "简化表达",
"simplify-language": english ? "Convert to X (Twitter) style" : "转为推特风格",
"change-tone": english ? "Change tone" : "调整语气",
"continue-writing": english ? "Continue writing" : "继续写作",
custom: english ? "Custom instruction" : "自定义要求",
@@ -1412,7 +1413,8 @@ const MobileSelectionAiPanel = ({
{prompts.map((prompt) => <option key={prompt.id} value={`${AI_PROMPT_OPTION_PREFIX}${prompt.id}`}>{prompt.name}</option>)}
<option value="custom">{actionLabels.custom}</option>
</>
: AI_SELECTED_TEXT_ACTIONS.map((action) => <option key={action} value={action}>{actionLabels[action]}</option>)}
: (panel.selection.wholeNote ? AI_WHOLE_NOTE_ACTIONS : AI_SELECTED_TEXT_ACTIONS)
.map((action) => <option key={action} value={action}>{actionLabels[action]}</option>)}
</select>
</label>
{panel.parameterKind === "target-language" ? (
@@ -78,12 +78,12 @@ export const MobileAiAssistantModal = ({
summarize: tr("总结", "Summarize"),
"extract-key-points": tr("提炼要点", "Key points"),
"extract-todos": tr("提取待办", "Extract tasks"),
"rewrite-proofread": tr("改写与校对", "Rewrite & proofread"),
"rewrite-proofread": tr("转为小红书风格", "Convert to Xiaohongshu style"),
"improve-writing": tr("改进写作", "Improve writing"),
"fix-spelling-grammar": tr("修正拼写与语法", "Fix spelling & grammar"),
"make-shorter": tr("缩短内容", "Make shorter"),
"make-shorter": tr("精炼表达", "Make concise"),
"make-longer": tr("扩写内容", "Make longer"),
"simplify-language": tr("简化表达", "Simplify language"),
"simplify-language": tr("转为推特风格", "Convert to X (Twitter) style"),
"change-tone": tr("调整语气", "Change tone"),
translate: tr("翻译", "Translate"),
"continue-writing": tr("继续写作", "Continue writing"),
@@ -0,0 +1,50 @@
PRAGMA foreign_keys = ON;
-- Retire the old system catalog completely. Rows created by users have no
-- seed_key and are unaffected, while edited legacy presets also leave the
-- catalog instead of lingering as unexpected custom prompts.
DELETE FROM ai_prompt_templates
WHERE seed_key IN (
'extract-key-points', 'extract-todos', 'rewrite-proofread',
'fix-spelling-grammar', 'make-shorter', 'make-longer',
'simplify-language', 'change-tone', 'continue-writing'
);
INSERT OR IGNORE INTO ai_prompt_templates (
id, workspace_id, seed_key, action, parameter_kind, result_mode,
name, description, instruction,
name_customized, description_customized, instruction_customized,
created_at, updated_at
)
SELECT
id || '_aiprompt_make-shorter', id, 'make-shorter', 'make-shorter', 'none', 'both',
'精炼表达', '删去重复与冗余,让表达更简洁有力',
'精炼内容,删除重复、空话和不必要的修饰,合并可以合并的句子,使表达简洁、清晰、有力。保留所有关键事实、观点与原意,不要添加新信息。保持原语言与有用的 Markdown 格式。只返回精炼后的内容。',
0, 0, 0, strftime('%Y-%m-%dT%H:%M:%fZ', 'now'), strftime('%Y-%m-%dT%H:%M:%fZ', 'now')
FROM workspaces;
INSERT OR IGNORE INTO ai_prompt_templates (
id, workspace_id, seed_key, action, parameter_kind, result_mode,
name, description, instruction,
name_customized, description_customized, instruction_customized,
created_at, updated_at
)
SELECT
id || '_aiprompt_rewrite-proofread', id, 'rewrite-proofread', 'rewrite-proofread', 'none', 'both',
'转为小红书风格', '改写成自然、有吸引力的小红书笔记',
'将内容改写成适合小红书发布的笔记:生成吸引人的标题,使用自然、有亲和力的口吻、短段落和清晰层次,可适量加入贴合语义的 Emoji,并在结尾给出 3–8 个相关话题标签。保留原文的关键事实与观点,不夸大效果,不编造经历、数据或结论。只返回可直接发布的内容。',
0, 0, 0, strftime('%Y-%m-%dT%H:%M:%fZ', 'now'), strftime('%Y-%m-%dT%H:%M:%fZ', 'now')
FROM workspaces;
INSERT OR IGNORE INTO ai_prompt_templates (
id, workspace_id, seed_key, action, parameter_kind, result_mode,
name, description, instruction,
name_customized, description_customized, instruction_customized,
created_at, updated_at
)
SELECT
id || '_aiprompt_simplify-language', id, 'simplify-language', 'simplify-language', 'none', 'both',
'转为推特风格', '改写成简洁、有观点的推文或推文串',
'将内容改写成适合推特发布的文本:开头直接抓住重点,表达简洁、有观点、易读。内容较短时输出一条推文;无法在一条内保留关键信息时,输出带序号的精简推文串。只在确有帮助时使用少量标签。保留原文事实与立场,不制造噱头或编造信息。只返回可直接发布的内容。',
0, 0, 0, strftime('%Y-%m-%dT%H:%M:%fZ', 'now'), strftime('%Y-%m-%dT%H:%M:%fZ', 'now')
FROM workspaces;
+7 -15
View File
@@ -29,30 +29,22 @@ export const AI_PROMPT_RESULT_MODES = ["append", "replace", "both"] as const;
export type AiPromptResultMode = (typeof AI_PROMPT_RESULT_MODES)[number];
export const AI_SELECTED_TEXT_ACTIONS: readonly AiAction[] = [
"improve-writing",
"fix-spelling-grammar",
"make-shorter",
"make-longer",
"simplify-language",
"change-tone",
"translate",
"summarize",
"extract-key-points",
"extract-todos",
"translate",
"improve-writing",
"make-shorter",
"rewrite-proofread",
"simplify-language",
"custom",
];
export const AI_WHOLE_NOTE_ACTIONS: readonly AiAction[] = [
"summarize",
"extract-key-points",
"extract-todos",
"rewrite-proofread",
"translate",
"continue-writing",
"improve-writing",
"make-shorter",
"make-longer",
"rewrite-proofread",
"simplify-language",
"change-tone",
"custom",
];
+25 -103
View File
@@ -84,45 +84,6 @@ export const DEFAULT_AI_PROMPT_SEEDS: readonly AiPromptSeed[] = [
].join(""),
},
),
seed(
{ key: "extract-key-points", action: "extract-key-points", parameterKind: "none", resultMode: "append" },
{
name: "提炼要点",
description: "提取最重要观点,输出简洁要点列表",
instruction: "提取笔记中最重要的要点,用简洁的 Markdown 列表输出。保持原语言,不要添加原文没有的信息。",
},
{
name: "Key points",
description: "Extract the most important ideas as a concise list",
instruction: "Extract the note's most important points as a concise Markdown bullet list. Preserve its language and do not add information that is not present in the note.",
},
),
seed(
{ key: "extract-todos", action: "extract-todos", parameterKind: "none", resultMode: "append" },
{
name: "提取待办",
description: "识别可执行任务,生成任务清单",
instruction: "从笔记中提取明确或隐含的可执行任务,用 Markdown 任务列表(- [ ])输出。保持原语言,不要编造任务。若没有可执行事项,用原文语言简短说明。",
},
{
name: "Extract tasks",
description: "Identify actionable work and produce a task list",
instruction: "Extract explicit or implied actionable tasks from the note as a Markdown task list using '- [ ]'. Preserve its language and do not invent tasks. If there are no actionable tasks, say so briefly in the note's language.",
},
),
seed(
{ key: "rewrite-proofread", action: "rewrite-proofread", parameterKind: "none", resultMode: "both" },
{
name: "改写与校对",
description: "润色全文并校对语法、标点与结构",
instruction: "改写并校对完整笔记。修正拼写、语法、标点、清晰度与结构,不改变原意。保持原语言与 Markdown 格式。只返回完整修订稿。",
},
{
name: "Rewrite & proofread",
description: "Polish the complete note and correct language and structure",
instruction: "Rewrite and proofread the complete note. Correct spelling, grammar, punctuation, clarity, and structure without changing its meaning. Preserve its language and Markdown formatting. Return the complete revised note only.",
},
),
seed(
{ key: "translate", action: "translate", parameterKind: "target-language", resultMode: "both" },
{
@@ -139,92 +100,53 @@ export const DEFAULT_AI_PROMPT_SEEDS: readonly AiPromptSeed[] = [
seed(
{ key: "improve-writing", action: "improve-writing", parameterKind: "none", resultMode: "both" },
{
name: "改进表达",
description: "提升表达清晰度与流畅度",
instruction: "改进文字的清晰度、流畅度与用词,不改变原意。保持原语言与有用的 Markdown 格式。只返回改进后的内容。",
name: "润色",
description: "校正语言并提升文字的清晰度与流畅度",
instruction: "润色内容,修正错别字、语法与标点,改善用词、句式、清晰度和流畅度,但不要改变原意或刻意缩短内容。保持原语言与有用的 Markdown 格式。只返回润色后的内容。",
},
{
name: "Improve writing",
description: "Improve clarity, flow, and word choice",
instruction: "Improve the writing for clarity, flow, and word choice without changing its meaning. Preserve its language and useful Markdown formatting. Return only the improved content.",
},
),
seed(
{ key: "fix-spelling-grammar", action: "fix-spelling-grammar", parameterKind: "none", resultMode: "both" },
{
name: "修正错别字与语法",
description: "只修正错别字、语法与标点",
instruction: "只修正拼写、语法与标点。不要改变语气、结构或含义。保持原语言与 Markdown 格式。只返回修正后的内容。",
},
{
name: "Fix spelling & grammar",
description: "Correct spelling, grammar, and punctuation only",
instruction: "Correct spelling, grammar, and punctuation only. Do not change the voice, structure, or meaning. Preserve its language and Markdown formatting. Return only the corrected content.",
name: "Polish",
description: "Correct the language and improve clarity and flow",
instruction: "Polish the content by correcting spelling, grammar, and punctuation and improving word choice, sentence structure, clarity, and flow. Do not change its meaning or deliberately shorten it. Preserve its language and useful Markdown formatting. Return only the polished content.",
},
),
seed(
{ key: "make-shorter", action: "make-shorter", parameterKind: "none", resultMode: "both" },
{
name: "缩短内容",
description: "删减冗余,保留关键事实",
instruction: "把内容改写得更简洁。去掉重复与废话,保留每一个重要事实。保持原语言与有用的 Markdown 格式。只返回缩短后的内容。",
name: "精炼表达",
description: "删去重复与冗余,让表达更简洁有力",
instruction: "精炼内容,删除重复、空话和不必要的修饰,合并可以合并的句子,使表达简洁、清晰、有力。保留所有关键事实、观点与原意,不要添加新信息。保持原语言与有用的 Markdown 格式。只返回精炼后的内容。",
},
{
name: "Make shorter",
description: "Remove repetition while preserving important facts",
instruction: "Rewrite the content more concisely. Remove repetition and filler while preserving every important fact. Preserve its language and useful Markdown formatting. Return only the shortened content.",
name: "Make concise",
description: "Remove repetition and make the writing concise and direct",
instruction: "Refine the content by removing repetition, filler, and unnecessary modifiers and by combining sentences where useful. Make it concise, clear, and direct while preserving every key fact, claim, and the original meaning. Do not add new information. Preserve its language and useful Markdown formatting. Return only the refined content.",
},
),
seed(
{ key: "make-longer", action: "make-longer", parameterKind: "none", resultMode: "both" },
{ key: "rewrite-proofread", action: "rewrite-proofread", parameterKind: "none", resultMode: "both" },
{
name: "扩写内容",
description: "在不编造事实的前提下扩写说明",
instruction: "扩写内容,补充有用的说明与更顺畅的过渡,但不要编造事实。保持原语言与有用的 Markdown 格式。只返回扩写后的内容。",
name: "转为小红书风格",
description: "改写成自然、有吸引力的小红书笔记",
instruction: "将内容改写成适合小红书发布的笔记:生成吸引人的标题,使用自然、有亲和力的口吻、短段落和清晰层次,可适量加入贴合语义的 Emoji,并在结尾给出 3–8 个相关话题标签。保留原文的关键事实与观点,不夸大效果,不编造经历、数据或结论。只返回可直接发布的内容。",
},
{
name: "Make longer",
description: "Expand the explanation without inventing facts",
instruction: "Expand the content with useful explanation and smoother transitions, but do not invent facts. Preserve its language and useful Markdown formatting. Return only the expanded content.",
name: "Convert to Xiaohongshu style",
description: "Rewrite as a natural and engaging Xiaohongshu post",
instruction: "Rewrite the content as a Xiaohongshu-ready post. Add an engaging title, use a natural and approachable voice, short paragraphs, and clear structure, include a few contextually appropriate emoji, and end with 3–8 relevant hashtags. Preserve the source's key facts and claims without exaggerating results or inventing experiences, data, or conclusions. Return only the publishable post.",
},
),
seed(
{ key: "simplify-language", action: "simplify-language", parameterKind: "none", resultMode: "both" },
{
name: "简化表达",
description: "用更通俗易懂的语言改写",
instruction: "用清晰、平实、更好懂的语言改写内容。保持原意、原语言与有用的 Markdown 格式。只返回简化后的内容。",
name: "转为推特风格",
description: "改写成简洁、有观点的推文或推文串",
instruction: "将内容改写成适合推特发布的文本:开头直接抓住重点,表达简洁、有观点、易读。内容较短时输出一条推文;无法在一条内保留关键信息时,输出带序号的精简推文串。只在确有帮助时使用少量标签。保留原文事实与立场,不制造噱头或编造信息。只返回可直接发布的内容。",
},
{
name: "Simplify language",
description: "Rewrite in clearer, easier-to-understand language",
instruction: "Rewrite the content in clear, plain language that is easier to understand. Preserve its meaning, language, and useful Markdown formatting. Return only the simplified content.",
},
),
seed(
{ key: "change-tone", action: "change-tone", parameterKind: "tone", resultMode: "both" },
{
name: "改变语气",
description: "按指定语气重写,不改变含义",
instruction: "按用户指定的语气重写内容,不改变原意。保持原语言与有用的 Markdown 格式。只返回改写后的内容。",
},
{
name: "Change tone",
description: "Rewrite in a selected tone without changing the meaning",
instruction: "Rewrite the content in the tone specified by the user without changing its meaning. Preserve its language and useful Markdown formatting. Return only the rewritten content.",
},
),
seed(
{ key: "continue-writing", action: "continue-writing", parameterKind: "none", resultMode: "append" },
{
name: "继续写作",
description: "从笔记末尾自然续写",
instruction: "从笔记结束处自然续写。只返回新增续写内容,不要重复原文。保持原语言与 Markdown 风格。",
},
{
name: "Continue writing",
description: "Continue naturally from the end of the note",
instruction: "Continue writing naturally from where the note ends. Return only the new continuation, not the original content. Preserve its language and Markdown style.",
name: "Convert to X (Twitter) style",
description: "Rewrite as a concise, opinionated post or thread",
instruction: "Rewrite the content for X (Twitter): lead with the main point and make it concise, opinionated, and easy to scan. Return one post when the key information fits; otherwise return a compact numbered thread. Use hashtags sparingly and only when useful. Preserve the source's facts and position without manufacturing hype or information. Return only the publishable post or thread.",
},
),
];
+4 -4
View File
@@ -361,7 +361,7 @@ export const enUS = {
restoreDefaults: "Restore defaults",
restoreDefaultsHint: "Only re-adds deleted starter prompts. Edited starters and prompts you created stay as they are.",
restoreDefaultsConfirmTitle: "Restore default prompts?",
restoreDefaultsConfirmDescription: "Missing starter prompts (like Summarize and Key points) will be re-added. Edited starters and prompts you created will not be changed.",
restoreDefaultsConfirmDescription: "Missing starter prompts (like Summarize and Translate) will be re-added. Edited starters and prompts you created will not be changed.",
restoreDefaultsConfirm: "Restore",
restoreDefaultsDone: "Restored {{count}} default prompt(s).",
restoreDefaultsNone: "All default prompts are already present.",
@@ -408,13 +408,13 @@ export const enUS = {
summarize: "Summarize",
"extract-key-points": "Key points",
"extract-todos": "Extract tasks",
"rewrite-proofread": "Rewrite & proofread",
"rewrite-proofread": "Convert to Xiaohongshu style",
translate: "Translate",
"improve-writing": "Improve writing",
"fix-spelling-grammar": "Fix spelling & grammar",
"make-shorter": "Make shorter",
"make-shorter": "Make concise",
"make-longer": "Make longer",
"simplify-language": "Simplify language",
"simplify-language": "Convert to X (Twitter) style",
"change-tone": "Change tone",
"continue-writing": "Continue writing",
custom: "Custom instruction",
+4 -4
View File
@@ -361,7 +361,7 @@ export const zhCN = {
restoreDefaults: "恢复默认提示词",
restoreDefaultsHint: "仅补回已删除的预置项,不会覆盖你改过的内容,也不会删除你新建的提示词。",
restoreDefaultsConfirmTitle: "恢复默认提示词?",
restoreDefaultsConfirmDescription: "将补回缺失的预置提示词(如总结、提炼要点等)。你已编辑过的预置项与自行新建的提示词不会被改动。",
restoreDefaultsConfirmDescription: "将补回缺失的预置提示词(如总结、翻译等)。你已编辑过的预置项与自行新建的提示词不会被改动。",
restoreDefaultsConfirm: "恢复",
restoreDefaultsDone: "已恢复 {{count}} 条默认提示词。",
restoreDefaultsNone: "默认提示词都在,无需恢复。",
@@ -408,13 +408,13 @@ export const zhCN = {
summarize: "总结",
"extract-key-points": "提炼要点",
"extract-todos": "提取待办",
"rewrite-proofread": "改写与校对",
"rewrite-proofread": "转为小红书风格",
translate: "翻译",
"improve-writing": "改进表达",
"fix-spelling-grammar": "修正错别字与语法",
"make-shorter": "缩短内容",
"make-shorter": "精炼表达",
"make-longer": "扩写内容",
"simplify-language": "简化表达",
"simplify-language": "转为推特风格",
"change-tone": "改变语气",
"continue-writing": "继续写作",
custom: "自定义指令",