优化项目名称显示与命名链路 #248
Reference in New Issue
Block a user
Delete Branch "feat/project-name"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
优化项目名称显示与命名链路
关联:#245
按 Issue 中的需求文档实现:
请先补齐自动项目名称的 fail-closed 校验:严格限制 2–16 个中文字符,并拒绝 Markdown、URL、路径、凭据、引号及解释文本;同时增加对应边界测试。当前实现会把非法模型输出写入 manifest,未满足 PR 的回退验收条件。
@@ -16,0 +26,4 @@pub(crate) media_type: Option<String>,}pub(crate) fn normalize_suggested_project_name(value: &str) -> Option<String> {[P1] 这里仅校验单行、至少 2 字符和通用的 80 字符上限,但上面的命名契约要求输出为 2–16 个中文字符且拒绝 Markdown、URL、路径、凭据、引号和解释文本;例如
**foo**、https://example.com或 17–80 字符结果会被直接写入 manifest,非法模型输出不会回退默认名。请在 Rust 侧补齐严格的 fail-closed 校验,并为这些边界补测试。@@ -16,0 +17,4 @@const AUTOMATIC_PROJECT_NAME_MAX_ATTACHMENTS: usize = 20;const AUTOMATIC_PROJECT_NAME_MAX_OUTPUT_TOKENS: u32 = 64;const AUTOMATIC_PROJECT_NAME_SYSTEM_PROMPT: &str ="你是项目命名助手。只根据用户输入提炼一个原创、简短、中文的项目名称;不要使用知名作品名、路径、URL、凭据、Markdown、引号或解释。输出必须有且只有一行纯文本,长度为 2 到 16 个字符。信息不足时输出:未命名游戏原型";提示词放到上级目录中的prompts文件夹里
@@ -16,0 +21,4 @@#[derive(Clone, Debug, Deserialize, Eq, PartialEq)]#[serde(rename_all = "camelCase", deny_unknown_fields)]pub(crate) struct AutomaticProjectNameAttachment {为什么要单独创建一个取名用的附件结构体
已去除附件结构体,只使用用户提示词(单个string)生成项目标题
New commits pushed, approval review dismissed automatically according to repository settings
审查 head sha:86867e9903a94d10ccd36a50a5a2f4ebfa780b7a
已检查自动项目创建、项目名称提炼与规范化、项目重命名、TypeScript/Rust 合约及相关测试。未发现明确问题。
验证:git diff --check、TypeScript typecheck、shared-contracts 定向测试通过;Tauri 测试构建通过。
审查 head sha:86867e9903a94d10ccd36a50a5a2f4ebfa780b7a
结论:未发现明确问题。已检查自动项目创建、项目名称提炼与规范化、项目重命名、TypeScript/Rust 合约及相关测试。
验证:git diff --check、TypeScript typecheck、shared-contracts 定向测试通过;Tauri 测试构建通过。