Skip to content

Repository files navigation

售前工作台 · Presales Workbench

售前工程师的本地 AI 工作台。客户档案、商机流水线、拜访纪要、跨部门协作、知识库,加上一个真会干活的 AI —— 数据全在你自己的磁盘上,是普通的 Markdown 和 JSON 文件。

git clone https://github.com/mooncirclez/presales-workbench.git
cd presales-workbench
./setup.sh

📋 更新日志 · 📄 项目介绍页(含界面截图) · 🖼 一图看懂 —— 仓库 Settings → Pages 选 main 分支 /docs 目录即可发布为网站。


⚠️ 先看这里:运行前提

本项目有两个硬性前提,不满足就跑不起来:

前提 说明
macOS 文档提取、系统通知、Word 导出依赖 textutil / osascript / open 等 macOS 命令。Windows 与 Linux 暂不支持(见路线图)
Claude Code CLI 已安装 工作台的全部 AI 能力(生成交付物、写周报、编译知识库)都通过它执行。装好后运行 claude 并输入 /login

没有 Claude 订阅? CLI 本身免费开源、不需要 Anthropic 账号。在「AI 任务 → 模型与供应商」填自己的 DeepSeek / Kimi API key 即可用全部 AI 功能 —— 见 切换模型与供应商

其余都是可选的(缺了只降级,不影响核心功能):Python 3.9+(macOS 自带)、pdftotextpython-docx / openpyxl / python-pptx

先跑 ./setup.sh --check 可只做体检、不改动任何文件。


它解决什么问题

售前的日常是:资料散在几百个 PDF 里、客户决策链记在脑子里、交付物每次从零开始写、周报靠回忆拼凑。

这个工作台把这些收进一个地方,并让 AI 基于你的真实资料干活 —— 而不是编。

功能

页面 能力
智能看板 客户/商机/预算/累计签约统计;阶段分布(点击联动筛选、可下钻);规则化风险提示(缺毛利测算、跟进停滞、协作受阻、赢单未登记合同额…);To Do 汇总
客户 结构化档案:组织架构、决策链(角色/态度)、客户 KPI;叙事档案;AI 整理情报;归档与恢复(名下有在营项目时拒绝删除/归档)
项目 预算/合同额/签约日期;01~07 交付物流水线(上传 / 从模板创建 / AI 生成);归档(合同额仍计入累计签约)
协作 售前 × 销售 / 产研 / 交付 三条线,每条动作强制绑定项目,受阻与逾期自动上风险榜
纪要 表单录入、文件导入;纪要瀑布流(项目全部沟通记录按时间倒序串成脉络);行动项自动流入 To Do 并可双向勾选;周报(本地即时草稿 + AI 深度版)
日历 月视图 + 列表;一句话 AI 建日程;到点 macOS 系统通知
场景库 按行业沉淀业务场景:描述 + HTML 交互演示,客户现场即点即用
工具 本机小工具的入口目录:卡片展示、实时探测端口标出在跑/未启动、未启动时给出启动命令。刻意不做「一键启动」——那等于给界面开任意命令执行的口子
发现(默认隐藏) 收藏外部文章:粘贴链接或上传附件 → AI 转成统一结构(一句话/核心观点/方法与做法/可以拿来做什么/原文摘录)。内容整体对 AI 开放且不脱敏;兼容 Obsidian Web Clipper 直写
技能 售前技能库(自然语言生成 / 第三方导入 / 技能市场);按来源自动分类 + 搜索;多技能组合为「专家角色」,AI 任务按角色执行
知识库 任意层级自建目录;把 PDF/Word/PPT/Excel 提取成可检索文本(不提取则 AI 读不了);全量/增量提取;编译成互链 wiki;全文搜索;按子目录设定 AI 可读范围与提取脱敏
脱敏 客户名与客户方人员录入即换成可读假名(示例银行 → sl银行);真名只存本机映射表一处;AI 可读范围按目录白名单硬性拒绝;导出时列出待人工替换的清单
AI 任务 对话式交互(消息成气泡不会丢、追问自动带上下文);按角色执行 / 定时任务;状态细化到完成/中断/超时/失败,中断可一键重试并续上原对话;每条显示耗时、token、花费(走第三方端点时费用以供应商后台为准);模型与供应商切换(Claude 各档模型 / DeepSeek / Kimi / 自建网关)+ 一键连通性测试

对话式 AI

AI 任务页是一个对话框:你发一句,产出直接写进工作台文件,你的话会留在对话里而不是发完就消失

  • 追问带上下文 —— 底层用 claude --output-format json 取回 session_id,下一轮用 --resume 续同一个会话。 所以「把第三章展开写」「刚才那份改成三页」这类追问是真的接得上,不是把气泡摞在一起。
  • 每轮显示成本 —— 续话轮通常因缓存命中便宜一个数量级。
  • 多对话并行 —— 「+ 新对话」开新线程,顶部下拉切历史对话;刷新页面不丢;整条对话可一键删除。
  • 任务可归档 / 删除 —— 任务列表每行有「归档」(收起来,仍留在所属对话里,可取消)与删除。 任务是 .workbench/jobs.jsonl 里的记录而非文件,进不了回收站,所以删除会二次确认; 已生成的产出文件不受影响。
  • 换供应商会自动断开续话 —— session 存在各家自己的历史里,跨供应商 resume 必然失败, 工作台会重开上下文并在气泡下注明,而不是抛一个看不懂的错。

切换模型与供应商

在「AI 任务 → 模型与供应商」里改,两件事互相独立:

模型 —— 走官方时下拉可选 opus / sonnet / fable / haiku,留空则跟随你 claude CLI 自身的设置。 本质是给命令加 --model,不影响任何其他能力。

供应商 —— 工作台不自研 API 适配器,而是给 claude CLI 注入 Anthropic 兼容协议的环境变量 (ANTHROPIC_BASE_URL / ANTHROPIC_AUTH_TOKEN / ANTHROPIC_MODEL)。 CLI 原封不动,后面换成别家模型在跑,读写文件、Skills、多轮等 agent 能力一个不丢。

供应商 BASE_URL 模型名示例
Anthropic 官方 不填,用 claude login 登录态 opus / sonnet / fable
DeepSeek https://api.deepseek.com/anthropic deepseek-chat
Kimi(月之暗面) https://api.moonshot.cn/anthropic 以其控制台为准
自定义 你自己的中转 / 公司网关 该网关支持的模型

配完点「测试连通性」实测一次(发一句最短的话,不碰工具),通了会显示耗时与回复。

两点提醒:

  • 各家兼容层成熟度不同,可能出现工具调用行为差异 —— 这是模型能力问题,不是接口问题。重要产出建议切回官方跑。
  • 切到第三方后模型下拉会禁用:opus/sonnet 这些是 Anthropic 的别名,在别家端点上无效,模型改由供应商配置里的模型名决定。

设计原则

1. 数据即文件。 客户档案是 customers/<客户>/customer.json,纪要是 Markdown。可以 git、可以 grep、可以用任何编辑器打开。工作台删了,资产还在。

2. 统计只在后端算一次。 看板的每个数字都由 compute_dashboard() 算出,前端纯展示。加指标只改一处。

3. AI 不许编。 CLAUDE.md 里写死了铁律:客户事实、金额、承诺必须能追溯到具体文件,缺失一律标【待补充】,并在结尾单列"信息缺口"。实测中它会拒绝顺着错误前提编造 —— 包括拒绝下指令的人。

4. 能力进插槽,不硬编码。 模板包、MCP、技能、AI 命令都是可替换的插件。换公司只需换模板包 + 清空数据区。

目录结构

workbench.json        # 唯一配置源:模板包 / 流水线槽位 / AI 命令 / MCP
CLAUDE.md             # AI 工作规范(Claude 进入本目录先读它)
bin/
  server.py           # 本地服务(纯标准库)
  app.html            # 单页界面
  extract.py          # 文档提取器(PDF/Word/PPT/Excel → Markdown)
  md2docx.py          # Markdown → Word(真表格)
plugins/
  templates/<pack>/   # 模板包:你上传、你管版本
  skills/<name>/      # 技能:AI 执行任务时遵循的方法论
  roles.json          # 专家角色 = 人设 + 一组技能
  mcp/<id>.json       # MCP 片段(可选)
customers/ projects/ archive/ scenarios/ calendar/ collab/ knowledge/ inbox/
                      # 数据区 —— 你的资产,不随框架分发

常用操作

./setup.sh              # 一键部署(体检 → 装依赖 → 建骨架 → 启动)
./setup.sh --check      # 只做环境体检
PORT=8919 ./setup.sh    # 换端口
python3 bin/server.py   # 直接启动(默认 8917)
python3 bin/extract.py  # 命令行批量提取知识库文档

关于随附的 demo 数据

仓库自带一套虚构的示例数据(示例科技 / 示例银行),用来展示全部功能 —— 包括故意留的缺陷(某客户没有纪要、某项目缺毛利测算),这样你能看到风险提示是怎么工作的。

开始用之前,在各页面用垃圾桶图标删掉即可(删除会进回收站,可恢复)。

隐私与安全

工作台的 AI 能力靠本机 claude CLI 执行,CLI 会把它读到的文件内容发往模型服务商。 所以这里的设计目标只有一个:让「客户是谁」不进入那条链路,并且让「AI 能读到什么」由你逐项决定。

