JSPM

  • Created
  • Published
  • Downloads 2263
  • Score
    100M100P100Q106562F
  • License MIT

A DeepSeek-native AI coding agent for your terminal

Package Exports

  • dskcode

Readme

dskcode

基于 DeepSeek 的 AI 编程助手终端 CLI 工具。让 AI 直接在终端中理解你的代码、读写文件、执行命令。 npm version Node.js

dskcode


特性

🤖 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.jsonpermissions 字段定义 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 格式的配置文件,支持多层级合并(优先级从低到高):

  1. 内置默认值 — 无需配置即可运行
  2. 用户全局~/.dskcode/settings.json
  3. 项目本地 — 当前目录下的 .dskcode/settings.json
  4. 环境变量 — 如 DEEPSEEK_API_KEY
  5. 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 $HOMErm -rf .rm -rf ..
破坏磁盘 / 设备 mkfs /dev/sdadd 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.jsonpermissions 字段定义细粒度规则:

  • 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

项目要求


反馈

Bug / 需求 / 改进建议欢迎加入 QQ 群沟通

沟通群