Skip to content
tmiao1201Public

About

No description or website provided.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

9 Commits

Folders and files

Repository files navigation

书心 Shuxin

书心把情绪结、认知结和需要补盲的问题,转成有证据、读得进去的阅读起点。

能做什么

  • 区分情绪结、认知结、混合结和时效问题,并按不同路径回应。
  • 通过微信读书核验书籍信息、书摘与读者反馈,不用模型记忆冒充证据。
  • 通常给出一本主书和一个框架、学科或体裁不同的异质备选。
  • 在完整文字阅读路径之后,按已核验章节与短原文自动生成一张四格章节精华漫画。
  • 接受“纠正”“换视角”“我读了”“不记录”等本地反馈,让后续推荐更贴合你。

安装

macOS/Linux(POSIX shell)

先克隆仓库,再把仓库内的 Skill 链接到 Codex 的 skills 目录。以下命令仅适用于 macOS/Linux 的 POSIX shell;若目标已经存在,只会提示,不会修改或再次创建链接。

# shuxin-install-symlink
set -eu
REPO_DIR="${SHUXIN_REPO_DIR:-$HOME/shuxin}"
if [ ! -e "$REPO_DIR/.git" ]; then
  git clone https://github.com/tmiao1201/shuxin.git "$REPO_DIR"
fi
SOURCE="$REPO_DIR/skill/shuxin"
if [ ! -f "$SOURCE/SKILL.md" ]; then
  printf '%s\n' "安装失败:未找到 $SOURCE/SKILL.md" >&2
  exit 1
fi class="pl-s">"${CODEX_HOME:-$HOME/.codex}/skills/shuxin"
if [ -e "$TARGET" ] || [ -L "$TARGET" ]; then
  printf '%s\n' "目标已存在,未修改:$TARGET"
else
  mkdir -p "$(dirname "$TARGET")"
  ln -s "$SOURCE" "$TARGET"
fi

不希望使用符号链接时可改为复制。下面的方案同样会在目标已存在时停止,避免把 shuxin 嵌套复制到旧目录中:

# shuxin-install-copy
set -eu
REPO_DIR="${SHUXIN_REPO_DIR:-$HOME/shuxin}"
if [ ! -e "$REPO_DIR/.git" ]; then
  git clone https://github.com/tmiao1201/shuxin.git "$REPO_DIR"
fi
SOURCE="$REPO_DIR/skill/shuxin"
if [ ! -f "$SOURCE/SKILL.md" ]; then
  printf '%s\n' "安装失败:未找到 $SOURCE/SKILL.md" >&2
  exit 1
fi class="pl-s">"${CODEX_HOME:-$HOME/.codex}/skills/shuxin"
if [ -e "$TARGET" ] || [ -L "$TARGET" ]; then
  printf '%s\n' "目标已存在,未复制:$TARGET"
else
  mkdir -p "$(dirname "$TARGET")"
  cp -R "$SOURCE" "$TARGET"
fi

Windows 用户可先克隆仓库,再确认目标不存在后,手动把 skill\shuxin 复制到 $env:CODEX_HOME\skills\shuxin;未设置 CODEX_HOME 时使用 $HOME\.codex\skills\shuxin。

更新

在源码仓库运行 git pull --ff-only。符号链接安装会自动使用更新后的源码;复制安装不会自动更新,请先确认目标目录内容可以覆盖,再手动更新,避免丢失本地修改。

配置微信读书

从微信读书官方 Skill 页面获取 Key。不要把 Key 粘贴到聊天中,也不要提交到仓库。

macOS/Linux 的 Bash 临时会话:

read -r -s -p "WeRead API Key: " WEREAD_API_KEY
printf '\n'
export WEREAD_API_KEY

read -s 会关闭本次输入回显。

Windows PowerShell 环境变量:

$secureKey = Read-Host "WeRead API Key" -AsSecureString
$bstr = [Runtime.InteropServices.Marshal]::SecureStringToBSTR($secureKey)
try {
  $env:WEREAD_API_KEY = [Runtime.InteropServices.Marshal]::PtrToStringBSTR($bstr)
} finally {
  [Runtime.InteropServices.Marshal]::ZeroFreeBSTR($bstr)
}

