Skip to content

D-12 收尾:README 重写 + dashboard 修复 + 默认模型升级 + agent 语言一致性修复#92

Open
mirror29 wants to merge 11 commits into
mainfrom
feat/d12-factor-library-closure
Open

D-12 收尾:README 重写 + dashboard 修复 + 默认模型升级 + agent 语言一致性修复#92
mirror29 wants to merge 11 commits into
mainfrom
feat/d12-factor-library-closure

Conversation

@mirror29

Copy link
Copy Markdown
Owner

本分支 D-12 收尾批改动,按模块拆 5 个 commit。

改动

1. dashboard 修复

  • Overview 策略池留白:策略池与最近订单并排且都 h-full 等高,但订单 max-h-96 可容 ~20 行、策略池后端只取 6 条 → 矮卡留白。CANDIDATES_SHOWN 6→20,StrategyPanelmax-h-96 内滚+表头吸顶。
  • 风控事件列换行:「最近风控事件」状态/时间列加 whitespace-nowrap

2. README 重写到 D-12(中英文)

  • architecture.png 四层架构图 + strategy-evolution.svg 进化图(保留架构文字),新增 The Operator Console 截图区,中/英 README 分别指向 assets/screenshots/{en,zh}/(图待补)。
  • badge/Status/架构 L3/Roadmap 刷新到 D-12;Core Capabilities 校正过时/夸大项(进化改「写整段源码+baseline 并跑」、研究三方辩论标已上线、新增 §2 Position Guard、§6 Skills);系统架构改分服务表格更易读。

3. 默认模型升级

  • anthropic 4.7→4.8zhipu glm-5.1→glm-5.2provider.ts + research client.py + .env.example 同步。

4. agent 输出语言一致性修复

英文提问却返中文(或反之)+ 工具输出中文标签。三处:

  • A orchestrator 顶部置「输出语言」最高优先级指令(高于 prompt/工具语言、需翻译中文标签)。
  • B 4 个 factor adapter 56 条 FactorSpec.name 中文→英文,工具输出不再带中文。
  • C deep_dive 透传 language → per-request LanguageScopedClientcomplete_json 统一注入输出语言指令(analyst/researcher/manager 零改动,并发安全)。

验证

  • pnpm -C packages/orchestration typecheck ✓;dashboard tsc --noEmit
  • research pytest 130 passed(含新增 4 个 LanguageScopedClient 回归测试);factor/research ruff
  • scripts/check-consistency.sh 0 失败

待办

  • README 截图占位需补:本地切 en/中 locale 各截 overview/lab/runners/risk/factors 放进 assets/screenshots/{en,zh}/
  • 语言修复需 mastra 重启生效后端到端复测(见 PR 讨论)。

🤖 Generated with Claude Code

mirror29 and others added 5 commits June 16, 2026 17:20
策略池(StrategyPanel)与最近订单(OrdersTable)并排且都 h-full 等高,
但订单 max-h-96 可容 ~20 行、策略池后端只取 6 条 → 矮卡下方留白。
CANDIDATES_SHOWN 6→20 对齐订单条数,StrategyPanel 加 max-h-96 内滚+表头吸顶
(复刻 OrdersTable 模式),撑满同行高度、超出内滚。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
EventsPanel 的状态与时间两列加 whitespace-nowrap,窄屏下不再折行。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- 删 architecture.png 四层架构图 + strategy-evolution.svg 进化图,保留架构文字
- 新增 The Operator Console 截图区(占位 assets/screenshots/{en,zh}/),
  中英文 README 分别指向 en/ 与 zh/ 目录
- badge/Status/架构 L3/Roadmap 刷新到 D-12(research 三方辩论/因子发现 L1/
  因子血缘巡检/monthly FRED 标 shipped;E2 多代演化保持 planned)
- Core Capabilities 校正:进化改为"写整段源码+baseline 并跑"(unified-diff/
  MAP-Elites 标 E2)、研究三方辩论改为已上线、新增 §2 Position Guard、§6 Skills
- 系统架构描述重排为分服务表格,更易读
- 默认模型表 anthropic→4.8 / zhipu→glm-5.2

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
provider.ts DEFAULT_MODELS、research client.py 默认、.env.example 注释同步:
claude-opus-4-7 → claude-opus-4-8;glm-5.1 → glm-5.2。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
英文提问却返回中文(或反之)、工具输出中文标签。根因:语言指令埋在全中文 prompt 末尾、
默认模型中文先验、工具结果写死中文标签共同把"按用户语言回复"淹没。三处:
- A prompt 加权:orchestrator 顶部置「输出语言」最高优先级,声明高于 prompt/工具语言并需翻译
- B 因子标签英文化:4 个 adapter 56 条 FactorSpec.name 中文→英文,工具输出不再带中文
- C research 按语言输出:deep_dive 透传 language → per-request LanguageScopedClient 在
  complete_json 统一注入输出语言指令(6 analyst/3 researcher/manager 零改动,并发安全)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Jun 16, 2026

Copy link
Copy Markdown

Deploying inalpha-web with  Cloudflare Pages  Cloudflare Pages

Latest commit: 48ce2ff
Status: ✅  Deploy successful!
Preview URL: https://e713aa77.inalpha-web.pages.dev
Branch Preview URL: https://feat-d12-factor-library-clos.inalpha-web.pages.dev

View logs

@claude

claude Bot commented Jun 16, 2026

Copy link
Copy Markdown
Contributor
commit 59fcd61

D-12 收尾 PR Review

