diff --git a/src/renderer/App.vue b/src/renderer/App.vue
index e6e5e6e..fdb7bd8 100644
--- a/src/renderer/App.vue
+++ b/src/renderer/App.vue
@@ -36,7 +36,10 @@
@@ -133,7 +136,7 @@ const statusLabel = computed(() => {
const menus = ref([
{ name: '新对话', index: '/', icon: 'plus' },
{ name: '知识空间', index: '/knowledge', icon: 'book' },
- { name: 'opencode对话', index: '/chat', icon: 'bot' },
+ // { name: 'opencode对话', index: '/chat', icon: 'bot' },
{ name: '发现设备', index: '/bonjour', icon: 'server' },
{ name: '测试页', index: '/test', icon: 'flask-conical' },
]);
@@ -168,8 +171,8 @@ async function onHistoryClick(item) {
}
// 跳转到对话页面
router.push({
- path: '/chat',
- query: { sessionId: item.id },
+ name: 'Chat',
+ params: { id: item.id },
});
}
diff --git a/src/renderer/router/index.js b/src/renderer/router/index.js
index 0293e84..a1788e3 100644
--- a/src/renderer/router/index.js
+++ b/src/renderer/router/index.js
@@ -8,7 +8,7 @@ const routes = [
meta: { title: '首页' },
},
{
- path: '/chat',
+ path: '/chat/:id?',
name: 'Chat',
component: () => import('@/views/chat/ChatView.vue'),
meta: { title: 'OpenCode 对话' },
diff --git a/src/renderer/views/chat/ChatView.vue b/src/renderer/views/chat/ChatView.vue
index f164e02..905b4b8 100644
--- a/src/renderer/views/chat/ChatView.vue
+++ b/src/renderer/views/chat/ChatView.vue
@@ -63,7 +63,7 @@ const localAssistantMessageIds = new Set();
let unsubscribeCallbacks = [];
// 从路由参数中获取 sessionId
-const routeSessionId = computed(() => route.query.sessionId);
+const routeSessionId = computed(() => route.params.id || route.query.sessionId);
// 加载历史消息
async function loadHistoryMessages(sessionId) {
diff --git a/src/renderer/views/home/HomeView.vue b/src/renderer/views/home/HomeView.vue
index d8f22d3..af1becc 100644
--- a/src/renderer/views/home/HomeView.vue
+++ b/src/renderer/views/home/HomeView.vue
@@ -75,6 +75,7 @@ import { useRouter } from 'vue-router';
import { useAppStore } from '@/stores/app';
import { useHistoryStore } from '@/stores/history';
import { Document, Plus, Promotion } from '@element-plus/icons-vue';
+import { ElMessage } from 'element-plus';
const router = useRouter();
const appStore = useAppStore();
@@ -84,6 +85,11 @@ const isCreating = ref(false);
// 处理发送消息
async function handleSend() {
+ // 检查 opencode 服务是否已启动
+ if (appStore.serviceStatus !== appStore.SERVICE_STATUS.RUNNING) {
+ ElMessage.warning('暂时没有运行的智能体');
+ return;
+ }
const text = inputText.value.trim();
if (!text || isCreating.value) return;
@@ -98,11 +104,9 @@ async function handleSend() {
// 跳转到对话页面,并将消息文本带入 query
router.push({
- path: '/chat',
- query: {
- sessionId: session.id,
- text: text,
- },
+ name: 'Chat',
+ params: { id: session.id },
+ query: { text: text },
});
} catch (err) {
console.error('创建会话失败:', err);