← 返回主报告:Kimi Agent(云端沙箱)技术报告 | GitHub 原文
合规与风险声明:本报告为安全研究与互操作学习目的的逆向分析,全程只读采集,未对目标系统做任何修改;文中所有密钥、token、账号级标识(chat_id / project_id / tenant_id 等)均已脱敏;沙箱内发现的默认弱口令(VNC/SSH)属平台侧配置,仅作安全发现披露,请勿用于访问任何不属于自己的系统。docx/pdf/xlsx/kimi-slides 等引擎二进制为 Moonshot 专有许可(禁再分发/逆向),本文仅作行为级描述。报告基于单次分析窗口(约 50 分钟生命周期),软件版本与技能库存随镜像更新可能变化。
采集方式:HTTP 只读镜像(
http://127.0.0.1:18080/app/.agents/skills/)。 原始文本已镜像到sections/18-xlsx-raw/(SKILL.md 992 行全文、3 份金融子技能、comps 三层 references、pivot-table.md,共约 2900 行)。 第一轮报告 §3.2(sections/09-skills-d.md:224)只覆盖到 SKILL.md 前 130 行,本章为全量补齐 + 工程深拆。
1. 技能组清单与体量
| 路径 | 体量 | 性质 |
|---|---|---|
xlsx/SKILL.md | 992 行 / 45KB | 主技能(父技能) |
xlsx/scripts/Xlsx | 77,001,601 字节 ELF x86-64 | 闭源 CLI,统一校验/透视表工具 |
xlsx/reference/3_statement_model_skill.md | 959 行 | 金融子技能:三表模型 |
xlsx/reference/DCF_SKILL.md | 456 行 | 金融子技能:DCF 估值(内嵌版式参考) |
xlsx/reference/comps-analysis/Comps_analysis SKILL.md | 102 行 | 金融子技能:可比公司(入口) |
xlsx/reference/comps-analysis/references/{calculation_guide,model_construction,workbook_format}.md | 108/200/210 行 | comps 的三层嵌套参考 |
xlsx/reference/pivot-table.md | 339 行 | PivotTable 操作手册(配合 CLI) |
xlsx/LICENSE.txt | 719 字节 | Moonshot AI 专有许可,明确禁止逆向/再分发 |
对比组(同在 /app/.agents/skills/):
| 技能 | 实现 | 许可 |
|---|---|---|
chart-gen / chart-image | 同一套 chart.mjs(54KB,Vega-Lite + Sharp 出 PNG),CN/EN 克隆对 | chart-gen 注明 <!-- Localized from: chart-image -->,是外部技能(clawd 生态,/data/clawd/skills/ 路径残留)的本地化 |
data-viz-gen / data-viz-renderer | 同一份 build_infographic.py(669 行纯 Python,JSON→自包含 HTML/SVG,4 类型 8 配色),CN/EN 克隆对 | MIT |
code-to-chart | analyze_codebase.py:AST 解析 import 依赖→Mermaid/SVG | MIT |
gantt-chart-builder | gantt_generator.py:CPM 关键路径→交互式 HTML 甘特图 | MIT |
xlsx 自身不带 LICENSE 之外的依赖声明;chart-gen 的 package.json 仅 vega ^5.30 / vega-lite ^5.21 / sharp ^0.33。
2. scripts/Xlsx 二进制鉴定(本轮重点之一)
file层面:ELF 64-bit,动态链接libgcc_s,C++ 运行库符号齐全。- strings 取证(流式取样,未落盘):出现
corehost_main_with_output_buffer、Error: Attempt to access unloaded AppDomain、ELEMENT_TYPE_SENTINEL、DotNETRuntimePrivate:ParseXml、BrotliEncoderHasMoreOutput、libssl 符号解析提示等——这是 .NET (CoreCLR) 自包含单文件发布产物(self-contained single-file app),native host 内嵌完整 CoreCLR 运行时,托管 DLL 以 Brotli 压缩进 bundle(因此 strings 里大量”网页语料”其实是 Brotli 静态字典,不是业务文本)。77MB 体量与自包含 .NET 应用吻合。 - 结合 SKILL.md 自述(”pure OpenXML SDK (C# tool)”),可确认:C# + DocumentFormat.OpenXml 实现的 6 命令 CLI,无外部进程依赖(不调 LibreOffice/soffice——strings 中未见 soffice 线索,且沙箱侧也未声明)。
- 值得注意:
recheck能报”公式结果为 0 的单元格“和”#VALUE!/#REF! 等公式错误”,说明二进制内部自带公式求值引擎(openpyxl 本身不求值);SKILL.md 提到”这些公式能通过 LibreOffice 重算但在 MS Excel 报 #N/A”,暗示其求值语义对齐 LibreOffice。具体求值库无法从压缩 bundle 取证,标记为推断。 - 法律边界:LICENSE.txt 明确”proprietary property of Moonshot AI … Reverse engineering, decompiling … is prohibited”。直接把二进制搬进 Hermes/Kimi Code 分发有合规风险,移植时应以重写替代(见 §7)。
3. 主技能 SKILL.md 结构解剖(992 行)
输入输出契约():
“You must eventually deliver an Excel file … must include a .xlsx file”;”do not provide any files other than what the user requested, especially readme documentation, as this will take up too much context.”(SKILL.md:29-30)
技术栈硬锁定():Python3 + openpyxl/pandas 走 ipython 工具做生成;./scripts/Xlsx 走 shell 工具做校验。生成与校验职责分离——LLM 只用 openpyxl 写,正确性由确定性二进制裁决。
3.1 Xlsx CLI 的 6 命令(契约级细节)
recheck(每次保存后必跑):检测 7 类公式错误值(#VALUE!/#DIV/0!/#REF!/#NAME?/#NULL!/#NUM!/#N/A)、零值公式单元格(”often indicates reference errors”)、隐式数组公式——如MATCH(TRUE(), range>0, 0)在 LibreOffice 自动数组化、在 MS Excel 需 CSE 否则 #N/A;SKILL.md 直接给出改写处方:SUMPRODUCT((A1:A10>0)*ROW(A1:A10))-ROW(A1)+1。reference-check(别名refcheck):针对 AI 生成公式的 4 类典型病——引用范围远超实际数据行、把表头行卷进计算、SUM/AVERAGE 只覆盖 ≤2 格、同列中偏离主导模式的”孤立公式”。这是用静态规则编码”LLM 写公式的常见幻觉模式”,针对性极强。inspect:输出 JSON(sheets/tables/headers/dataRange),是pivot的前置参数发现步骤(pivot-table.md 给出 inspect 字段→pivot 参数的映射表)。pivot:纯 OpenXML SDK 生成 PivotTable + 自动配图(bar/line/pie),--style monochrome|finance(内建 PivotStyleMedium9/2),支持 rows/cols/filters/values 五种聚合(sum/count/avg/max/min)。chart-verify:验证图表非空,退出码语义化(0 可交付 / 1 必须修)。validate:OpenXML schema 校验(Office 2013 基线)、禁用函数黑名单(FILTER/UNIQUE/XLOOKUP/LET/LAMBDA/SEQUENCE 等 Excel 365 动态数组函数 + Google Sheets 专有函数,SKILL.md 给出 12 行对照替代表)、.rels绝对路径检测(”absolute paths cause Excel to crash”)、透视表/图表结构完整性。--lenient可查看被智能白名单忽略的 openpyxl 良性 schema 问题;pivotCache/pivotTable/rowItems 类错误永不豁免。
3.2 公式保真原则(为什么严禁 Python 算完贴硬编码)
原文(SKILL.md:106, 111-112):
“It is strictly forbidden to calculate derived model outputs in Python or any external tool and then paste finished hardcoded numbers into Excel; if a value can be linked by workbook formulas, it MUST remain formula-driven in the delivered file.” “static hardcoded values are allowed only for true inputs, assumptions, or historical/raw reported data.” “Build the logic in Excel formulas so the workbook remains linked, traceable, and updateable.”
理由链:交付物是活模型不是死报表——投行用户要改假设看联动;Python 预计算等于把逻辑烧成灰。例外白名单明确:外部取数、真常量、会成循环引用的场景才允许静态值(SKILL.md:352-355)。敏感性分析表也点名”必须公式驱动”(DCF_SKILL.md:53)。
3.3 校验闭环与反”理性化”设计
工作流是逐 sheet 门控(SKILL.md:299-310):PLAN→CREATE→SAVE→recheck+reference-check→0 错才许建下一个 sheet→全部完成后 validate→交付。明确禁止”全部建完最后统一校验”(错误会级联)。
最有工程价值的是预判 LLM 的推诿话术并逐条封堵(SKILL.md:371-384):
❌ “These errors will disappear when the user opens the file in Excel” — WRONG ❌ “The #REF! error is because openpyxl doesn’t evaluate formulas” — WRONG ❌ “Zero values are expected” — VERIFY each one “Files with ANY
recheckerrors CANNOT be delivered.”
validate 失败时的处置同样是反修补纪律:”Do NOT attempt to ‘fix’ the file. Regenerate it from scratch with corrected code.”(SKILL.md:267)
已知深坑被显式编码:openpyxl 重保存会破坏 pivotCache 路径导致 Excel 崩溃,因此 pivot 必须是流水线最后一步、输出文件不得再被 openpyxl 打开(pivot-table.md:314-339 给出正确/错误时序图)。
3.4 样式与行业惯例编码
- 字体颜色三色规则(SKILL.md:728-734,金融模型为”hard minimum standards”):蓝=固定值/输入;黑=计算公式;绿=纯跨表引用;红=外部链接。细化规则:公式混合引用与运算(如
=-('Balance Sheet'!H12-'Balance Sheet'!G12))算黑不算绿(3_statement_model_skill.md:121-122 专门举例)。 - 区域涨跌色约定:中国红涨绿跌、国际绿涨红跌(SKILL.md:655-661 表格)。
- 双风格体系:默认极简黑白灰+蓝点缀(非金融),金融用 Professional Finance(深藏青
#122B49表头);网格线必须隐藏;从 B2 起排;默认禁 wrap text;每个交付物必须有封面页(标题/关键指标/sheet 索引/透视表刷新提示)。 - 数字纪律:金额存最小单位(15000000 而非 1.5M)靠 Excel 格式显示;禁用缩放单位进公式;百分比
0.0%;statement 值整数、零以格式显示-(#,##0;(#,##0);-)而非手打字符。 - 图表强制令:用户提到 visual/chart 就必须用 openpyxl 嵌真图表,禁止建”CHARTS DATA”表让用户自己去 Insert(SKILL.md:810-817),chart-verify 卡出口。
4. 金融子技能体系(三表/DCF/comps)
父技能定义了加载协议(SKILL.md:81-118):子技能是方法论/版式/校验的最高权威;组合规则——comps 独立、DCF 默认先建三表、LBO 从三表起步;被路由到子技能则必须全文读完才能动手;Raw Data 只许历史、历史须先与披露总额 reconcile;”模型不过全部 check 就不是交付物”。
4.1 三表模型(959 行,子技能中最厚)
- 固定六表结构:Raw Data → Operating Drivers → Income Statement → Supporting Schedules → Balance Sheet → Cash Flow。默认 5 年历史 + 3 年预测;Raw Data 永不出现预测年份(16.3 节用”under any circumstance”强调)。
- Operating Drivers 是灵魂:禁止”单行增长率预测”,按行业给驱动栈模板(车企=分车型交付×ASP;SaaS=客户×ARPU×留存;零售=同店×新店……),每个预测块必须配 Growth Catalyst(何事/为何/证据/持续期/周期性),反例直接写出”
2026 growth = 15%“这种是无效的。 - 假设治理:每个硬编码必须有假设表(Line Item/各年份/Source/Rationale 八列),Source 可接受标签枚举到 “sell-side channel check” 级别。
- 完整勾稽公式库:PP&E 三段滚动、债务利息(平均债务×利率防循环)、NOL/递延税全套公式(
NOL Utilized = MIN(Beginning NOL, Utilization Limit)等 7 行)、营运资本 roll-forward(AR/存货/AP 的 ending=prior+流入-流出)、权益法投资黄金规则Investing_Cash_LT = -(ΔLT_Investments - Equity_Income_Affiliates)(含为什么:权益收益已在净利且非现金,不减会错 CFI 并打破平衡)。 - 循环引用处理:不回避——明确允许迭代计算(max iterations 100 / max change 0.001),建议 circuit breaker,且”不得为消除循环而打断核心债务/现金/利息链接”。
- 校验机制是提示词级而非脚本级:11.1 节 14 条交付前测试 + 10 行勾稽检查表(Balance/Cash Tie-Out/NI Link/RE Roll-Forward/Debt/WC/Capex-PPE/D&A/Equity/DTA,每条给公式和期望=0);容差公式
=IF(ABS(TA-TL&E)<0.1,"Check","Error");Balance Check 行必须红色加粗、每年显示 Check/Error。 - 调试启发式(11.3-11.4):不平衡时按 11 步顺序查(先查 CF 符号),并给”差额定位法”——差额=某行或其倍数就先查该行;差额=Cash 先查 BS Cash←CF Ending Cash 映射;差额=Capex 查 PP&E 滚动……这是把投行分析师 debug 经验编码成决策树。
- 年度标签映射陷阱(16.1):BS 现金链接 CF 期末现金必须按年份标签而非列字母映射,逐年验证。这类”看着显然、AI 常错”的点被单列成强制条款。
4.2 DCF(456 行,内嵌版式参考)
- 方法论完整链:估值框架确认(估值日/币种/折现惯例)→ 从运营模型链接预测(禁止在 DCF 页重建第二份预测)→ NOPAT→UFCF(默认
NOPAT = EBIT×(1-t);UFCF 必须无杠杆、不含利息/分红;不机械加回 SBC)→ WACC 逐步搭建(CAPM 默认;beta 卸载/再加载公式齐全;市值权重;税后债务成本)→ 终值(永续增长主方法,g<WACC 硬约束;退出倍数做交叉验证且”倍数与终值基数要匹配”)→ 年中折现惯例默认 → EV→Equity→隐含股价桥(净现金情形自然流过;负股权价值不得机械放行,须复查确认合理)。 - Format Reference 精确到单元格:标题合并 B1:H1、WACC 块 K12:P12、敏感性双表 B63:G69/J63:O69、仅 C3 用黄底虚线框、字体 Arial 8-10、色板
#0F243E/#D9E2F3/#FFF2CC/#0000FF(纯蓝硬编码),并规定”不得把 comps 的绿底带入 DCF”。 - 验证清单 11 条,含”敏感性方向性检查”(WACC↑则值↓)。
4.3 comps-analysis(102 行入口 + 518 行三层 references)
- database-first 架构:先建宽口径 DATABASE 块(深藏青分隔条),顶层精选 6-10 家 peers 的表用 XLOOKUP/INDEX-MATCH/VLOOKUP 从库中引用而非重打;分析块(增长/利润率/倍数)从引用值现算;估值桥引用精选组的 Mean/Median + 蓝色目标输入。
- Year Lock 协议:开工前锁死整簿 Year Set(如
2025A/2026E/2027E),用户指定年份(”FY26″/”26E”)覆盖一切默认值,”禁止静默回退到熟悉的 2023/2024″;列标 2026 而公式喂 2023 数据被列为明确违规。 - NM/– 语义:负 EBITDA 的 EV/EBITDA、负 EPS 的 P/E 显示 NM 且不进 Mean/Median(不得 coercion 为 0);未用桥列显示
--;交付面上不留 Excel 错误值。 - 行业化指标集:明示不搞 universal metric set——Big Tech 看规模/增长/现金流,SaaS 看 EV/Revenue 而非 P/E,银行/保险/REIT/能源/半导体各自不同。
- 版式精确到 RGB:硬编码蓝
rgb(79,113,190)、Mean/Median 绿底rgb(228,238,220)全宽+细外框(且估值桥的 Mean/Median 不继承绿底——”桥是估值情形不是 comps 汇总行”)、倍数自定义格式0.0"x"显示 6.2x 但保持数值型、三层表头+组下划线”括号效果”、条件格式三色标度(增长/利润率越高越绿,倍数反向越低越绿)。 - Peer 选择启发式 6 条(商业模式相似度优先于品牌知名度),排除明显名字要写明理由。
5. 与 chart-gen/data-viz 系的对比结论
两条完全不同的图表路线:
- xlsx 路线:图表必须是 Excel 原生图表对象(openpyxl.chart 或 pivot 命令自动生成),随 .xlsx 交付、用户可在 Excel 里继续编辑;chart-verify 把关。面向”可继续加工的办公交付物”。
- chart-gen/chart-image:Vega-Lite→Sharp 光栅化 PNG,强调无浏览器、~15MB 依赖、<500ms 冷启动——面向”报告/告警里贴图”。本身是外部 clawd 技能本地化(路径残留
/data/clawd/skills/,与 speech-synthesis 一样是导入杂质证据)。 - data-viz-gen/renderer:669 行纯 Python 零依赖脚本,JSON→自包含 HTML/SVG(统计卡/对比柱状/流程图/仪表盘),CN/EN 同一份脚本两个壳——冗余克隆对,移植时只需一份。
- code-to-chart、gantt-chart-builder 与表格无关,是”JSON/代码→HTML/Mermaid”家族成员,均为 MIT + 单 Python 脚本。
6. 工程质量亮点与坑(汇总)
亮点:
- 生成/校验二分:LLM 只写 openpyxl,确定性二进制做终审(退出码=交付门),与 pdf 技能的 .pptd DSL+CLI 同属”确定性引擎兜底”范式。
- 反幻觉/反推诿提示工程:reference-check 的 4 类 AI 典型公式病、”errors will auto-resolve” 话术封堵、”validate 失败须重新生成而非修补”,都是可被直接抄走的 prompt 模式。
- 领域 know-how 密度极高:三色字体、区域涨跌色、勾稽检查表、差额定位调试法、Year Lock、database-first——相当于把投行建模培训手册压进 markdown。
- 嵌套子技能 + 优先级/组合规则:父技能只管调度与兜底,子技能是权威;comps 自己还有三层 references——skill 内”按需加载”分层是本库最成熟的样本。
- 校验无外部 API/凭证依赖:Xlsx CLI 离线运行,取数走 datasource/web_search 插件但技能只规定”引用来源两列”的呈现契约,职责分离干净。
坑:
- Xlsx 二进制闭源且禁止逆向(LICENSE.txt),77MB,是移植的最大障碍;其”零值公式检测”暗示内嵌求值引擎,重写工作量不小。
- openpyxl↔pivotCache 互斥:pivot 必须最后跑、产物不可再被 openpyxl 触碰——移植工作流时必须保留此时序约束。
- LibreOffice/Excel 语义差(隐式数组公式)靠黑名单+改写处方兜底,说明求值引擎与真实 Excel 仍有鸿沟,”recheck 过 ≠ Excel 打开没问题”的残余风险存在。
- 金融校验大量停留在提示词 checklist(14 条交付前测试),依赖模型自觉执行 recheck/肉眼核对颜色——确定性校验只覆盖公式错误/schema/图表非空,不覆盖勾稽平衡与配色合规。
- 工具名耦合
ipython/shell(Kimi agent runtime),搬到其他 runtime 需改工具引用。 - 多份文件中英小瑕疵(”coloered”、”ful row”)表明这些文档经多轮人工/模型混合编辑,但不影响语义。
7. 移植评估表
| 组件 | 对 Hermes 价值 | 对 Kimi Code 价值 | 移植工作量 | 硬依赖 |
|---|---|---|---|---|
| 金融三子技能(3SM 959 行 / DCF 456 行 / comps 全套 620 行) | 高——投行级建模方法论+勾稽校验+三色规则,纯提示词,Hermes 若做金融场景直接获得领域纵深 | 高——SKILL.md 格式与 Kimi Code 技能系统同构,放 user/plugin scope 即挂即得 | 纯拷贝(改 ipython→本地 python 执行约定即可) | python3+openpyxl;无 API/凭证 |
| xlsx 主 SKILL.md 非金融部分(逐 sheet 门控、样式规则、图表强制令、封面页、来源引用契约) | 高——”确定性校验+反推诿话术”是通用交付纪律 | 高——同上 | 纯拷贝 | 无 |
| Xlsx CLI(77MB 闭源 .NET) | 中——校验闭环的物理基础,但许可证禁止逆向/再分发 | 中——同理 | 需重写:可用 LibreOffice headless 重算 + Python 静态检查器(公式错误/零值/范围异常/禁用函数黑名单/schema 校验可用 openpyxl+正则+lxml 复刻大部分;pivot 生成最难,可先砍掉或改用 pandas 汇总表替代) | 原版:无运行时依赖但闭源;重写版:LibreOffice 或自研求值 |
| pivot-table.md | 低-中——与 CLI 强耦合 | 低-中 | 需适配(随 CLI 重写而定) | Xlsx CLI |
| 金融校验 checklist(14 条交付测试/勾稽表) | 高——不依赖二进制,纯流程纪律 | 高 | 纯拷贝 | 无(但执行靠模型自觉) |
| chart-gen(chart.mjs + vega/sharp) | 中——报告贴图场景可用;注意是第三方技能本地化,需核许可 | 中 | 需适配(npm install,~15MB) | Node.js + sharp 预编译二进制 |
| data-viz-gen/build_infographic.py | 中——669 行零依赖单脚本,MIT | 中 | 纯拷贝 | python3 标准库 |
| code-to-chart / gantt-chart-builder | 低-中(与表格主题无关) | 低-中 | 纯拷贝(MIT) | python3;SVG 输出需 mmdc |
总结论:本技能组 80% 的价值在金融子技能与主技能的提示词文本——纯提示词即可搬走,且与 Kimi Code 的 SKILL.md 体系天然同构;唯一真正的硬骨头是 77MB 闭源 Xlsx CLI,建议以”LibreOffice headless 重算 + Python 静态校验器”重写一个开源替代(pivot 命令可暂缓),重写后整套”生成-校验-交付门”闭环即可在 Hermes/Kimi Code 复现。