Package Exports
- dskcode
Readme


特性
🤖 AI 编程助手
- 终端原生交互 —
dskcode直接进入交互式对话,在终端中与 AI 协作编码 - DeepSeek 深度集成 — 原生 DeepSeek API 支持,Prefix Cache 感知,成本透明
- 多模型支持 — DeepSeek-V4-Flash(默认,速度快)和 DeepSeek-V4-Pro(精度高)可选
- 深度思考模式 —
/thinking开启 DeepSeek 原生推理能力,/effort切换 High / Max 等级 - 流式渲染 — 打字机效果、spinner、代码块高亮、工具调用可视化
- 计划模式 —
/plan切换到计划模式(紫色主题),让 AI 先分析再编码,适合复杂任务 - Token 计价 — 会话级 / 日级 / 历史级三层成本统计,Prefix Cache 半价计费
- 中文优先 — 界面提示、帮助信息、文档均为中文
🛠️ 工具系统
10 个内置工具,覆盖文件读写、命令执行、代码搜索全场景:
| 工具 | 能力 |
|---|---|
read_file |
读取文件,支持行号范围,自动拒绝二进制文件 |
write_file |
写入/创建文件,自动创建中间目录 |
edit_file |
精确文本替换,唯一匹配校验,自动保留原 EOL |
multi_edit |
原子批量替换,一处失败全部回滚,支持 replaceAll |
delete_range |
按行锚点删除文件中的行范围 |
bash |
执行 shell 命令,超时控制,Windows / Git Bash 兼容 |
glob |
文件路径模式搜索(* / ** / ?),自动跳过 node_modules / .git |
grep |
文件内容正则搜索,大小写控制,扩展名过滤 |
ls |
目录列表,类型标记,隐藏文件控制 |
fetch |
HTTP 请求(GET / POST / PUT / DELETE),自定义请求头 |
🔒 权限与安全
- 三级审批策略 — Allow / Ask / Deny,按工具 + 参数精细化控制
- 硬编码安全规则 — 内置 11 条灾难模式拦截:
rm -rf //rm -rf ~/curl|sh/git push --force到 main 等 - 写工具默认确认 — 0 配置即可用:写文件前弹窗确认,
always按文件路径缓存本会话免问 - 规则引擎 — 在
settings.json的permissions字段定义always_allow/always_deny/always_confirm - ink 弹窗 — 键盘快捷键 y/n/a,Esc 拒绝,上下箭头切换
- Turn-Abort — 写工具被拒绝后,本轮余下 tool_calls 全部跳过,避免模型"一错再错"
- denial 友好提示 — 拒绝时显示具体原因(哪条规则命中、为什么、怎么调整)
/permissions命令 — 随时查看当前生效的规则、会话 grants、配置文件加载来源
💾 会话与回退
- 会话持久化 — 对话自动保存到磁盘,重启可恢复
- 文件回退(/rewind) — 每轮对话自动生成 git stash 检查点,
/rewind 1一键撤回最新修改 - rewind 提示 — 对话结束后 2 秒在原状态栏位置自动出现「↩ /rewind 1 可撤回本次修改」
- 多回合选择 —
/rewind进入选择模式,↑↓ 选择任意历史检查点回退 - 上下文压缩 — 长会话自动摘要,保留最近 N 回合完整内容,Prefix Cache 命中继续享半价
🎮 内置工具
- 股票行情 —
dskcode stock交互式 A 股行情终端,键盘选择 + 详情折线图 + 5s 倒计时自动刷新 - 内置小游戏 —
dskcode game启动游戏列表,打砖块(10 个关卡)、Coder Check 极速打字等
⚙️ 配置
- 多层级配置 — 全局 + 项目 + 环境变量 + CLI flag 四级合并
- JSON 格式 — 易于编辑、版本控制、团队共享
- 命令提示轮播 — 输入框上方自动轮播可用命令提示
🔌 扩展性
- MCP 插件 — 通过 Model Context Protocol 扩展任意外部工具(数据库 / 浏览器 / Notion 等)
- Tool 抽象 — 自定义工具只需实现
AgentTool接口
快速开始
# 团队内部安装(请使用公司 npm registry)
npm install -g dskcode
# 查看帮助
dskcode --help
# 启动交互式对话(无参默认行为)
dskcode第一次使用
首次启动会引导你输入 DeepSeek API Key,保存到 ~/.dskcode/settings.json 后即可使用。
# 重新设置 API Key
dskcode setup
# 在当前项目生成 AGENTS.md 项目记忆
dskcode init命令
| 命令 | 说明 |
|---|---|
dskcode |
启动交互式对话会话(默认行为,等价于 dskcode chat) |
dskcode chat |
同上,保留作为显式子命令 |
dskcode run <prompt> |
执行一次性任务(如"修改所有 TODO") |
dskcode setup |
运行配置向导,设置 API Key 等 |
dskcode init |
在当前项目生成 AGENTS.md 项目记忆文件 |
dskcode game <name> |
启动内置小游戏,不指定名称则显示交互式游戏列表 |
dskcode stock [codes...] |
交互式股票行情,↑/↓ 选择,Enter 查看分时折线图,5s 倒计时自动刷新 |
dskcode completion |
生成 shell 自动补全配置 |
全局选项
| 选项 | 说明 |
|---|---|
-V, --version |
显示版本号 |
--verbose |
开启详细日志输出 |
--config <path> |
指定配置文件路径 |
-h, --help |
显示帮助信息 |
交互式 Chat 命令
在 dskcode(或 dskcode chat)会话中输入以下命令(按 /help 查看所有可用命令):
| 命令 | 说明 |
|---|---|
/rewind |
进入选择模式 ↑↓ 选择检查点回退;/rewind 1 直接撤回最新一轮(1=最新,2=上一次…) |
/plan |
切换为计划模式(紫色主题),AI 先分析需求再逐步编码 |
/code |
切换回代码模式 |
/thinking |
切换深度思考(DeepSeek 原生推理能力) |
/effort |
切换推理等级 High / Max |
/toolchoice |
切换工具调用策略(auto / required / none) |
/model |
切换模型(DeepSeek-V4-Flash / DeepSeek-V4-Pro) |
/permissions |
查看当前权限规则、会话 grants、配置文件加载来源 |
/clear |
清空当前对话历史 |
/help |
查看所有可用命令 |
/version |
显示版本信息 |
/game |
启动内置小游戏 |
/stock |
跳转到股票行情 |
对话结束后若 AI 修改了文件,2 秒后原 spinner 位置会自动出现提示:
↩ /rewind 1 可撤回本次修改该提示一直保留到下一轮对话开始,方便随时撤回最新一轮文件修改。
配置
dskcode 使用 JSON 格式的配置文件,支持多层级合并(优先级从低到高):
- 内置默认值 — 无需配置即可运行
- 用户全局 —
~/.dskcode/settings.json - 项目本地 — 当前目录下的
.dskcode/settings.json - 环境变量 — 如
DEEPSEEK_API_KEY - CLI flag — 命令行参数优先级最高
全局配置示例
~/.dskcode/settings.json(存放个人密钥):
{
"defaultProvider": "deepseek",
"providers": [
{
"name": "deepseek",
"apiKey": "sk-xxx",
"baseUrl": "https://api.deepseek.com",
"model": "deepseek-v4-flash"
}
]
}项目配置示例
.dskcode/settings.json(存放团队约定的行为参数 + 权限规则):
{
"defaultProvider": "deepseek",
"temperature": 0.3,
"maxToolRounds": 30,
"tools": [
{ "name": "read_file", "enabled": true },
{ "name": "write_file", "enabled": true },
{ "name": "bash", "enabled": true },
{ "name": "grep", "enabled": true }
],
"permissions": {
"default": "confirm",
"tools": {
"bash": {
"always_allow": ["^git\\s+status", "^ls"],
"always_deny": ["^npm\\s+publish"],
"always_confirm": ["^rm\\s"]
},
"edit_file": {
"always_allow": { "pathGlob": "**/*.test.ts" }
}
}
}
}股票行情
dskcode stock 交互式 A 股行情终端,↑/↓ 选择股票,Enter 查看分时折线图、实时刷新。
dskcode stock # 自选股列表
dskcode stock sh000001 # 指定代码权限系统
dskcode 默认启用三层防护,0 配置即可用:
第一关:硬编码黑名单
内置 11 条灾难模式规则,不可被配置覆盖,匹配即拒绝:
| 类别 | 规则示例 |
|---|---|
| 递归删除关键目录 | rm -rf /、rm -rf ~、rm -rf $HOME、rm -rf .、rm -rf .. |
| 破坏磁盘 / 设备 | mkfs /dev/sda、dd of=/dev/sda |
| 递归权限提升 | chmod -R 777 / |
| 网络拉取直跑 | `curl ... |
| 强制推主干 | git push --force 到 main / master |
第二关:写工具默认确认
- 读工具(read_file / ls / glob / grep)→ 直接放行
- 写工具(write_file / edit_file / multi_edit / delete_range)→ 弹窗确认
y(Yes)— 仅本次放行a(Always)— 本会话内这个文件路径后续修改不再问n(No)— 拒绝,本轮余下 tool_calls 全部跳过
第三关:用户自定义规则
在 settings.json 的 permissions 字段定义细粒度规则:
default— 无规则命中时的默认行为(allow/confirm/deny)tools.<name>.always_allow— 始终放行的命令正则列表tools.<name>.always_deny— 始终拒绝的命令正则列表tools.<name>.always_confirm— 始终需要确认的命令正则列表pathGlob— 工具参数路径 glob 匹配(支持*/**/?/[abc])
查看当前生效的规则:
> /permissions
📋 当前权限系统状态:
Gate 链:共 2 个
模式:写确认(默认)
会话 grants:0 个("always" 批准的工具调用)
配置文件:~/.dskcode/permissions.json(全局)
.dskcode/permissions.json(项目级,项目级优先)架构
src/
├── index.ts # 入口,shebang + 异常处理
├── cli/ # commander 命令路由
├── config/ # JSON 配置加载与合并
├── provider/ # LLM Provider 接口(DeepSeek)+ CostTracker
├── tool/ # 内置工具(Registry + 10 个内置工具)
├── plugin/ # MCP 插件管理器
├── security/ # 权限决策引擎:黑名单 + 规则引擎 + 4 个 Gate
├── agent/ # Agent 会话循环 + 检查点(Checkpoint)
├── checkpoint/ # git stash 驱动的文件状态检查点(/rewind 基础)
├── session-store/ # 会话持久化与恢复
├── stock/ # 股票行情(交互式终端 + asciichart)
├── game/ # 内置小游戏
├── types/ # 共享类型定义
├── utils/ # 工具函数(渐变、模型工具等)
└── ui/ # Ink 交互式终端 UI开发
仓库为内部项目,按公司代码规范提 PR。开发流程:
# 安装依赖
npm install
# 开发模式(自动监听重构建)
npm run dev
# 构建
npm run build
# 测试
npm test
# 类型检查
npm run type-check
# 代码检查
npm run lint项目要求
- Node.js ≥ 22
- DeepSeek API Key(在 DeepSeek 开放平台申请)
反馈
Bug / 需求 / 改进建议欢迎加入 QQ 群沟通