两种示例都通过交互输入,实际 Key 不进入命令历史。环境变量存在于当前 shell 进程,并传给其子进程,直至取消设置或会话结束;它仍可能被同一用户的其他进程观察,因此只适合临时会话。macOS 长期使用时优先选择钥匙串。

macOS 钥匙串可使用交互式命令保存:

security add-generic-password -U -a "$USER" -s shuxin-weread-api-key -w

终端会提示输入,输入内容不会回显;Key 不会进入命令参数。Key 不进入仓库、书心簿、应用日志或聊天;若选择 macOS 钥匙串,则由系统安全存储。调用微信读书时,Key 仅作为 Bearer 凭据发送到腾讯官方微信读书网关。

安全自检

macOS/Linux 使用实际安装目标运行;该命令同时适用于符号链接和复制安装:

TARGET="${CODEX_HOME:-$HOME/.codex}/skills/shuxin"
python3 "$TARGET/scripts/doctor.py"

输出是 JSON,各字段含义如下:

  • python:仅报告当前 Python 主次版本;项目要求 Python >=3.11,但该字段不执行版本判断。skill_file:Skill 文件是否存在。
  • state_file:本地书心簿文件路径;state_status:可能为可用、可创建、权限不安全(unsafe_permissions)或平台不支持(unsupported_platform)等状态。
  • gateway_config:微信读书网关配置是否有效;credential_source:凭据来自环境变量、macOS 钥匙串或尚未配置。
  • ready:汇总 Skill 文件、本地状态、网关配置和凭据的就绪状态,当前不包含 Python 版本判断。

为方便诊断,ready: false 时脚本仍退出 0;自动化流程应读取 JSON 中的 ready,不能只依赖退出码。

本地私密书心簿的安全持久化目前支持 macOS/Linux。Windows 的 doctor 会报告 unsupported_platform,且 ready 为 false;书心会自动进入不记录模式,无需用户每次说明,并继续搜索和阅读路径。

doctor 和空状态 stats 不会创建 state/ 或 journal 文件。这个保证只针对书心状态:Python 仍可能生成已被忽略的 __pycache__;已有 journal 时,读取可创建权限为 0600 的锁文件用于并发保护。

使用示例

  • 情绪结:“这次失败让我一直放不下,找本书陪我理一理。”
  • 认知结:“我想不明白机会成本,帮我找一个阅读起点。”
  • 混合结:“我既焦虑又不知道该不该转行,想先松一点,也想看懂问题。”
  • 时效问题:“最近关于 AI 监管的争议该从哪里读起?”
  • 反馈:“你理解偏了,纠正一下。”“换个视角。”“我读了。”“这次不记录。”

本地书心簿与隐私

源码仓库运行和符号链接安装默认使用仓库根目录的 state/;独立复制安装默认使用复制后的 Skill 根目录中的 state/。漫画 SVG 保存在本地 state/cards/,同样可用 SHUXIN_HOME 覆盖状态根;卡片不会自动发布。

书心簿实际写入脱敏 summary、route / stuck_point / reading_capacity、search_terms、recommendations、evidence_refs、最小漫画状态,以及打开、阅读和反馈记录。原始长心事和 Key 不写入书心簿;书心簿不保存图片、绝对路径或完整提示词。用户选择不记录时仍可在本地生成漫画,只跳过 journal 召回与写入。

脚本不会主动上传整个 state 文件;但 recall 会把匹配的脱敏记录返回给当前 Codex 会话用于推荐,因此这些召回字段会进入当前模型上下文。进入不记录模式会同时跳过召回与写入,即跳过 recall、append 和 feedback。

能力边界

书心提供阅读陪伴和知识补盲,不做诊断,也不承诺治疗或治愈。它不能替代心理治疗、医疗建议或危机支持。漫画不是全书摘要,只是进入已核验章节的阅读起点。若你或他人可能面临现实危险,请停止普通阅读与漫画流程,优先联系身边可信任的人、当地急救服务或专业危机支持。

About

No description or website provided.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages