Skip to content

Releases: badhope/moneyhelper

v4.3.2

Choose a tag to compare

@github-actions github-actions released this 28 Oct 11:15

修复(第三轮:并发一致性与 UI 崩溃)

  • 并发保存丢数据:Studio 配置是「读整份 JSON → 改一个键 → 写回整份」,8 个并发
    保存只存下 3 个(实测)。所有写入改为复用 db.get_write_lock() 串行化,12 并发全中;
    安装器/权限/看门狗/内置工具开关同样纳入锁
  • 编辑内置资产后 builtin 标记丢失:一次编辑就把内置项变成可自由删除,
    现在 upsert_asset 保留既有 builtin 标记
  • 非法定时动作被静默保存:time: "99:99"、weekdays: [9] 也能存进库,
    到点永远不触发且没有报错。现在复用 agent_config.normalize_skill_action 校验并 400
  • 非全面放开模式仍允许 URL 安装:standard/strict 只关了对话与 CLI,allow_remote_install
    仍为 true,等于留了绕过权限的后门。现在三者在非 open 模式下一律关闭
  • 看门狗改间隔不生效:已在运行时改 interval_minutes 不会重启 loop。现在检测到间隔变化先
    stop() 再重启
  • 中文名导入 id 冲突:规则甲/乙/丙 三个文件都映射到 rule,后导入静默覆盖前面的
    (实测导入 3 个只剩 1 个)。改为非 ASCII 名拼内容哈希
  • 备份泄露 MCP 密钥:MCP 的 env 常放 API Key(GITHUB_TOKEN 等),导出时明文进备份。
    现在 env 值一律替换为 ***,恢复时跳过占位符不写回
  • MCP 配置漂移不可恢复:mcp.json 在 data/ 下、seeded 在 DB 里,删了配置文件后已预装的
    MCP 永远回不来。启动时 repair_mcp_config() 按 installed 记录补回(不复活用户主动卸载的)
  • 插件市场整页崩溃:MarketplaceSection 与 PluginsSection 共用 queryKey
    ["/api/mcp/servers"] 但返回形状不同(数组 vs 对象),先进插件页再进市场页会
    (mcpServers.data ?? []).map is not a function → 整页「页面出错了」。拆分 queryKey 并加 2 条回归用例
  • 角色工具白名单被 MCP 工具绕过:白名单在 MCP 合并之前过滤,mcp__* 工具照样进工具面;
    白名单改为最后一道过滤
  • 导入不提示覆盖:同名资产导入后静默覆盖,用户无从察觉;导入结果新增 replaced 计数,
    前端/CLI 都提示「其中 N 项覆盖了同名资产」
  • 「一键自检」污染看门狗统计:诊断接口调用 run_check() 会推进 checks 计数与 last_check_at;
    改为 advance_state=False 只读扫查
  • 设置页 @container 缺失:Row 等组件用的 @sm:/@lg: 变体一直没有容器查询上下文,
    实际从未生效;给设置内容区补 @container

体验

  • 资产列表从单列长条改为响应式卡片网格(桌面 2 列 / 平板与手机 1 列),卡片内含状态徽标、
    说明、定时摘要与底部操作条(编辑/删除/触发记录/立即执行/开关);内置工具与 MCP 分区同样改卡片
  • 核心锁定项从配置键名改为中文标签(审批阈值下限 / 模型密钥 / 访问口令 / 内置工具可见性 / 破坏性操作确认)
  • 导入区新增「查看官方格式示例」面板(SKILL.md 示例 / JSON bundle 形状 / zip 规则)
  • MCP 分区显示「已启用 N/M」、全部启用/全部停用、连接失败红标;市场页对「已配置但未启用」的 MCP 给出提示
  • 技能定时徽标显示可读星期(定时 周五 17:30),正文与说明相同时不再重复渲染

v4.3.1

Choose a tag to compare

@github-actions github-actions released this 27 Oct 23:03

第二轮审计修掉 10 处真实缺陷(详见下方「修复(第二轮深度审计)」),并把设置导航重组为
五组、补导入格式示例面板、MCP 批量启停与失败可视化。后端 1053 测试、前端 111 单测、
28 条 E2E 全通过。

新增:Agent Studio(设置中心从「配置项」升级为「能力工坊」)

  • 角色 / 技能 / 提示词 / 约束 / Hook 全部可编辑并真正运行时生效:
    主角色指令、提示词(按优先级)、约束(must/should/may × all/finance/research)、
    pre_prompt 注入统一进入系统提示;pre_tool Hook 可拦截/告警工具调用,post_answer Hook 做审计
  • 默认包非空:8 个角色、9 个技能、4 份提示词、7 条约束、7 个 Hook、8 个内置科研工具,
    首次启动即启用;用户可关闭/删除,重启不会复活(marketplace.seeded 只执行一次)
  • 四条添加通道(每个分区都有):对话内说一句、拖拽/上传(SKILL.md、md、json/yaml、zip)、
    模板手写、AI 一键生成(生成后二次校验,未接入模型时明确报错)
  • 插件市场:内置 42 个开源条目(Anthropic Skills 精选、学术论文/审稿/文献综述/引用管理/
    EDA/科研绘图、科研与工程角色、Cursor 规则、官方 MCP 参考实现 + DeepWiki/GitMCP
    • 科研 MCP(arXiv / Zotero / Paper Search)),
      一键安装;支持粘贴 GitHub/任意 URL 安装单个文件;MCP 安装只写配置、默认停用
  • 权限模型:全面放开 / 标准 / 严格三档;核心项(审批阈值下限、密钥、访问口令、
    内置工具可见性、破坏性操作确认)在任何模式都锁定,/api/studio/core-guard 给出拒绝理由
  • 内置优势工具(不对外):科研大纲、引用格式化(GB/T 7714 / APA / MLA / Chicago)、
    检索式构造、CSV 数据画像、统计摘要、敏感性分析、实验设计核查、来源可信度评分;
    纯标准库、离线可用,只进内部工具面,不进 MCP 对外清单,逐个可开关
  • 运行时看门狗:每 15 分钟检查日志错误、配置完整性、MCP 状态,设置页可立即检查并展示发现项
  • CLI 对等:moneyhelper studio list/show/add/remove/toggle/import/market/ai,
    与设置页共用同一存储与校验(远程模式走同一 HTTP API)
  • MCP 增强:支持 stdio 传输(command + args)、逐台启用/停用;市场安装的 MCP 默认停用

修复(第二轮深度审计,均为真实缺陷)

  • 内置科研工具全部不可用:agent 执行层统一 await impl(args),而 8 个内置工具是同步纯函数,
    await 一个 str 会抛 TypeError: object str can't be used in 'await' expression;
    改为包一层协程(_make_internal_runner),并加端到端测试(模型调用 → 工具结果含「样本量」)
  • 删除的内置项会复活:默认包补齐只看「缺不缺」,用户删掉的内置提示词/约束/Hook/角色/技能
    下次读配置又回来。改为按租户持久化墓碑(removed 字段),并补「删除后重建同 id」测试
  • 审批阈值下限只是文案:core-guard 声称下限 100 元,但改 defaults.approval_threshold
    仍能设成 0;approval.threshold() 现在钳制到 ≥100,保存配置时低于下限会被钳制并回报 warning
  • 角色「工具白名单 / 温度」只存不用:模型永远 0.2 温度、永远拿到全量工具;
    现在白名单真正裁剪工具面,温度进入模型调用参数
  • MCP 发现串行且无失败记忆:一台离线服务器 15s 超时会串成 N×15s;改为并发 4 路 +
    失败退避 30 分钟 + 失败原因回传设置页(红灯 badge)
  • 备份漏 MCP 配置:data/mcp.json 不在 settings 表里,恢复后市场装的 MCP 全丢;
    export/import 增加 mcp_servers(URL 凭据打码)
  • CLI 与对话权限耦合:CLI 走 chat 开关,关掉对话管理后 CLI 也被禁;改为独立通道判定
  • 市场条目被标成「内置」:导致删除时走 force 分支、语义混乱;市场安装不再标记 builtin
  • 远程 MCP 默认停用不符合「默认配置好」:远程 HTTP(deepwiki/gitmcp)改为默认启用,
    stdio 仍默认停用(依赖 npx/uvx),并加「全部启用/全部停用」
  • 设置导航:新旧两套「Agent 与技能」重复,旧页面(AgentSection/ai-generate)已删除;
    导航重组为「基础设置 / AI 与自动化 / AGENT 能力 / 数据与安全 / 评测」五组
  • 死代码:routes/studio.py::_apply_entries、market._SKILLS_MP、watchdog 空分支、
    default_studio.permissions.max_tool_turns、32 个旧 Agent 页孤儿 i18n 键

修复(第一轮)

  • 设置页新增分区原先会挤在一屏:改为左侧分组导航 + 移动端横向滚动条,14 个入口可达
  • 默认角色/技能升级后老库看不到新内置项:启动时按「只补缺失、不覆盖用户改动」合并
  • 技能定时动作在 Studio 侧编辑后不生效:写操作后自动 sync_skill_jobs()
  • 打包版缺 Studio 默认包(JSON 非 Python 模块,PyInstaller 静态分析发现不了):spec 与 pyproject 同步收录

变更:品牌更名 Moneyhelper

  • 项目名、包名、CLI 命令、Docker 服务/数据卷、PyInstaller 产物、环境变量前缀统一为 Moneyhelper;
    旧前缀 XIAOMAN_* 由 backend/app/compat_env.py 兼容读取(新名优先),旧部署升级不会切到空库
  • 仓库内所有对外品牌文案(README / docs / 页面标题 / PWA manifest / 双语 i18n)同步更名
  • Logo 重绘为「M 折线 + 增长箭头」钱币标,重出 icon.svg / 192 / 512 / apple-touch-icon / app.ico
  • 品牌 slogan 改为「算清每一笔,攒稳每一步」并在登录页展示;页面 theme-color / manifest 主色对齐品牌绿 #0f8a73
  • 新增 tests/test_brand.py:旧品牌零残留成为可执行约束(兼容层与升级说明白名单除外)

修复

  • paper_trade / paper_overview agent 工具因缺少 validate_trade / fee_for / estimate /
    ranking / team_summary 导入,调用即 NameError;补测试覆盖开户→下单→总览全链路
  • calculations 门面中 paper.build_equity_curve 被 portfolio_risk 同名函数覆盖,
    两种签名互相踩;paper 版改名 build_snapshot_curve 显式导出
  • docs/ARCHITECTURE.md 与 docs/architecture.md 仅大小写不同,Windows 克隆后互相覆盖且
    mkdocs --strict 失败;详版重命名为 docs/ARCHITECTURE-detail.md
  • docs/promo.html 引用了 6 张不存在的截图;改为实际存在的文件
  • README 的页签数量(八个 → 九个,漏列模拟盘)与代码不一致
  • frontend/package-lock.json 版本号停留在 3.0.0,与 package.json/version.py 漂移
  • 本机新版 ruff 在改名前的 v4.2 提交上检出 38 项问题(未用导入、同名重定义、5 处未定义名等);
    v4.0–v4.2 三个提交直接推到了 GitCode,未经 GitHub CI(最后一次 CI 停在 d9837c2),因此一直没被发现
  • 五端一度不同步:GitCode 有 v4.0–v4.2,GitHub 三仓与 Gitee 停在 d9837c2;本次已全部对齐
  • 限流配额差一:len(bucket) >= max 让「200 次/分钟」实际只放行 199 次,与响应头 X-RateLimit-Limit: 200 矛盾
  • 登录防爆破只按 X-Forwarded-For 取 IP,未校验来源,可伪造头绕过 IP 维度限流;
    改为默认不信任该头,仅 MONEYHELPER_TRUST_PROXY=1(可信反代部署)时采信,CONFIG/DEPLOY 中英文四份文档同步说明

v4.3.0

Choose a tag to compare

@github-actions github-actions released this 27 Oct 16:09

见 CHANGELOG.md

v3.0.0

Choose a tag to compare

@github-actions github-actions released this 24 Oct 12:18

定位升级:从"会记账的助手"变成"能管仓位的财务部门"。
三条主线都是确定性计算 + 可复核输出,没有一处让模型自己算数。

新增:投资策略引擎(app/calculations/{portfolio_risk,strategy,valuation}.py)

纯标准库实现,零新增依赖。所有指标口径写进 docstring,样本不足时返回
null 并标注原因,绝不返回看起来合理的假数值。

能力 内容
组合风险 年化波动率、夏普、索提诺、最大回撤、Calmar、Beta/Alpha、历史模拟法 VaR(95%)、上涨天数占比、单日最佳/最差
基准对比 沪深300/上证/深成/创业板四条基准,净值曲线双线归一化对比,超额收益
再平衡 目标配置 + 容忍带(3/5/8/10%),输出买/卖金额与整手股数;A 股卖出可零股、买入必须整手
估值温度计 当前价在近 750 个交易日区间中的位置分位,五档分区(低位区/偏低/中枢/偏高/高位区)
定投 月/周计划、累计投入、份额、成本线、当前盈亏、下一期扣款日;数据覆盖前的定投日不补记
FIRE 目标本金(年支出/提取率)、完成度、储蓄率、复利年限;不可达时返回 reachable=false 而不是一个假年限

新增 6 个 REST 端点(/api/strategy/*)、5 个 agent 工具、5 个 MCP 工具
(外部 AI 也能调用),以及前端「投资策略」页(风险指标条 + 净值曲线 +
再平衡表 + 估值色阶 + 定投表 + FIRE 进度)。

新增:审计底稿导出(M6.1)

GET /api/audit-report 把 provenance 链路渲染成可归档 HTML:每条记录带
来源徽标、操作人、before/after 只列变化字段的差异表。浏览器内一键
打印为 PDF。输出 HTML 而不是 PDF 是为了不引入几十 MB 的渲染依赖;
所有动态内容经 html.escape,并附 CSP 头禁用外部资源。

新增:模型评测题库与判分器(M6.3)

app/eval_bank.py 50 道题,覆盖记账解析/预算/负债/持仓/策略/口径推理六类。
app/model_eval.py 用确定性判据打分(数值按容差、文本按关键结论),
不让 LLM 给自己打分。端点:/api/eval/{questions,run,score,leaderboard}。
未配置模型时明确返回未评分,不生成假成绩。

性能:后端预聚合(M5.3)

/api/dashboard 本月现金流改走 SQL GROUP BY(db.month_cashflow),
流水明细限 500 条 + 独立总数;加 10 秒 TTL 缓存(键含 DB 路径与租户),
所有写路径(记账/持仓/负债/订阅/目标/预算/设置/确认执行/对话记账)
统一失效。账本十万行时不再把整库搬进内存。

修复:界面口径与真实缺陷(截图审查发现,全部有回归测试)

  • 持仓编辑成本价放大 100 倍:positions[].cost 是总成本,编辑框要每股成本;
    新增 cost_per_share 字段,前端与"追加持仓"都改用它。
  • 占比双口径打架:by_asset 同时给 pct(相对总市值,合计 100%,
    供饼图与占比列)与 investable_pct(相对非现金,供集中度判定);
    此前现金行也用非现金分母,导致占比列合计 126%、风险提示 50.4% 与
    集中度 63.6% 同屏并存。
  • 今日盈亏恒为 +0.00%:分母把已是总额的 cost 又乘了一次股数。
  • 健康评分两套值(51 vs 50):/api/calculations/health 改走
    analysis.health_check 单一实现。
  • 亏损写成"浮盈":文案按盈亏正负切换浮盈/浮亏。
  • 总资产两个值(282,540 vs 264,884):/api/calculations/net-worth
    与健康评分都改用实时行情,与总览同源。
  • 手机端:设置项 Row 改上下堆叠(供应商选择器不再横向溢出);
    对话上下文条改 sticky top-0(不再被顶栏裁切)。
  • 饼图中心文字被扇区覆盖:环孔从 0% 改为 48%。
  • 命令面板补「去投资策略」入口。
  • 表格/统计格:占比列合计归 100%;平板宽度下大数字不再断行。

仓库与文档

  • 删除入库的 frontend/coverage/(48 个产物文件)与零引用的 docs/demo/(980KB 旧图)。
  • scripts/push-all.sh 重写:5 目标真实可用,支持 --dry-run/--only,
    凭据只从环境读取、打码输出。
  • README 补 Release/CI/Docker badge、30 秒上手、Why Xiaoman 对比、策略页截图;
    测试数统一为真实值。
  • PROGRESS 同步到 3.0.0;ROADMAP-v3 标注为历史快照;三份旧审计文档加
    「历史快照,不代表当前状态」声明并归入「质量与审计(历史)」分组。

验证

  • 后端 906 passed(原 791 + 新增 115);ruff check app tests 全过。
  • 前端 111 单测 + tsc + vite build 全过。
  • 截图审查 15 张(桌面/手机/平板/暗色/空库/降级),逐张人工核对,无
    undefined/NaN/空白/裁切。

说明

组合风险曲线是按当前持仓回溯的模拟净值,不是实盘历史成交净值;
接口用 basis: "backtest" 与 basis_note 明确标注,前端在卡片上展示该提示。

v2.9.1

Choose a tag to compare

@github-actions github-actions released this 23 Oct 10:03

界面最后一层:让对话里的数字"能操作",而不是只读文本。

富回答块(components/chat/FinanceBlocks.tsx)

后端一直有 card 事件带完整的 market / ledger / flags,但前端只画了个静态四宫格。
现在按数据的实际内容渲染三种可操作块:

  • 持仓概览:总市值 + 盈亏/收益率,列出前三大非现金持仓;
    点任一行展开该标的 60 日走势(纯 SVG,不引图表库);底部提示超限项。
  • 本月收支:收入/支出/结余/储蓄率四指标 + 支出分类条形(按金额排序)。
  • 需要注意:风控 flags 列表,每条带「去处理」跳转到对应页面。

去重

同一信息此前会重复三遍(风险块 / SummaryBlock 的等级徽章 / Action 按钮):

  • 有富回答块时 SummaryBlock 只保留「小满的理解」(意图识别),不重复指标与等级。
  • 有块时不再渲染 action 按钮(块内已有「查看 →」)。
  • 风险块跳过集中度条目(持仓块底部已提示)。

上下文条

对话顶部新增一行:本地数据 · 3 项持仓 · 2 条消息 · 更新于 16:59。
没有它,回答里的数字缺少可信度锚点,用户不知道助手看的是哪份数据、多久之前。

验证

  • 前端 111 单测 + 21 e2e 通过;后端 786 通过;
  • 截图确认:持仓块可展开走势、收支块分类条形、风险块跳转、上下文条按实际数据渲染。

v2.9.0

Choose a tag to compare

@github-actions github-actions released this 23 Oct 02:34

按「设置里该有的四类能力」逐项核对:Skill 已有、Prompt 只读、Plugin 缺失、知识库缺失。
补完后 Agent harness 的三个缺口(循环、输出上限、重试)也一并补上。

四类能力盘点与补齐

能力 补齐前 现在
Skill 4 个内置 + 自定义可增删、可绑定时 不变(已完备)
Prompt agents/<name>/instructions.md 文件驱动,设置页不能改 新增「系统提示词」分区:可视化编辑、留空回落默认、4000 字上限、即时生效
Plugin 缺失:外部 MCP 服务器只能手改 backend/data/mcp.json,格式错一处整份失效 新增「插件(MCP)」分区:增删、测试连接、显示已发现工具;URL 凭据打码;写工具仍被禁止
知识库 缺失:附件只能附在单条消息上,不参与检索 新增「知识库」分区:上传文档→切片→BM25 检索→注入 system 消息;可逐个开关、删除

知识库实现(app/knowledge.py)

  • 切片:段落优先 + 长段落带重叠滑窗(400 字 / 80 字重叠),避免把句子切断。
  • 检索:复用 rank-bm25(与长期记忆同一套中文双字+单字分词),只保留 score > 0 的命中。
  • 注入:拼成带文件名的片段,2400 字预算内按得分顺序截断。
  • 开关:knowledge_enabled(默认 on),关闭后完全不检索。
  • 为什么不上向量库:与「本地优先、零外网」冲突(embedding 需外部 API 或几百 MB 本地模型);
    接口按 retriever 设计,将来换向量实现只需替换 rank_chunks。

Agent harness 加固

  • 工具循环检测:连续 3 次用相同参数调同一工具时中断并告知模型「结果不会变化」。
    此前只有 turn_cap 兜底,要烧满 5 轮才停。
  • 输出上限:工具循环的模型调用补 max_tokens=2048,防超长生成拖到超时。
  • 重试与超时:非流式调用补 num_retries=2 + timeout=60(与流式路径对齐)。

验证

  • 后端 786 通过(新增:MCP 管理 8、知识库纯函数 9、知识库接线 3、循环保护 6)。
  • 知识库接线测试断言「入库文档的原文确实出现在 system 消息里」,非入库文档不出现。
  • 前端 111 单测 + 21 e2e 通过;设置页 16 个分区逐页截图无报错。

v2.8.6

Choose a tag to compare

@github-actions github-actions released this 22 Oct 19:43
  • Windows exe 双击闪退(Critical,CI 实测复现):run.py 打印中文横幅时,
    Windows 控制台默认编码是 cp936/cp1252,UnicodeEncodeError: 'charmap' codec can't encode characters → 未捕获异常 → 进程退出。现在启动时把 stdout/stderr 切成 UTF-8
    并带 errors="replace" 兜底。
  • 移除 spec 里无效的 croniter hidden import(项目未使用该依赖,PyInstaller 报
    Hidden import 'croniter' not found,在 CI 中只是警告,但会干扰真实错误定位)。

v2.8.5

Choose a tag to compare

@github-actions github-actions released this 22 Oct 17:35

逐个分区走查设置页,修的都是"用户会踩到但不会报错"的逻辑问题。

  • 未保存改动静默丢失:改完设置点「关闭」直接丢弃修改,没有任何提示。
    现在关闭前弹确认(放弃并关闭 / 继续编辑)。
  • 访问口令页自相矛盾:输入框说明"后端 API_TOKEN 相同时才生效",下面又说
    "未设置时无需口令",用户填完无从判断是否生效。现在 /api/health 返回
    auth_mode(token / accounts / local),页面顶部直接显示当前实例的真实鉴权模式,
    并区分「需要口令 / 已启用账号体系 / 本机免登录」三种情况下的操作指引。
  • 默认配置只读且无指引:「Agent 与技能」底部展示默认语言/模型/审批阈值/工具轮次,
    用户看到数值却不知道去哪改。现在每项下方标注实际修改位置。
  • 危险操作无区分:「清空全部历史」与普通按钮同样式。改为危险色描边,
    并把「备份与恢复」独立成段,与危险操作分开。
  • 「恢复」按钮文案改为「加载示例数据」,明确它做的是覆盖式载入演示数据。
  • 设置页内容区放宽(max-w-5xl → 6xl 并改为 flex 布局),1440 下不再出现右侧大片空白。

验证

  • 后端 760 通过(新增 3 项 auth_mode 回归);前端 111 单测 + 21 e2e 通过。
  • 设置页 13 个分区逐页截图 + 无 console/page error。

v2.8.4

Choose a tag to compare

@github-actions github-actions released this 22 Oct 14:04

界面

  • 设置页改为真正的左右分段导航:桌面左侧固定导航栏(三组:基础设置 / AI 与自动化 /
    数据与安全),右侧内容区独立滚动;手机端改为顶部横向分段条(一次一段,单次点击到达),
    替代原先需要两次点击的两层折叠。
  • 分段控件与标签在 390px 下不再被挤压换行。

打包

  • xiaoman.exe 嵌入图标(backend/app.ico,7 个尺寸)与版本资源
    (FileVersion / ProductName / FileDescription 来自 version.py 单一真源)。
  • 实测:FileVersion 2.8.3、ProductName Xiaoman,运行首页 200 / API 正常 / MCP 正常。

v2.0.0

Choose a tag to compare

@github-actions github-actions released this 10 Oct 04:06

[2.0.0] — 2026-10-09

Added

  • devkit-doctor.py — CLI health check tool covering skills/scaffolds/mcp/hooks/env
  • tests/test_devkit_doctor.py — self-contained integration tests
  • scaffolds/scaffold-runner.py — flat-scaffold execution engine
  • scaffolds/scaffold-protocol.md — Scaffold Protocol v2.0
  • scenarios/programming/fullstack/{bootstrap.sh,bootstrap.ps1}
  • context/architecture.md (ADR-001)
  • docs/requirements/devkit-doctor.md + docs/design/devkit-doctor.md
  • AGENTS.md — 跨平台统一指令(官方 AGENTS.md 标准,含平台自省声明)
  • platforms/ — 平台能力矩阵 + 自省机制(复用平台原生能力,不重复造轮子)
  • framework/ — 通用能力层(skills 通用技能库 33+ / agents 多角色 / mcp 全集)
  • framework/skills 新增 10 个通用技能:code-review、debugging、test-strategy、api-design、secret-scanner、performance-optimization、documentation-writing、architecture-design、requirements-analysis、commit-conventions

Changed

  • scaffold-runner:修复 opencode Windows shim 调用(.cmd/.ps1 经 cmd /c + stdin 传参),并完成真实端到端验证(scaffold-runner→opencode→读 AGENTS.md+skill→产物门禁→完工强制)
  • scaffold-runner:新增 opencode provider、每步强制产物校验(outputs gate)、完工强制门禁(enforce_active)、skills 路径指向 framework 通用层
  • .gitignore 忽略 logs/sessions/(session 产物不入库)
  • 新增 hooks/scripts/enforce_active.py 强制门禁(机制层,跨平台):上下文/doctor/测试/密钥/CHANGELOG 校验
  • hooks/config.yaml 挂载开工(--pre)与完工强制门禁
  • AGENTS.md / platforms/README 增加「提示层 vs 机制层」分层说明与按平台强制接入
  • devkit-doctor 支持带参数的脚本引用(如 script.py --pre)
  • 版本统一为 2.0.0(README/plugin/expert/docs/CHANGELOG 一致)
  • devkit-doctor 技能检查增强:扫描所有场景 skills 并集 + 校验「技能名 == 目录名」
  • AGENTS.md 增加「强制主动使用能力」机制(Skills/Agents/MCP 必须主动调用,禁止闲置)
  • 通用技能从 scenarios/programming/fullstack/skills 提升至 framework/skills(去重、解耦场景)
  • fullstack/lib 提升为 framework/lib(通用脚本库)
  • devkit-doctor.py 支持检查 framework/skills 通用技能层
  • bootstrap 检查 framework/skills
  • scaffold.yaml split sequential/parallel (YAML dup-key bug) → flat v2.0
  • platforms/ 重构:删除 17 个重复平台 README,改为单一平台能力矩阵 + 自省声明(复用平台原生能力)
  • AGENTS.md 增加平台自省机制(识别平台 → 用平台原生能力 → 只补缺失)
  • fullstack/scaffolds/*.yaml rewritten in v2.0
  • hooks/scripts/{error-alert.sh,pre-task.sh} bash JSON parsing → Python inline
  • mcp/config/awesome-servers.json 28 servers → 12 (removed duplicate-key hack)
  • .env.example 140+ vars → 8 core vars
  • README.md repositioning

Removed

  • fullstack/tools/ (26 Python utilities)
  • fullstack/validation/ (5 scripts)
  • hooks/scripts/middleware/ (6 orphaned middleware files)
  • tools/README.md
  • docs/PLATFORMS.md(内容并入 platforms/README.md)
  • platforms/ 下 17 个冗余平台 README(保留官方必需入口)

Fixed

  • YAML duplicate key silently dropping steps
  • pre-task.sh nested $() syntax error
  • error-alert.sh JSON parsing failure in Git Bash
  • Cross-platform bootstrap path + Python invocation

相关资源