個人投資助手初始化
本 Skill 不是網站設計顧問,也不從零討論頁面方案。倉庫已經提供可運行的 React、Express、SQLite、定時排程器和真實 Provider 接入。本 Skill 的任務是把這套應用按用戶的真實投資偏好配置好,並交付一個打開後已有個性化內容的網站。
遠端 Skill 入口
用戶可能直接透過下面的公開 Skill URL 觸發本流程,而不是預先克隆倉庫或安裝 Skill:
https://github.com/3494036618-eng/personal-investment-assistant/blob/v0.3.0/skills/investment-assistant/SKILL.md
如果目前環境中不存在 {baseDir}/scripts/status.mjs,表示本 Skill 是從遠端 URL 打開的。此時 Codex 或 Claude Code 必須:
- 取得完整倉庫
https://github.com/3494036618-eng/personal-investment-assistant,不能只下載SKILL.md。 - 將
{baseDir}設為倉庫中的skills/investment-assistant目錄。 - 確認
{baseDir}/scripts/、{baseDir}/references/和倉庫根目錄app/均存在後,再進入階段 0。 - 已有同名目錄時先核對 Git remote 和工作區狀態,不覆蓋用戶改動,不建立第二套應用。
- 目前用戶端是 Codex 時,在倉庫根目錄執行
npm run skill:install:codex;目前用戶端是 Claude Code 時執行npm run skill:install:claude。安裝只寫入對應用戶端的個人 Skill 目錄。 - 安裝完成後直接使用目前倉庫中的 Skill 繼續初始化,不把「Skill 已複製」說成「網站已經可用」。
用戶可直接把這句話交給支援連網和終端操作的 Codex 或 Claude Code:
幫我初始化個人投資助手:https://github.com/3494036618-eng/personal-investment-assistant/blob/v0.3.0/skills/investment-assistant/SKILL.md
已經安裝後,Codex 可透過 $investment-assistant 觸發,Claude Code 可透過
/investment-assistant 觸發;兩種入口執行同一套初始化和驗收規則。
完成標準
只有以下事項全部完成,才可以說「已經可以使用」:
- 已確認至少一隻真實證券的名稱、程式碼和市場。
- 已逐隻確認用戶關注方向,保留用戶原詞。
- 已確認盤後自動監控是否啟用;啟用時已確認時間、日期和時區。
- Agent Plan Key 已透過本機私密配置寫入,未出現在聊天、原始碼或日誌。
- DataPro、豆包搜尋和 Agent Plan 模型的真實探測全部成功。
- 完整前後端已安裝並啟動。
- 用戶配置已匯入,首頁不是空白關注列表。
- 用戶同意消耗真實額度後,每支股票至少產生一份個股簡評和一份盤後風險摘要。
- 兩類報告均有實質正文、對應來源和獨立歷史記錄。
- 桌面端核心路徑透過瀏覽器檢查。
任一項未完成,都要準確說明停在哪一步、已經完成什麼以及下一步是什麼,不得用舊結果、Mock 資料或口頭判斷代替。
工作原則
- 不討論網站方案:現成網站、頁面結構和功能邊界已經確定,只收集使用它所需的投資配置。
- 先確認配置再呼叫:先給用戶展示結構化配置摘要,用戶確認後才安裝、匯入和消耗真實服務額度。
- 真實證券不猜測:名稱、程式碼或市場不確定時先核驗。無法核驗就請用戶補充,不能映射到相似公司。
- 偏好逐隻綁定:不同股票可以有完全不同的關注方向;所有偏好原詞進入 Profile,不能只使用預設關鍵詞。
- 打開即有內容:預設初始化會為每支股票產生兩類首批報告。只有用戶明確要求暫不產生時,才使用空報告模式。
- 三個能力使用同一 Agent Plan Key:按 Agent Plan Harness 目前配置,同一個 Key 預設用於模型、DataPro 和豆包搜尋。不得要求用戶再提供一枚獨立搜尋 Key。
- 來源與正文綁定:DataPro 負責結構化專業資料;豆包搜尋負責最新公開資訊;Agent Plan 模型只基於本次證據產生並審校。
- 兩類報告職責不同:個股簡評回答「公司目前怎麼樣」;盤後風險摘要回答「本次檢查視窗內出現了什麼新增變化和風險訊號」。
- 敏感資訊不回顯:Key 只能透過隱藏終端輸入、環境變數或許可權為
0600的本機憑證檔案配置。 - 每一步都解釋:說明剛完成什麼、目前處於哪一步、下一步會做什麼、是否會下載依賴或消耗額度。
流程總覽
| 階段 | 動作 | 完成標誌 |
|---|---|---|
| 0 | 檢查目前狀態 | 確認首次初始化、恢復運行或故障排查 |
| 1 | 收集投資配置 | 股票、程式碼、市場、偏好和監控安排完整 |
| 2 | 用戶確認配置 | 用戶明確同意結構化摘要 |
| 3 | 安裝與私密配置 | 正式應用安裝完成,Key 安全寫入 |
| 4 | 真實服務探測 | 三個 Provider 目前均可用 |
| 5 | 匯入個人化配置 | 首頁可見用戶股票和關注方向 |
| 6 | 產生首批報告 | 每支股票有兩類真實報告和歷史 |
| 7 | 瀏覽器驗收與交付 | 用戶可直接打開網站使用 |
階段 0:檢查目前狀態
先檢查 Node.js、Skill 檔案、運行時和網站狀態:
node {baseDir}/scripts/status.mjs
- 應用未安裝:進入階段 1。
- 已安裝但未運行:仍先確認用戶配置,再決定啟動或更新。
- 已運行:讀取現有關注列表和配置;用戶只是新增標的時,不清空原資料。
ready=false:後續必須重新執行真實 doctor,不能僅憑程序存活判斷後端可用。
不要詢問用戶網站原始碼目錄,也不要建立另一份專案。
階段 1:收集投資配置
採用一到兩問一輪的方式,避免把長表單一次拋給用戶。至少收集:
- 證券名稱。
- 證券程式碼。
- 市場:
CN、HK或US。 - 這隻證券的關注方向,建議 2 至 6 項,但以用戶真實需求為準。
- 是否啟用盤後自動檢查。
- 啟用時的執行時間、執行日和時區。
可以先問:
你希望關注哪些股票?請告訴我證券名稱、程式碼和市場。隨後我會逐隻確認你真正關心的方向,並把這些偏好直接寫進網站。
關注方向不能被固定詞表限制。以下只是幫助用戶表達,不是允許列表:
- 市場與技術:價格趨勢、成交量、波動、關鍵價位、資金變化。
- 經營與財務:收入、利潤、現金流、毛利率、研發、分紅、負債。
- 公司事件:公告、訂單、產品、產能、管理層、訴訟、監管。
- 行業與外部環境:競爭、政策、原材料、匯率、利率、海外風險。
- 用戶自己的自然語言,例如「高端酒批價與渠道庫存」或「海外大客戶認證進度」。
複合偏好可以原樣保留。應用會在檢索時進行語義拆解和覆蓋判斷,不要為了適配預設關鍵詞擅自改寫。
證券核驗
優先使用 DataPro 查詢名稱、程式碼和市場對應關係。直接工具不可用時,不要猜測;在真實服務就緒後,以首份報告中的證券歸屬校驗作為阻斷門檻。中港股程式碼保留交易所常用格式,美股程式碼使用公開 Ticker。
階段 2:確認結構化配置
把討論結果整理成簡短摘要,讓用戶明確確認。範例:
初始化配置
1. 貴州茅台|600519|CN
關注:盈利能力、品牌優勢、渠道庫存、行業動態
盤後監控:工作日 18:00,Asia/Shanghai
2. Apple|AAPL|US
關注:iPhone 銷量、服務業務、AI 產品進展
盤後監控:關閉
確認後我會安裝並啟動現成網站,匯入這些配置,並為每支股票真實產生一份個股簡評和一份盤後風險摘要。該步驟會呼叫 DataPro、豆包搜尋和 Agent Plan 模型並消耗套餐額度。
只有用戶明確確認後才繼續。用戶修改某一項時,只更新對應項並再次給出完整摘要。
將確認結果寫入許可權為 0600 的臨時 Profile。格式:
{
"stocks": [
{
"name": "貴州茅台",
"code": "600519",
"exchange": "CN",
"focus": ["盈利能力", "品牌優勢", "渠道庫存", "行業動態"],
"monitor": {
"enabled": true,
"schedule_time": "18:00",
"schedule_days": ["Mon", "Tue", "Wed", "Thu", "Fri"],
"timezone": "Asia/Shanghai"
}
}
]
}
Profile 不得包含 API Key。臨時檔案用完後使用 --consume-profile 刪除。
階段 3:安裝應用並配置 Agent Plan
說明該步驟會複製正式應用、安裝 npm 依賴、運行檢查和生產構建,然後執行:
node {baseDir}/scripts/install.mjs
缺少憑證時,在互動式終端執行:
node {baseDir}/scripts/configure.mjs
configure.mjs 只詢問一枚 Agent Plan API Key,並安全寫入:
~/.config/investment-assistant/credentials.env
檔案許可權必須為 0600。不要要求用戶把 Key 發到聊天裡,不要把 Key 寫入 Profile、.env.example、README 或原始碼。
階段 4:真實探測三個 Provider
執行:
node {baseDir}/scripts/doctor.mjs --live
必須看到:
agent_plan_model: okdatapro: okweb_search: ok
這一步會產生少量真實呼叫。任一失敗時按 references/troubleshooting.md 處理並停在此處;不要繼續產生報告,也不要把「已配置 Key」說成「後端可用」。
階段 5:匯入用戶配置
啟動網站並匯入已確認的 Profile:
node {baseDir}/scripts/start.mjs
node {baseDir}/scripts/profile.mjs --input /私密Profile絕對路徑.json --consume-profile
匯入是按市場與證券程式碼冪等更新。已有股票保留歷史,重複執行不會建立重複標的。
檢查首頁至少滿足:
- 每支用戶證券均存在。
- 名稱、程式碼和市場正確。
- 卡片顯示用戶填寫的關注方向。
- 盤後設置與用戶確認一致。
階段 6:產生首批個人化報告
用戶已經在階段 2 同意消耗額度時,執行全量首批產生:
node {baseDir}/scripts/acceptance.mjs --all --seed
--seed 對每支股票產生:
- 一份個股簡評。
- 一份盤後風險摘要。
並自動檢查:
- 兩類報告擁有不同 ID 和獨立證據快照。
- 兩類報告不重複使用同一連網 URL。
- 個股簡評含可核驗的核心財務 DataPro 證據。
- 正文引用的 evidence ID 都存在。
- 連網來源有真實標題、發布方、URL 和摘要。
- 用戶偏好逐項存在覆蓋狀態。
- 兩類報告分別進入對應歷史記錄。
如果用戶明確要求暫不產生首批報告,可以只做基礎驗收:
node {baseDir}/scripts/acceptance.mjs --all
此時必須說明「網站已配置,但報告區仍可能為空」,不能宣稱已經達到打開即有內容。
最短的一鍵初始化命令是:
node {baseDir}/scripts/onboard.mjs \
--profile /私密Profile絕對路徑.json \
--consume-profile
該命令會安裝、配置、真實探測、啟動、匯入並預設產生首批報告。只有用戶明確要求不產生時才添加 --skip-initial-reports。
階段 7:桌面端瀏覽器驗收
打開腳本輸出的本地地址,預設:
http://127.0.0.1:8788
按真實用戶路徑檢查:
- 首頁不是空白,所有證券和關注方向可見。
- 打開「個股簡評」先顯示已儲存首份報告。
- 正文是「市場表現、經營與財務、關注方向、後續觀察」,不是欄位拼接。
- 引用區與正文編號對應,連網來源可打開,DataPro 來源不顯示 trace。
- 打開「盤後風險摘要」顯示獨立報告,不複用簡評正文或來源。
- 盤後設定可儲存,「立即執行一次」能產生新記錄。
- 自動監控啟用時,下一次執行時間正確;排程服務狀態正常。
- 歷史記錄包含所有已產生報告。
- 頁面無溢出、遮擋、明顯換行異常或主控台錯誤。
瀏覽器頁面可見不等於真實後端可用;只有真實 doctor、報告產生和瀏覽器路徑三者都通過,才能交付。
個股簡評與盤後風險摘要的固定邊界
個股簡評
回答「這家公司目前怎麼樣」,使用目前行情、最新已揭露財務和與用戶關注方向相關的公開材料。固定結構:
- 摘要:精簡結論,不拼接所有正文。
- 市場表現。
- 經營與財務。
- 關注方向。
- 後續觀察。
盤後風險摘要
回答「這次檢查視窗內發生了什麼」,使用當日市場異動、上次檢查後的新增公司事件以及近期外部風險背景。固定結構:
- 摘要:風險變化與最重要事實,不複述所有欄目。
- 市場異動。
- 公司事件。
- 外部風險。
- 後續觀察。
沒有某類合格證據時可以省略對應欄目,但不能填充「沒有查到」「繼續觀察」等空泛句。沒有新增風險事件不等於公司沒有風險;仍應儲存本次可稽核結果。
故障恢復
- 網站未啟動:運行
status.mjs,再運行start.mjs。 ready=false:重新運行doctor.mjs --live。- 新股票沒有內容:確認 Profile 匯入成功,再對該股票執行
acceptance.mjs --stock 程式碼 --seed。 - 定時任務未執行:檢查監控開關、日期、時間、時區、排程服務狀態和執行記錄。
- 報告產生失敗:保留具體錯誤和診斷日誌,按 Provider、證券歸屬、證據覆蓋或模型審校問題處理,不關閉校驗。
- 更新應用:先備份,再停止、安裝、啟動和重新執行 doctor;資料庫與憑證不隨應用更新刪除。
詳細配置見 references/setup.md,驗收規則見 references/acceptance.md,來源規則見 references/evidence-policy.md,排障見 references/troubleshooting.md。
最終交付說明
最終回覆必須明確列出:
- 網站地址和目前程序狀態。
- 已匯入的證券、市場和關注方向。
- 每支證券的盤後監控開關、時間、日期和時區。
- Agent Plan 模型、DataPro、豆包搜尋的真實探測結果。
- 每支證券是否已經產生個股簡評和盤後風險摘要。
- 兩類歷史記錄和排程狀態是否通過。
- 實際執行過的檢查、測試、構建和瀏覽器驗收。
- 未完成項、外部依賴和仍需人工核對的風險。
不要只說「初始化完成」。用戶需要知道現在能做什麼、哪些結果已經由真實呼叫驗證、哪些仍未驗證。