一、客户标识在落盘那一刻就被替换

  • 表单里照常填真名,存进磁盘的已经是可读假名:示例银行 → sl银行张三丰 → 张sf。 保留"是什么"(银行/证券/姓),抹掉"是谁";同音冲突自动编号
  • 因此 AI 读磁盘时天然只看得到假名 —— 不是"读完再脱敏",是没有明文可读
  • 你打给 AI 的每一句话同样先过一遍替换,定时任务的指令也一样
  • 真名只存 .mask/map.json 一处:600 权限、每次写入前自动备份、已 gitignore、 并在 AI 权限里被硬性拒绝读取
  • 纯字典替换,没有正则猜测或实体识别 —— 表里没有的一个字都不动。 加谁、删谁、补哪些简称,全在「映射表」页面由你决定
  • 我方同事与产品不登记因而不脱敏;地址/电话/邮箱这类联系方式字段直接不存

二、AI 能读到磁盘上的哪些地方

默认只有工作台目录。家目录下其余所有目录一律拒绝,以后新增的也自动挡住 —— 要放开哪个,在 AI 任务页「磁盘范围」里逐项勾选,也可追加外挂硬盘等任意路径。

目标 默认 说明
工作台数据区(客户/项目/纪要/收件箱) 可读 AI 干活的地方,存的已是假名
知识库子目录 逐个勾选 未勾的连同其提取文本一并拒绝
映射表 / 凭证 / 回收站 拒绝
家目录其余部分(桌面、文稿、代码目录…) 拒绝
Bash 禁用 见下

这些规则通过 permissions.deny 下发给 CLI,Read / Grep / Glob 与 Bash 命令里的路径受同一套约束, 不是靠提示词约定。以下拒绝信息为实测原文:

Permission to read /Users/…/Desktop has been denied.
Permission to use Bash with command ls ~/Desktop has been denied.

三、为什么默认禁用 Bash

不是因为它能绕过上面的路径规则(实测绕不过),而是它能做路径规则管不到的事:

  • 用 python 库直读 docx/xlsx 原件里的真名 —— 那些原件就在允许读的项目目录里, 二进制内容改不掉,Read 工具读不了而 Bash 能读
  • 联网外发

需要生成 xlsx/pptx、或让 AI 给产出截图自检时可临时开启,任务跑完自动关闭

四、本机与凭证

  • 服务默认只绑 127.0.0.1,不对外暴露
  • 写操作限制在数据区,框架代码与顶层目录删不了;路径穿越被拒
  • 删除进回收站(.trash/),可恢复
  • 你的客户资料属于敏感信息.gitignore 已排除 knowledge/my local knowledge/ 与凭证文件; 若要对自己的数据做版本管理,请使用私有仓库
  • 邮件 SMTP 密码、第三方模型 API key 存在 .workbench/(已 gitignore),不随仓库走。 写入时文件权限设为 600,任何 API 响应里只回传脱敏值(如 sk-abc…1234)

五、这套机制做不到的

可读假名不是不可识别 sl银行 在银行业基本能被猜出来 —— 这是为可用性做的取舍
只覆盖"谁",不覆盖"什么" 技术方案、报价逻辑、SOW 正文原样进入 AI 上下文
二进制原件里的真名去不掉 只能保证 AI 读不到:禁 Bash + 只给它读脱敏后的提取文本
只有登记过的名字会被替换 在自由文本里第一次出现、又没建过档的名字会明文落盘

已知限制

  • 单用户:无并发控制与鉴权,不适合多人同时读写同一份数据
  • 仅 macOS:见上文前提
  • 无自动化测试:改动靠手工验证
  • 数据量假设中小:全文搜索是暴力遍历,客户/项目上百后会变慢
  • AI 成本按轮可见但无预算约束:对话每轮显示该轮花费,但没有额度上限或超额拦截。 另注:claude CLI 报的费用一律按 Anthropic 价目表计算,走第三方端点时该数字与实际账单无关(实测差 24 倍),界面因此不显示金额,只提示去供应商后台看

路线图

  • 支持 Anthropic 协议兼容的其他模型(DeepSeek / Kimi 等),让没有 Claude 订阅的人也能用
  • 跨平台:用纯 Python 库替换 textutil,通知改用跨平台方案
  • 抽象成「工作台构建器」,让其他岗位(法务、HR、咨询)快速搭出自己的专属工作台
  • 自动化测试与搜索索引

致谢

  • 知识编译的思路来自 Andrej Karpathy 的 LLM Wiki 模式
  • 技能市场可对接社区 skill 榜单;仓库内不包含第三方技能内容,请通过「技能」页自行导入并遵守其原始许可

许可

MIT

About

售前工程师的本地 AI 工作台:客户决策链、商机流水线、交付物生成、知识库 —— 数据是你磁盘上的 Markdown

Topics

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages