kiki-agent-lite 0.3.1 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -10
- package/dist/docs/en/configuration/config-files.md +63 -20
- package/dist/docs/en/configuration/data-locations.md +12 -4
- package/dist/docs/en/configuration/env-vars.md +4 -6
- package/dist/docs/en/configuration/overrides.md +13 -14
- package/dist/docs/en/configuration/providers.md +8 -6
- package/dist/docs/en/customization/agent-profiles.md +33 -38
- package/dist/docs/en/customization/agents.md +129 -107
- package/dist/docs/en/customization/hooks.md +41 -48
- package/dist/docs/en/customization/personas.md +19 -21
- package/dist/docs/en/customization/plugins.md +180 -156
- package/dist/docs/en/customization/prompt-fields.md +10 -6
- package/dist/docs/en/customization/skills.md +11 -13
- package/dist/docs/en/customization/skins.md +23 -27
- package/dist/docs/en/customization/themes.md +15 -15
- package/dist/docs/en/features/agents.md +85 -0
- package/dist/docs/en/features/daily.md +37 -7
- package/dist/docs/en/features/ecosystem.md +3 -1
- package/dist/docs/en/features/extend.md +7 -1
- package/dist/docs/en/features/freedom.md +4 -0
- package/dist/docs/en/features/index.md +6 -5
- package/dist/docs/en/features/long-work.md +23 -5
- package/dist/docs/en/features/look.md +1 -1
- package/dist/docs/en/features/people.md +10 -2
- package/dist/docs/en/features/spaces.md +16 -4
- package/dist/docs/en/features/workbench.md +11 -3
- package/dist/docs/en/getting-started/desktop-app.md +44 -29
- package/dist/docs/en/getting-started/first-launch.md +32 -21
- package/dist/docs/en/getting-started/installation.md +27 -12
- package/dist/docs/en/getting-started/use-cases.md +35 -35
- package/dist/docs/en/guides/goals.md +9 -7
- package/dist/docs/en/guides/interaction.md +26 -26
- package/dist/docs/en/guides/interface.md +18 -14
- package/dist/docs/en/guides/memory.md +43 -14
- package/dist/docs/en/guides/sessions.md +32 -26
- package/dist/docs/en/guides/settings.md +60 -29
- package/dist/docs/en/index.md +8 -2
- package/dist/docs/en/reference/command.md +8 -4
- package/dist/docs/en/reference/keyboard.md +18 -4
- package/dist/docs/en/reference/model-vocabulary.md +6 -8
- package/dist/docs/en/reference/slash-commands.md +4 -4
- package/dist/docs/en/reference/tools.md +92 -15
- package/dist/docs/en/release-notes/changelog.md +1 -9
- package/dist/docs/en/server/acp.md +1 -1
- package/dist/docs/en/server/ide.md +1 -1
- package/dist/docs/en/server/local-server.md +5 -5
- package/dist/docs/en/server/mcp.md +2 -2
- package/dist/docs/en/server/rest-api.md +79 -5
- package/dist/docs/en/server/sdk.md +2 -2
- package/dist/docs/zh/configuration/config-files.md +56 -15
- package/dist/docs/zh/configuration/data-locations.md +12 -4
- package/dist/docs/zh/configuration/env-vars.md +4 -6
- package/dist/docs/zh/configuration/overrides.md +13 -14
- package/dist/docs/zh/configuration/providers.md +7 -5
- package/dist/docs/zh/customization/agent-profiles.md +31 -36
- package/dist/docs/zh/customization/agents.md +120 -98
- package/dist/docs/zh/customization/hooks.md +35 -42
- package/dist/docs/zh/customization/personas.md +16 -18
- package/dist/docs/zh/customization/plugins.md +167 -142
- package/dist/docs/zh/customization/prompt-fields.md +9 -5
- package/dist/docs/zh/customization/skills.md +10 -12
- package/dist/docs/zh/customization/skins.md +19 -23
- package/dist/docs/zh/customization/themes.md +12 -12
- package/dist/docs/zh/features/agents.md +85 -0
- package/dist/docs/zh/features/daily.md +37 -7
- package/dist/docs/zh/features/ecosystem.md +3 -1
- package/dist/docs/zh/features/extend.md +7 -1
- package/dist/docs/zh/features/freedom.md +4 -0
- package/dist/docs/zh/features/index.md +6 -5
- package/dist/docs/zh/features/long-work.md +22 -4
- package/dist/docs/zh/features/look.md +1 -1
- package/dist/docs/zh/features/people.md +10 -2
- package/dist/docs/zh/features/spaces.md +15 -3
- package/dist/docs/zh/features/workbench.md +11 -3
- package/dist/docs/zh/getting-started/desktop-app.md +43 -28
- package/dist/docs/zh/getting-started/first-launch.md +32 -21
- package/dist/docs/zh/getting-started/installation.md +26 -11
- package/dist/docs/zh/getting-started/use-cases.md +35 -37
- package/dist/docs/zh/guides/goals.md +8 -8
- package/dist/docs/zh/guides/interaction.md +25 -25
- package/dist/docs/zh/guides/interface.md +18 -14
- package/dist/docs/zh/guides/memory.md +43 -14
- package/dist/docs/zh/guides/sessions.md +30 -24
- package/dist/docs/zh/guides/settings.md +54 -23
- package/dist/docs/zh/index.md +7 -1
- package/dist/docs/zh/reference/command.md +7 -3
- package/dist/docs/zh/reference/keyboard.md +18 -4
- package/dist/docs/zh/reference/model-vocabulary.md +6 -8
- package/dist/docs/zh/reference/slash-commands.md +3 -3
- package/dist/docs/zh/reference/tools.md +74 -9
- package/dist/docs/zh/release-notes/changelog.md +1 -9
- package/dist/docs/zh/server/acp.md +1 -1
- package/dist/docs/zh/server/ide.md +1 -1
- package/dist/docs/zh/server/local-server.md +5 -5
- package/dist/docs/zh/server/mcp.md +2 -2
- package/dist/docs/zh/server/rest-api.md +69 -1
- package/dist/docs/zh/server/sdk.md +2 -2
- package/dist/main.mjs +12545 -3456
- package/dist/web/assets/AppErrorBoundary-RFIAb-Uf.js +1 -0
- package/dist/web/assets/NavScopeBoundary-DY_ET7A-.js +1 -0
- package/dist/web/assets/{arc-y2SkSoyr.js → arc-CMgTB1m7.js} +1 -1
- package/dist/web/assets/{architectureDiagram-3BPJPVTR-uCwLz53m.js → architectureDiagram-3BPJPVTR-BU79ou2C.js} +1 -1
- package/dist/web/assets/{blockDiagram-GPEHLZMM-BZyWv36G.js → blockDiagram-GPEHLZMM-Bkuldod2.js} +1 -1
- package/dist/web/assets/{c4Diagram-AAUBKEIU-DKGx9i50.js → c4Diagram-AAUBKEIU-C3WMeqyu.js} +1 -1
- package/dist/web/assets/channel-DpDZUJRn.js +1 -0
- package/dist/web/assets/{chunk-2J33WTMH-CSkrhrsp.js → chunk-2J33WTMH-CesyWmwo.js} +1 -1
- package/dist/web/assets/{chunk-4BX2VUAB-CtxMoJ68.js → chunk-4BX2VUAB-C7rghYTf.js} +1 -1
- package/dist/web/assets/{chunk-55IACEB6-Dos3ftEy.js → chunk-55IACEB6-BqRHhwtz.js} +1 -1
- package/dist/web/assets/{chunk-727SXJPM-wbzEYK9z.js → chunk-727SXJPM-BhSqCRBc.js} +1 -1
- package/dist/web/assets/{chunk-AQP2D5EJ-B9GKvCD6.js → chunk-AQP2D5EJ-DdYE2ZVZ.js} +1 -1
- package/dist/web/assets/{chunk-FMBD7UC4-u5Y2P6IX.js → chunk-FMBD7UC4-BCRPUxDF.js} +1 -1
- package/dist/web/assets/{chunk-ND2GUHAM-B8rFKkTV.js → chunk-ND2GUHAM-CuvyDjTR.js} +1 -1
- package/dist/web/assets/{chunk-QZHKN3VN-EQsKtuD-.js → chunk-QZHKN3VN-BU5vAS78.js} +1 -1
- package/dist/web/assets/classDiagram-4FO5ZUOK-Bju1GfNu.js +1 -0
- package/dist/web/assets/classDiagram-v2-Q7XG4LA2-Bju1GfNu.js +1 -0
- package/dist/web/assets/client-C0oH7-8r.js +2 -0
- package/dist/web/assets/connection-BhO2nh7P.js +1 -0
- package/dist/web/assets/{cose-bilkent-S5V4N54A-D6dr5mIW.js → cose-bilkent-S5V4N54A-CXrvsA1a.js} +1 -1
- package/dist/web/assets/{dagre-BM42HDAG-Dnyhc4Hn.js → dagre-BM42HDAG-TaAea3Rt.js} +1 -1
- package/dist/web/assets/{diagram-2AECGRRQ-CYXkWdne.js → diagram-2AECGRRQ-CdEH4jGt.js} +1 -1
- package/dist/web/assets/{diagram-5GNKFQAL-DPwBf5Ag.js → diagram-5GNKFQAL-A0jZ_p-T.js} +1 -1
- package/dist/web/assets/{diagram-KO2AKTUF-DNeLYZ8X.js → diagram-KO2AKTUF-miHWORz3.js} +1 -1
- package/dist/web/assets/{diagram-LMA3HP47-zU8RsQTX.js → diagram-LMA3HP47-BlUIwEIg.js} +1 -1
- package/dist/web/assets/{diagram-OG6HWLK6-Cf9Mm94H.js → diagram-OG6HWLK6-DwDzMhEg.js} +1 -1
- package/dist/web/assets/{erDiagram-TEJ5UH35-Ch4CeiUI.js → erDiagram-TEJ5UH35-BJr5w62i.js} +1 -1
- package/dist/web/assets/export-BlxaZKEe.js +2 -0
- package/dist/web/assets/{flowDiagram-I6XJVG4X-Csn6WqEH.js → flowDiagram-I6XJVG4X-BP7KSFjx.js} +1 -1
- package/dist/web/assets/{ganttDiagram-6RSMTGT7-DsuBgEyu.js → ganttDiagram-6RSMTGT7-BstLBBof.js} +1 -1
- package/dist/web/assets/{gitGraphDiagram-PVQCEYII-CPA7jCxU.js → gitGraphDiagram-PVQCEYII-C57s7nZ-.js} +1 -1
- package/dist/web/assets/highlighted-body-OFNGDK62-BVb-7KsA.js +1 -0
- package/dist/web/assets/index-69qhvTvD.js +1 -0
- package/dist/web/assets/{index-BYUHmd8w.js → index-BDNM6yJI.js} +2 -2
- package/dist/web/assets/{index-BGgZxlEQ.js → index-BJF_gEDs.js} +2 -2
- package/dist/web/assets/index-BOwMP6BP.js +1 -0
- package/dist/web/assets/{index-C69a5Mcz.js → index-BZsyXCqm.js} +1 -1
- package/dist/web/assets/{index-C7EA7a_g.js → index-Bfl4JiNq.js} +2 -2
- package/dist/web/assets/index-BlD3AKX-.js +1 -0
- package/dist/web/assets/{index-CIymCfcP.js → index-BnvW0EvQ.js} +1 -1
- package/dist/web/assets/index-C4rmWyOm.js +1 -0
- package/dist/web/assets/index-CGLcb3HY.js +1 -0
- package/dist/web/assets/{index-kWBxPqIX.js → index-CPvOeQPX.js} +1 -1
- package/dist/web/assets/index-Cjbe0JKM.js +1 -0
- package/dist/web/assets/index-CmYoJWUm.js +1 -0
- package/dist/web/assets/index-CtUFrjKe.js +1 -0
- package/dist/web/assets/index-DDvDRMTK.js +1 -0
- package/dist/web/assets/index-DSpndwAR.css +1 -0
- package/dist/web/assets/index-D_JjTHxi.js +1 -0
- package/dist/web/assets/index-DbuwcnbT.js +1 -0
- package/dist/web/assets/index-DcXyS0nN.js +1 -0
- package/dist/web/assets/index-Dcl9ruKA.js +1 -0
- package/dist/web/assets/index-DgwALPNA.js +121 -0
- package/dist/web/assets/{index-DoN1FTEe.js → index-DkE8hRT1.js} +2 -2
- package/dist/web/assets/index-DsyRBZ4h.js +1 -0
- package/dist/web/assets/{index-29zav3JI.js → index-DuudNhLL.js} +4 -4
- package/dist/web/assets/index-Gc4F0b2f.js +1 -0
- package/dist/web/assets/index-HGqqwKoV.js +13 -0
- package/dist/web/assets/index-KchrJnno.js +3 -0
- package/dist/web/assets/{index-B0KNSyji.js → index-Tmi2BPYU.js} +1 -1
- package/dist/web/assets/index-Ya4GuDs0.js +1 -0
- package/dist/web/assets/index-_aDaKqLB.js +1 -0
- package/dist/web/assets/index-_qwOAotB.js +1 -0
- package/dist/web/assets/index-hnIkczza.js +7 -0
- package/dist/web/assets/{infoDiagram-5YYISTIA-D3Q__m62.js → infoDiagram-5YYISTIA-CifuVY6C.js} +1 -1
- package/dist/web/assets/{ishikawaDiagram-YF4QCWOH-CcvCBuZ5.js → ishikawaDiagram-YF4QCWOH-Cd60vQUi.js} +1 -1
- package/dist/web/assets/{journeyDiagram-JHISSGLW-COZU4LNt.js → journeyDiagram-JHISSGLW-Cb3Xl_wl.js} +1 -1
- package/dist/web/assets/{kanban-definition-UN3LZRKU-BrXjBoAU.js → kanban-definition-UN3LZRKU-Ei6ThuZt.js} +1 -1
- package/dist/web/assets/{linear-BgP1STFi.js → linear-CDZJx-o2.js} +1 -1
- package/dist/web/assets/mermaid-GHXKKRXX-DFxyxD7G.js +331 -0
- package/dist/web/assets/{mindmap-definition-RKZ34NQL-CgjSrE5r.js → mindmap-definition-RKZ34NQL-B0ygxzkx.js} +1 -1
- package/dist/web/assets/navViewState-Ck_HK-TK.js +1 -0
- package/dist/web/assets/{pieDiagram-4H26LBE5-DTfe1sKA.js → pieDiagram-4H26LBE5-B2FdrvDv.js} +1 -1
- package/dist/web/assets/{quadrantDiagram-W4KKPZXB-D95hfh0q.js → quadrantDiagram-W4KKPZXB-CwpOTy3d.js} +1 -1
- package/dist/web/assets/{requirementDiagram-4Y6WPE33-DtSLi7Mh.js → requirementDiagram-4Y6WPE33-ExdZNzLQ.js} +1 -1
- package/dist/web/assets/{sankeyDiagram-5OEKKPKP-gi_dJpcU.js → sankeyDiagram-5OEKKPKP-u0EZKD7D.js} +1 -1
- package/dist/web/assets/{sequenceDiagram-3UESZ5HK-DKQ9a72t.js → sequenceDiagram-3UESZ5HK-BXHMy5DY.js} +1 -1
- package/dist/web/assets/{spaces-B2Ccyh_T.js → spaces-C8n7xQPx.js} +1 -1
- package/dist/web/assets/{stateDiagram-AJRCARHV-Bz7tmSqa.js → stateDiagram-AJRCARHV-DMXx7ell.js} +1 -1
- package/dist/web/assets/stateDiagram-v2-BHNVJYJU-Bydq1_By.js +1 -0
- package/dist/web/assets/theme-BBnHttAf.js +1 -0
- package/dist/web/assets/{timeline-definition-PNZ67QCA-BfMXPwhV.js → timeline-definition-PNZ67QCA-DtqVG_4u.js} +1 -1
- package/dist/web/assets/{vennDiagram-CIIHVFJN-WLxW2KT5.js → vennDiagram-CIIHVFJN-Dom0ex8r.js} +1 -1
- package/dist/web/assets/{wardley-L42UT6IY-DiiqwIdq.js → wardley-L42UT6IY-C-RstmuQ.js} +1 -1
- package/dist/web/assets/{wardleyDiagram-YWT4CUSO-DmCukWuw.js → wardleyDiagram-YWT4CUSO-C8CzNfdf.js} +1 -1
- package/dist/web/assets/{xychartDiagram-2RQKCTM6-Cfq1W2tT.js → xychartDiagram-2RQKCTM6-1AxVTyB6.js} +1 -1
- package/dist/web/index.html +2 -2
- package/native/auth-native/prebuilds/linux-arm64/auth-native.node +0 -0
- package/native/auth-native/prebuilds/linux-x64/auth-native.node +0 -0
- package/native/auth-native/prebuilds/win32-arm64/auth-native.node +0 -0
- package/native/auth-native/prebuilds/win32-x64/auth-native.node +0 -0
- package/package.json +1 -1
- package/dist/web/assets/AppErrorBoundary-DWpgwxFV.js +0 -1
- package/dist/web/assets/NavScopeBoundary-D8Lf1G0U.js +0 -1
- package/dist/web/assets/channel-BGdXootG.js +0 -1
- package/dist/web/assets/classDiagram-4FO5ZUOK-CPcnLy_H.js +0 -1
- package/dist/web/assets/classDiagram-v2-Q7XG4LA2-CPcnLy_H.js +0 -1
- package/dist/web/assets/client-DSIbyfoz.js +0 -2
- package/dist/web/assets/connection-DYZn9oPZ.js +0 -1
- package/dist/web/assets/export-Bq8ZECqX.js +0 -2
- package/dist/web/assets/highlighted-body-OFNGDK62-CDPBxM_E.js +0 -1
- package/dist/web/assets/index-AksnytJj.js +0 -1
- package/dist/web/assets/index-B8xhhYDh.css +0 -1
- package/dist/web/assets/index-BUrlrKap.js +0 -1
- package/dist/web/assets/index-B_5-HLed.js +0 -62
- package/dist/web/assets/index-BfmoxdpP.js +0 -1
- package/dist/web/assets/index-Bo3e-ohM.js +0 -3
- package/dist/web/assets/index-BrYV9gV_.js +0 -1
- package/dist/web/assets/index-C8XUtAvK.js +0 -1
- package/dist/web/assets/index-C9uil5my.js +0 -13
- package/dist/web/assets/index-CKpWHSp9.js +0 -1
- package/dist/web/assets/index-CLKBgQxV.js +0 -1
- package/dist/web/assets/index-CTyyUNWj.js +0 -7
- package/dist/web/assets/index-D7cg9qYZ.js +0 -1
- package/dist/web/assets/index-D7dg8R_q.js +0 -1
- package/dist/web/assets/index-DCSpedV_.js +0 -1
- package/dist/web/assets/index-DLbD0Nx5.js +0 -1
- package/dist/web/assets/index-DaEzbvvu.js +0 -1
- package/dist/web/assets/index-DhbcjMZF.js +0 -1
- package/dist/web/assets/index-Dw2h88mF.js +0 -1
- package/dist/web/assets/index-FcMtfmKv.js +0 -1
- package/dist/web/assets/index-XFq9Kgg0.js +0 -1
- package/dist/web/assets/index-iI2mM43w.js +0 -1
- package/dist/web/assets/index-oXOF7lko.js +0 -1
- package/dist/web/assets/locale-CANfezJ4.js +0 -17
- package/dist/web/assets/mermaid-GHXKKRXX-_JLagMll.js +0 -321
- package/dist/web/assets/navViewState-DS5LnMYc.js +0 -1
- package/dist/web/assets/settings-CcwMWXbp.js +0 -42
- package/dist/web/assets/stateDiagram-v2-BHNVJYJU-D6-wdUbw.js +0 -1
- package/dist/web/assets/theme-DlDhDxeD.js +0 -1
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
# 提示词字段与覆写
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
提示词字段覆写用于替换内置提示词中的具名片段——系统段、工具描述、委托通知——而无需分叉 profile。字段值是替换,不是追加、前置或包裹。
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
`kiki prompt-fields` 是发现和检查这些字段的只读命令。注册表、格式、优先级与校验规则在[配置文件:`prompt`](../configuration/config-files.md#prompt),本页说明各部分如何配合。
|
|
6
6
|
|
|
7
7
|
## 可以覆写什么
|
|
8
8
|
|
|
9
|
-
常用的内置字段 id 包括 `system.language`、`system.reply_style`、`system.coding`、`system.shared`、`tool.web-search.description`、`tool.web-search.guidance`、`delegation.sub.notice` 和 `delegation.independent.notice
|
|
9
|
+
常用的内置字段 id 包括 `system.language`、`system.reply_style`、`system.coding`、`system.shared`、`tool.web-search.description`、`tool.web-search.guidance`、`delegation.sub.notice` 和 `delegation.independent.notice`。系统字段替换内置提示词的对应段,只有 `system.shared` 是共享的外加段,非空时追加一次。工具 `description` 替换其静态描述;工具 `guidance` 追加在已有的 `User-configured guidance:` 标签之下。
|
|
10
10
|
|
|
11
11
|
## 覆写写在哪里
|
|
12
12
|
|
|
@@ -21,6 +21,10 @@ Kiki 提供只读界面来发现和校验这些字段:`kiki prompt-fields`。
|
|
|
21
21
|
|
|
22
22
|
优先级从低到高按表顺序;缺失的键继承较低层的值。完整格式、`${name}` 变量替换规则和校验失败行为见 [`prompt`](../configuration/config-files.md#prompt)。
|
|
23
23
|
|
|
24
|
+
已有 Agent 恢复时保留绑定时的提示词字段、自定义变量和 cognition 文本,即使来源文件后来被修改或删除。修改对新绑定生效;要在已有会话里采用新内容,选择[重建上下文](./agents.md#重建会话上下文)。显式换模会选择目标模型的提示词输入;单独设置 `new_window` 不会重新加载提示词来源。当前工具权限与模型硬约束仍然生效。
|
|
25
|
+
|
|
26
|
+
旧记录优先复用已保存的系统提示词,并尽可能从保存的 profile 还原内联字段。若记录从未保存必需的共享字段、工具覆写、steering 提示或 anchor,且原始输入已无法重建,恢复错误会点名缺失的输入。此时重建上下文以采用当前来源,无需回滚已安装的新提示词。
|
|
27
|
+
|
|
24
28
|
## 用 `kiki prompt-fields` 发现与校验
|
|
25
29
|
|
|
26
30
|
`kiki prompt-fields` 只读,不会修改 `config.toml`、`SYSTEM.md`、agent profile 或覆写文件。
|
|
@@ -34,11 +38,11 @@ kiki prompt-fields explain delegation.sub.notice --agent reviewer --model fast -
|
|
|
34
38
|
|
|
35
39
|
`explain` 打印字段的 `effective`、`shadowed` 或 `inactive` 状态、当前生效值,以及所选上下文下的完整来源链。用 `--agent`、`--model`、`--executor` 和 `--delegation-position <main|sub|independent>` 选择上下文;`--config <path>` 检查其他配置文件,`--home <dir>` 选择用于 `SYSTEM.md`、agent 发现和相对覆写文件的 Kiki home。
|
|
36
40
|
|
|
37
|
-
|
|
41
|
+
配置里如果还留着旧的 `prompt.shared` 和 `prompt.tools` 键,把这些条目迁到 `[prompt.overrides]` 下的字段,不要恢复旧键——见[提示词字段优先级](../configuration/overrides.md#提示词字段优先级)。
|
|
38
42
|
|
|
39
43
|
## 桌面版设置入口
|
|
40
44
|
|
|
41
|
-
|
|
45
|
+
在桌面版中,**设置 → 智能体 → 提示词字段**可以编辑这一段——见[设置页导览](../guides/settings.md#智能体)。卡片默认折叠。
|
|
42
46
|
|
|
43
47
|
## 下一步
|
|
44
48
|
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
# Agent Skills
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
相比每次把同样的指引粘到提示词里,Skill 的优势在于:内容沉淀在文件里、可以跨项目和团队复用、可以通过斜杠命令一键加载,也可以让模型在需要时自动调用。
|
|
3
|
+
一个 Skill 就是一份带 YAML frontmatter 的 Markdown 文档,描述某项知识或工作流程——项目代码风格、PR review 流程、提交消息格式。写进文件而不是每次粘进提示词,意味着它可以跨项目和团队复用,可以用斜杠命令加载,也可以在相关时由模型自动调用。
|
|
6
4
|
|
|
7
5
|
## 自定义提示命令
|
|
8
6
|
|
|
9
|
-
|
|
7
|
+
命令是同一种文件,只有你明确发送 `/名称 参数` 时才加载。命令复用 Skill 目录和参数展开,但模型不会看到它的描述来做自动调用。
|
|
10
8
|
|
|
11
9
|
在项目根目录创建 `.kiki/commands/brainstorm.md`:
|
|
12
10
|
|
|
@@ -20,13 +18,13 @@ argument-hint: "<讨论主题>"
|
|
|
20
18
|
不要创建文档或修改文件。
|
|
21
19
|
```
|
|
22
20
|
|
|
23
|
-
在 GUI 或终端输入 `/`,选择 `brainstorm`,补充主题后发送,例如 `/brainstorm
|
|
21
|
+
在 GUI 或终端输入 `/`,选择 `brainstorm`,补充主题后发送,例如 `/brainstorm 更简单的设置菜单`。选中条目只填入草稿,发送时才加载一次正文,连同你的参数和附件。
|
|
24
22
|
|
|
25
|
-
Frontmatter(文件开头的 YAML 元数据)可以完全省略:名称默认取文件名,菜单描述默认取正文第一行非空内容。可选的 `name`、`description` 和 `argument-hint`
|
|
23
|
+
Frontmatter(文件开头的 YAML 元数据)可以完全省略:名称默认取文件名,菜单描述默认取正文第一行非空内容。可选的 `name`、`description` 和 `argument-hint` 分别指定名称、描述和参数提示;名称不能包含空白、`/`、`\` 或 `:`。[正文占位符](#正文占位符)同样适用;没有参数占位符时,参数会附在正文末尾。作为参数插入的值不会再次展开。
|
|
26
24
|
|
|
27
|
-
用户级命令放在当前应用数据目录的 `commands/*.md
|
|
25
|
+
用户级命令放在当前应用数据目录的 `commands/*.md`,项目级命令放在项目根目录的 `.kiki/commands/*.md`,只读取目录下直接放置的 Markdown 文件;项目级同名命令优先。旧的 `.kimi-code/commands/` 不会读取。文件修改会被监听,重新打开 GUI 斜杠菜单或在终端运行 `/reload` 即可看到。
|
|
28
26
|
|
|
29
|
-
|
|
27
|
+
内置快捷动作保留裸名称,`/plan` 仍用于控制 Plan 模式;与它重名的 Skill 显示为 `/skill:plan`,与 Skill 重名的命令显示为 `/command:名称`,以菜单显示的名称为准。命令正文是用户提示词,不是系统提示词或脚本,不授予权限、不切换模式、也不执行任何东西。发送前先看一眼陌生仓库里的命令文件。
|
|
30
28
|
|
|
31
29
|
## 创建 Skill
|
|
32
30
|
|
|
@@ -93,7 +91,7 @@ Kiki 按作用域分四档扫描,越具体的作用域优先级越高:**Proj
|
|
|
93
91
|
- `$KIKI_HOME/skills/`(默认:`~/.kiki/skills/`)
|
|
94
92
|
- `~/.agents/skills/`
|
|
95
93
|
|
|
96
|
-
Kiki 专属用户级 Skill
|
|
94
|
+
Kiki 专属用户级 Skill 目录随 `KIKI_HOME` 移动,因此换数据根会得到自己的一份;通用 `~/.agents/skills/` 仍放在真实 OS home 下,便于跨工具共享。
|
|
97
95
|
|
|
98
96
|
**项目级**(项目根 = 工作目录向上最近的含 `.git` 的目录):
|
|
99
97
|
- `.kiki/skills/`
|
|
@@ -105,18 +103,18 @@ Kiki 专属用户级 Skill 目录会随 `KIKI_HOME` 移动,因此隔离数据
|
|
|
105
103
|
extra_skill_dirs = ["~/team-skills", ".agents/team-skills"]
|
|
106
104
|
```
|
|
107
105
|
|
|
108
|
-
**内置 Skills** 随 CLI
|
|
106
|
+
**内置 Skills** 随 CLI 一起分发,优先级最低,覆盖配置 MCP server、定制 TUI 主题、编辑配置文件这类常见任务,完整列表见[内置 Skill 命令](../reference/slash-commands.md#内置-skill-命令)。Kiki 随包分发的 Skill 全部介绍 Kiki 自身,因此顶层 [`builtin_product_skills`](../configuration/config-files.md#顶层字段) 可以一次性关掉全部,包括 `/kiki-ops`;改回 `true` 即可恢复。
|
|
109
107
|
|
|
110
108
|
## 调用 Skill
|
|
111
109
|
|
|
112
110
|
用户通过斜杠命令主动调用:
|
|
113
111
|
|
|
114
|
-
```
|
|
112
|
+
```text
|
|
115
113
|
/skill:code-style
|
|
116
114
|
/skill:git-commits 修复登录接口的并发问题
|
|
117
115
|
```
|
|
118
116
|
|
|
119
|
-
模型也可以根据 `description` 和 `whenToUse` 自动调用 Skill(除非 `disableModelInvocation`
|
|
117
|
+
模型也可以根据 `description` 和 `whenToUse` 自动调用 Skill(除非 `disableModelInvocation` 为 `true` 或 `type` 为 `flow`)。Skill 之间可以嵌套调用,最多 3 层。
|
|
120
118
|
|
|
121
119
|
## 完整示例
|
|
122
120
|
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
# GUI 皮肤
|
|
2
2
|
|
|
3
|
-
皮肤决定 Kiki GUI
|
|
3
|
+
皮肤决定 Kiki GUI 的配色、字体、圆角和密度。Kiki 内置六个亮暗成对的皮肤家族,你也可以用 JSON 文件添加自己的。皮肤只设置 design token,不带 CSS 也不带代码,所以你装的东西既改不了审批界面的样式,也不会在你的机器上运行任何程序。
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
亮色与暗色仍是单独的选择。一套皮肤可以只提供亮色变体、只提供暗色变体,或者两者都有;具体看到哪一个,仍由皮肤选择器上方的主题开关决定。
|
|
5
|
+
亮色与暗色仍然是单独的选择。一套皮肤可以只提供亮色变体、只提供暗色变体,或者两者都有;实际看到哪一个,由皮肤选择器上方的主题开关决定。
|
|
8
6
|
|
|
9
7
|
## 内置皮肤
|
|
10
8
|
|
|
@@ -17,8 +15,6 @@
|
|
|
17
15
|
| **鸢尾 Iris × 星幕 Starveil** | 亮色、暗色 | 紫白纸片、鸢尾紫墨;入夜是靛紫层级与银紫操作色。 |
|
|
18
16
|
| **高对比 High contrast × 高对比·黑曜 Obsidian** | 亮色、暗色 | 可见边界、AAA 级主文字;入夜是分层炭灰、冰青焦点与近白操作色。 |
|
|
19
17
|
|
|
20
|
-
墨砚在 Paper 家族内替代原来的默认暗色。Linen、Graphite、Forest、Claret、Heather、Nocturne、Sand 和 Slate 已下线。已存的内置主题选择会回退到默认:亮色显示纸色,暗色显示墨砚,桌面空间的偏好也一样。亮色 / 暗色 / 跟随系统的选择,以及强调色、字体、圆角和密度的覆盖都会保留。同名的用户皮肤文件不受退役影响。
|
|
21
|
-
|
|
22
18
|
## 选择与微调
|
|
23
19
|
|
|
24
20
|
设置 → 外观:
|
|
@@ -40,9 +36,9 @@
|
|
|
40
36
|
- **面板不透明度**和**面板模糊**:侧栏和对话区透出多少背景。
|
|
41
37
|
- **亮色和暗色分开设置**:默认关闭;打开后可以给两个主题各选一张。
|
|
42
38
|
|
|
43
|
-
无论选什么,文字都保持可读。Kiki
|
|
39
|
+
无论选什么,文字都保持可读。Kiki 会测量图片,把**面板不透明度**提高到刚好让最浅的文字在图片最亮和最暗处都达到 WCAG AA(4.5:1),发生提升时设置页会说明。菜单、对话框、审批提示和输入框卡片始终是实底。
|
|
44
40
|
|
|
45
|
-
|
|
41
|
+
视频静音循环播放。窗口隐藏或失焦、开启减弱动效、电量低且未充电时,视频停在第一帧(或外观包的封面图)上。超过 1440p 或 40 MB 的视频会给出提示:它们占用大量内存,而在面板后面看不出差别。
|
|
46
42
|
|
|
47
43
|
## 主题文件夹
|
|
48
44
|
|
|
@@ -56,13 +52,13 @@
|
|
|
56
52
|
放好文件后,在「外观」里点**重新加载皮肤**,不需要重启。
|
|
57
53
|
|
|
58
54
|
::: warning 是哪台机器上的目录?
|
|
59
|
-
Kiki
|
|
55
|
+
主题目录读取的是**运行 Kiki 服务端那台机器**上的文件,因为那是服务端唯一能看到的文件系统。
|
|
60
56
|
|
|
61
|
-
- **桌面版** ——
|
|
62
|
-
- **浏览器连接远程服务端** ——
|
|
57
|
+
- **桌面版** —— 你自己的 `~/.kiki/themes/`。
|
|
58
|
+
- **浏览器连接远程服务端** —— 这个目录属于那台服务端,不是你正在浏览的设备。内置皮肤两种情况都可用,因为它们随应用一起发布。
|
|
63
59
|
:::
|
|
64
60
|
|
|
65
|
-
Kiki
|
|
61
|
+
Kiki 不会往这个目录里写皮肤文件:**导出为皮肤文件**只是把文件交给你,由你自己放好。外观包是例外:**导入外观包**和**删除**会在此创建或移除外观包文件夹,不做别的事。
|
|
66
62
|
|
|
67
63
|
## 编写皮肤
|
|
68
64
|
|
|
@@ -129,7 +125,7 @@ Kiki 不会往这里写皮肤文件:导出皮肤只是把文件交给你,由
|
|
|
129
125
|
| `shadowInk` | 阴影和模态遮罩混合所用的颜色 |
|
|
130
126
|
|
|
131
127
|
::: tip 让文字保持可读
|
|
132
|
-
|
|
128
|
+
Kiki 内置配色的正文、辅助字、提示字与语义文字在 `canvas`、`paper`、`panel` 上都达到 WCAG AA(4.5:1),`onAccent` 对 `accent` 也一样。文字请用 `accentInk`,不要复用按钮填充色 `accent`,纸色尤其如此。低于这个对比度的皮肤仍会被加载,Kiki 不会替你改,所以分享之前把 `ink`、`inkSoft`、`inkFaint` 对着三个表面都检查一遍。
|
|
133
129
|
:::
|
|
134
130
|
|
|
135
131
|
### 字体
|
|
@@ -158,11 +154,11 @@ Kiki 不会往这里写皮肤文件:导出皮肤只是把文件交给你,由
|
|
|
158
154
|
|
|
159
155
|
## 出错时会发生什么
|
|
160
156
|
|
|
161
|
-
|
|
157
|
+
有问题的皮肤不会让你用不了界面。「外观」会说明它对每个文件做了什么:
|
|
162
158
|
|
|
163
|
-
- **颜色或字体值非法**:只丢掉那一个 token
|
|
164
|
-
- **无法识别的 token
|
|
165
|
-
- **出现意料之外的顶层字段**(例如 `css
|
|
159
|
+
- **颜色或字体值非法**:只丢掉那一个 token,保留默认值,其余照常生效。
|
|
160
|
+
- **无法识别的 token**:忽略。
|
|
161
|
+
- **出现意料之外的顶层字段**(例如 `css`):整个文件被拒绝并说明原因——带着 token 之外的东西的文件不算皮肤。
|
|
166
162
|
- **JSON 格式错误,或是 TUI 主题文件**:跳过并说明原因,其他文件照常加载。
|
|
167
163
|
- **已选中的皮肤文件消失**:GUI 回退到默认配色并提示皮肤已丢失,而不是悄悄换成另一套。
|
|
168
164
|
|
|
@@ -203,22 +199,22 @@ Kiki 不会往这里写皮肤文件:导出皮肤只是把文件交给你,由
|
|
|
203
199
|
- `background.media` 列出 1–12 个文件;多于一个时,`interval`(秒)会让它们轮播。`poster` 是视频暂停时显示的静帧。
|
|
204
200
|
- 背景参数有 `fit`(`cover` `contain` `tile` `center`)、`alignment`(`center` `top` `bottom` `left` `right` `topLeft` `topRight` `bottomLeft` `bottomRight`)、`opacity`(0–1)、`blur`(0–40)、`brightness`(0.4–1.4)、`scrim`(0–0.9)、`scope`(`window` `main` `sidebar`)、`surfaceOpacity`(0.3–1)和 `surfaceBlur`(0–32)。命名沿用 Windows Terminal 的背景设置。
|
|
205
201
|
|
|
206
|
-
`surfaceOpacity`
|
|
202
|
+
`surfaceOpacity` 决定所选范围内各 GUI 页面的纸面和右栏透出多少背景。阅读辅助会保留对话区和设置页的局部文字底色,对其他页面纸面和右栏改用磨砂,而不是提高它们的不透明度。低不透明度下,内容复杂的背景仍可能让文字难读,需要更强的分隔就调高 `surfaceOpacity`。对话框、弹出菜单和输入卡片始终是实底。
|
|
207
203
|
|
|
208
204
|
内置技能 `kiki-appearance` 会带着 agent 做一个外观包:格式、每个颜色的对比度要求、媒体尺寸与编码、打包,以及常见的坑。
|
|
209
205
|
|
|
210
206
|
### 外观包能放什么、不能放什么
|
|
211
207
|
|
|
212
|
-
- **只能**放清单和它列出的图片或视频:PNG、JPEG、WebP、AVIF、GIF、MP4、WebM
|
|
208
|
+
- **只能**放清单和它列出的图片或视频:PNG、JPEG、WebP、AVIF、GIF、MP4、WebM。压缩包里有任何其他东西——脚本、样式表、SVG、HTML、字体,或清单没列出的文件——整个外观包都会被拒绝。
|
|
213
209
|
- 每个文件的开头字节必须与扩展名一致,改了名的网页冒充不了图片。文件以真实类型、`nosniff` 和沙箱内容策略提供。
|
|
214
210
|
- 上限:单张图片 25 MB,单个视频 100 MB,整个外观包 100 MB、64 个文件。解压之前就会按这些上限检查压缩包条目。
|
|
215
|
-
- **不支持自定义 CSS。** token
|
|
216
|
-
-
|
|
211
|
+
- **不支持自定义 CSS。** token 已经覆盖应用开放的所有颜色、字体和形状,而样式表还能隐藏审批提示、画出假控件、加载追踪链接。
|
|
212
|
+
- 外观包是整体安装的,任何未知字段都会让整个包失败——这和皮肤文件不同,皮肤文件会丢掉坏 token、保留其余部分。只接受一半会把作者从没一起测试过的媒体和配色凑在一起。
|
|
217
213
|
|
|
218
214
|
### 链接图片
|
|
219
215
|
|
|
220
|
-
|
|
216
|
+
**或粘贴链接**由服务端抓取:只允许 `https`,URL 里不能带凭据,最多三次重定向,大小上限与上传文件相同。每一跳重定向都会解析,指向非公网地址(回环、私有网段、链路本地、运营商级 NAT)一律拒绝。类型按字节判断,不看响应头。
|
|
221
217
|
|
|
222
218
|
## 分发
|
|
223
219
|
|
|
224
|
-
|
|
220
|
+
已启用的插件可以携带皮肤:它在 `x-kiki.themes` 中声明的条目会和你自己的皮肤文件一起出现在选择器里,并标注来自哪个插件。要分享自己的皮肤,可以直接发 `.json` 文件、随插件一起打包,或者做成带画面的[外观包](#外观包)。
|
|
@@ -36,15 +36,13 @@ Kiki 可以使用内置配色,也可以使用自定义 JSON 主题文件。自
|
|
|
36
36
|
|
|
37
37
|
## 使用主题 skill
|
|
38
38
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
调用示例:
|
|
39
|
+
你不必手写 JSON。运行 `/kiki-ops` 并描述你想要的主题,skill 会选好颜色、把文件写到 `~/.kiki/themes/`、校验十六进制色值,并告诉你怎么应用。
|
|
42
40
|
|
|
43
41
|
- `/kiki-ops Create a warm dark theme with amber accents.`
|
|
44
42
|
- `/kiki-ops Make a light theme based on Solarized, but keep errors easy to see.`
|
|
45
43
|
- `/kiki-ops Tweak my ember theme so diffs have higher contrast.`
|
|
46
44
|
|
|
47
|
-
|
|
45
|
+
它通常会先问你想用浅色还是深色基准、偏好的调色板,以及是否有必须包含的颜色。让它编辑已有主题时,它会先读取并备份文件再覆盖。
|
|
48
46
|
|
|
49
47
|
## 创建一个主题
|
|
50
48
|
|
|
@@ -90,8 +88,8 @@ Kiki 可以使用内置配色,也可以使用自定义 JSON 主题文件。自
|
|
|
90
88
|
|
|
91
89
|
两种方式:
|
|
92
90
|
|
|
93
|
-
1. **`/theme`
|
|
94
|
-
2. **`tui.toml
|
|
91
|
+
1. **`/theme` 命令**——打开选择器,自定义主题显示为 `Custom: <文件名>`。选择器每次打开都重新扫描目录,新加的文件无需重启即可看到。
|
|
92
|
+
2. **`tui.toml`**——把 `theme` 设成主题名:
|
|
95
93
|
|
|
96
94
|
```toml
|
|
97
95
|
# ~/.kiki/tui.toml
|
|
@@ -100,19 +98,21 @@ Kiki 可以使用内置配色,也可以使用自定义 JSON 主题文件。自
|
|
|
100
98
|
|
|
101
99
|
## 出错时会怎样
|
|
102
100
|
|
|
103
|
-
|
|
101
|
+
有问题的值不会让主题整个加载失败:
|
|
104
102
|
|
|
105
|
-
-
|
|
103
|
+
- **色值不合法**(不是 `#` 加 6 位十六进制):跳过这一项并回退到所选基准调色板,其余颜色照常生效。
|
|
106
104
|
- **写了无法识别的 token**:忽略,不影响其它颜色。
|
|
107
|
-
-
|
|
105
|
+
- **主题文件不存在或 JSON 损坏**:回退到内置 `dark` 调色板,不会再尝试 `auto`。
|
|
106
|
+
|
|
107
|
+
如果改动完全没有出现,先确认文件名与文件里的 `name` 一致——不一致最常见,而且不会给出提示。
|
|
108
108
|
|
|
109
109
|
## 编辑正在使用的主题
|
|
110
110
|
|
|
111
|
-
|
|
111
|
+
修改**当前正在生效**的主题文件不会自动重载。两种办法让新颜色生效:
|
|
112
112
|
|
|
113
|
-
- 运行 `/reload-tui`——它会重新读取 `tui.toml`
|
|
113
|
+
- 运行 `/reload-tui`——它会重新读取 `tui.toml` 并重新应用当前主题,包括重新读取主题文件;
|
|
114
114
|
- 或者在 `/theme` 里先切到另一个主题,再切回来。
|
|
115
115
|
|
|
116
116
|
::: warning 注意
|
|
117
|
-
在 `/theme`
|
|
117
|
+
在 `/theme` 里**重新选中同一个主题**不会触发重载,只会提示 "Theme unchanged"。用上面两种办法之一。
|
|
118
118
|
:::
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Agent Profiles
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Agent Profiles
|
|
6
|
+
|
|
7
|
+
**Agent(智能体)**是真正干活的那个东西:读文件、跑命令、调工具、给答案。Kiki 里每个 agent 都由一份 **profile** 定义——一份 Markdown,写明它跑在哪个模型和思考档位上、被怎么指示、可以调用哪些工具、能把手上的活交给谁。写一次,之后每次派发这类 agent 都复用它。
|
|
8
|
+
|
|
9
|
+
这一页讲 agent 是什么、主 agent 与 subagent 有什么区别,以及怎么选、怎么组合 profile。完整字段参考在 [Agent 与 subagent](/zh/customization/agents)和 [Agent profile 概念与设计](/zh/customization/agent-profiles)。
|
|
10
|
+
|
|
11
|
+
## 主 agent 和它的 subagent
|
|
12
|
+
|
|
13
|
+
每个会话里你只面对一个 agent:**主 agent**。它接收你的消息、规划、调工具,产出你看到的回复。当某一块活值得隔离开时,主 agent 会派一个 **subagent** 去做——需要先摸清的代码改动、要并行审的几份实现、要在不占主上下文的前提下规划的大重构。
|
|
14
|
+
|
|
15
|
+
subagent 拿到任务描述,在自己的隔离上下文里干活,干完交回结论、结束时也会报一声;它完整的推理和工具记录不会整份倒进主 agent 的对话,这正是它让好几条线同时跑、而主上下文不被细节填满的原因。这是上下文隔离,不是封死的盒子:你可以点开任何一个 subagent 读它自己的记录,也可以直接在它的输入框里给它发消息,见[子智能体有自己的记录](/zh/features/workbench#子智能体有自己的记录)。
|
|
16
|
+
|
|
17
|
+
一个派发树:主会话派出多个子智能体,每个绑定了自己的模型。
|
|
18
|
+
|
|
19
|
+
每个 subagent 自己也要消耗模型 token,所以把主 agent 一步就能做完的活交出去是纯多花的钱。剩下的活够不够拆得开,由主 agent 自己判断;你直接点名某个角色时,它会照办。
|
|
20
|
+
|
|
21
|
+
### 一份 profile 怎么变成主 agent
|
|
22
|
+
|
|
23
|
+
profile 本身既不是主 agent 也不是 subagent,它是什么取决于怎么被绑定:
|
|
24
|
+
|
|
25
|
+
- **被选为会话的主 agent**——终端里用 `--agent`,或新建会话时从选择器里选。这就是和你对话的那个。
|
|
26
|
+
- **被派发为 subagent**——主 agent 把任务交给它。这是其余所有角色的常态。
|
|
27
|
+
- **独立运行**——由外部宿主(某个 MCP 客户端、SDK 调用方,或外部执行器)自行调用它。它不是本会话的 subagent,所以 Kiki 给它的是「独立运行」的交接提示,而不是 subagent 那份;但收结果的一端仍然是那个宿主。
|
|
28
|
+
|
|
29
|
+
新建会话页上的 profile 选择器:列出能驱动会话的 profile,以及当前勾选的那个。
|
|
30
|
+
|
|
31
|
+
frontmatter 里的 `main: true` 只是把某个 profile 标记为会话主 agent 的**候选**,也就是让它出现在选择器里。它不是授权闸门:派发时显式点名这样一个 profile,它仍然作为 subagent 运行,也永远不会因此变成会话的主 agent。真正的绑定是你选中的那个;这个标记只决定你能选什么。
|
|
32
|
+
|
|
33
|
+
会话主 agent 跑的是你为这个会话选的模型,它会盖过 profile 里钉的那个。subagent 的模型则另行决定,依次看:派发时显式写的 `model_alias`、它所用 profile 的钉值或模型菜单、最后是 `[subagent].default_model`。profile 没钉、也没配默认值时,这次派发会以 `model.not_configured` 失败,而不是悄悄沿用调用方的模型——除非那个 profile 特意设了 `model_alias: inherit`。所以你在模型选单里定的管的是你正在对话的那个 agent,profile 里钉死的管的是每次以该角色被派发出去的 agent。
|
|
34
|
+
|
|
35
|
+
### 一个模型,一套共用设置,只在你想要的地方有差异
|
|
36
|
+
|
|
37
|
+
同一个模型同时服务两种角色时,你不需要把它定义两遍。模型只定义一次——它的 alias、provider、凭据、上下文窗口和支持的思考档位——两种角色共用日常的运行设置,比如默认 effort、service tier、上下文什么时候压缩、以及上下文使用预算。主 agent 可以只覆盖你想要不同的那些,没填的继承共用值;subagent 直接用共用值。
|
|
38
|
+
|
|
39
|
+
所以同一个模型可以给主 agent 设成高 effort、其他地方用默认,或者让主 agent 在更紧的点触发压缩、而 subagent 保持共用触发点。没有点名的地方就保持共用,而你在会话里显式选的模型或 effort 依然优先。提示词字段同样分共享、主 agent 与独立三种:参数是逐字段继承,旧的提示词身份块仍按整组替换。准确规则见[配置参考 `models`](/zh/configuration/config-files#models)和[模型菜单与硬边界](/zh/customization/agent-profiles#模型菜单与硬边界)。
|
|
40
|
+
|
|
41
|
+
## 一份文件描述一个角色
|
|
42
|
+
|
|
43
|
+
**Frontmatter** 装配置——名字、给派发方读的描述、模型与思考强度、工具白名单,以及这个角色自己能派发哪些 subagent。**正文**是 agent 起步时用的系统提示词。不需要别的:profile 就是纯文本,你可以读、可以 diff、可以进版本库。
|
|
44
|
+
|
|
45
|
+
新装的实例自带三个立刻能用的角色:驱动会话的主 `agent`;通用 subagent `general`,能读写文件、跑命令、搜索;只读的 `explore`,用来摸清陌生代码。
|
|
46
|
+
|
|
47
|
+
它们都收在**设置 → 智能体**这一页里。主 agent 和 subagent 在同一张列表上并排列出,每行显示它的模型、思考档位,以及它自己能派发哪些子智能体;每个角色来自哪个文件也一并标出,你要改的时候直接就改。
|
|
48
|
+
|
|
49
|
+
设置里的智能体列表:主 agent 与 subagent 分组列出,每行带自己的模型、思考档位和可用的子智能体。
|
|
50
|
+
|
|
51
|
+
## 值得自己写的两种角色
|
|
52
|
+
|
|
53
|
+
另外两个以内置模板的形式提供,因为大部分工作会分成这两种形状:
|
|
54
|
+
|
|
55
|
+
- **`implementer`** 端到端负责一个技术目标——调查、在授权后实现、验证、带证据交回。它可以用 `explore` 做只读的铺垫,但保留最终的工程判断。
|
|
56
|
+
- **`reviewer`** 独立、只读地判断一个决定、一份候选或一次修复,报出问题但不去改。工具被限制,无法编辑或派发。
|
|
57
|
+
|
|
58
|
+
两个模板都设了 `model_alias: inherit`,也就是除非你钉死,否则这个角色跟着派发它的模型走。你可以在首次启动向导、`/kiki-profile` skill,或**设置 → 智能体**里加入它们。
|
|
59
|
+
|
|
60
|
+
设置里的智能体编辑页:指令、描述、何时使用、模型、思考档位、引擎、是否可作主 agent,以及它能派发哪些子智能体。
|
|
61
|
+
|
|
62
|
+
改一个角色会打开它自己的页面。表单覆盖了真正要紧的字段——起步用的指令、给派发方读的描述、何时使用、模型、思考档位、引擎、能不能驱动会话、能派发哪些子智能体——旁边还有一个**原文文件**标签页,想直接读写 Markdown 时用它。
|
|
63
|
+
|
|
64
|
+
什么情况下值得自己写?某类工作反复出现,而且有团队规矩的时候——必须给出文件和行号的审查者、汇报前总要先跑一遍测试的执行者、不许碰生成文件的实现者。从一个已经好用的角色复制,或从内置模板起步,比从空白开始省事。
|
|
65
|
+
|
|
66
|
+
## 由谁决定跑哪个
|
|
67
|
+
|
|
68
|
+
你很少需要手动指定 profile。主 agent 会根据每个 profile 声明的 `description` 和 `whenToUse` 派发,所以真正决定分派的就是这两行——它们是写给派发方看的,不是写给你自己看的。你仍然可以引导:直接在对话里点名(「先用 `explore` 把文件理一遍」)。派发是否要停下来问你,取决于会话的[权限模式](/zh/guides/interaction#权限模式)——`manual` 下每次都会变成一个请求,由你读过再接受或拒绝;`auto` 和 `yolo` 则让常规派发直接走。
|
|
69
|
+
|
|
70
|
+
角色跑在哪儿也由你定。把主 agent、各个子智能体和审查者绑到不同模型或不同厂商,强模型做规划,便宜的跑日常。需要硬性限制时,用 allowlist 锁住某个角色不许用贵的模型;profile 已经维护了一份完整的许可清单时,用 `restrict_models_to_menu: true` 把菜单变成上限。见[平台与模型](/zh/configuration/providers)和[模型菜单与硬边界](/zh/customization/agent-profiles#模型菜单与硬边界)。
|
|
71
|
+
|
|
72
|
+
改动约 200 毫秒生效,新派发的 agent 立刻用上。已经在跑的会话仍然绑定它启动时的快照,所以在那个会话里用**重建上下文**即可应用改动而不丢掉对话。见[Profile 热刷新与进行中的会话](/zh/customization/agents#profile-热刷新与进行中的会话)。
|
|
73
|
+
|
|
74
|
+
## Profile 不是角色
|
|
75
|
+
|
|
76
|
+
profile 是执行配置:工具、权限、模型、思考档位,以及角色起步的提示词。[角色(persona)](/zh/features/people)是身份:它是谁、做什么用、跨会话记住什么。角色卡会写明它挂在哪个 profile 上,换掉这个绑定也不会丢掉身份。
|
|
77
|
+
|
|
78
|
+
## 下一步
|
|
79
|
+
|
|
80
|
+
- [Agent 与 subagent](/zh/customization/agents)——字段参考与派发合同
|
|
81
|
+
- [Agent profile 概念与设计](/zh/customization/agent-profiles)——profile 放在哪里、什么时候生效
|
|
82
|
+
- [一个工作台,好几条线](/zh/features/workbench)——主会话拿派发树做什么
|
|
83
|
+
- [每一层都归你](/zh/features/freedom)——提示词覆写、连接、权限模式与 hooks
|
|
84
|
+
|
|
85
|
+
[在线图文版](https://x-t-e-r.github.io/kiki/zh/features/agents.html)
|
|
@@ -4,7 +4,7 @@ title: 每天用的桌面
|
|
|
4
4
|
|
|
5
5
|
# 每天用的桌面
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
工作台是一个窗口,但活不是:一轮在跑、一个子智能体结束了、有件事等你批、花费在往上走。这一页讲的是这个窗口里你每天都会看的部分——不会越拉越乱的时间线、能挂在消息上的批注、收拢「等着你」的事的托盘、跟着当前智能体走的右栏,以及那个既告诉你花了多少钱、也告诉你哪条规则挡住了请求、还能把这些数字送到你选定目的地的用量页。
|
|
8
8
|
|
|
9
9
|
## 不会越拉越乱的时间线
|
|
10
10
|
|
|
@@ -12,7 +12,7 @@ title: 每天用的桌面
|
|
|
12
12
|
|
|
13
13
|
已解决的问题、审批、标记和完成通知以紧凑的单行条目留在原来的位置上。连续多条会折进可展开的「活动历史(Activity history)」行;连续相同的标记分隔条(比如目标更新)在中间没有消息或工具调用时,只显示最新一条并标明次数,例如「目标已更新 ×12」。重开会话时,模型切换会以分隔条标明之前和之后的模型;只调整思考力度不会新增分隔条。
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
较长的工具输出会随着你往下看自己续读:Kiki 在后台继续取下一段,正文下方的行显示进度。某一段失败时就停在那里,给出**重试**;如果服务器为该字段保留了原件,同一行还会提供**下载原文**,把这个字段的完整内容保存到你的机器上。见[界面导览](/zh/guides/interface#对话视图)。
|
|
16
16
|
|
|
17
17
|
## 批注:在消息上留话
|
|
18
18
|
|
|
@@ -34,15 +34,45 @@ title: 每天用的桌面
|
|
|
34
34
|
|
|
35
35
|
见[界面导览](/zh/guides/interface#右侧栏)和[会话控制](/zh/guides/settings#会话控制)。
|
|
36
36
|
|
|
37
|
-
##
|
|
37
|
+
## 用量页回答三个不同的问题
|
|
38
38
|
|
|
39
|
-
侧栏的 **Usage**
|
|
39
|
+
侧栏的 **Usage** 是一页三签。**历史(History)** 回答这个区间花了多少,**实时(Live)** 回答为什么不动了,**外部同步(External sync)** 回答你想把数字送到哪儿。
|
|
40
40
|
|
|
41
|
-
|
|
41
|
+
### 历史:这个区间花了多少
|
|
42
42
|
|
|
43
|
-
|
|
43
|
+
**历史**默认打开:某个日期区间的 token 用量和估算费用,起点是今天。上方的筛选栏驱动它——先选范围,再选工作区、粒度和图表按什么维度拆开——而每个选择都写进 URL,所以你调好的视图可以直接当链接发出去。四个合计下面是趋势图,按所选维度堆叠;点开某个桶会展开它背后的会话和轮次;再下面的页签按费用给会话排序,最贵的那条就是第一行。
|
|
44
44
|
|
|
45
|
-
|
|
45
|
+
它不肯给你的,是一个自信但错误的数字。token 用量和费用各有**独立**的完整性指示:供应商没有返回某次调用的用量时,Kiki 标为未知,而不是记成一个真实的 0;只要其中掺了未知项,合计就显示为部分未知,而不是一个看起来完整的总数。**统计说明(Data reliability)** 再把读者不能混淆的几种情况分开:某个平台从未上报、统计本身不完整、区间里确实没有东西、以及请求失败。费用本身是用你本地的价格表算出的估算值;页头的**模型价格(Model prices)**是给没有价格的模型补价的地方,页面会点名哪些模型没有价格,而不是悄悄按 0 计。
|
|
46
|
+
|
|
47
|
+
用量页的「历史」页签:所选区间的费用、token 与缓存命中合计,七天趋势图,下方是按会话拆分的明细。
|
|
48
|
+
|
|
49
|
+
### 实时:谁在跑、谁在排队、是哪条规则挡着它
|
|
50
|
+
|
|
51
|
+
**实时**是同一页的另一半,回答的正是花着钱却觉得慢时会问的那个问题。它统计这个 Kiki 服务正在跑和正在等的请求,展开**请求详情**可以按模型、供应商或角色拆开看。
|
|
52
|
+
|
|
53
|
+
真正让它有用的是**正在等待**列表。每一行都写明模型、已经等了多久,以及是哪条并发规则挡着它,直接给规则 id。这个 id 就是下方**并发限制**编辑器里的同一个 id,所以这一行直接告诉你要改哪条规则。
|
|
54
|
+
|
|
55
|
+
一条规则要选目标(指定模型、指定供应商,或全部)、范围(**全部会话**在整个服务里共用一份额度;**每个会话**各算各的)、上限,以及超过之后怎么办:**排队**等空位,**拒绝**立刻失败。规则还可以带一个最长等待预算,只针对子智能体的规则也是一个开关的事。规则旁边的开关会暂停它,既不删除它也不丢掉它的等待预算;保存后对新请求和排队中的请求立即生效,不会掐断正在传输的流——所以调高上限能立刻放行队列,调低上限则可能让在跑的请求短暂高于新值。
|
|
56
|
+
|
|
57
|
+
调之前有两条边界值得知道。上限数的是**请求**,不是 token、不是花费、也不是智能体数量——它不是预算工具。而且它管的是这个 Kiki 服务自己发出的模型请求:当你把一轮交给 Codex、Claude Code 或 Grok Build 当引擎时,那些请求属于引擎自己,不走这些规则;而外部工具回过头来让 Kiki 跑原生请求,则照常计入。
|
|
58
|
+
|
|
59
|
+
用量页的「实时」页签:按模型统计的进行中与排队计数,一条正在等待的请求写明挡住它的 kimi-cap 规则,下方是并发限制规则列表,一条启用、一条已停用。
|
|
60
|
+
|
|
61
|
+
### 外部同步:把数字送到你选的地方
|
|
62
|
+
|
|
63
|
+
**外部同步**把这个服务自己的用量,按你选的周期发到你选的目的地。它是给那些想把 token 统计放到这个应用之外的人准备的:一个团队数据仓库、一段自己的脚本,或者一个托管服务。目的地有三种:
|
|
64
|
+
|
|
65
|
+
- **Kiki webhook**——你自己的 HTTPS 端点,收到一份有文档的 JSON 批次。支持 Bearer 或 HMAC 认证,可选 gzip;密钥可以放在系统钥匙串,也可以按你的选择存成服务器上的私有文件。你还可以收窄时间范围、排除工作区、把临时会话排除在外。
|
|
66
|
+
- **VibeCafe**——在页面上用设备码直接登录,对接官方服务。自定义地址、或你自己提供密钥,是另一条高级路径。这个登录属于实验功能 `usage_export` 的一部分:设备码流程已经实现,但尚未对线上服务完成端到端验证。
|
|
67
|
+
- **脚本**——一条由你批准的命令。Kiki 把批次写进它的 stdin,从输出里读回执。它以你自己的 OS 用户身份和普通权限运行,因此能自己读文件、访问网络;**这不是沙箱**,而且批准是针对这条命令的,不是针对每一批数据。
|
|
68
|
+
|
|
69
|
+
过网的东西被刻意压到很小:模型、一个 UTC 半小时桶、四项 token 数、一个质量标记,以及一个本地费用估算。提示词、回答、标题、工作区名称和路径都不在载荷里——但接收端仍然能看到你的地址和你干活的时间,而且它看到的模型名可能是一个不透明 id,而不是你本地的别名。每个目的地都显示自己的状态:运行中、已停用、等待发送、凭据被拒,或服务方已经持有不同的值。暂停会保留队列;移除一个目的地会另外问一句,要不要丢掉还没发出去的数据。
|
|
70
|
+
|
|
71
|
+
整个功能默认关闭,要等服务端打开 `usage_export` 开关;而配好的目的地**在预览确切内容并同意一次之前一直是停用状态**。扩大时间范围、更换端点,或把目的地指向另一个凭据都需要重新同意;缩小范围或调整周期则不需要。
|
|
72
|
+
|
|
73
|
+
用量页的「外部同步」页签:三个目的地——运行中的 webhook、凭据被拒且队列仍在的 VibeCafe 连接、已停用的脚本——各自带实际地址、状态与待发数量。
|
|
74
|
+
|
|
75
|
+
同一批目的地也可以在终端里用 [`kiki usage-export`](/zh/reference/command#kiki-usage-export) 管理,这一页上的每个控件背后都有对应的字段、错误码和限制:每个控件在哪里见 [用量](/zh/guides/settings#usage),规则的完整字段参考见 [`request_governance`](/zh/configuration/config-files#request-governance)。
|
|
46
76
|
|
|
47
77
|
## 下一步
|
|
48
78
|
|
|
@@ -36,7 +36,9 @@ Kiki 内置的历史导入把另一个工具的文本对话变成**你能接着
|
|
|
36
36
|
|
|
37
37
|
方向反过来:另一个智能体 harness 跑**你的**子智能体。一个 agent profile 可以带 `executor`,通过 ACP 或 Codex app-server 跑在 Claude Code、Codex、Cursor、Gemini CLI、Kimi CLI、OpenCode 或 Grok Build 上。设置 → 外部引擎会检查每个引擎是否已安装,并列出还差哪些配置步骤。
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
外部引擎列表:每个引擎的安装状态、Kiki 能在它上面设置什么,以及仍然存在的检查明细。
|
|
40
|
+
|
|
41
|
+
席位是外部工具调用进来的固定地点;外部执行器是 Kiki 派发出去的地方。当外部 harness 充当主智能体时,`allow_kiki_subagents: true` 允许它反过来派发 Kiki 子智能体,而 `kiki_context` 可以把 Kiki 自己的原生上下文——记忆、看板、cron、线程、历史、hooks——通过同一座桥暴露给它,子智能体完成后再排队回到主智能体。这座桥上 profile 的工具策略、派发策略、模型约束和通知策略依然生效。
|
|
40
42
|
|
|
41
43
|
见[外部 main agent 的委派](/zh/customization/agents#外部-main-agent-的委派)和[外部 main agent 的 Kiki 上下文](/zh/customization/agents#外部-main-agent-的-kiki-上下文)。
|
|
42
44
|
|
|
@@ -10,7 +10,7 @@ title: 扩展
|
|
|
10
10
|
|
|
11
11
|
插件是打包单位。一个插件可以贡献 Skill、智能体、MCP 服务器、hooks、命令、工具和沙箱面板,你可以在**能力**页浏览、安装和配置。带 `.claude-plugin/plugin.json` 清单的 Claude Code 插件也能装,还可以让 Kiki 指向你自己的市场 JSON。
|
|
12
12
|
|
|
13
|
-
官方市场由 Kimi 维护,目前有三条:**Kimi Datasource**(用自然语言查市场行情、宏观指标、企业注册、学术文献和法律法规)、**Kimi Browser Extension**(让 AI 驱动你自己的浏览器)、**Kimi Computer Use**(让 AI 操作你的桌面应用)。另外两个能力是独立插件,不属于这三条:**Kiki
|
|
13
|
+
官方市场由 Kimi 维护,目前有三条:**Kimi Datasource**(用自然语言查市场行情、宏观指标、企业注册、学术文献和法律法规)、**Kimi Browser Extension**(让 AI 驱动你自己的浏览器)、**Kimi Computer Use**(让 AI 操作你的桌面应用)。另外两个能力是独立插件,不属于这三条:**Kiki Extract** 把本地 PDF、Office、HTML 或文本文件转成 `Read` 和 `Grep` 能用的 Markdown;**Kiki Notion** 是面向 Notion 官方托管 MCP 服务的配置和工作流。提取文件是一次读取动作——让已有文档变得可被搜索,它既不创建也不编辑 Office 文档。安装插件本身不会执行它的 hooks——只有匹配的事件发生、且插件处于启用状态时才会触发。见[插件](/zh/customization/plugins)。
|
|
14
14
|
|
|
15
15
|
媒体生成是另一项独立的能力:媒体插件贡献一到多个图片、视频或语音的**来源**,在**能力 → 插件 → 媒体来源**里配置。生成功能**默认关闭**,需要显式打开;这是一项按需启用的能力,不是默认行为。
|
|
16
16
|
|
|
@@ -30,8 +30,14 @@ MCP 工具到达智能体时与内置工具完全一样,走同一套审批模
|
|
|
30
30
|
|
|
31
31
|
`WebSearch` 和 `FetchURL` 由一个可查看的搜索与抓取模块支撑。**设置 → 搜索与抓取 → 概览与来源**显示当前生效的是哪个配置来源、服务端是否复用了你本机的搜索配置;具名通道的就绪状态也能在那里看到。搜索跑在具名通道上——其中一些(比如 GitHub 仓库搜索)不需要密钥,同一供应商配了多个密钥时会在调用之间轮换。抓取走一条带回退的链路,你能看出是哪个提取器产出了文本。等价配置在 `config.toml` 的 `nb_search` 下。见[搜索与抓取](/zh/guides/settings#搜索与抓取)和[配置文件 `nb_search`](/zh/configuration/config-files#nb-search)。
|
|
32
32
|
|
|
33
|
+
搜索通道页签:默认通道、已固定的通道,以及其余每条通道的结果与凭据来自哪里。
|
|
34
|
+
|
|
35
|
+
抓取链路页签:一个网址按顺序经过哪些提取器,以及每一级回退到哪里。
|
|
36
|
+
|
|
33
37
|
## 下一步
|
|
34
38
|
|
|
35
39
|
- [插件](/zh/customization/plugins)——完整的插件参考
|
|
36
40
|
- [Agent Skills](/zh/customization/skills)——写一个 Skill
|
|
37
41
|
- [Model Context Protocol](/zh/server/mcp)——连接 MCP 服务器
|
|
42
|
+
|
|
43
|
+
[在线图文版](https://x-t-e-r.github.io/kiki/zh/features/extend.html)
|
|
@@ -36,12 +36,16 @@ Kiki 按范围发现 profile,范围越具体越优先:**显式指定(`--ag
|
|
|
36
36
|
|
|
37
37
|
账号连接走 **OAuth**。设备流会给你一个码、一个**打开验证页**链接、有效期,以及**取消登录**;这一行的状态词是给人看的:**已连接**(Kiki 会自行续期)、**登录已过期**(供应商不再接受它)、**登录未完成**(你拒绝了、码过期了,或中途失败)、**正在等你**。登出会结束 Kiki 里这次登录并移除它带来的模型,但不会在供应商那边把你登出。
|
|
38
38
|
|
|
39
|
+
进行中的设备登录:要在验证页上输入的码、它的有效期,以及取消操作。
|
|
40
|
+
|
|
39
41
|
**复用本机已有的登录**是取得 OAuth 凭据的一种方式,不是它的替代品。对 ChatGPT(Codex)和 Grok Build,连接可以直接用它们自己的 App 在这台机器上已有的登录。Kiki 复用并在到期后续期;它不复制凭据,不启动那个 App,在这里登录或登出也不影响那边。顺序是刻意的:先**检查本机**,报出对面是哪个账号、凭据存在哪里(文件、系统钥匙串还是加密存储),然后才提供**使用该登录**——它带着刚报给你的那个账号,所以中途被换掉的凭据会被拒绝,而不是被悄悄采纳。本机不可用时,页面会用你能据此行动的说法告诉你原因。
|
|
40
42
|
|
|
41
43
|
登录完成后,该账号的模型会进入目录。**可用模型**才是「现在能用哪些」的权威。见[连接](/zh/guides/settings#连接)。
|
|
42
44
|
|
|
43
45
|
连接列表:每个连接占一行,它的认证方式就是这一行的一部分。
|
|
44
46
|
|
|
47
|
+
复用这台机器上已有的登录:找到了什么、它存在哪里,以及采用它的那个操作。
|
|
48
|
+
|
|
45
49
|
## 权限模式:它多久问你一次
|
|
46
50
|
|
|
47
51
|
`/permission` 在手动、自动、审查和 YOLO 之间切换。默认的自动模式下,日常工具调用直接执行,但敏感文件和指向外部的链接仍会请求审批。手动模式在 shell 命令和工作区外写入前先问,而受信任工作目录内的 `Write` / `Edit` 不逐项询问。YOLO 模式跳过敏感文件提示,除非有规则显式拒绝。显式 deny 永远优先,而且任何模式下智能体仍然可以提问。
|
|
@@ -4,22 +4,23 @@ title: 功能介绍
|
|
|
4
4
|
|
|
5
5
|
# 功能介绍
|
|
6
6
|
|
|
7
|
-
Kiki 是一个跑在你机器上的开源 AI
|
|
7
|
+
Kiki 是一个跑在你机器上的开源 AI 智能体工作台。这一组页面按你真正会遇到的顺序走:工作台是什么、怎样描述一个能复用的智能体、它跑在哪个模型和哪一层控制之下、长活怎么持续、能和谁一起干活、每天的窗口什么样、数据和机器在哪里、怎么扩展、别的工具怎么接进来,以及外观。
|
|
8
8
|
|
|
9
9
|
Kiki 工作台:主会话派出的子智能体、进行中的目标和一条排队消息同屏可见。
|
|
10
10
|
|
|
11
|
-
第一次用 Kiki
|
|
11
|
+
第一次用 Kiki?先看[安装](/zh/getting-started/installation),再回到这里。已经在用?直接跳到你要解决的那一页——每页都链回讲全步骤的指南。
|
|
12
12
|
|
|
13
13
|
| 页面 | 讲什么 |
|
|
14
14
|
| --- | --- |
|
|
15
15
|
| [一个工作台,好几条线](/zh/features/workbench) | 主会话、派发的子智能体、按角色绑模型、后台任务 |
|
|
16
|
+
| [Agent Profiles](/zh/features/agents) | 把 profile 当作可复用的角色:模型与思考档位、指令、工具与派发 |
|
|
17
|
+
| [每一层都归你](/zh/features/freedom) | 提示词覆写、连接与 OAuth、权限模式、Hooks |
|
|
16
18
|
| [长时间的活](/zh/features/long-work) | 目标、消息队列、定时任务、任务看板、上下文窗口、记忆 |
|
|
17
|
-
| [每天用的桌面](/zh/features/daily) | 时间线、批注、「需要你」托盘、右栏、用量页 |
|
|
18
19
|
| [能一起干活的人](/zh/features/people) | 角色、固定日常对话入口、角色记忆、房间 |
|
|
20
|
+
| [每天用的桌面](/zh/features/daily) | 时间线、批注、「需要你」托盘、右栏、用量页:费用、并发规则与外部同步 |
|
|
19
21
|
| [数据与机器都在你手上](/zh/features/spaces) | 空间、远端连接、thread bridge、Web 访问、会话内 SSH |
|
|
20
|
-
| [
|
|
22
|
+
| [扩展](/zh/features/extend) | 插件、Skills、MCP 服务器、搜索与抓取 |
|
|
21
23
|
| [带过来,也接得进外面](/zh/features/ecosystem) | 导入别的工具的历史、在编辑器里用 Kiki、把 Kiki 当服务 |
|
|
22
24
|
| [外观](/zh/features/look) | 皮肤、背景、外观包、微调 |
|
|
23
|
-
| [扩展](/zh/features/extend) | 插件、Skills、MCP 服务器、搜索与抓取 |
|
|
24
25
|
|
|
25
26
|
[在线图文版](https://x-t-e-r.github.io/kiki/zh/features/)
|