PR 意图: 5 个模块收口——dashboard 留白/换行修复、中英文 README 重写到 D-12、默认模型升级(anthropic 4.7→4.8 / zhipu glm-5.1→5.2)、56 条因子名称中文→英文、agent 输出语言三层修复(Fix A orchestrator 指令优先级 + Fix B 因子名英文化 + Fix C LanguageScopedClient 按请求注入语言指令)。


必修(critical / major)

无 critical / major 问题。


可选优化(medium)

[medium] packages/orchestration/src/mastra/agents/orchestrator.ts:600–604 — 语言指令描述与 Fix C 矛盾,可能引发冗余改写

Fix C (LanguageScopedClient) 已让 research 结果从源头就以用户语言返回。但 orchestrator 新增的语言指令块仍写着:

"research.deep_dive can return a large English research blob — never paste it verbatim; rewrite the ENTIRE final report in the user's language"

当 Fix C 正常生效时,orchestrator 实际收到的是中文/用户语言的研究结果,而上面的指令要求它"一律改写"。具体失败场景:中文用户 → orchestrator 传 language=中文 → Fix C 让 analyst/辩论已输出中文 → orchestrator 读到中文结果 → 但指令说"一律改写成用户语言" → orchestrator 把中文结果再改写成中文(额外一轮 LLM 改写,可能引入摘要失真、丢失数据细节、增加 token 消耗)。
建议把 "a large English research blob" 改为 "a research blob(可能是英文,也可能已是用户语言)",并把 "never paste it verbatim; rewrite the ENTIRE final report" 改为 "若已是用户语言可直接呈现,否则整段重写"。
依据:通用原则「正确性」,以及 CLAUDE.md §3.2 不应让两处修复相互打架。


[medium] services/research/src/inalpha_research/llm/client.py:infer_output_language — 非 CJK/日/韩脚本一律兜底 "English"

infer_output_language 对阿拉伯语、法语、印地语、德语、西班牙语、泰语等用户返回 "English"。若 orchestrator 未传 language(Fix A 出现回归),LanguageScopedClient 会强制研究输出为英文,而这些用户的母语实际上并不是英文。
具体失败场景:法语用户提问 → orchestrator 漏传 languageinfer_output_language("Analyser l'action NVDA") → 返回 "English" → analyst/辩论全程英文 → orchestrator Fix A 再翻成法文(多出一跳,质量有损)。如果 Fix A 同时失效,用户直接拿到英文。
建议补充常用非拉丁脚本的 Unicode 区段(阿拉伯 ؀-ۿ、天城文 ऀ-ॿ、泰语 ฀-๿ 等),或换用轻量 langdetect / lingua
依据:CLAUDE.md §3「面向全球用户:不预设语言」。


其余观察(nit,不阻 merge)

  • assets/screenshots/en/.gitkeepzh/.gitkeep 内含中文提示文字,但同目录 .png 已入 diff,.gitkeep 可删(否则被浏览仓库的人看到)。
  • LanguageScopedClient 未声明实现 LLMClient Protocol(class LanguageScopedClient(LLMClient)# type: ignore),mypy strict 模式下可能警告。目前 CI 只跑 ruff,不影响合并。

整体评价: Fix B(因子名英文化)和 Fix C(LanguageScopedClient 设计、aclose 委托、并发安全、4+ 回归测试)都做得扎实;dashboard 修复精准;model 升级跨文件一致。两条 medium 均可 follow-up PR 解决,不阻当前合并。

控制台起好后给 6 条可直接粘的示例,每条对应一个差异化能力:因子择时 / 多视角研究+三方辩论 /
投资大师团 / LLM 自创策略+沙盒+基线 / Swarm 批量回测 / 机器审批下单。
中文用 A股+美股(无加密货币,大陆不支持),英文保留全球(含 crypto);均标注「示例非锁死预期」。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@mirror29 mirror29 force-pushed the feat/d12-factor-library-closure branch from 7b3c746 to 30d90f0 Compare June 16, 2026 09:39
mirror29 and others added 5 commits June 16, 2026 17:53
修「中文提问但最终报告英文」:research 返回大段英文被 orchestrator 照搬。两层:
- 确定性兜底:research 服务端按 user_question 推断输出语言(infer_output_language,
  含汉字→中文),orchestrator 漏传 language 时也让研究结果跟随提问语言
- prompt 强化:orchestrator 顶部语言段明确「research.deep_dive 可能返回英文大段、
  最终报告必须 100% 用用户语言重写」并要求调用时必传 language + userQuestion

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Quick Start 示例新增「研究方法论 skill」:中文给 cn-equity-research(A股系统化调研)
  + serenity(供应链瓶颈)两条,英文给 serenity(并提 cn-equity-research)
- 中文示例全部 A股化,贵州茅台→寒武纪(sh.688256,科创板 AI 芯片),英伟达开仓→寒武纪
- §6 Skills 由「first one in: serenity」改为列全已内置 4 个 skill
  (cn-equity-research / serenity / earnings-analysis / thesis-tracker)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
最终报告已随提问语言,但工具调用之间的进度说明仍出英文。顶部语言段补:输出给用户的
每段文字(含 tool call 之间的旁白)都用用户语言,不因 page_context/工具名/工具结果是英文而跟着英文。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- aclose 委托测试空验证 → FakeLLMClient 加 aclose_called 计数,断言透传真被调用
  (防 LanguageScopedClient.aclose 被写成 pass 导致连接池泄漏不被捕获)
- infer_output_language 只覆盖汉字 → 纯假名日文/韩文误判 English;改按脚本分层:
  假名→日本語、谚文→한국어、汉字→中文、其余→English;补日韩用例

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant