kilosc
v1.1.10
Published
Switch Kilo auth profiles and generate multi-host agent prompts.
Maintainers
Readme
kilosc
一个用于切换 Kilo auth.json 账号配置和生成多宿主提示词文件的 Bun + TypeScript 命令行工具。
命令
kilosc init
kilosc add
kilosc set
kilosc put
kilosc info
kilosc tip说明:
init:输入完整的 Kiloauth.json路径,并保存到~/.kilosc.jsonadd:把当前auth.json保存成一个配置快照set:选择配置快照,再选择其中的账号键,并写回当前auth.jsonput:从当前auth.json选择子项写入已有快照info:显示当前配置路径和快照列表tip:按当前目录的模板和目标配置生成提示词文件
使用账号切换命令前先执行:
kilosc init示例输入:
/Users/dj/.local/share/kilo/auth.json配置快照会保存到:
<auth.json 所在目录>/kilosc/<名称>.jsonset 只会替换你选择的账号键,不会删除其它 provider。比如选择 openai 时,只会替换 auth.json.openai。
提示词生成
在工作目录中创建固定结构:
.
├── config.js
└── prompts/
├── agent.md
└── review.mdprompts/ 只扫描直属的 .md 文件,不递归,并按文件名排序。config.js 是受信任的 ESM,默认导出至少一个生成目标:
export default [
{
name: "kilo",
suffix: "md",
path: "~/.config/kilo/agents",
vars: {
agent: "Kilo",
"project.name": "kilosc",
},
},
{
name: "codex",
suffix: "toml",
path: "~/.codex/agents",
vars: {
agent: "Codex",
"project.name": "kilosc",
},
},
]path 支持绝对路径、相对 config.js 所在目录的路径、~ 和 ~/...。每个模板会对每个目标生成同名文件,并将扩展名改为 suffix。
模板只支持 ${identifier} 纯文本变量替换,变量名规则为 [a-zA-Z_][a-zA-Z0-9_.-]*,因此 ${colon} 可对应值 :,但不支持 ${:}。变量值支持冒号、等号、单双引号、换行、frontmatter、$&、${other} 等任意原始文本;值只插入一次,不递归展开。未知变量、非法、空或未闭合占位符都会使整批生成失败。
kilosc tip每次执行都会全量生成并覆盖所有目标文件,即使内容相同也会实际替换。现有普通文件会被覆盖;现有、有效且指向普通文件的符号链接会被替换为普通文件,符号链接原目标不变。所有配置、模板、渲染结果、目标路径、输出类型和写入条件会在任何写入前检查;单个文件通过同目录临时文件和 rename 原子替换,但整个批次不承诺事务性,运行时故障仍可能导致部分文件已更新。
Kilo/Codex 双宿主智能体原型
仓库内的 test/agent 提供一个将六个智能体转换到 Kilo 和 Codex 的通用语法拼接原型:
test/agent/
├── config.js
├── prompts/
│ ├── code.md
│ ├── icon.md
│ ├── test.md
│ ├── ui.md
│ ├── workOrder.md
│ └── workSub.md
└── generated/
├── kilo/ # 六个同名 .md 文件
└── codex/ # 六个同名 .toml 文件config.js 只保存两种宿主的语法符号与文档结构,字段名和智能体数据留在 prompts/*.md;所有输出路径均相对该配置文件:
export default [
{
name: "kilo",
suffix: "md",
path: "./generated/kilo",
vars: {
document_open: `---
`,
name_comment: "# ",
mode_comment: "",
assign: ": ",
quote: `"`,
body_open: `---
`,
document_close: "",
},
},
{
name: "codex",
suffix: "toml",
path: "./generated/codex",
vars: {
document_open: "",
name_comment: "",
mode_comment: "# ",
assign: " = ",
quote: `"`,
body_open: `developer_instructions = '''
`,
document_close: `
'''`,
},
},
]每个 prompts/*.md 保存该智能体的数据,并通过相同的宿主语法变量拼接。例如 prompts/code.md 的开头为:
${document_open}${name_comment}name${assign}${quote}code${quote}
description${assign}${quote}编码模式${quote}
${mode_comment}mode${assign}${quote}all${quote}
${body_open}你是一名资深软件工程师,精通多种编程语言、框架、设计模式和最佳实践以及对应语言的最新写法和对应规范
## 执行流程
...${document_close}因此,同一份源模板可生成 Kilo frontmatter:
---
# name: "code"
description: "编码模式"
mode: "all"
---
你是一名资深软件工程师,精通多种编程语言、框架、设计模式和最佳实践以及对应语言的最新写法和对应规范在原型目录执行生成:
cd test/agent
bun run ../../src/index.ts tipCodex 结果是 standalone custom agent TOML,三单引号字面量不会把正文中的反斜杠当作 TOML 转义:
name = "code"
description = "编码模式"
# mode = "all"
developer_instructions = '''
提示词正文
'''字段名与六个智能体各自的名称、描述、模式和正文都保留在模板中;配置变量只适配宿主的注释、赋值、引号和文档包装结构。Kilo 的 name 由文件名决定,所以生成结果用 YAML 注释保留该字段;Codex 不支持 Kilo 的 mode,所以用 TOML 注释保留。
只修改 prompts/*.md,不要反向编辑 generated/;kilosc tip 每次都会全量覆盖生成文件。生成器只做纯文本插入,不理解或转义 Markdown、YAML、TOML 等宿主格式,因此包装必须由目标变量提供。
变量值可以包含冒号、等号、单双引号、换行、frontmatter、$& 和 ${other},插入后不会递归解析;${colon} 可以映射为 :,${:} 因变量名不符合 [a-zA-Z_][a-zA-Z0-9_.-]* 而非法。如果 Codex 正文可能出现连续的 ''',必须为该目标更换包装方案,否则会提前结束 TOML 字面量;生成器不会自动转义宿主格式。
本地开发
bun run src/index.ts init
bun run src/index.ts add
bun run src/index.ts set
bun run check构建
bun run buildnpm 命令入口指向:
dist/index.js本地全局链接
bun run gLink
kilosc init
kilosc add
kilosc set解除本地全局链接:
bun run gUnlink发布
bun run proPub切换配置后,建议重启 Kilo 或 VS Code 扩展后端,确保新的认证信息生效。
