diff --git a/CHANGELOG.md b/CHANGELOG.md
index 2eea2ed..7aa0bca 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -10,6 +10,14 @@
- 完成态推荐动作现在会优先直接回到具体对象:可以直接打开当前账号、刷新当前跟踪对象、进入任务详情、打开复盘、继续录制维护,或回到刚才编辑的 Agent。
- 前端推荐动作属性映射补齐了 `account_id / tracked_account_id / assistant_id`,当前运行卡、结果卡、最近动作卡和后续落点入口都能保住真实对象上下文。
- 治理回归新增了“围绕当前账号继续分析”这条链路,锁住主 Agent 完成态结果必须返回 `select-account` 和真实 `account_id`。
+- NAS live collector 已完成热同步重建,线上验证通过:主 Agent 围绕当前账号继续推进时,完成态结果会直接返回 `select-account` 和目标 `account_id`,不再退回泛化的 `goto-discovery`。
+
+### Live 文案与兜底反馈继续收口
+
+- 首页 `重点账号 / 对标` 在没有跟踪对象时,提示改成 `先挑一个重点对象开始跟进`,不再用“等待接入”去误导成系统没接好。
+- 存储与录制相关说明改成真实 live 口径,聚焦“有文件时直接露出可回看入口”,不再写成“如果已经接入”这类半成品措辞。
+- 前端兜底动作提示改成 `暂未识别当前动作`,明确说明这是前端尚未识别精确落点,而不是产品能力没做完。
+- 平台运行时兜底文案也改成 `当前还没有可展示的工作台视图`,避免把非工作台平台一律描述成“待接入”。
### OneLiner 直接执行结果补齐精确落点
diff --git a/web/storyforge-web-v4/assets/app.js b/web/storyforge-web-v4/assets/app.js
index 7810eb5..ca8b0a2 100644
--- a/web/storyforge-web-v4/assets/app.js
+++ b/web/storyforge-web-v4/assets/app.js
@@ -3102,7 +3102,7 @@ function buildDashboardOverviewTabs(project, stats, trackedAccounts) {
key: "focus_accounts",
label: "重点账号 / 对标",
value: formatNumber(trackedAccounts.length || appState.accounts.length),
- hint: trackedAccounts.length ? "优先看变化最多的对象" : "等待接入重点对象",
+ hint: trackedAccounts.length ? "优先看变化最多的对象" : "先挑一个重点对象开始跟进",
active: appState.dashboardOverviewTab === "focus_accounts"
},
{
@@ -4042,7 +4042,7 @@ function renderStorageStatusPanel() {
` : ""}
最近录像文件
-
如果 live-recorder 已接入,这里会继续显示当前租户的录像文件入口。
+
当前租户一旦写入新录像文件,这里会直接露出最近可回看的录制结果。
${renderStorageFileCards(
liveRecorderFiles,
@@ -11799,7 +11799,7 @@ document.addEventListener("click", async (event) => {
document.getElementById("selected-account-anchor")?.scrollIntoView({ behavior: "smooth", block: "start" });
return;
}
- rememberAction("动作待接入", `前端还没有处理动作「${name}」,当前仍可继续通过 OneLiner 对话承接。`, "orange");
+ rememberAction("暂未识别当前动作", `前端还没有识别动作「${name}」的精确落点,当前上下文仍可继续交给 OneLiner 承接。`, "orange");
renderAll();
return;
}
diff --git a/web/storyforge-web-v4/assets/storyforge-platform-runtime.js b/web/storyforge-web-v4/assets/storyforge-platform-runtime.js
index 2819f8d..1a5ba13 100644
--- a/web/storyforge-web-v4/assets/storyforge-platform-runtime.js
+++ b/web/storyforge-web-v4/assets/storyforge-platform-runtime.js
@@ -118,7 +118,7 @@
function getPendingWorkbenchReason(platform) {
const meta = getPlatformMeta(platform);
- return meta?.pendingText || `${platformLabel(platform)}工作台待接入`;
+ return meta?.pendingText || `${platformLabel(platform)}当前还没有可展示的工作台视图`;
}
function getAccountWorkbenchGate(account) {
diff --git a/web/storyforge-web-v4/index.html b/web/storyforge-web-v4/index.html
index 7f43aa3..fc543f8 100644
--- a/web/storyforge-web-v4/index.html
+++ b/web/storyforge-web-v4/index.html
@@ -164,7 +164,7 @@
- 待接入参考内容
+ 待处理参考内容
14
diff --git a/web/storyforge-web-v4/tests/workbench-pages.test.mjs b/web/storyforge-web-v4/tests/workbench-pages.test.mjs
index 3348b69..7779eb5 100644
--- a/web/storyforge-web-v4/tests/workbench-pages.test.mjs
+++ b/web/storyforge-web-v4/tests/workbench-pages.test.mjs
@@ -1095,6 +1095,10 @@ test("live-first workbench flows no longer advertise stale missing-capability pl
assert.doesNotMatch(APP, /当前实例还没有开放 OneLiner 动作执行器/);
assert.doesNotMatch(APP, /当前实例还没有开放平台技能验收接口/);
assert.doesNotMatch(APP, /当前实例未提供/);
+ assert.doesNotMatch(APP, /等待接入重点对象/);
+ assert.doesNotMatch(APP, /动作待接入/);
+ assert.match(APP, /先挑一个重点对象开始跟进/);
+ assert.match(APP, /暂未识别当前动作/);
});
test("declared static workbench actions are wired into explicit handlers", () => {